首页
学习
活动
专区
工具
TVP
发布

线性回归的最小二乘法与梯度下降法之R实现

线性回归的最小二乘法与梯度下降法之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 损失函数

损失函数是指函数按照

拟合函数

(x)=

θ

+

θ1

x1

hθ(x)=θ+θ1x1, 其中

x

x= 1,

损失函数

J(θ)=

12

∑k=1m

(

(

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

(

(

x(i)

)−

y(i)

)2

=

∑k=1m

(

(

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)梯度下降法是迭代的过程,适用性较强。但对非凸损失函数来说,容易得到局部最优解而非全局最优解。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180223G11GP000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券