在之前的单变量线性回归问题中,我们是通过房屋的大小来作为预测房屋价格。但是我们知道了很多其他的变量,例如卧室的数量,楼层的数量,房子的年龄等。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL5QWN1YDZlZ2NhhjM2IzM3AjYxkTZhJGMkRTNmFTZhhTO1QTO4cDNl9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
以上就是多元线性回归。多元——使用多个特征值或者是变量来预测Y的值。
使用梯度下降法来处理多元线性回归问题
梯度下降法的应用实例——特征缩放的方法
特征缩放前后,相对应的代价函数的图形也会随之不同。
不用过于担心特征是否在完全相同的范围或者是区间内,但是只要它们之间足够接近的话,梯度下降法就会正常地运行。
除了将特征除以最大值以外,在特征缩放中,会使用特征均一化的操作。
对于α而言,不同的数值造成的图形结构也是不一样的。例如
当α很小的时候,我们可以看到曲线达到一定的迭代次数之后就收敛,或者说找到一个合适的阈值ε也是很困难的,为了检查梯度下降算法是否收敛,可以从图中直接看得出收敛。而不是依靠自动收敛测试。
总结:
如果α太小的话,就会遇到收敛速度很慢的问题,如果α太大的话,代价函数T(θ)可能不会在每次迭代都下降。甚至可能会不收敛。也会有一些情况,就是如果学习率α过大,也有可能会出现收敛缓慢,但是代价函数T(θ)并不会在每次迭代之后都下降。但是通常情况下,通常绘制T(θ)随迭代步数变化的曲线。
继续拿预测房价为例,除了之前的特征之外,还有其他新的特征值
多项式回归的问题
例如:我们有如下图所示预测房子的价格的数据集,可能会有多个不同的模型用于拟合。选择之一就是二次模型,因为直线似乎并不能很好地去拟合这些数据。然而二次函数最终会下降,为了能够拟合数据集的变化,会继续使用三次方的函数,这样子就不会下降。
由于根式的图像是上升的,最后趋于平缓状态,也是可以拟合所给的数据集。
正规方程
对于某些线性回归问题,会给我们更好的方式去得到未知参数θ的最优解。
在之前优质使用的方法——梯度下降法中,为了得到最小化代价函数T(θ),会使用迭代算法。通过梯度下降的多次迭代来收敛到全局最小值。
实例:
例如:假设我们有四个训练样本,这四个训练样本就是所有的数据。我们所要做的是在数据集中,加入一列来对应额外的特征变量x_0,取值永远都是1。
接下来就是构建一个矩阵X(m*(n+1)维矩阵),矩阵X包括了训练样本中的所有数据,也构建一个向量y(m维向量)。其中m是训练样本数量,n和n+1是特征变量数
在Octave或者是MATLAB中,具体的实现方式如下:
Pinv(X’X)X’*y
使用了正规方程,那我们直接不用特征缩放的方法。
至于什么时候正规方程和特征缩放呢?可以根据以下优缺点来判断:
假设我们有m个训练样本,n个特征变量
t=[0:0.01:0.98];
y1=cos(2*pi*4*t);
plot(t,y1)
y2=sin(2*pi*4*t);
plot(t,y2)
再次绘制了正切函数之后的图像如图所示:
例如:使用magic函数
A=magic(5)
imagesc(A)
使用octave程序写控制语句
例如
for i=1 :10 ;
v(i)=2^i ;
end ;
indices=1 :10
所以
for i=indices;
Reference:
吴恩达 机器学习课程