机器学习中岭回归、LASSO回归和弹性网络与损失函数

今天咱们来聊点纯技术的东西,这东西是基础,不说往后没法说,在机器学习领域中,我们可以通过正则化来防止过拟合,什么是正则化呢?常见的就是岭回归、LASSO回归和弹性网络。

先说说什么叫做过拟合?咱们看下图

左1叫欠拟合,中间的拟合得比较好,右1就是过拟合了,因为它对局部过于重视,导致图形边界太复杂,我们不能为了拟合而拟合,像右1这种情况在本数据肯定拟合得很好,但是换个数据就不行了,所以过拟合没有啥实用性。下面这张对数据分类得也是一样的

图二:

我们可以看到为了增加拟合度,上图右1得算法是多么得复杂。正则化得目的就是抑制复杂得算法来达到过拟合得目的。主要是通过一个惩罚函数将模型得系数进行压缩来实现。在这之前我们还是先聊下最小二乘法和损失函数。

最小二乘法在统计学和机器学习中应用非常广泛。

下图中有4个红点,我们需要拟合这4个点得趋势,那么我们需要找到一条线,假设我们已经找到了,就是下图蓝色线。那么红点得位置得Y就是Y得实际值,同X轴中蓝线的Y的值就是Y的预测值,这样说可以理解吧。Y的实际值和Y的预测值之间的差值,就是我们的误差,在统计学中也叫残差,就是绿色的部分。

那么我们怎么找到一条最合适的拟合4个点的趋势的线呢,就是

Y1(实际值)-Y1(误差值)+ Y2(实际值)-Y2(误差值)+ Y3(实际值)-Y3(误差值)+ Y4(实际值)-Y4(误差值)等于最小的时候。

也就是所有绿色线长度加起来最小的时候。因为有时候实际值减去平均值可能会有负值,所以我们把他们的差值进行平方后再相加,就是

(Y1(实际值)-Y1(误差值))2+ (Y2(实际值)-Y2(误差值))2+ (Y3(实际值)-Y3(误差值))2+ (Y4(实际值)-Y4(误差值))2

在数据统计中我们可以使用Y_i来表示Y的实际值,Y_i表示预测值,Σ为累加的意思,表示这些项式的的加和,可以使用下面的公式来表示

在机器学习中以最优化参数组合的函数称为损失函数。在本例中,我们的平方和这个函数就是损失函数,其实就是误差达到最小的函数。我们求出一条线,使得所有的平方和达到最小,就是我们最合适的拟合线。

刚才那种情况是比较简单的,复杂的时候,如图二右一这种情况,为了达到损失函数最小,可能会出现过拟合。我们常见的用来防止过拟合的正则化有岭回归,LASSO回归和弹性网络。现在咱们线来聊下岭回归。

岭回归就是在刚才的损失函数①中加入了一个惩罚函数,叫L2范数,就是β平方后进行累加,然后乘以系数λ。这里需要注意下这里的系数不包含截距项。

加入了L2范数后,损失函数的公式就是如下:

我们可以看到在L2范数中加入了λ这个参数后,如果模型中的β很多的话,β平方后进行累加这个值就会增大,这个时候λ就可以对β平方后进行累加的和进行压缩,优化咱们的损失函数。λ这个函数属于超参数,数据中是无法估计出来的,只能在不断的模型交叉验证中不断迭代后,得出一个最佳的λ。我们既往的文章《手把手教你使用R语言做LASSO 回归》中我们可以看到下图(下图是LASSO 回归生成,但是原理是一样的)

其实就是一个λ不断变大,交叉验证,然后获得最优性能的一个过程,在这个过程中可以看到系数被压缩。

由上图我们可以发现,当λ=0时β1和β2的系数都是1.5这样,当λ进一步向圈内压缩,β1和β2的系数变小,岭回归选择的点β2的系数已经被压缩到0.6这样,因此使用岭回归避免了训练模型对数据的过拟合。

接下来咱们聊聊LASSO回归,它和岭回归有什么不同呢?岭回归使用的是L2范数,而LASSO使用的是L1范数,公式如下:

