coursera机器学习笔记-多元线性回归,normal equation
#对coursera上
#注:此笔记是我自己认为本节课里比较重要、难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点;
#标记为<补充>的是我自己加的内容而非课堂内容,参考文献列于文末。博主能力有限,若有错误,恳请指正;
#---------------------------------------------------------------------------------#
多元线性回归的模型:
#---------------------------------------------------------------------------------#
梯度下降法在多元线性回归中的应用:
代价函数:;
梯度下降:
,
代入J(theta)得到:
;
在多元线性回归中用梯度下降法要注意feature scaling!
如果不同变量之间的大小不再一个数量级,作feature scaling能大大减少寻找最优解的时间;
例如:
- x1 = size (0 - 2000 feet)
- x2 = number of bedrooms (1-5)
- x1,x2之间差别很大,如果不做feature scaling,对θ1和θ2作等高线图:
,将会花很长时间去找最优解;
NG给的建议:最大变量和最小变量均值差3倍以内为佳;
mean normalization:将xi替换为(xi - mean)/max;
#---------------------------------------------------------------------------------#
学习速率α大小的选择:
1, 对足够小的α,J(theta)会单调减少,
;
2, 如果α过小, 梯度下降会很慢;
3, 如果α过大, J(theta)可能不会单调减少,甚至可能不收敛,
;
如何选择α,如下:
..., 0.001, 0.01, 0.1, 1, ..., 或者 ..., 0.001, 0.003, 0.01, 0.03, 0.1, 0.3, 1, ....
#---------------------------------------------------------------------------------#
normal equation:假设我们有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,则有
,其中:
#---------------------------------------------------------------------------------#
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需要大量的矩阵运算,特别是求矩阵的逆。在矩阵很大的情况下,会大大增加计算复杂性以及对计算机内存容量的要求。Andrew Ng建议矩阵维数<10,000时用normal equation,大于时改用梯度下降法;
#---------------------------------------------------------------------------------#
什么情况下会出现XTX non-invertible?该如何应对?
(1)当特征向量的维度过多时(如,m <= n 时)
解决方法:① 使用regularization的方式
or ②删除一些特征维度
(2)有冗余特征(也称为linearly dependent feature)
例如, x1= size in feet2
x2 = size in m2
feet和m的换算为 1m≈3.28feet所以,x1 ≈ 3.282 * x2, 因此x1和x2是线性相关的(也可以说x1和x2之间有一个是冗余的)
解决方法:找出冗余的特征维度,删除之。
#---------------------------------------------------------------------------------#
normal equation 的推导:
这种方法不需要经过任何循环,也不需要假设初始值。虽然推导本身有点复杂,但是结果一步到位,简单又效率。
准备工作:
定义function f(A):Mapping from M-by-n matrices to the real numbers。定义f(A)的微分为:
定义trace operator。对于一个n by n的matrix A, the trace of A is:
Trace有如下特性:如果a是一个real number, 那么tr a = a;
矩阵微分有如下特性:
开始推导:
首先,设计一个m行n列的(实际上是n+1列,应为我们假设x0 =1 )矩阵X,他的每一行都是一个training sample,每列都是一个特征。
设计y成为一个m列的目标值(输出值)向量,也就是房子的价格在我们例子中。
因为:
所以:
所以:
因为我们要让J最小,所以J的微分必须等于0。
所以:
#---------------------------------------------------------------------------------#
参考:
coursera: standford machine learning, by Andrew Ng;
coursera: 台湾大学機器學習基石,by 林軒田;