上一篇实现了单变量的线性回归,而多变量与单变量的代码实现大同小异,这一篇来实现多变量的线性回归。
在这里房屋大小Size和卧室数量Bedroom共同决定房屋售价Price,任务还是读取数据,找出拟合之选,预测房屋售价。数据仅列出前五行
1.1特征缩放
因为特征变量Size和Bedroom的数值范围差距过大,为减少梯度下降获得全局最小值所需迭代次数,需要对特征变量进行缩放。
可以看出经处理后,特征变量范围变得一致了
1.2multi-var batch gradient decent(多变量批量梯度下降)
这里的拟合直线通式如下:
代价函数仍然不变:
初始化X2,y2,theta2矩阵,直接运行批量梯度下降算法得到θ0、θ1、和θ2。
直观感受一下代价函数值随迭代的进行的变化图,可以看出代价函数曲线在迭代次数到达600后就几乎趋于平整,而使代价函数曲线趋于稳定的迭代次数于学习率有关。
1.3learning rate(学习率)
学习率指的是梯度下降公式中的α,通俗的来说,α决定了梯度下降的速率。α越大,梯度下降的速率也就越大,但如果α过大则可能会使代价函数无法收敛,而α过小则会导致梯度下降的速率过慢,从而花费大量的迭代次数。
下面通过绘制不同学习率对代价函数的影响来体现:
可以看出α过小(图中最上面的几条曲线)其梯度下降的速率很慢,50次迭代后仍不能看出明显的下降。而α取0.1或0.3是较为合适的。
2. normal equation(正规方程)
正规方程是一种能直接找到使J(θ)值最小的θ的方法。正规方程表达式如下:
X为训练数据集,y为结果集。上标T代表矩阵的转置。正规方程与梯度下降算法各有优劣。正规方程不需要选择学习率α,也不需要经过多次迭代,但相较于梯度下降算法,当训练数据集的特征数量n较大时(如30000),则矩阵求逆的计算量很大,这种情况选择梯度下降算法较为合适,并且正规方程只适用于线性模型。
代码实现:正规方程
如下是对于同样的数据集X2,y2用梯度下降算法得出的θ,二者非常接近。梯度下降
附:
编辑器:jupyter notebook
代码来源:黄海广 https://github.com/fengdu78/Coursera-ML-AndrewNg-Notes
作业原文档:https://pan.baidu.com/s/1vvMGS5H2im1-1SlEjewulQ 提取码:4396
《机器学习》课程链接:https://www.coursera.org/course/ml