机器学习之——多变量线性回归

  1. 云栖社区>
  2. 博客>
  3. 正文

机器学习之——多变量线性回归

郭家少爷 2016-04-18 19:02:00 浏览1338
展开阅读全文

在之前的博客中,描述过单变量线性回归(Linear Regression with One Variables)的模型,这次来分享一下多变量线性回归模型(Linear Regression with Multiple Variables)

我们还是使用之前的问题,对房价的预测。这一次增加更多的特征,例如房子的楼层数、卧室数量等,这样就构成了一个含有多个变量的模型,模型中的特征我们标记为(X1,X2,X3,...,Xn)。



增添了更多的特征之后,我们还要引入一些新的标注:


支持多变量的假设函数 h 的表达式为:


我们看到,这个表达式中有n+1个参数和n个变量(ø0没有变量),我们为了使公式能够简化一些,添加一个X0使其的值为1,即:X0=1,这样公式便转化为:


此时,这个模型中的参数是一个n+1维的向量,实际上在多变量回归模型中,任何一个训练集也都是n+1维的向量,特征矩阵X的维度此时是m*n+1。

所以,我们的假设函数 h 的表达式可以简化成:


参数向量ø的转置乘上特征向量X。

到目前,我们得到了模型的假设函数 h ,下一步我们来构建代价函数(Cost Function)

多变量线性回归的代价函数与单变量线性回归的代价函数相似,是所有建模误差的平方和(MSE),即:


我们得到了代价函数,我们的目标也就和单变量线性回归问题中的一样,找出使得代价函数最小的一系列参数。我们也是用批量梯度下降(Batch Gradient Descent)的方法:


将代价函数带入,即:


求导之后,得到:


在初始状态,我们随机选择一系列参数值,计算所有的预测结果之后,再给所有的参数一个新的值,如此循环直到收敛(convergence)

到此,我们已经实现了多变量的线性回归。但是在计算的过程当中,我们发现,有很多时候,参数的取值差距非常大,导致很多时候要进行大量的大数值的计算。在处理多维特征(多变量)的问题时,我们要保证这些特征都具有相近的范围,这样将更好的帮助梯度下降算法更快的收敛。这时,我们可以使用特征缩放(Features Scaling)方法。

我们还是以放假预测问题为例,假设我们使用两个特征,房屋的尺寸和房间的数量。房屋的尺寸范围在 0 ~ 2000 平方英尺, 房间数量在 0 ~ 5 , 以这两个参数为横纵坐标,绘制代价函数的等高线图能看出图像会显得很扁,梯度下降算法要执行很多次迭代才能收敛。


特征缩放解决这个问题,是尝试将所有特征的取值范围尽量都缩放到 -1 ~ 1 之间。最简单的方法是令 :


其中,Xn代表第n个特征,µn代表平均值(AVE),Sn代表标准差(SD)

梯度下降算法的表达式中,有一个alpha学习速率(Learning Rate)。算法所需要的迭代次数根据模型的不同而不同,我们这方面不能够提前预知,我们可以绘制迭代次数和代价函数的图表来观测算法在何时趋于收敛。


也有一些自动测试是否收敛的方法,例如:将代价函数的变化值与一个常数阈值(0.001)进行比较。但是我个人感觉还是上面的图表更直观一些。

梯度下降算法每次迭代,都会受到学习速率的影响,如果学习速率较小,则达到收敛所需要迭代的次数就会非常高;反之,如果alpha过大,则每次迭代可能都不会减小代价函数的结果,甚至会超过局部最小值导致无法收敛。

通常,在我做一些模型时,我会设置学习速率的值在 0.01,0.03,0.1,0.3,1,3,10 这些参考值。

综上,就是多变量线性回归模型的主要内容。下一次将给大家分享 多项式回归于正规方程(Polynomial Regression and Normal Equation)


网友评论

登录后评论
0/500
评论
郭家少爷
+ 关注