机器学习入门 8-10 L1,L2和弹性网络

2020-02-17 15:49:13 浏览数 (1)

本系列是《玩转机器学习教程》一个整理的视频笔记。本小节主要介绍L1,L2正则项,引入Lp范数新概念,提出L0正则项。为了利用L1,L2正则项各自优点,提出了弹性网。实际进行模型正则化时,优先使用岭回归,如果特征数量非常多,选择弹性网。

1

L0,L1,L2的由来

前几个小节详细介绍了岭回归和LASSO回归这两种模型正则化的方式,通过这两种方式能够帮助我们解决模型在训练过程中发生的过拟合。

这两种模型正则化的方式都是在原始的损失函数后面添加一项,这一项的作用就是希望能够尽量减小学习到的系数θ值的大小。这样得到的拟合曲线趋向平缓,模型复杂度降低,模型的泛化能力提高。

岭回归和LASSO回归这两种模型正则化方式,主要区别在于损失函数后面添加的项有所不同。

如果单看添加的两项一定会非常熟悉,实际上在前面的介绍中有两次提到过类似的表达方式。

  1. 学习线性回归算法评判标准的时候提到过两种评判标准。一种叫做均方误差MSE,另一种叫做平均绝对值误差MAE。这两种误差的表现形式和Ridge/LASSO正则化方法添加的正则化项非常的相似,MSE是平方和,而MAE是绝对值和;
  2. 学习kNN算法衡量样本点之间距离的时候提到过两种计算距离公式。一种是欧拉距离,欧拉距离计算两点间对应维度差的平方和,另一种是曼哈顿距离,曼哈顿距离是计算两个点每个维度对应差的绝对值之和。很明显这两种计算两点间距离的公式整体形式也和Ridge/LASSO非常相似。

通过上面的两个例子可以看出,其实在机器学习领域,对于不同的应用可能会发明出很多不同的名词,这些不同的名词来表达不同的衡量标准。

  1. Ridge和LASSO的正则化项用于衡量模型的复杂度;
  2. MSE和MAE是用来衡量回归结果的好坏;
  3. 欧拉距离和曼哈顿距离是用来衡量两点之间距离的大小;

虽然它们表达了不同的衡量标准,但是它们背后的数学思想其实是非常相近的,表达出来的数学含义也近乎一致,只不过应用在了不同的场景中,因此产生了不同的效果,进而生成了不同的专业名词。虽然在机器学习中会有非常多的名词,但是如果结合起来看会发现很多名词之间是有非常紧密的联系的。

还有一点需要注意,在介绍kNN算法的时候,提到过两点之间距离的重要性,并在那一章提到了明可夫斯基距离。

明可夫斯基距离表达式为两点之间对应维度差的绝对值的p次方,然后对所有对应维度的计算结果求和,最后对求和结果开p次方根。

将明可夫斯基距离进一步泛化提炼成Lp范数。

Lp范数就是在第i个维度绝对值的p次方,将所有维度上计算的结果求和之后开p次方根。

  1. 当p = 1的时候称为L1范数;
  2. 当p = 2的时候称为L2范数;

其实Lp范数当p = 1的时候,其实相当于就是从零点到x这个向量的曼哈顿距离,当p = 2的时候相当于就是从零点到x这个向量的欧拉距离。现在引入了范数新概念,但是这些新的概念和之前学习过的内容完全不冲突。

现在结合Lp范数的概念看一看本章介绍的两种正则化方式,对于岭回归的正则化项,通常称为L2正则项。可以看出这个L2正则项与L2范数之间的区别在于有没有开平方根,不过有时候在一些教科书或者交流的时候可能会发现将L2正则项也称为L2范数。这是因为其实我们的正则项是加在原始损失函数上,相加的整体作为新的最优化损失函数,此时对于正则项开不开根号对最终优化的结果是没有影响的,但是如果不要这个根号会使整个式子变的更加简单。同理,对于LASSO正则化这种方式来说,添加的正则项称为L1正则项。

在这里相当于又引入了Lp范数和L1,L2正则项这些新的概念,这些概念和前面介绍的岭回归和LASSO回归本质上是一致的,在这里需要了解这些名词。当然既然有L1正则项,L2正则项,相应的就一定会有Ln正则项,只要依据Lp范数的表达式去写即可。不过在实际模型正则化的过程中通常是很少使用p > 2这样的正则项,也就是说我们通常不会使用像L3,L4这样的正则项,但是理论上是存在这些正则项的,这些简单了解就可以了。

通过上面的学习,知道了其实对于岭回归这种模型正则化方式,相当于给原始的损失函数添加了一个L2正则项,而对于LASSO回归这种模型正则化方式,相当于给原始损失函数添加了一个L1正则项。

实际上还存在L0正则项,L0正则项和L1,L2正则项类似,依然是在原始损失函数后面添加一项,这一项很难用数学的形式表达出来,但是非常好理解,就是希望让θ的个数尽量的小。

