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

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 比较检验

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


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

相关推荐
xuanyu221 小时前
Linux常用指令
linux·运维·人工智能
静心问道1 小时前
WGAN算法
深度学习·算法·机器学习
凡人的AI工具箱1 小时前
AI教你学Python 第11天 : 局部变量与全局变量
开发语言·人工智能·后端·python
晓星航1 小时前
Docker本地部署Chatbot Ollama搭建AI聊天机器人并实现远程交互
人工智能·docker·机器人
洛寒瑜1 小时前
【读书笔记-《30天自制操作系统》-23】Day24
开发语言·汇编·笔记·操作系统·应用程序
Kenneth風车1 小时前
【机器学习(五)】分类和回归任务-AdaBoost算法-Sentosa_DSML社区版
人工智能·算法·低代码·机器学习·数据分析
AI小白龙*2 小时前
大模型团队招人(校招):阿里巴巴智能信息,2025届春招来了!
人工智能·langchain·大模型·llm·transformer
鸽芷咕2 小时前
【Python报错已解决】python setup.py bdist_wheel did not run successfully.
开发语言·python·机器学习·bug
星迹日2 小时前
C语言:联合和枚举
c语言·开发语言·经验分享·笔记
空指针异常Null_Point_Ex2 小时前
大模型LLM之SpringAI:Web+AI(一)
人工智能·chatgpt·nlp