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

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

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


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

相关推荐
莫叫石榴姐16 分钟前
数据科学与SQL:组距分组分析 | 区间分布问题
大数据·人工智能·sql·深度学习·算法·机器学习·数据挖掘
如若12338 分钟前
利用 `OpenCV` 和 `Matplotlib` 库进行图像读取、颜色空间转换、掩膜创建、颜色替换
人工智能·opencv·matplotlib
YRr YRr1 小时前
深度学习:神经网络中的损失函数的使用
人工智能·深度学习·神经网络
fengbizhe1 小时前
笔试-笔记2
c++·笔记
ChaseDreamRunner1 小时前
迁移学习理论与应用
人工智能·机器学习·迁移学习
Guofu_Liao1 小时前
大语言模型---梯度的简单介绍;梯度的定义;梯度计算的方法
人工智能·语言模型·矩阵·llama
我爱学Python!1 小时前
大语言模型与图结构的融合: 推荐系统中的新兴范式
人工智能·语言模型·自然语言处理·langchain·llm·大语言模型·推荐系统
余为民同志1 小时前
mini-lsm通关笔记Week2Day4
笔记
墨染风华不染尘1 小时前
python之开发笔记
开发语言·笔记·python
果冻人工智能1 小时前
OpenAI 是怎么“压力测试”大型语言模型的?
人工智能·语言模型·压力测试