1.多维特征
以前我们谈到的变量只有一个,单个特征的训练样本,单个特征的表达式。
以房价的预测举例,特征除了房屋的大小,还可以有房间数,楼层数,房龄等特征。
一些特殊字母的定义:
n:代表特征的数量;
X(i):代表第i个训练实例(特征矩阵的第i行);
Xj(i):第i个训练实例的第j个特征(特征矩阵的第i行的第j个特征);
假设函数不再是单变量线性回归时的函数:hθ(x)=θ0+θ1x
而是:hθ(x)=θ0+θ1x1+θ2x2+...+θnxn
为了方便,我们令x0=1,那么公式就可以写为:hθ(x)=θTx (θ和x都是向量,这里是θ的转置)
2.多变量线性回归的梯度下降
假设函数:hθ(x)=θTx=θ0+θ1x1+θ2x2+...+θnxn
代价函数:J(θ)=J(θ0,θ1,...,θn)=1/2m ∑(hθ(x(i))−y(i))2
梯度下降算法:
对J(θ)求导,可以得:
n=1时,单变量梯度下降算法:
n>1时,多变量梯度下降算法:
3.梯度下降实践1:特征缩放
目的:确保特征在一个相近的范围内。
还是以房价的问题举例:
对应的J(θ)如下,在进行梯度下降的时候,梯度的方向偏离最小值,走很多弯路。
特征归一化:除以每组特征的最大值。
得到J(θ)如下,每一步梯度的方向基本指向最小值。
我们的目标是使每一个特征值都近似落在【-1,1】之间,当然是近似,在接近的范围内基本上都可以接收,但是范围太大不行。
均值归一化:用Xi-Ui代替Xi,使特征的近似值为0,X0=1我们不需要处理。均值归一化的公式是:xi←(xi−μi)/Si 。(Si是特征值的取值范围,最大值-最小值)
上例用均值归一化计算:
4.梯度下降实践2:步长的选择
上面是梯度下降算法,我们需要注意的是两个问题:
(1)如何确保下降梯度算法正确工作;
(2)如何选择正确的步长α;
正确的步长很重要,他可以确保梯度下降收敛的关键点。保证梯度下降算法正确运行,需要保证J(θ)在每一步迭代中减小,如果减小的值小于很小的值ϵ,则收敛。
如果梯度下降算法不能正常运行,就考虑用更小的步长α,但是如果α的值太小,梯度下降算法收敛会非常慢。
总结一下,就是:
(1)α太小,收敛速度太慢;
(2)α太大,不能保证每一次迭代J(θ)会减小,也不能保证J(θ)会收敛。
怎么选择α?我们有个经验:0.001,0.003,0.01,0.03,0.1,0.3,1.............后一个数约是前面一个数的三倍。
5.多项式回归
继续以房价预测的问题举例:
特征x1:frontage(宽度);特征x2:depth(深度)
x1、x2也可以用一个特征值表示:area=frontage*depth(即h(x)=θ0+θ1 X,X是面积)。
多项式回归:
像下图,我们并不能用线性回归很好的拟合给定的样本点,所以可以采用多项式回归。
对特征的选择,除了可以n次方外,也可以开根号,
我们在使用多项式回归模型时,在运行梯度下降算法前,特征缩放非常有必要。
6.正规方程
背景:
在微积分里,一元情况下,J(θ)=a*θ*θ+b*θ+c
求导,令导数为零,dJ(θ)/dθ=...=0,即可得到θ。
多变量线性回归中,求解思路相同:
举个例子,接下来分析一个有四组特征的房价预测问题:(这里向量X0内元素值都为1)
其中X是一个m*(n+1)的矩阵,y是m维的向量:
我们可以得到正规方程:(这里直接给出了正规方程,并未给出如何得到,具体要查看线性代数里的知识)
m个样本,n个特征,我们该如何选择梯度下降和正规方程?这两种方式都有自己的优缺点:
梯度下降:
需要选择合适的学习率α;
迭代的次数非常多;
n的数目比较大时,效果依然很好;
时间复杂度是O (kn2);
正规方程:
不需要选择α;
不需要迭代,一次就可以计算完成;
n比较大时,会很慢;
需要计算(XTX)−1,时间复杂度是O(n3);
7.矩阵不可逆的情况
对于正规方程,若是(XTX)不可逆怎么办?出现这个情况有以下原因。
(1)两个特征之间有着非常大的相关性,解决方法是去掉冗余的特征;
(2)特征过多,比如说m<=n,解决方法是删掉一些特征。