Machine LearningWeek2
Linear Regression with multiple variable
1、多变量Multitude feature
上面一篇说到单变量线性回归,这篇来说说多变量线性回归
回顾单变量线性回归,说到价格和面积的关系,给我们的变量就只有一个面积。实际上,如果去预测房屋价格,还得考虑很多因素。比如面积,房间数量、几层、房屋年龄……
上面m=4,说的是给了四个房屋。x1是面积,x2房间数量,x3是层数,x4是房屋年龄等
这个表示第i个房屋第j个特征。
这样变量就多了,也不太适用了。
需要这样的假设h:
为了方面,我们写成向量的形式,同时增加一个x0=1(就是为了和θ0凑起来)
这样,我们把θ和x都同时写成向量的形式:
所以h就可以写成
2、多变量梯度下降(Gradient descent for multiple variables )
|
和单变量的区别就是θ变多了,对每个θ都要梯度下降。
对于多变量线性回归,在梯度下降前要对数据做些处理。
(1)特征归一化Feature scaling
Feature scaling is a method used to standardize the range of independent variables or features of data.
In data processing, it is also known as data normalization and is generally performed during the data
preprocessing step.(from wikipedia)
看房屋的数据集,对于面积大小范围在0……3000,房间数和楼层数在十以内,房屋年龄在百以内,这些特征数值上存在很大差异性。为了使梯度下降算法收敛快些,需要把这些特征处理成尺度相似的。就是把所有特征的值都归一化到[-1,1]区间。再解释清楚一些,多变量是多维的线性回归,归一化可以防止某些特征对数据影响过大。比如上面房屋面积的数值很大,就有可能对结果产生致命的决定性影响。归一化是将各个特征自身的数据特性通过数学的方法抹掉,让各个特征值获得相同的竞争能力,从而可以使用一些更通用性的解决方法,将视野重点从局部数据解放出来。(参考来自知乎)
怎么做呢?用均值归一化(Mean Normalization)
用这个式子:
xi就是第i特征,μ是第i个特征所有实例值的平均,S就是第i个特征的标准差(就是这个特征中最大的值与最小的值的差)
如:
|
(2)学习率的选择
为了保证梯度下降的正确性,每次在迭代后都要调试debug,就是看看cost function (J(θ))是不是下降了,下降了多少。直到下降的值限制在某个数(阈值)时,就说成本函数收敛了(下图中选的阈值ε为10^-3)。这比较好理解,刚开始错误比较多,随便修改一些就会使成本降低,使情况好转,随着错误越来越少,越来越难发现,成本降低越困难。
|
这里,学习率α是控制一步下降有多大。所以学习率α的选择关系到收敛的效果。前面提到过很多次,α如果选的太小,虽然可以保证收敛,但每次迭代的J(θ)(成本函数)降低的就少,这样花的时间就多。α如果选的太大,就有可能使J(θ)跳太大步伐,随着迭代增加,甚至不收敛。(忘记的看看Week1)
所以,想了个两全的办法,就是刚开始的α比较大,随着迭代次数增加,慢慢的减小α。就像是我们考试时,做完了题目后,开始检查错误了。开始的时候错误比较多,成本降低容易,选个大的α,只要一眼望去就可以很快发现大错误,使效果变得比较好;随着错误越来越少,找起来越来越困难,需要很大的耐心,所以减小α,使人细细的搜寻,慢慢修正小错误。直到好像试了很多遍,都不能发现什么了,就决定交卷子。
那么α到底设多大,减小又要怎么减呢?如下图,根据Andrew 的经验…… 0.001, 0.003, 0.01, 0.03, 0.1, 0.3, 1……是3倍的关系递增
比如试α=0.1,发现太过了,就试0.03;如果太小了就试0.3……
|
3、特征和多项式回归
1)特征的选择
有的时候收集的/给定的数据不一定就符合我们的要求,比如我们要预测房屋面积和价格的关系,但是给的数据是房屋的长、宽,我们可以选择
也可以列出x=X1*X2;X1为长,X2为宽,x为面积
2)多项式回归
因为特征可以像上面所列方式选择,所以模型也可以更灵活。
这个模型不都适用于所有的类型,我们也可以选择别的模型。
|
如该图所示,预测房屋价格和面积的关系,当我们选用二次方程时,
在前面的部分表现的还不错,但是随着size增加,价格却往下掉(如图中蓝色虚线所示),这显然是不合常理的。所以改选用三次方程
所以模型就变为图中绿色框中所示,需要注意的是的数值归一化。
除了上面说的可以n次方,开方也可以,如
4、正规方程(Normal Equation)
正规方程也是用来求θ的方法,与梯度下降不一样在于不需要迭代,是线性代数的角度来求解。
|
如上面的截图,当我们求解一维线性回归时候,最低点梯度为0,即
来推导一下:
注意到是
这个矩阵
求逆,所以对
这个矩阵有要求,它要有逆,要是非奇异阵,行列式不为0(可以了解下线性代数中相关概念)
来总结下梯度下降和正规化方程
梯度下降 | 正规化 |
要选学习率α | 不需要α |
需要多次迭代 | 不需要迭代 |
即使n很大(n=10^6),效果也挺好 | n变大(n<10000),就会很慢,主要是矩阵的逆运算开销很大 |
所以,正规化方程强调求矩阵的逆,当n很比较大,数据又多的时候,求逆是非常麻烦的,可喜的是Octave和Matlab中有之间求逆的函数:
这给我们带来了巨大方便。但是又有一个问题,就是,如果矩阵没有逆呢?
如果
是一个奇异矩阵,就没有逆。
造成是奇异矩阵,有两个原因
1)特征冗余(线性相关),比如有房屋的面积这个特征,又有房屋的长、宽这两个特征
2)特征的数量过多,多到什么程度,就是比例子还多。比如给了四所房屋做训练数据,但是房屋的特征就有五个(m≤n)