5.1 多维特征
前一周所讲是单变量线性回归,即 ,是只有一个变量 的假设函数,现在对房价预测模型有了更多的参考特征,比如楼层数,卧室的数量,还有房子的使用年限。根据这些特征来预测房价。此时的变量有多个。 构成一个含有多个变量的模型,模型中的特征为
一些注释:
:特征的数量
:第 i 个样本的特征向量
:第 i 个样本的 特征向量中的第 j 个特征
那么,线性回归的多变量假设函数变为 ,式子中有n+1个参数和n个变量。为了公式简化,引入 ,公式变为
此模型中,参数是一个n+1维的向量,任何一个训练实例也都是n+1维的向量,公式就简化为
5.2 多变量梯度下降
和单变量线性回归一样,构造多变量模型的代价函数 :
其中
与单变量线性回归梯度下降相同,多变量线性回归梯度下降算法为: ,
求导后 :
然后随机选择一系列的参数值,计算所有的预测结果后,再给所有的参数一个新的值,如此循环直到收敛。
5.3 梯度下降法实践1-特征缩放
如果多个特征的取值范围差距悬殊过大,会导致梯度下降收敛速度较慢。因此我们要保证这些特征都具有相近的尺度,这样就可以使梯度下降算法更快地收敛。
解决的方法是尝试将所有特征的尺度都尽量缩放到-1到1之间。
最简单的方法是令:,其中 是平均值,是标准差(或者是特征的范围max-min)。
5.4 梯度下降法实践2-学习率
梯度下降法迭代次数随不同模型而不同,提前无法预知。但我们可以通过两种方法来观察 算法在何时趋于收敛。
(1)绘制迭代次数与 代价函数的图表
(2)自动测试是否收敛的方法:例如将代价函数的变化值与某个阀值(例如0.001)进行比较
梯度下降算法的每次迭代受到学习率 α 的影响,如果学习率过小,则达到收敛所需的迭代次数会非常高;
如果学习率过大,每次迭代可能不会减小代价函数,可能会越过局部最小值导致无法收敛。
吴恩达建议的 α 选择:
5.5 特征和多项式回归
线性回归并不适用于所有数据,有时我们需要曲线来适应我们的数据,比如一个二次方模型:,或者三次方模型:。通常需要先观察数据然后再决定准备尝试怎样的模型。
一个房价预测问题:
(临街宽度), (纵向深度),(占用面积),则
可以令 ,,从而将模型转化为线性回归模型。
根据函数图形特性,我们还可以使:
或者:
注:如果采用多项式回归模型,在运行梯度下降算法前,特征缩放非常有必要。
5.6 正规方程
对某些线性回归问题,还可以用正规方程解决。
正规方程通过求解 找出使得代价函数最小的参数.
假设训练集特征矩阵为 ,训练集结果为向量 ,则利用郑正规方程求解出的
梯度下降法与正规方程法的比较:
梯度下降法 | 正规方程法 |
需要选择学习率 | 不需要 |
需要多次迭代 | 一次运算得出 |
当特征数量大时也能较好适用 | 特征数量较大则运算代价大,因为矩阵逆的计算时间复杂度为,通常来说当n小于10000 时还是可以接受的 |
适用于各种类型的模型 | 只适用于线性模型,不适合逻辑回归模型等其他模型 |
5.7 正规方程及不可逆性(可选)
有的矩阵可逆,有的矩阵不可逆。
式子中,要求 ,如果不可逆该怎么办呢?在Octave里,有两个函数可以求解矩阵的逆,一个被称为pinv()
,另一个是inv()
,这两者之间的差异是些许计算过程上的,一个是所谓的伪逆,另一个被称为逆。使用pinv()
函数可以展现数学上的过程,这将计算出的值,即便矩阵是不可逆的。