岭回归的范数是β系数平方累加,而LASSO则是β系数的绝对值进行累加,下面是LASSO回归损失函数的公式

那么问题来了,这两个函数有什么不同呢?岭回归会压缩系数,但是系数不会压缩到0,但是LASSO回归是可以将系数压缩到0的。从而可以帮我们进行指标筛选。

我们可以看到岭回归的惩罚函数是圆形,而LASSO回归的惩罚函数是菱形的,在同样的λ岭回归中β2的系数是0.6这样,而LASSO回归中β2的系数是0,表明β2已经被移除了。

最后咱们来聊聊什么是弹性网络,弹性网络等于把岭回归和LASSO回归进行了打包组合,它的公式如下:

由此可见弹性网络引入了α这个超参数,当α为0的时候,弹性网络就等于岭回归,当α等于1的时候,它就等于LASSO回归。因此它就具有了岭回归和LASSO回归的优点,更受欢迎。

说到这里,理论基本结束了,说理论真费时间。下面我们来结合glmnet包和我的《手把手教你使用R语言做LASSO 回归》这篇文章回看一下,

我们线看下glmnet包中glmnet函数的参数的解释,

主要看参数alpha 这个参数,1是lasso而0是ridge penalty,是不是和我们的弹性网络很相似

接着咱们来看下LASSO中生成压缩系数的图

r 复制代码
cvfit=cv.glmnet(x,y)
plot(cvfit)

我们可以看到cv.glmnet函数生成了这个λ变化的MSE的图,

我们可以看到cv.glmnet函数就是一个交叉验证的函数,它是通过提供的λ值来计算MSE最后得到一个最优解。印证了我们上面说的内容。

最后总结一下,咱们今天初步介绍了岭回归、LASSO回归和弹性网络与损失函数,损失函数是机器学习中的重要内容,不说这个后面没方法说。后续有空咱们介绍一下怎么R语言手动推导逻辑回归或者线性回归的结果。了解了原理,回归怎么生成结果的,很多问题R中的问题迎刃而解,比如说下面这种报错:1: glm.fit:算法没有聚合 2: glm.fit:拟合機率算出来是数值零或一


这些都是模型没有收敛导致的,有空再聊。

相关推荐
AI极客菌30 分钟前
Controlnet作者新作IC-light V2:基于FLUX训练,支持处理风格化图像,细节远高于SD1.5。
人工智能·计算机视觉·ai作画·stable diffusion·aigc·flux·人工智能作画
阿_旭32 分钟前
一文读懂| 自注意力与交叉注意力机制在计算机视觉中作用与基本原理
人工智能·深度学习·计算机视觉·cross-attention·self-attention
王哈哈^_^37 分钟前
【数据集】【YOLO】【目标检测】交通事故识别数据集 8939 张,YOLO道路事故目标检测实战训练教程!
前端·人工智能·深度学习·yolo·目标检测·计算机视觉·pyqt
Power20246662 小时前
NLP论文速读|LongReward:基于AI反馈来提升长上下文大语言模型
人工智能·深度学习·机器学习·自然语言处理·nlp
数据猎手小k2 小时前
AIDOVECL数据集:包含超过15000张AI生成的车辆图像数据集,目的解决旨在解决眼水平分类和定位问题。
人工智能·分类·数据挖掘
好奇龙猫2 小时前
【学习AI-相关路程-mnist手写数字分类-win-硬件:windows-自我学习AI-实验步骤-全连接神经网络(BPnetwork)-操作流程(3) 】
人工智能·算法
沉下心来学鲁班2 小时前
复现LLM:带你从零认识语言模型
人工智能·语言模型
数据猎手小k2 小时前
AndroidLab:一个系统化的Android代理框架,包含操作环境和可复现的基准测试,支持大型语言模型和多模态模型。
android·人工智能·机器学习·语言模型
YRr YRr2 小时前
深度学习:循环神经网络(RNN)详解
人工智能·rnn·深度学习
sp_fyf_20242 小时前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-11-01
人工智能·深度学习·神经网络·算法·机器学习·语言模型·数据挖掘