机器学习期末复习——第二章
机器学习期末复习——第二章
一、重点知识点回顾
1. 过拟合 vs 欠拟合
过拟合(Overfitting)和欠拟合(Underfitting)都是模型泛化(Generalization)能力不足的两种典型表现。
所谓泛化能力,就是指模型在未见新样本上的表现,泛化误差越小,模型的泛化能力就越好。而在我们训练模型时,我们当然希望模型在新样本上表现得很好,也就是说模型需要从训练样本中尽可能地学习到所有潜在样本的“普遍规律”,这样在遇到新样本时才能做出正确的判别。在恰到好处的拟合下,模型既足够复杂以学习数据中的关键模式,但又不会复杂到连随机噪声也学习到了,能够做到在训练集和测试集上的误差都很低,且两者接近。
然而,当模型将训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质时,就会导致泛化性能下降,即过拟合;反之,如果模型尚未完全掌握潜在样本的一般性质,那么就产生了欠拟合。
对于过拟合而言,其最常见的产生原因是学习器的学习能力过强,导致最终训练得到的模型过于复杂,将训练样本中的噪声及其他不太一般的特性都学习到了,从而导致模型在训练数据上表现极好,而在未见数据上的表现极具恶化;而对于欠拟合而言,产生原因就是学习器学习能力较弱,得到的模型过于简单,导致模型在训练数据上表现就很差。
过拟合的解决办法:
- 增加数据量:更多的数据能让模型难以记住所有样本的细节,从而被迫学习通用模式。
- 数据增强:如果无法获取更多数据,可以采用数据增强技术,例如对图像进行旋转、翻转、添加噪声等操作,人工扩充数据集。
- 特征工程:选择与目标变量相关性较高的特征,减少噪声和不相关的特征对模型的影响。
- 正则化:所谓正则化是指:通过在模型的损失函数当中增加一个额外的“惩罚项”来限制模型的复杂度,防止模型过于依赖训练数据中的个别特征或噪声。常见的正则化方法有L1正则化和L2正则化:
- L1正则化:L1正则化让特征变得稀疏,能够起到特征选择的作用。
- L2正则化:L2正则化让模型变得简单,但是没有特征选择的作用。
- 降低模型复杂度:例如在神经网络中减少层数或神经元数量,或在决策树模型中剪枝等。
- 交叉验证:使用交叉验证来评估模型的泛化性能,选择最优的模型。将数据集分为k组(k倍交叉验证),将其中一个组作为测试集,其他作为训练集,然后重复此过程,直到每个单独的组都用作测试集。
欠拟合的解决办法:
- 增加模型复杂度:例如用深度神经网络替代线性模型,以捕捉数据中复杂的非线性关系。
- 特征工程:如果输入模型的信息不足或代表性不强,模型将难以学习到一般规律。因此,需要增加更多有意义的特征,或通过特征交叉、多项式展开等创建新特征,为模型提供更丰富的信息。
- 减少正则化:原因不再赘述。
- 增加训练时间:例如在决策树学习中扩展分支、在神经网络学习中增加训练轮数等。
此外,必须认识到的是:过拟合是无法彻底避免的,我们所能做的只是缓解或减少其风险。
2. 方差 vs 偏差
方差和偏差是衡量模型泛化误差的两个核心概念:
- 方差:衡量的是模型在不同训练数据集上得到的预测结果的波动范围(离散程度)。它反映了模型对数据扰动的敏感性,即模型的稳定性。
- 偏差:衡量的是模型预测值的期望与真实值之间的差距。它反映了模型本身的学习能力,即对数据内在规律的拟合程度。
模型的偏差和方差与其是否过拟合/欠拟合存在深刻的联系:
| 低方差(预测稳定) | 高方差(预测波动大) | |
|---|---|---|
| 高偏差(预测不准) | 欠拟合 | 最差情况 |
| 低偏差(预测较准) | 最好情况 | 过拟合 |
此外,一般而言,偏差和方差之间存在一种此消彼长的关系,这被称之为偏差-方差窘境。
如上图所示,当训练不足时,学习器的拟合能力不强,偏差占主导地位(欠拟合);随着训练程度的加深,学习器的拟合能力升高,直到最后方差占主导地位(过拟合)。因此,机器学习的目标是找到一个“恰到好处”的模型复杂度,偏差和方差大体都比较低,从而使得总泛化误差最小。
3. 常见的数据集划分方法
在训练完毕一个模型之后,我们显然需要一个测试集测试其对新样本的判别能力,随后以在测试集上的“测试误差”来作为泛化误差的近似。为了使得测试集尽可能与训练集互斥,常见的将数据集D划分为训练集S和测试集T的方法有以下三种:
(1)留出法
留出法(Hold-Out)是最直观、最常见的模型评估方法,它直接将原始数据集D一次性地划分为两个互斥的集合,即训练集S和测试集T。
需要注意的是,训练/测试集的划分要尽可能地保持数据分布的一致性,避免因为数据划分而引入额外的偏差。常见的采样方式有分层采样,例如通过对D进行分层采样而获得含70%样本的训练集S和含30%样本的测试集T,若D包含500个正例、500个反例,则分层采样得到的S应包含350个正例、350个反例,而T则包含150个正例和150个反例。
- 优点:实现简单,计算效率高,特别适合处理大规模数据集。
- 缺点:单次划分的评估结果可能不够稳定(方差较大),且一部分数据未被用于训练,在数据量较小时会造成数据浪费。
(2)交叉验证法
交叉验证法(Cross-Validation)将数据集划分为个大小相似的互斥子集,每次用个子集的并集作为训练集,余下的那个子集作为测试集。
- 优点:评估结果更稳定,数据利用更充分,能够有效降低因为单次数据划分随机性带来的影响。
- 缺点:需要进行k次训练和测试,计算成本较高,特别是在大数据集或复杂模型上。
此外,假定数据集中包含个样本,若令,则得到了交叉验证法的一个特例:留一法(Leave-One-Out)。
(3)自助法
理想情况下,数据集D应该全部用于训练模型,但在留出法和交叉验证法中,数据集D都会被分割出去一部分用作测试集T。因此实际评估的模型时所使用的训练集S是比原始数据集D小的,这必然会引入一些因训练样本规模不同而导致的估计偏差。而自助法(Bootstrapping)是一个比较好的解决方案。
自助法以自助采样法为基础,通过对原始数据集D采样得到模型的训练集D’:每次随机从D中挑选出一个样本,将其拷贝送入D’后再其送回D中,直到D’和D的规模相等为止。由于是自主采样,那么新的训练集D’中一定会有重复的数据,同样的,数据集D中也一定会有一部分数据从未被采样到,这一部分数据大概占0.368。
那么在将D’作为训练集、将D-D’作为测试集时,我们仍有数据总量约为1/3的、没在训练集中出现过的样本用于测试。这样的测试结果,称之为“包外估计”。
- 优点:对于小数据集,能有效提高数据利用率;同时,能从原始数据集中产生多个不同的训练集,对集成学习尤其有益。
- 缺点:自助法产生的训练集改变了原始数据集的分布,这会引入估计偏差。因此,当数据量足够时,留出法和交叉验证法通常更可靠。
4. 模型性能度量
正如在第一章复习笔记中的总结的一样,回归任务主要面向预测连续数值,而分类任务主要面向将数据分配到预定义的离散类别当中,这决定了两类模型的性能度量指标是存在差别的。
(1)回归任务的性能度量
回归任务更关注预测值与真实值之间的误差大小,而均方误差(MSE)就能很好的满足这一要求:
其中为预测结果,为真实标记。
(2)分类任务的性能度量
分类任务的核心目标是“分对”,因此我们就需要以下这些指标来关注类别判断的正确性:
1)错误率与精度
错误率和精度是分类任务当中最常用的两种性能度量,既适用于二分类任务,也适用于多分类任务:
- 错误率描述的是分类错误的样本数占样本总数的比例:
- 精度则描述的是分类正确的样本数占样本总数的比例:
2)查准率、查全率与F1
错误率和精度虽然常见并常用,但无法满足一些更为细化的要求,例如“挑出的西瓜中有多少是好瓜?又有多少是坏瓜?”,这涉及到对分类结果进一步的处理,所以就用到了查准率(Precision)和查全率(Recall)。
对于一个二分类问题,可以根据样例的真实类别与模型的预测类别的组合将其划分为:真正例TP、假正例FP、真反例TN和假反例FN,并藉此构建出分类结果的混淆矩阵:
查准率,或者说精确率,描述的是所有被模型判断为正例的样本中,真正的正例所占的比例:
而查全率,或者说召回率,描述的是对于所有正例,有多少被模型成功找了出来:
不难发现,查准率衡量的是模型的误判程度高不高,而查全率衡量的是模型遗漏的内容多不多,这两个指标往往是相互制约的,它们之间的关系可以用P-R曲线来描述:
P-R曲线给予了一种直接比较多种学习器性能的方法:若一个学习器的P-R曲线被另一个学习器的曲线完全“包住”,则可断言后者的性能优于前者,例如图2.3中学习器A的性能优于学习器C。而当类似A和B交叉这种情况发生时,则无法直接判断两者的性能优劣,需要借助其余指标:
- 平衡点:即图2.3中的红点,其为y=x与学习器P-R曲线的交点,平衡点的值越大,学习器的性能越好,因此学习器A>学习器B>学习器C。
- F1度量:其为P和R的调和平均数,F1的值越大,学习器的性能越好。
3)宏平均与微平均
如上图所示,我们在实际学习中肯定会遇到类似的具有多个混淆矩阵、多个P值R值F1值的情况,那么我们该怎么在n个二分类混淆矩阵上综合考虑上述性能度量指标呢?
- 宏平均(平等看待类别):先在各个混淆矩阵上分别计算出P值和R值,再直接计算算术平均值,这样就得到了宏查准率(macro-P)、宏查全率(macro-R)和宏F1(macro-F1):
- 微平均(平等看待样本):先对各个混淆矩阵的对应元素进行平均,得到、、和,再基于上述平均值计算出微查准率(micro-P)、微查全率(micro-R)和微F1(micro-F1):
4)ROC与AUC
ROC曲线和P-R曲线类似,但是其纵轴为真正例率TPR、横轴为假正例率FPR:
ROC曲线下的面积称之为AUC。