Machine Learning:Multivariate Linear Regression(多元线性回归)

版权声明:本文为King_HAW原创文章,未经King_HAW允许不得转载。 https://blog.csdn.net/King_HAW/article/details/79362927

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(θ)=12m  i=1 m (h θ (x (i) )y (i) ) 2  

梯度下降求解参数

参数 θ  更新方法

θ j  :=θ 0 αθ j  J(θ):=θ 0 αm  i=1 m (h θ (x (i) )y (i) )x (i) j   

j=0  时,因为 x j 1  ,所以上式和之前所推导的更新方法没有区别。注意此时对于 j=0,1,...,n  依旧要同时更新 θ j  
在写代码的时候对于多元线性回归注意使用向量化(Vectorization),避免使用for循环。向量化其实是使用矩阵进行运算。上式可以分解为:
θδ :=θαδ=1m  i=1 m (h θ (x (i) )y (i) )x (i)  (1)(2) 

对于 (1)  式, θ  是一个 n+1  维的向量, α  为标量,对于 (2)  式, h θ (x (i) )y (i)   为标量, x (i)   即为 X  ,为 n+1  维向量,所以可以使用矩阵运算同时计算 θ  中的 n+1  个值。会提高运算效率。

标准方程求解参数

如果特征数量较少,可以使用标准方程(Normal Equation)求解参数 θ  。直接令 θ j  J(θ)=0  求解 θ 
如果有 m  个训练样本,则 X  m×(n+1)  维向量, Y  m×1  维向量。参数计算为

θ=(X T X) 1 X T Y 
得到 n+1  维的参数 θ  。为了保证 X T X  的逆矩阵存在,需要注意以下两点:
1.所选取的特征数量一定要小于获取的原始样本数量,即 m>n 
2.所选取的特征一定要相互独立。
如何还 X T X  的逆矩阵依旧不存在,可以使用伪逆矩阵代替逆矩阵。
当特征数量很多(>5000)时,由于标准方程的计算量很大,所以依旧选择梯度下降。

特征值归一化

特征值归一化又称为特征放缩(Feature Scaling),如果不进行归一化,则可能导致梯度下降经过很长时间才收敛到最小值。归一化即将不同的特征都放缩为相同标准,通常为

x j =x j |x j |(max)  
最后放缩的范围为-1到1。
也可以使用均值归一化(Mean Normalization):
x j =x j μ j S j   
其中, μ j   x j   的平均值, S j   x j   的标准差,为了简单也可使用 x j (max)x j (min)  。归一化后可以让程序运行更快。
本文主要偏向于数学公式推导,相关视频可以参考 Andrew Ng 机器学习课程,本文相关内容也源于该课程。


猜你喜欢

转载自blog.csdn.net/King_HAW/article/details/79362927
今日推荐