线性回归算法

大致思想

机器学习中的线性回归算法最基本的思想:根据数据集(feature+label)模拟出一条近似的曲线,使得每个点的落点都在曲线上或者是曲线的周围不远的地方。

实现方法

1.回归模型

首先设该线性回归函数为 y = ∑ i p r o p e r t y w i x + b y=\sum ^{property}_{i}w_{i}x+b y=ipropertywix+b (w是权重,b是偏置值,x是输入的数据,y表示预测值)。

2.损失函数

损失函数表示预测的值和lable值的差距,这里取平方和的意义在于“放大”预测值和真实值的差距(这里的放大有两种含义:差距大于1平方后会放大差距,差距小于1平方后会缩小差距)。

损失函数: L o s s l a b l e = 1 2 n u m ∑ n = 1 n u m ( y ^ n − y n ) 2 Loss_{lable}=\dfrac{1}{2num}\sum ^{num}_{n=1}\left( \widehat{y}_{n}-y_{n}\right) ^{2} Losslable=2num1n=1num(y nyn)2

其中num表示数据的规模, y ^ n \widehat{y}_{n} y n表示真是值, y n y_{n} yn表示预测值。这里用欧式距离计算的损失值是平均损失,乘1/2为了的后面求导将系数变为1方便计算

关于过拟合问题:

为了防止过拟合我们应该加入regulation项,因为b是个常数,只需要考虑w就好了。

通常regulation项这么定义: L o s s r e g u l a t i o n = 1 2 ∑ i = 1 p r o p e r t y w i 2 Loss_{regulation}=\dfrac{1}{2}\sum ^{property}_{i=1}w^{2}_{i} Lossregulation=21i=1propertywi2

综上损失函数:

L o s s = L o s s l a b l e + L o s s r e g u l a t i o n = 1 2 [ 1 n u m ∑ n = 1 n u m ( y ^ n − y n ) 2 + β ∑ i = 1 p r o p e r t y w i 2 ] Loss=Loss_{lable}+Loss_{regulation}=\dfrac{1}{2}\left[ \dfrac{1}{num}\sum ^{num}_{n=1}\left ( \widehat{y}_{n}-y_{n}\right) ^{2}+\beta \sum ^{property}_{i=1}w_{i}^{2}\right] Loss=Losslable+Lossregulation=21[num1n=1num(y nyn)2+βi=1propertywi2] β \beta β为正则系数)

3.梯度更新

我们的目标就是使得Loss尽可能的减小,所以所要优化的参数就是权重w和偏置值b,所以我们要求得Loss在w和b上的偏微分。

∂ L o s s ∂ w i = 1 n u m ∑ n = 1 n u m ( y ^ n − ∑ i = 1 p r o p e r t y w i x i − b ) ( − x i ) + β ∑ i = 1 p r o p e r t y w i \dfrac{\partial Loss}{\partial w_{i}}=\dfrac{1}{num}\sum ^{{num}}_{n=1}\left( \widehat{y}_{n}-\sum ^{property}_{i=1}w_{i}x_{i}-b\right) \left( -x_{i}\right) +\beta \sum ^{property}_{i=1}w_{i} wiLoss=num1n=1num(y ni=1propertywixib)(xi)+βi=1propertywi

∂ L o s s ∂ b = 1 n u m ∑ n = 1 n u m ( y ^ n − ∑ i = 1 p r o p e r t y w i x i − b ) ( − 1 ) \dfrac{\partial Loss}{\partial b}=\dfrac{1}{num}\sum ^{{num}}_{n=1}\left( \widehat{y}_{n}-\sum ^{property}_{i=1}w_{i}x_{i}-b\right) \left( -1\right) bLoss=num1n=1num(y ni=1propertywixib)(1)

进行梯度更新:

w n e w i = w i − η w ∂ L o s s ∂ ω i w_{newi}=w_{i}-\eta _{w}\dfrac{\partial Loss}{\partial \omega _{i}} wnewi=wiηwωiLoss

w n e w b = b − η b ∂ L o s s ∂ b w_{newb}=b-\eta _{b}\dfrac{\partial Loss}{\partial b} wnewb=bηbbLoss

其中 η w \eta _{w} ηw为权重w的学习率, η b \eta _{b} ηb是偏置值b的学习率。

3.学习率的更新:

这里我们使用比较经典的adagrad(中心思想:刚开始我们更新的时候要让 ∂ L o s s ∂ w i \dfrac{\partial Loss}{\partial w_{i}} wiLoss的值比重较大进而其更新的幅度就较大,当更新一定的次数之后,曲线就越来越接近理想曲线,这时我们希望更新的幅度变小,这样才更容易拟合曲线。我们就要每次训练不断的减小学习率的值)

学习率更新公式: η n = η n − 1 ∑ i = 1 n − 1 g r a d i 2 ‾ \eta _{n}=\dfrac{\eta _{n-1}}{\sqrt{\overline{\sum ^{n-1}_{i=1}grad^{2}_{i}}}} ηn=i=1n1gradi2 ηn1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值