多变量线性回归(linear regression with multiple variables)
基本公式及字母
一个数据对应着上表中的一行,θ(2)\theta^{(2)}θ(2)代表第二个数据。(也就是表中红线圈出的位置)
xj(i)x_j^{(i)}xj(i):代表第i个数据,第j个特征量
如x3(2)x_3^{(2)}x3(2)代表2
多元线性回归公式为:
hθ(x(i))=θ0x0+θ1x1+θ2x2+……+θnxnh_\theta^{(x^{(i)})}=\theta_0x_0+\theta_1x_1+\theta_2x_2+……+\theta_nx_nhθ(x(i))=θ0x0+θ1x1+θ2x2+……+θnxn
令x0=0x_0=0x0=0得:
hθ(x(i))=θ0+θ1x1+θ2x2+……+θnxnh_\theta^{(x^{(i)})}=\theta_0+\theta_1x_1+\theta_2x_2+……+\theta_nx_nhθ(x(i))=θ0+θ1x1+θ2x2+……+θnxn
化简得到hθ(x(i))=θTxh_\theta^{(x^{(i)})}=\theta^Txhθ(x(i))=θTx
J(θ0,……,θn)=12m∑i=1m(hθ(x(i))−y(i))2J(\theta_0,……,\theta_n)=\frac{1}{2m}\sum_{i=1}^{m}(h_\theta^{(x^{(i)})}-y^{(i)})^2J(θ0,……,θn)=2m1∑i=1m(hθ(x(i))−y(i))2
梯度下降算法:
θj:=θj−α∂J∂θj\theta_j:=\theta_j-\alpha\frac{\partial{J}}{\partial\theta_j}θj:=θj−α∂θj∂J
多元线性回归的梯度下降算法
联立上述各式得:
代入j的值就如下图所示:
多元线性回归的梯度下降算法与单变量线性回归的梯度下降算法的区别如下所示:
总而言之,单变量是多变量的特殊形式,n=1时为单变量,n>1时为多变量。
特征值缩放(feature scaling)
为了加速梯度下降,我们通常把特征量的取值缩小到一个适当的范围,这个范围不可过大,也不可过小,若-a<xj<<x_j<<xj<a,a通常不大于10,a可以等于13\frac{1}{3}31,但a不能等于像0.000010.000010.00001这样过小的数。每个xjx_jxj的范围要大致相同(相似),但也不要求完全严格一样。如(-4,4)与(0,3)这两个区间就可以看作大致相同(相似)。
均值归一化(mean normalization):通过这个方法可以确定xjx_jxj的取值范围
公式为:xj:=xj−μjsjx_j:=\frac{x_j-\mu_j}{s_j}xj:=sjxj−μj(x0x_0x0除外)
xjx_jxj:第j个特征量
μj\mu_jμj:数据集中所有的xjx_jxj的平均值
sjs_jsj:该特征值的范围(即最大值-最小值)
学习速率α\alphaα
如何确定梯度下降算法正常工作?
通过代价函数随迭代步数变化的二维曲线图判断。
像上图都表示未正常工作,为了解决这个问题,我们需要选择一个较小的α\alphaα值。
像上图就表示正常工作了,代价函数可以通过很多步的迭代到达最小值,代价函数从而收敛。
如何选择α\alphaα呢?
我们可以像上图那样选择α\alphaα的范围,然后画出代价函数与迭代步数的二维曲线图,寻找如上图梯度下降算法正常工作的图像,然后确定α\alphaα的值。
多项式回归(polynomial regression)
上图,我们可以选择一个三次函数拟合数据。
特征量的选择
通常我们是先有数据,后根据数据选择一个能更好的拟合的算法,这通常与如何选择特征量有关。如上图所示,我们除了选择三次函数拟合数据,也可以选择一个平方平方根函数拟合数据。
标准方程法(normal equation)
一种可以直接求出θ\thetaθ值的算法。并且不用考虑均值归一化。
如上图所示,θ\thetaθ为实数,J(θ)J(\theta)J(θ)是一个以θ\thetaθ为变量的二次函数,在中学我们就学过如何求出θ\thetaθ的值。
上图的X被称为设计矩阵(designed matrix),X的构造过程如下图所示:
由此,我们可以得到原始公式:y=Xθy=X\thetay=Xθ
经过一系列变形得到最终结果:θ=(XTX)−1XTy\theta=(X^TX)^{-1}X^Tyθ=(XTX)−1XTy(之所以最后是这个结果是因为要考虑到矩阵的维度)
梯度下降算法与标准方程算法的优缺点
总的来说,当n的值比较大时我们最好选择梯度下降算法,当n的值较小,我们可以选择标准方程算法。(n=10000是一个不错的分割点)