Normal Equations 的由来
2015-10-23 16:51
681 查看
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
+ θ1x1 +θ2x2
+... + θ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的分量。
查看x矩阵:
step2:带入normal equation公式θ = (XTX)-1XTY,求解权重向量。
求得θ向量为
如果我想预计“1650-square-foot house with 3 bedrooms”的价格,那么由X * θ = Y可知:
我们取消matlab中的科学计数法,看看price的价格是多少:
>> format long g
>> price
price = 293081.464334897
我们在给出的样本中,找一个接近的样本比比看:
23号样本的房屋面积为1604,房间数也为3,它的价格为
我们可以尝试画出H(θ)函数的图像看看:
先分别用min和max函数找出房屋面积(x1)和房间个数(x2)的最大和最小值,有
x1∈[852,4478]
x2∈[1,5]
可以看到H(θ)为如下平面:
假设我们有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
+ θ1x1 +θ2x2
+... + θ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(θ)为如下平面:
相关文章推荐
- 设计模式之--模板方法模式
- C# oleDb方法读取Excel文件
- FreeBSD常用命令大全
- struts2 与springmvc深入对比(二)
- 搭建ZooKeeper集群
- ios手机定位 -- 高德地图
- ZH奶酪:HTML元素文本溢出显示省略号(...)
- Android开发笔记——ListView模块、缓存及性能
- oracle 第13章 数据文件
- Unity5中的粒子缩放(附测试源码)
- windows 10个人使用
- org.apache.tomcat.maven__利用eclipse部署到tomcat
- MyBatis之传入参数
- 添加用户的脚本
- 【IOS 开发学习总结-OC-67】Quartz 2D绘图(4-4)——图形变换+填充处理+core image 滤镜
- linux下用core和gdb查询出现"段错误"的地方
- Unity5中的粒子缩放(附测试源码)
- 随笔(2015.10)
- windwos7+Eclipse+hadoop2.4.1开发等一系列问题的解决
- sql 空值排序