四、多变量线性回归(Linear Regression with Multiple Variables)
4.1 多维特征
对房价模型增加更多的特征,构成一个含多个变量的模型,模型中的特征为()。
增添更多特征后的新注释:
image.png
对hypothesis , 引入,得到 ,可简化为:。
此时parameters和任何一个samples都是是一个维的向量,特征矩阵X的维度是 。
4.2 多变量梯度下降
多变量线性回归,代价函数:
其中:,
多变量线性回归的批量梯度下降算法为:
求导数后:
image.png
代码示例:
计算代价函数
其中:
Python 代码:
def computeCost(X, y, theta):
inner = np.power(((X * theta.T) - y), 2)
return np.sum(inner) / (2 * len(X))
4.3 梯度下降法实践1-特征缩放
多维特征问题,要保证特征尺度相近,使梯度下降算法更快收敛。
将所有特征的尺度都尽量缩放到-1到1之间。
最简单的方法是令: image.png
学习率a过小,收敛所需的迭代次数非常高;
学习率a过大,可能会越过局部最小值导致无法收敛。
Attention:当达到局部最小值时,也有可能由于a过大,跨过这块区域而到达全局最小值。
通常可以考虑:α=0.01,0.03,0.1,0.3,1,3,10
4.5 特征和多项式回归
线性回归并不适用于所有数据,有时我们需要曲线来适应我们的数据(二次方、三次方模型)
另外,我们可以令: image.png
求解参数: image.png
注:对于不可逆矩阵( 特征之间不独立e.g同时包含英尺为单位的尺寸和米为单位的尺寸两个特征,or特征数量 > 训练集数量),正规方程方法不可用。
梯度下降与正规方程的比较:
image.png若特征数目n不大(小于一万),线性模型(而非逻辑回归等模型),通常可以用Normal Equation替代梯度下降法更快的计算参数θ。
代码表示
在 Octave 中,正规方程写作:
pinv(X'*X)*X'*y
在python中,正规方程写作:
import numpy as np
def normalEqn(X, y):
theta = np.linalg.inv(X.T@X)@X.T@y #X.T@X等价于X.T.dot(X)
return theta
4.7 正规方程及不可逆性(选修)
待学...
网友评论