L1,L2和弹性网络
之前学习了岭回归和 L A S S O LASSO LASSO 回归两种模型正则化的方式,都可以帮助我们解决在训练的过程中产生的过拟合的问题。对于这两种正则化的方式,无论是岭回归还是 L A S S O LASSO LASSO 回归,都是在原始的损失函数后面添加一项,这一项的作用都是期望能够尽量减小学习到的 θ θ θ 的大小,使得我们模型的泛化能力更强一些。
对于这两种方式,我们在损失函数后面添加的项有所不同,一个是平方,一个是绝对值。其实我们在机器学习算法中已经遇见过两次这种平方与绝对值的比较了。比如在学习回归算法的评判标准的时候,提到过
M
S
E
MSE
MSE(均方误差) 和
M
A
E
MAE
MAE(平均绝对误差),这两种误差的表现方式和模型正则化的两种方式十分的类似。还有就是欧拉距离与曼哈顿距离也是如此。
通过这个就可以看出来,其实在机器学习领域对于不同的应用我们可能会发明出很多不同的名词,不同的名词表达不同的衡量标准。
说到距离,我们之前提到过明可夫斯基距离,它的公式是这样的。
我们将这种形式再进行一下变形,提炼成:
我们将上面这种形式称为
L
p
L_p
Lp 范数,如果
p
=
1
p = 1
p=1,其实就相当于
x
x
x 向量的曼哈顿距离,当
p
=
2
p = 2
p=2 时,就表示该向量的欧拉距离。我们又引入了一个新的概念
L
p
L_p
Lp 范数,但是和我们之前学习到的内容是完全不冲突的,那我们结合
L
p
L_p
Lp 范数,看一下
R
i
d
g
e
Ridge
Ridge,这种形式是一个
L
2
L2
L2 正则项。而
L
2
L2
L2 正则项与
L
2
L2
L2 范数 的区别就是没有开根。我们加上这个开根是不影响我们最后的结果的。但是不加上根号使得式子更加简单。
同理,对于
L
A
S
S
O
LASSO
LASSO 所添加的正则项就被称为
L
1
L1
L1 正则项。
那么,既然有 L 1 L1 L1 正则项, L 2 L2 L2 正则项,那么就有 L n Ln Ln 正则项。不过在我们进行模型正则化的过程中,通常很少使用 p > 2 p > 2 p>2 这样的正则项。实际上,还存在一个 L 0 L0 L0 正则项,那么我们是怎么定义 L 0 L0 L0 正则项呢?依然是为我们的损失函数添加一个内容,但是这个内容用数学的形式很难表达:
添加的项的意思是希望
θ
θ
θ 的个数尽量小,注意它和
L
1
L1
L1 和
L
2
L2
L2 的区别,
L
1
L1
L1 和
L
2
L2
L2 都是可以写出来的数学表达式,我们只需要让这个数学表达式加上
M
S
E
MSE
MSE 尽可能小。但是
L
0
L0
L0 这个正则项的意思是让
θ
θ
θ 的个数越少越好,描述的是非零
θ
θ
θ 元素的个数,我们用这样一种方式来限制
θ
θ
θ 的数量尽可能少,进而使得我们得到的曲线不要太陡。实际上,我们很少使用
L
0
L0
L0 正则进行模型正则化的过程的,这是因为对于
L
0
L0
L0 正则的优化是一个 NP 难的问题,所以通常我们是不使用
L
0
L0
L0 正则的,如果我们真的想要限制
θ
θ
θ 的个数,通常我们用
L
1
L1
L1 正则来取代。
在最后,再介绍一个概念弹性网(Elastic Net)。其实弹性网就是结合 L A S S O LASSO LASSO 和 岭回归这两种方式,在 M S E MSE MSE 后面添加一个 L 1 L1 L1 正则项和一个 L 2 L2 L2 正则项。只不过在这里我们又引入了一个新的超参数 r r r 来表示这两种正则项它们之间的比例是怎样的。
在实际应用中,在进行模型正则化的过程中,通常都应该先尝试一下岭回归,之前已经说过,岭回归的计算相对来说是比较精准的,但是岭回归的缺点就是如果特征数特别大的化,由于它不具有特征选择的功能,不能将某些 θ θ θ 设置为 0,所以当 θ θ θ 量太大的化,可能整体的计算量会非常大,此时应该优先选择弹性网,这是因为弹性网结合了岭回归和 L A S S O LASSO LASSO 回归的优点,而 L A S S O LASSO LASSO 回归的缺点就是急于将 θ θ θ 化成 0,这个过程可能会产生错误,使得我们最终求得的模型偏差比较大。