多变量线性回归 from 吴恩达的机器学习

多维特征

房价模型增加更多的特征,例如房间数楼层等,构成一个含有多个变量的模型,模型中的特征为


m:训练集样本数量

n:特征的数量

:代表第 i个训练实例,是特征矩阵中的第i行,是一个向量

:代表特征矩阵中第i行的第j个特征,也就是第i个训练实例的第j个特征。

支持多变量的假设 h 表示为:


为了使得公式能够简化一些,引入 x0 =1,则公式转化为:


此时模型中的参数是一个n+1维的向量,任何一个训练实例也都是n+1维的向量,特征矩阵X的维度是 m*(n+1)

公式可以简化为


代价函数:


其中:


即:



特征缩放

以房价问题为例,假设我们使用两个特征,房屋的尺寸和房间的数量,尺寸的值为 0-2000平方英尺,而房间数量的值则是0-5,以两个参数分别为横纵坐标,绘制代价函数的等高线图能,看出图像会显得很扁,梯度下降算法需要非常多次的迭代才能收敛。

解决的方法是尝试将所有特征的尺度都尽量缩放到-1到1之间。如图:


亦可令


:xn的平均值

:标准差,即xn最大值 -xn最小值

这样 每一个x的取值范围为[-0.5,0.5]


学习率

梯度下降算法收敛所需要的迭代次数根据模型的不同而不同,我们不能提前预知,我们可以绘制迭代次数和代价函数的图表来观测算法在何时趋于收敛。

横轴:迭代次数

纵轴:代价函数



如果代价函数增加,那么您可能需要减少α。

当代价函数减少率少于e时,e通常指10的-3次方,可以认为代价函数已经收敛。

已经证明,当学习率α足够小时,代价函数将会在每一次迭代中收敛。


通常可以考虑尝试些学习率:

α=0.01,0.003,0.1,0.3,1,3,10

总结:梯度下降算法的每次迭代受到学习率的影响,如果学习率α过小,则达到收敛所需的迭代次数会非常高;如果学习率α过大,每次迭代可能不会减小代价函数,可能会越过局部最小值导致无法收敛。

特征和多项式回归

如房价预测问题:


令 x1=frongtage 临街宽度

x2=depth 纵向深度

则:

线性回归并不适用于所有数据,有时我们需要曲线来适应我们的数据,比如一个二次方模型:


或者三次方模型:


通常我们需要先观察数据然后再决定准备尝试怎样的模型。 另外,我们可以令:

,从而将模型转化为线性回归模型。

根据函数图形特性,我们还可以使:

或者


如果采用多项式回归模型,在运行梯度下降算法前,特征缩放非常有必要。


特征选择:

当训练集m 小于 特征量 n,使用正则化的线性代数方法,通过删除某些特征或者是使用某些技术,来解决当m比n小的问题。

特征值里是否有一些多余的特征,像这些x1和x2是线性相关的,互为线性函数。当有一些多余的特征时,可以删除这两个重复特征里的其中一个,无须两个特征同时保留。