4.1 多维特征
举例房价模型
增添了更多的特征。
此时模型中的参数是一个n+1维的向量。
公式可以简化:
4.2 多变量梯度下降
与单变量线性回归类似,在多变量线性回归中,我们也构建一个代价函数:所有建模误差的平方和。
目标:找出使得代价函数最小的一系列参数。
多变量线性回归的批量梯度下降算法为:
开始:随机选择一系列的参数值。
计算所有的预测结果后,再给所有的参数一个新的值。如此循环直到收敛。
4.3 梯度下降法时间
特征缩放
对于多维特征问题,最好保证这些特征都具有相近的尺度,这将帮助梯度下降算法更快地收敛。
解决方法:尝试将所有特征的尺度都尽量缩放到-1到1之间。
学习率
梯度下降算法的每次迭代受到学习率的影响。
学习率过小则达到收敛所需的迭代次数会非常高。
学习率过大,每次迭代可能不会减小代价函数,可能会越过局部最小值导致无法收敛。
通??梢钥悸浅⑹匝奥剩?br>
特征和多项式回归
线性回归并不适用于所有数据,有时我们需要曲线来适应我们的数据。
二次方模型:
三次方模型:
通常我们需要先观察数据然后再决定准备尝试怎样的模型。
另外,我们可以令:
从而将模型转化为线性回归模型。
采用多项式回归模型,在运行梯度下降算法前,特征缩放非常有必要。
正规方程
对于某些线性回归问题,正规方程方法是更好的解决方案,如:
对于不可逆矩阵(通常因为特征之间不独立,如单位不同的两个同样特征,也有可能是特征数量大于训练集的数量),不能使用正规方程方法。
举个栗子:
梯度下降与正规方程的比较:
梯度下降 | 正规方程 |
---|---|
需要选择学习率 | 不需要 |
需要多次迭代 | 一次运算得出 |
当特征数量n大时也能较好适用 | 需要计算如果特征数量n较大则运算代价大,因为矩阵逆的计算时间复杂度为,通常来说当n小于10000时还是可以接受的 |
适用于各种类型的模型 | 只适用于线性模型,不适合逻辑回归模型等其他模型 |
只要特征变量数量小于1w,通常使用标准方程法而不使用梯度下降法。
对于这个特定的线性回归模型,标准方程法是一个比梯度下降法更快地替代算法。
但是对于实际上更复杂的学习算法,不得不仍然使用梯度下降法。
python实现 正规方程
import numpy as np
def normalEqn(X,y):
theta = np.linalg.inv(X.T@X)@X.T@y
return theta
#np.linalg.inv 求逆矩阵
#X.T@X等价于X.T.dot(X)
#先求X的转置再与X点积