多元线性回归模型

一. 基础

线性回归(Linear Regression)通过学习标记数据学得一多元线性模型能够尽可能准确地预测实值输出标记。本篇将以多项式拟合正弦曲线的案例讲解线性回归。

1. 参数定义

标记数据集:X = ( x1, x2, …, xn )
标记集:T = ( t1, t2, … , tn )
其中 xi = ( xi1, xi2, …, xim )
目标:学到近似函数 f ( x ) = wx + b , 即学习得到参数w, b
近似函数也可以写作 y( x, w ) = w0 * 1 + w1 x + w2x2+ … + wmxm =
在这里插入图片描述
在这里b = w0,需学习的参数也可以写作w

2. 参数学习算法

参数w的学习介绍以下几种基础方法:最小二乘法、梯度下降法、共轭梯度法。
梯度下降法作为经典优化方法,之后会写几篇博客对其变型进行总结。

① 最小二乘法

最小二乘法是解决曲线拟合问题最常用的方法。
数学上最小二乘法基本思路是:令
f(x) = a1f1(x) + a2f2(x) + … + amfm(x)
其中,fi(x) 是事先选定的一组线性无关的函数,ai是待定系数 ,拟合准则是使yi与fi(x) 的距离的平方和最小,称为最小二乘准则。
即可写为:
在这里插入图片描述
用矩阵可表示为:
E(w)= 1/2 * (X * w - t)T * (X * w - t)
对其求导得:
在这里插入图片描述
由导数为零时,E(w)才能取得极值,令导数得0,化简得:(矩阵求导之后会补充相应内容
在这里插入图片描述
XTX可逆,可以求解得到:
在这里插入图片描述
至此得到想要估计的目标参数w的解析解。

核心代码部分可表示为:

w = np.dot(np.dot(np.linalg.inv(np.dot(X.T, X)), X.T), t.T)

最小二乘法(解析法)中拟合阶数m代表了模型的复杂度和拟合能力,当m取值过大而训练数据不足时就会出现如下图所示的过拟合问题。
在这里插入图片描述
如图所示,绿色曲线为目标函数(即想要拟合成的曲线),而红色部分为实际得到的近似函数,它尽可能穿过了15个样例点,使得得到的E(w)最小,但是拟合效果并不好,虽然在用于训练的训练集得到了很好的效果(E(w)很小),但是泛化能力极差,在测试集或新样本上会获得很差的结果。
模型的泛化能力可以通过将数据集拆分为训练集,验证集,测试集进行评判。划分方式以后补充

避免过拟合6种办法:
① 增加训练集样本点个数
② 降低模型复杂度,此处即模型阶数m
③ 正则化:本文采取避免过拟合的方法
④ 缩短训练轮数或降低精度限制,在模型过拟合之前停止训练模型
⑤ 数据增强和添加噪音
⑥ 深度学习:Dropout和Dropconnect

加入正则项避免过拟合
通过观察可以得出,当多元线性模型过拟合时,参数w有参数值较大的特征,故将其记作模型复杂度的惩罚项(也称作正则项),权重置为λ/2。即此时加入正则项的loss记为:
在这里插入图片描述
表示为矩阵形式为:E(w) = (X * w)T * (X * w) + λ/2 * wT * w
同理,求导并令导数为0得w的解析解:w = ( XT * X + λ * I ) * XT * t
对不同的λ,惩罚力度不同,不同惩罚力度下的曲线拟合情况用方值均根的平方ERMS2 进行评估。
在这里插入图片描述
代码实现有正则项的最小二乘法

w = np.dot(np.dot(np.linalg.inv(np.dot(X.T, X) + lama*n*i), X.T), t.T)

② 梯度下降法

梯度下降法是机器学习与深度学习中用于寻找损失函数最优解的经典优化方法,现常用的梯度下降改进算法有批量梯度下降法(BGD),随机梯度下降(SGD),使用动量的随机梯度下降发,使用牛顿动量的随机梯度下降法,AdaGrad,RMSProp,Adam。李宏毅老师机器学习与深度学习课程中简要介绍了有将SGDM+RMSProp。之后将在后续博客进行整理。
本文仅介绍在多元线性回归模型中传统梯度下降法的应用。
在这里插入图片描述
梯度下降法图示如图
传统梯度下降法通过求函数当前点梯度值(梯度方向为函数值增大切线方向),向梯度反方向(函数值减小方向)做定长步长的迭代搜索。在改进的梯度下降法中,可以调整为可变步长。

多项式拟合时,梯度下降法损失函数设为与最小二乘法相同的损失函数。即:
loss = E(w)= 1/2 * (X * w - t)T * (X * w - t)
对于多项式回归问题,梯度下降法算法步骤为:
1)确定当前位置的损失函数的梯度,对于w向量,其梯度表达式为:ə E(w) / ə w
2)用步长乘以损失函数的梯度,得到当前位置下降的距离,即α * ( ə E(w) / ə w ) = α * XT * ( X * w - t )对应于前面登山例子中的某一步。
在这里插入图片描述

3)确定w 向量里面的每个值,梯度下降的距离都小于ε,如果小于ε则算法终止,当前w向量即为最终结果。否则进入步骤4.
4)更新w向量,其更新表达式为:w = w - α * XT * ( X * w - t )。更新完毕后继续转入步骤1.

梯度下降法可调参数:
1)步长α:如图,过大步长可能迈过了极值点,过小则收敛速度慢,步长选择不恰当还会造成振荡现象。
在这里插入图片描述

2)初值:由于梯度下降法可能陷入局部最优,所以好的初值是梯度下降法取得好结果的条件。

同理,可以将loss函数变为加入正则项的函数防止过拟合。
除振荡现象外,梯度下降法还会出现鞍部停滞现象,该现象可加入之前梯度的影响项避免,即通过动量SGD避免,该问题与算法将在之后文章中介绍。

③ 共轭梯度法

共轭梯度法可用于求解线性对称正定方程组的解。
则对于最小二乘法得到的损失函数loss = E(x) 对其求导并令导数等0可以得到其极值解w。即对
在这里插入图片描述
A = XTX为对称正定矩阵,可用共轭梯度法估计方程解w
且有算法迭代求解。算法伪代码如下图。
在这里插入图片描述

  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值