Normal Equations 的由来

假设我们有m个样本。特征向量的维度为n。因此,可知样本为{(x(1),y(1)), (x(2),y(2)),... ..., (x(m),y(m))},其中对于每一个样本中的x(i),都有x(i)={x1(i), xn(i),... ...,xn(i)}。令 H(θ)=θ0 + θ1x12x2 +... + θnxn,则有

若希望H(θ)=Y,则有

X · θ = Y

我们先来回忆一下两个概念:单位矩阵矩阵的逆,看看它们有什么性质。

(1)单位矩阵E

AE=EA=A

(2)矩阵的逆A-1

要求:A必须为方阵

性质:AA-1=A-1A=E

再来看看式子 X · θ = Y

若想求出θ,那么我们需要做一些转换:

step1:先把θ左边的矩阵变成一个方阵。通过乘以XT可以实现,则有

XTX · θ = XTY

step2:把θ左边的部分变成一个单位矩阵,这样就可以让它消失于无形了……

(XTX)-1(XTX) · θ = (XTX)-1XTY

step3:由于(XTX)-1(XTX) = E,因此式子变为

Eθ = (XTX)-1XTY

E可以去掉,因此得到

θ = (XTX)-1XTY

这就是我们所说的Normal Equation了。

Normal Equation VS Gradient Descent

Normal Equation 跟 Gradient Descent(梯度下降)一样,可以用来求权重向量θ。但它与Gradient Descent相比,既有优势也有劣势。

优势:

Normal Equation可以不在意x特征的scale。比如,有特征向量X={x1, x2}, 其中x1的range为1~2000,而x2的range为1~4,可以看到它们的范围相差了500倍。如果使用Gradient Descent方法的话,会导致椭圆变得很窄很长,而出现梯度下降困难,甚至无法下降梯度(因为导数乘上步长后可能会冲出椭圆的外面)。但是,如果用Normal Equation方法的话,就不用担心这个问题了。因为它是纯粹的矩阵算法。

劣势:

相比于Gradient Descent,Normal Equation需要大量的矩阵运算,特别是求矩阵的逆。在矩阵很大的情况下,会大大增加计算复杂性以及对计算机内存容量的要求。

什么情况下会出现Normal Equation,该如何应对?

(1)当特征向量的维度过多时(如,m <= n 时)

解决方法:① 使用regularization方式

     or ②delete一些特征维度

(2)有redundant features(也称为linearly dependent feature)

例如, x1= size in feet2

    x2 = size in m2

    feet和m的换算为 1m≈3.28feet所以,x1 ≈ 3.282 * x2, 因此x1和x2是线性相关的(也可以说x1和x2之间有一个是冗余的)

解决方法:找出冗余的特征维度,删除之。

练习

练习的介绍页面见Ng的openclassroom  Exercise: Multivariate Linear Regression

下载页面上的数据,然后载入matlab中。

y(i)表示价格,x(i)表示房屋面积和房间数:

样本数m=47。

step1:对数据进行预处理

给每一个x向量,都增加一个x0=1的分量。

m = 47;
x=[ones(m,1),ex3x];

查看x矩阵:

