线性回归笔记

本文深入解析线性回归原理,涵盖模型定义、损失函数构造、梯度下降法寻优及过拟合与欠拟合问题应对策略,助你掌握回归分析核心。

Regression

对数值的趋势做预测

输入为一系列相关特征值,输出我们的预测结果

1 定义一个model

即定义一个合理的function set,这里的set表示很多组参数形成的很多function,后续我们需要用梯度下降来选择最好的function

所谓Liner Model,即一个函数 f ( ⋅ ) f( \cdot ) f()可以表示成如下形式

f ( w , b ) = b + ∑ w i x i f(w, b)=b+\sum w_{i} x_{i} f(w,b)=b+wixi

则我们称这样的函数为一个Liner Function.

2 定义一个loss函数,来衡量我们上面的定义的function的好坏

loss function的input是一个function,即我们的模型function,output是一个数值来表示我们上面定义的模型function多好或多不好。

L ( f ) = L ( w , b ) = ∑ n = 1 N ( y ^ n − ( b + w ⋅ x c p n ) ) 2 \begin{aligned} \mathrm{L}(f) &=\mathrm{L}(w, b) \\ &=\sum_{n=1}^{N}\left(\hat{y}^{n}-\left(b+w \cdot x_{c p}^{n}\right)\right)^{2} \end{aligned} L(f)=L(w,b)=n=1N(y^n(b+wxcpn))2

3 从function set中找一个最好的function

如果已经确定了方程的结构,那接下来要找一个最好的function其实就是寻找一组最优的参数 w , b w, b w,b使得损失值最小:

f ∗ = a r g    min ⁡ f   L ( f ) f^* = arg \; \min_{f} \, L(f) f=argfminL(f)

或者

w ∗ , b ∗ = arg ⁡ min ⁡ w , b L ( w , b ) = arg ⁡ min ⁡ w , b ∑ n = 1 10 ( y ^ n − ( b + w ⋅ x c p n ) ) 2 \begin{aligned} w^{*}, b^{*} &=\arg \min _{w, b} L(w, b) \\ &=\arg \min_{w, b} \sum_{n=1}^{10}\left(\hat{y}^{n}-\left(b+w \cdot x_{c p}^{n}\right)\right)^{2} \end{aligned} w,b=argw,bminL(w,b)=argw,bminn=110(y^n(b+wxcpn))2

要解这样的方程,我们通常用梯度下降(gradient descend)方法,对于任何一个可微分方程,都可以用梯度下降来寻找最优解。(我们通常会把损失函数L处理成凸函数,这样才可以用梯度下降求得全局最优,不然只能得到局部最优。)

梯度下降指导了如何进行参数更新,至于每次更新多少,取决与:

  1. 梯度下降计算的参数偏导数的值大小;
  2. 一个可调节超参learning rate,一般用 η \eta η来表示。

一个简单的demo,一个只有一个参数 w w w的方程,来做梯度下降如下所示:

首先随机选一个初始值 w 0 w^0 w0,计算方程对参数 w w w的偏导数,并更新参数 w w w,然后继续计算偏导数来更新参数的值,直到到达一个最优值,如下图所示:

在这里插入图片描述

同样的,两个参数 w , b w, b w,b的函数梯度下降如下:

在这里插入图片描述
最终,我们能得到一个使得损失值最小的最优参数值 w , b w, b w,b

4 评估与优化

在训练集数据上把参数调到了最优并没有结束,我们真正关心的是该模型/函数在测试集上对新的数据的预测结果如何。

4.1 Underfitting

对于模型的性能,如果模型过于简单,一般会underfitting,即简单的模型并不能很好的拟合数据的变化趋势。

对于underfitting的情况,我们需要重新设计模型函数,增加function的复杂度,比如引入二次式,甚至三次,多次式,来更好的拟合数据(更复杂的模型同时意味着更容易过拟合)
也可以收集更多的数据特征,增加数据的信息丰富度。

4.2 Overfitting

对于复杂模型,比较容易出现过拟合的情况,原因是参数过多,function过于复杂,模型函数甚至可以拟合到训练集的每一个数据,以使损失函数L的值最小化。但造成的问题是模型不具有普适性,对于新的测试数据预测精度很差。

Overfitting的一般表现是在训练集上表现优异,准确率非常高,但在训练集上非常糟糕,准确率很低,或者训练集预测损失值有先下降后上升的趋势。

解决办法:

增大数据量:万灵丹

添加正则项:Regularization

解决过拟合问题

对于一个模型 y = b + ∑ w i x i y=b+\sum w_{i} x_{i} y=b+wixi 我们对其损失函数加入正则项 λ ∑ ( w i ) 2 \lambda \sum\left(w_{i}\right)^{2} λ(wi)2得到新的损失函数如下:

L = ∑ n ( y ^ n − ( b + ∑ w i x i n ) ) 2 + λ ∑ ( w i ) 2 L=\sum_{n}\left(\hat{y}^{n}-\left(b+\sum w_{i} x_{i}^{n}\right)\right)^{2}+\lambda \sum\left(w_{i}\right)^{2} L=n(y^n(b+wixin))2+λ(wi)2

这里的正则项,就是模型方程所有参数的平方加和,乘以一个超参 λ \lambda λ,由于我们的损失函数要取最小值,所以 λ ∑ ( w i ) 2 \lambda \sum\left(w_{i}\right)^{2} λ(wi)2越小损失值越小,即我们期望模型方程的参数 w i w_i wi越小越好。

为什么我需要这样的 w i w_i wi呢,其直观意义是什么?

对于一个方程,其参数 w i w_i wi越小,方程的曲线越平滑,即当方程的input变化时,output对input是比较不敏感的,想象极端情况下,所有的 w i w_i wi都等于0,使 f = b f = b f=b就成了一条直线,input值 x i x_i xi再怎么边, f f f输出都不变。

使方程曲线更平滑的意义在于对输入不敏感,使得模型方程对训练数据中的一些噪音得以免疫,从而在测试集上得到更好的结果。

通常加入正则项会使训练集的损失值变大,因为他是曲线更平滑,不会过分的拟合每一个数据,但会使得测试集上的损失值更优。如下图所示:

在这里插入图片描述
参考李宏毅的机器学习课程做的笔记

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值