机器学习笔记 第二章模型估计与选择

2.1 经验错误与过拟合

泛化误差:在"未来"样本上的误差。

经验误差:在训练集上的误差,亦称"训练误差"。

显然,泛化误差越小越好,但是,我们事先并不知道新样本,实际能做的是努力使经验误差最小化。遗憾的是,经验误差过小会导致"过拟合"。

当学习器把训练样本学得"太好"了的时候,很可能已经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样会导致泛化性能下降,这种现象在机器学习中称为"过拟合"。相反,"欠拟合"是指训练样本的一般性质尚未学好。

模型选择需要解决三个关键问题,即如何获得测试结果?如何评估性能优劣?如何判断实质差别?针对以上三个问题,分别对应评估方法、性能度量和比较经验。

2.2 评估方法

通常我们可通过实验测试来对学习器的泛化误差进行评估并进而做出选择。为此,需使用一个"测试集"来测试学习器对新样本的判别能力,然后以测试集上的"测试误差"作为泛化误差的近似。需要特别注意的是,测试集和训练集是互斥的。对于一个数据集,如何做到既训练又测试呢?我们可以对数据集进行适当处理,从而产生训练集和测试集,下面有三种常见做法。

2.2.1 留出法

"留出法"直接将数据集D划分为互斥的训练集S和测试集T,即。在S上训练出模型后,用T来估计其测试误差,作为对泛化误差的估计。需要注意的是,训练集和测试集的划分要尽可能保持数据分布的一致性,且要多次重复划分。同时,测试集不能太大、不能太小,常见做法是的样本用于测试。

2.2.2 交叉验证法

"交叉验证法"先将数据集D划分为k个大小相似的互斥子集,即 。每个子集都从D中分层采样得到,然后,每次选择一个子集作为测试集,余下k-1个子集作为训练集。这样就可以获得k组训练集和测试集,从而可进行k次训练和测试,最终返回的是这k个测试结果的均值。

2.2.3 自助法

"自助法"是一个比较好的解决方案。给定包含m个样本的数据集D,采样产生数据集:每次从D中随机挑选一个样本,将其拷贝放入,然后再将该样本放回初始数据集D中;这个过程重复执行m次后,我们得到包含m个样本的数据集,这就是自助采样的结果。样本在m次采样中始终不被采到的概率是,取极值得到

即通过自助采样,初试数据集D中约有36.8%的样本未出现在采样数据集中,亦称"包外估计"。

2.2.4 调参与最终模型

大多数学习算法都有些参数需要设定,参数配置不同,学得的性能往往有显著差别。调参过程为先产生若干模型,然后基于某种评估方法进行选择,参数调得好不好往往对最终性能有关键影响。

算法的参数:一般由人工设定,亦称"超参数";

模型的参数:一般由学习确定。

2.3 性能度量

性能度量是衡量模型泛化能力的评价标准,反映了任务需求,使用不同的性能度量往往会导致不同的评判结果。什么样的模型是"好"的,不仅取决于算法和数据,还取决于任务需求。

回归任务常用均方误差

错误率

精度

对于二类问题,可将样例根据其真实类别与学习器预测类别的组合划分为真正例、假正例、真反例、假反例四种情形,令TP、FP、TN、FN分别表示其对应的样例数,TP+FP+TN+FN=样例总数。分类混淆矩阵如下:

查准率

查全率

F1度量

若对查准率/查全率有不同的偏好,那么公式如下:

时查全率有更大影响;时查准率有更大影响。

2.4 比较检验

在某种度量下取得评估结果后,是否可以直接比较评判优劣?答案是否定的,因为测试性能不等于泛化性能,测试性能随着测试集的变化而变化,很多机器学习算法本身有一定的随机性。统计假设检验为学习器性能比较提供了重要依据。


参考文献:《机器学习》周志华

相关推荐
lilye6612 分钟前
程序化广告行业(39/89):广告投放的数据分析与优化秘籍
大数据·人工智能·数据分析
欧雷殿13 分钟前
再谈愚蠢的「八股文」面试
前端·人工智能·面试
修复bug1 小时前
trae.ai 编辑器:前端开发者的智能效率革命
人工智能·编辑器·aigc
画个逗号给明天"1 小时前
C#从入门到精通(5)
开发语言·笔记·c#
掘金安东尼1 小时前
为什么GPT-4o可以生成吉卜力风格照片,原理是什么?
人工智能
机器鱼1 小时前
1.2 基于卷积神经网络与SE注意力的轴承故障诊断
深度学习·机器学习·cnn
励志成为大佬的小杨1 小时前
pytorch模型的进阶训练和性能优化
人工智能·pytorch·python
杉之1 小时前
Java中的不可变集合
java·笔记·学习
知舟不叙1 小时前
OpenCV的基础操作
人工智能·opencv·计算机视觉
果冻人工智能2 小时前
打造 AI Agent 对于中产阶级来说就是场噩梦
人工智能