线性回归的最小二乘法与梯度下降法之R实现1.0 前言
放假在家,想着注册一个公众号,作为学习笔记记录及分享交流。
本文第一篇,对线性回归的最小二乘法和梯度下降法,利用R语言进行实现。
2.0 线性回归介绍
线性回归,就是用一条线,来拟合这些点,并且使得点集与拟合函数间的误差最小。如果这个函数曲线是一条直线,那就被称为线性回归,如果曲线是一条二次曲线,就被称为二次回归。
3.0 数据介绍
本文使用iris数据集,共50个样本,2个变量,如下图所示:
由图可知,x与y有较强相关性,拟合线性回归时,一般会加上截距项,因此从上述数据中增加截距项如下。
4.0 最小二乘法实现
最小二乘法(OLS),最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。以下是来自百度百科的最小二乘法推导介绍。
根据上述公式,使用ols算法计算系数向量
通过算法得到的结果,与R base包里面自带了线性回归函数lm计算结果一致
使用ols算法的模型结果,计算预测的结果
5.0 梯度下降法
梯度下降法是机器学习中常用的算法之一,适用于多种场景。
5.1 损失函数
损失函数是指函数按照
拟合函数
hθ
(x)=
θ
+
θ1
x1
hθ(x)=θ+θ1x1, 其中
x
x= 1,
损失函数
J(θ)=
12
∑k=1m
(
hθ
(
x(i)
)−
y(i)
)2
J(θ)=12∑k=1m(hθ(x(i))−y(i))2,m代表有m组样本
损失函数是关于
θj
θj的函数,即取不同的
θj
θj系数值,模型预测值与真实值的差距。好的模型是得到一组系数值,使样本的损失函数最小。在机器学习中,通过算法,不断的进行迭代从而达到算法定义的最优值。梯度下降法是通过求偏导数的方式,对系数进行优化。
5.2 梯度下降法
上面提到,损失函数是关于
θj
θj的函数,梯度下降法是指对于函数求最小值的过程,通过求偏导数的方式,对自变量
θj
θj以偏导数的方式,按照步长迭代,从而达到函数的极值。
∂∂
θj
J(θ)=
∂∂
θj
12
∑k=1m
(
hθ
(
x(i)
)−
y(i)
)2
=
∑k=1m
(
hθ
(
x(i)
)−
y(i)
)
xj
(i)
∂∂θjJ(θ)=∂∂θj12∑k=1m(hθ(x(i))−y(i))2=∑k=1m(hθ(x(i))−y(i))xj(i)
在上述梯度的基础上,参数
θj
θj的迭代式如下:
θj
′
=
θj
−α
∂∂
θj
J(θ)
θj′=θj−α∂∂θjJ(θ)
其中,∂为步长。
5.3 R语言实现梯度下降法
6 总结
结果表明,使用ols最小二乘法、梯度下降法、以及R自动的ls()函数拟合的线性方程系数,结果是一致的。各方法总结如下:
(1)最小二乘法,需要的条件是x的转置乘以x所得到的矩阵可逆,因此不是所有的数据都可以通过最小二乘法进行拟合,且其中有求逆矩阵的过程,算法计算量较大。
(2)梯度下降法是迭代的过程,适用性较强。但对非凸损失函数来说,容易得到局部最优解而非全局最优解。
领取专属 10元无门槛券
私享最新 技术干货