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

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

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


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

相关推荐
老金带你玩AI7 小时前
这几天,我都是拿手机让dot帮我干活
人工智能
7yewh10 小时前
SLAM 三维空间刚体运动(2)
数据结构·人工智能·机器人·嵌入式·slam
小虎AI生活10 小时前
WorkBuddy 模型选型实操:0.03 倍的 Space-Bunny 怎么用、派什么活、避什么坑
人工智能·超级个体·一人公司·青玥ai
ai小陈10 小时前
GPU服务器租用存储验收:检查点写入与磁盘吞吐实战
运维·服务器·人工智能·ai·ssh·gpu算力
微三云马玮均—GEO源码系统 私有化部署10 小时前
消费返物业费:消费+服务趋势的必然产物!
大数据·人工智能·物联网·区块链·生活
明月_清风10 小时前
Muse 登顶 App Store 第一,SDK 直接开源:AI Agent 开始进入下一个阶段
人工智能·后端
JackSparrow41411 小时前
和AI一起将全部CSDN博文迁移到个人博客站
人工智能·程序人生·ai·github·cloudflare·astro·静态博客
55873 生态系统11 小时前
第 22 篇|社区聊天|55873 文明共建者的日常交流与协作界面
人工智能·区块链·55873全域文明生态体系·55873操作系统·55873社区聊天
搬砖的小码农_Sky11 小时前
AI Agent:如何处理Claude Code 最近版本(2026年更新)引入的模型上下文限制
人工智能·windows·ai·ai编程