step2:带入normal equation公式θ = (XTX)-1XTY,求解权重向量。

 y=ex3y;theta = inv(x'*x)*x'*y;

求得θ向量为

如果我想预计“1650-square-foot house with 3 bedrooms”的价格,那么由X * θ = Y可知:

price = [1,1650,3]* theta ;

我们取消matlab中的科学计数法,看看price的价格是多少:

>> format long g
>> price

price =  293081.464334897

我们在给出的样本中,找一个接近的样本比比看:

23号样本的房屋面积为1604,房间数也为3,它的价格为

我们可以尝试画出H(θ)函数的图像看看:

先分别用min和max函数找出房屋面积(x1)和房间个数(x2)的最大和最小值,有

x1∈[852,4478]

x2∈[1,5]

x1=linspace(852,4478,47);
x2=linspace(1,5,47);
[xx1,xx2]=meshgrid(x1,x2);
h_theta = theta(1)*ones(47,47) + theta(2)*xx1 + theta(3)*xx2;
surf(xx1,xx2,h_theta);

可以看到H(θ)为如下平面:

Normal Equations 的由来相关推荐

  1. Normal Equations 的由来与推导

    http://blog.csdn.net/huruzun/article/details/41493063

  2. 正规方程组(The normal equations)

    2. 正规方程组 上一节的梯度下降是一种最小化成本函数JJ的方法.这一节我们将介绍另一种算法也可以实现该功能且不需要使用迭代.正规方程组通过计算成本函数对每个θj\theta_j的偏导数,求出偏导为零 ...

  3. Machine Learning——DAY1

    监督学习:分类和回归 非监督学习:聚类和非聚类 1.分类和聚类的区别: 分类(Categorization or Classification)就是按照某种标准给对象贴标签(label),再根据标签来 ...

  4. word文档封面免费下载_为Word 2007文档添加封面

    word文档封面免费下载 I've been using Microsoft Word since 1985, starting with Word for Mac and eventually mo ...

  5. 线性回归、logistic回归、广义线性模型——斯坦福CS229机器学习个人总结(一)

    纪念我第一个博客的碎碎念 先前我花了四五个月的业余时间学习了Ng的机器学习公开课,学习的过程中我就在想,如果我能把这个课程啃完,就开始写一些博客,把自己的所得记录下来,现在是实现的时候了.也如刘未鹏的 ...

  6. 简单多元线性回归(梯度下降算法与矩阵法)

    from:https://www.cnblogs.com/shibalang/p/4859645.html 多元线性回归是最简单的机器学习模型,通过给定的训练数据集,拟合出一个线性模型,进而对新数据做 ...

  7. 吴恩达机器学习Ex1多元回归部分

    多元线性回归 提交作业情况: 背景:预测房价 数据集:房屋大小,卧室的数量,房价. Loading data ... First 10 examples from the dataset: x = [ ...

  8. 吴恩达机器学习(第二章)——单变量线性回归

    第二章-单变量线性回归 文章目录 第二章-单变量线性回归 模型描述 代价函数 梯度下降 梯度下降的思想 梯度下降算法的公式 梯度下降的运动方式 线性回归的梯度下降 模型描述 在监督学习中我们有一个数据 ...

  9. 吴恩达 ML作业提交:Grader sent no response

    目录 文章目录 目录 前言 正文 解决方案 前言 最近在补习吴恩达machinelearning 的课程,上完了课,肯定是要做作业的,做作业没有问题,但在提交作业时遇到了问题,记录如下,方便后来人. ...

最新文章

  1. Office 如何下载网页的视频 JWPlayer的内嵌视频
  2. 关于vscode的插件配置
  3. 打开Eclipse时出现Failed to create the Java Virtual Machine
  4. 解决Dialog 消失,输入法不消失的问题
  5. React、PHP送书中奖名单,快看有你么!
  6. java 定时任务哪个好_java目前常用的几种定时任务
  7. Fcitx──小企鹅输入法---Ubuntu input method
  8. imagenet classification with deep convolutional neural networks
  9. mysql数据库怎容器化_数据库部署是否合适容器化?
  10. win7自带的xps viewer很好用
  11. qt android编程,Qt for Android开发实例教程
  12. 前端Js处理百度地图和腾讯/高德地图经纬度不同的转换问题
  13. 【深度学习】图像超分实验:SRCNN/FSRCNN
  14. 牛顿法求函数零点和极值点
  15. 手机进程设置多少个最好_手机打开,开发者选项中的这4个设置,性能瞬间提升一倍,不卡顿...
  16. base64 的加密和解密
  17. Image2Lcd图片取模软件
  18. 如何解决chrome flash 过期
  19. 瓢城旅行社网页界面设计(HTML+CSS)
  20. 张小娴经典语录100句

热门文章

  1. 回答完数据库连接池原理,面试官跪着求我入职他们公司
  2. android获取GPU信息;android获取GPU渲染器、供应商、版本和扩展名等信息
  3. iteye上总结的编程精华资源
  4. 微信数据库最新的解密方式,使用C++代码解密微信加密数据库信息!
  5. 微信Mars-xlog日志加密踩坑指南
  6. 网站图片怎么优化搜索排名
  7. 简明扼要理解YOLOX
  8. echarts 3d柱状图(bar3D)默认缩放大小
  9. 科技日语写作 计算机科学专题,科技进步和人类日语作文
  10. CAD中插入外部参照字体会变繁体_CAD中形形色色的“替换”技巧你确定都知道了?...