L0正则项和L1,L2的区别在于L1,L2正则项都是一个可以写出来的数学表达式,我们只需要让这个数学表达式加上MSE函数构成新的损失函数,让这个新的损失函数最小即可。L0正则项希望θ的个数越少越好,换句话说L0正则项描述的是非零θ元素的个数。我们通过这种方式来限制θ的数量,使θ的数量尽可能的少,进而使我们得到的拟合曲线不会过于陡峭,在一定程度上模型复杂度降低,模型的泛化能力会提高(假设此时模型发生了过拟合)。不过实际上我们很少使用L0正则进行模型正则化,这是因为对于L0正则求解最优化的问题是一个NP难的问题,我们不能使用诸如梯度下降或者直接求解出一个数学表达式来直接找到这个最优解。

L0正则化添加的正则项本质上是一个离散项,它是一个离散的最优化的问题,我们可能要穷举出所有让θ组合为零的θ,以此来计算出J(θ),进而决定让那些θ值为0,那些θ值不为0。这个计算过程是一个NP难的问题,所以通常情况下我们是不使用L0正则的,而如果我们真的想要限制θ个数的话,通常使用L1正则来替代。在上一小节介绍了使用L1正则也就是使用LASSO回归这种模型正则化的方式能够进行特征选择,通过特征选择的功能将大量θ值转换为0,以此来限制θ的数量。

2

弹性网

这一章的最后来介绍一下弹性网,弹性网虽然听起来是一个新的名词,但是其实它背后的思想非常简单。

在之前无论是岭回归还是LASSO回归都是在MSE均方误差的基础上添加一个L1正则项或者是L2正则项形成新的损失函数,而弹性网则是结合这两种方式,也就是说弹性网在MSE均方误差之后即添加L1正则项又添加L2正则项,在这里又引入了一个新的超参数通常为r,相应的在L2正则项前面就是(1 - r),不过在上面关于弹性网损失函数J(θ)中L2正则项前面还有一个1/2,这里的1/2是L2正则项本身自带的与新的超参数r是没有关系的。

通过添加L1正则项与L2正则项这种新的方式对模型进行正则化,此时的正则化会同时结合岭回归和LASSO回归的优势,这种方式就称之为弹性网。

实际应用中,进行模型正则化的过程首先应该尝试一下岭回归,这是因为岭回归计算相对精准,所以如果计算能力可以承受住的话可以使用岭回归。但是如果特征数量特别多的话,由于岭回归不具备特征选择的功能,不能将某些θ值设置为0。所以当特征数量非常大的话,整体的计算量就会非常的大,此时应该优先选择弹性网,这是因为弹性网结合了岭回归计算精准优点的同时又结合了LASSO回归可以对特征进行选择的优势。单使用LASSO回归这种方式的缺点在于L1正则急于将某些θ值化为0,这个转化过程可能会出现一些错误,可能会忽略掉一些有用的特征,使最终得到的模型偏差比较大。这是老师在实际应用模型正则化时候提的一点建议。

弹性网将岭回归和LASSO回归两者的优点结合在了一起,其实在介绍小批量梯度下降法的时候提到过,小批量梯度下降法是结合批量梯度下降法和随机梯度下降法这两种方法,将这两种方法的优势集中在了一起。在机器学习领域经常会使用这种方式来创造出新的方法,这些新的方法名字听起来可能非常的炫,其实它们背后想表达的思想可能非常简单。

3

本章小结

这一章介绍了多项式回归,通过多项式回归引出在机器学习领域非常重要的模型泛化概念。训练机器学习模型的目的不是为在训练集上有非常好的测试结果,而是希望在面对未知的数据集上有非常好的结果。在这一章我们介绍了很多技术,包括如何看学习曲线;如何进行交叉验证;如何进行模型正则化等等,这些技术的目的都是为了让模型泛化能力变的更强。

这里为了进一步加深对模型泛化的理解,举一个简单的小例子,这好比参加考试,在参加考试之前我们需要做很多的练习题来进行备考,这些练习题可以看做是训练数据集,我们的目的不是为了在这些练习题上达到满分,而是为了通过这些练习题让我们应对那场真正的考试,显然在真正的考试中那些题目都是我们没有见到过的,备考过程中得到最终考试得到更高的分数,其实和机器学习训练模型的过程是一样的,那些训练数据集就好像是我们平时做的练习题,而未来在真实生产环境中见到的新的数据则像是那场真正的考试。

模型泛化是机器学习非常非常重要的一个话题,当然这一章并没有涵盖和模型泛化相关的全部概念,不过这一章的知识足够应付后续机器学习算法的学习,课程的后续很快就会看到无论是逻辑回归模型、SVM还是决策树都需要进行模型泛化的处理。下一章将进入一个全新的话题逻辑回归,逻辑回模型是机器学习领域非常著名的一个分类算法,而这种分类算法是从前面介绍的线性回归这种简单的算法衍生而来的。

0 人点赞