HOOOS

L1正则化没你想的那么简单!深入对比其他正则化方法及在不同模型中的应用

0 64 爱吃火锅的算法喵 L1正则化特征选择机器学习
Apple

哎呀,说到 L1 正则化,你是不是觉得这玩意儿早就烂大街了?不就是给损失函数加个绝对值嘛!嘿,我跟你说,L1 正则化可没你想得那么简单!今天咱就来好好扒一扒 L1 正则化,看看它到底有啥厉害之处,以及和其他正则化方法比起来,谁更胜一筹。

啥是 L1 正则化?

在机器学习里,为了防止模型过拟合,也就是在训练集上表现贼好,一到测试集就拉胯的情况,我们通常会用到正则化。L1 正则化就是其中一种,它的核心思想是:在原始的损失函数基础上,加上模型权重的绝对值之和

用公式表示就是这样:

$$L_{total} = L_{original} + \lambda \sum_{i=1}^{n} |w_i|$$

其中:

  • $L_{total}$ 是加了 L1 正则化后的总损失。
  • $L_{original}$ 是原始的损失函数,比如均方误差、交叉熵等等。
  • $w_i$ 是模型的权重。
  • $n$ 是权重的数量。
  • $\lambda$ 是正则化系数,用来控制正则化的强度。这玩意儿很重要,太大了模型就欠拟合,太小了又起不到正则化的效果。

你看,公式里那个 $\sum_{i=1}^{n} |w_i|$ 就是 L1 正则化的精髓所在。它把所有权重的绝对值加起来,然后乘以一个系数 $\lambda$,再加到原始的损失函数上。这样一来,模型在训练的时候,不仅要考虑原始的损失,还要考虑权重的绝对值之和。权重越大,这个“惩罚”就越大,模型就越“不敢”让权重变得太大。

L1 正则化为啥能防止过拟合?

你可能会问,加个绝对值就能防止过拟合?这是什么原理?

1. 特征选择(稀疏性)

L1 正则化最大的特点就是能产生稀疏解。啥叫稀疏解?就是说,模型训练完之后,很多权重都变成了 0。你想啊,权重变成 0 了,就相当于对应的特征没用了,这不就等于做了特征选择嘛!

为啥 L1 正则化能产生稀疏解呢?咱们可以从几何的角度来理解。
假设我们的模型只有两个权重 $w_1$ 和 $w_2$,原始的损失函数是一个椭圆形的等高线(图中蓝色部分)。L1 正则化项的等高线是一个菱形(图中红色部分)。

L1正则化几何解释

当这两个等高线相切的时候,总损失最小。你会发现,L1 正则化的菱形更容易和椭圆形的等高线在坐标轴上相切,这时候,某个权重就变成了 0。

2. 限制模型复杂度

L1 正则化通过让一些权重变成 0,相当于减少了模型的参数数量,降低了模型的复杂度。模型越简单,就越不容易过拟合。

L1 正则化 vs. 其他正则化方法

除了 L1 正则化,常见的正则化方法还有 L2 正则化和 Elastic Net。

1. L2 正则化

L2 正则化也是在原始的损失函数基础上加一个“惩罚项”,不过它加的是权重的平方和:

$$L_{total} = L_{original} + \lambda \sum_{i=1}^{n} w_i^2$$

L2 正则化也能防止过拟合,但它和 L1 正则化有啥区别呢?

  • L1 正则化产生稀疏解,L2 正则化不会。L2 正则化会让权重变得很小,但不会让它们变成 0。
  • L1 正则化对异常值更鲁棒。因为 L1 正则化用的是绝对值,而 L2 正则化用的是平方,所以 L2 正则化对异常值更敏感。

从几何的角度来看,L2 正则化项的等高线是一个圆形(图中红色部分)。

L2正则化几何解释

圆形和椭圆形的等高线相切的时候,不容易在坐标轴上相切,所以 L2 正则化不会产生稀疏解。

2. Elastic Net

Elastic Net 结合了 L1 正则化和 L2 正则化,它的损失函数是这样的:

$$L_{total} = L_{original} + \lambda_1 \sum_{i=1}^{n} |w_i| + \lambda_2 \sum_{i=1}^{n} w_i^2$$

Elastic Net 同时具有 L1 正则化和 L2 正则化的优点,既能产生稀疏解,又能对异常值不那么敏感。但是,Elastic Net 有两个正则化系数,调参起来更麻烦。

L1 正则化在不同模型中的应用

L1 正则化可以用在各种各样的机器学习模型中,比如:

1. 线性回归

在线性回归中,L1 正则化被称为 Lasso 回归。Lasso 回归可以用来做特征选择,找出对目标变量影响最大的特征。

2. 逻辑回归

在逻辑回归中,L1 正则化也可以用来做特征选择,找出对分类结果影响最大的特征。

3. 支持向量机 (SVM)

在 SVM 中,L1 正则化可以用来控制模型的复杂度,防止过拟合。

###4. 非线性模型与特征工程

在非线性模型里用L1正则化, 直接用可能效果不明显。为啥呢?因为很多非线性模型(比如神经网络)本身就有很强的表达能力, 直接加L1可能作用有限。这时候, 就要结合特征工程来搞了。

怎么搞呢? 咱们可以先通过特征工程, 手动或者自动地构造出很多新的特征, 然后再用L1正则化去筛选这些特征。 举个例子:

  1. 多项式特征: 假设你原来的特征是 x, 你可以搞出 x²,x³ 这样的新特征。
  2. 交互特征: 假设你原来有特征 x1 和 x2, 你可以搞出 x1 * x2 这样的新特征。
  3. 其他变换: 比如对某些特征取 log, 开方等等.

把这些新特征和原来的特征一起扔给模型, 然后用L1正则化去筛选。这样, 就能在非线性模型里充分发挥L1正则化的特征选择作用了!

总结

L1 正则化是一种非常有效的正则化方法,它通过让一些权重变成 0,来实现特征选择,降低模型复杂度,防止过拟合。与其他正则化方法相比,L1 正则化最大的特点是能产生稀疏解,对异常值更鲁棒。L1 正则化可以用在各种各样的机器学习模型中,特别是在需要做特征选择的场景下,L1 正则化更是大显身手。在非线性模型中,则可以结合特征工程进行特征选择。

所以,别再小瞧 L1 正则化了!它可不是你想象的那么简单!快去试试吧!

哎,说了这么多,你是不是对 L1 正则化有了更深的了解?下次再遇到 L1 正则化,可别再说你不知道它是干啥的了!如果你觉得我讲的还不错,记得点个赞哦!

点评评价

captcha
健康