引言
在机器学习领域,模型过拟合是一个常见且需要解决的问题。过拟合指的是模型在训练数据上表现良好,但在未知数据上表现不佳的现象。为了解决这一问题,我们引入了正则化的概念。正则化是一种旨在减少模型泛化误差的技术,而不是仅仅关注降低训练误差。
一,正则化的潦草定义
正则化是一种在损失函数中添加额外项的方法,这些额外项被称为惩罚项。通过这种方式,我们可以控制模型的复杂度,防止过拟合。通俗来说,正则化就是在保证模型拟合训练数据的同时,不让模型过于复杂。
正则化目的是减少泛化误差,而不是减少训练误差的方法。通俗点来讲就是我们常说的防止过拟合问题。
二,机器学习中的L1和L2正则化
预防针:
本文中不会去细究一些原理性的东西,点到为止重在理解。如果想要深入的探究正则化的知识,有一些些些些知识点是必须的,例如高等数学,线性代数。在正则化中具体就涉及到拉格朗日乘子法,矩阵运算,求偏导等等。
1)L1正则化
1.1 L1正则化的定义和图形解释
L1正则化,也称为Lasso回归,通过在损失函数中添加权重的绝对值之和作为惩罚项。这种正则化方法能够导致某些特征的权重为零,从而实现特征的稀疏性。(稀疏性要从权重矩阵来看)
图形解释:在二维空间中,L1正则化的可行域是一个菱形,而损失函数的等高线是圆形。两者的交点往往出现在坐标轴上,使得某些特征权重为零。这需要涉及到高数中的拉格朗日乘数法不展开叙述。
解释了L1正则化的稀疏性后,我就不得不提L1正则化的附带作用--降维或者说特征选择,因为有的特征权重置0了,所以减少了维度,此之谓降维。
1.2 L1正则化的公式表达
加入正则化的损失函数:
回归:loss = mse + penalty
分类:loss = cross entropy + penalty
举个栗子:
线性回归中L1正则化损失函数如下:
其中 就是L1正则项,也叫惩罚项。这个公式也就是Lasso回归。其中
是一个很关键的参数,构建模型时都要选择合适的
。
1.3 代码演示
两种方式实现L1正则化,一种是直接调用sklearn库中的Lasso模型,另外一种是调用SGD模型,如何再选择penalty的参数为L1。
import numpy as np
from sklearn.linear_model import Lasso
from sklearn.linear_