Machine Learning:Multivariate Linear Regression(多元线性回归)
上篇博文中介绍了使用梯度下降法去最小化代价函数 J(θ) ,从而得到比较符合原始数据分布的假设函数 h θ (x) 。之前的 h θ (x)=θ 0 +θ 1 x 1 为单元线性回归(Univariate Linear Regression),现在介绍多元线性回归。
假设函数(Hypothesis Function)
现在考虑 h θ (x) 的一般形式,即 h θ (x)=θ 0 +θ 1 x 1 +θ 2 x 2 +...+θ n x n 。此时, θ 为 n+1 维的向量, θ=[θ 0 θ 1 ⋯ θ n ] ,而 X=[x 0 x 1 ⋯ x n ] ,此时 x 0 ≡1 。则可以将 h θ (x) 表示为 h θ (x)=θ T X 。
代价函数(Cost Function)
代价函数不变,依旧为
梯度下降求解参数
参数
θ
更新方法
当 j=0 时,因为 x j ≡1 ,所以上式和之前所推导的更新方法没有区别。注意此时对于 j=0,1,...,n 依旧要同时更新 θ j 。
在写代码的时候对于多元线性回归注意使用向量化(Vectorization),避免使用for循环。向量化其实是使用矩阵进行运算。上式可以分解为:
对于 (1) 式, θ 是一个 n+1 维的向量, α 为标量,对于 (2) 式, h θ (x (i) )−y (i) 为标量, x (i) 即为 X ,为
标准方程求解参数
如果特征数量较少,可以使用标准方程(Normal Equation)求解参数
θ
。直接令
∂∂θ j J(θ)=0
求解
θ
。
如果有
m
个训练样本,则
1.所选取的特征数量一定要小于获取的原始样本数量,即 m>n 。
2.所选取的特征一定要相互独立。
如何还 X T X 的逆矩阵依旧不存在,可以使用伪逆矩阵代替逆矩阵。
当特征数量很多(>5000)时,由于标准方程的计算量很大,所以依旧选择梯度下降。
特征值归一化
特征值归一化又称为特征放缩(Feature Scaling),如果不进行归一化,则可能导致梯度下降经过很长时间才收敛到最小值。归一化即将不同的特征都放缩为相同标准,通常为
也可以使用均值归一化(Mean Normalization):
本文主要偏向于数学公式推导,相关视频可以参考 Andrew Ng 机器学习课程,本文相关内容也源于该课程。