模型的评估与选择
模型选择的原则
误差(Error):是模型的预测输出值与其真实值之间的差异
训练(Training):通过已知的样本数据进行学习,从而得到模型的过程
训练误差(Training Error):模型作用于训练集时的误差
泛化(Generalize):由具体的、个别的扩大为一般的,即从特殊到一般称为泛化。对机器学习的模型来讲,泛化是指模型作用于新的样本数据(非训练集)
泛化误差(Generalization Error):模型作用于新的样本数据时的误差
模型容量(Model Capacity):是指拟合各种模型的能力
过拟合(Overfitting):是指某个模型在训练集上表现很好,但是在新样本上表现差。模型将训练集的特征学习的太好,导致一些非普遍规律被模型接纳和体现,从而在训练集上表现好,但是对新样本表现差。
反之则称为欠拟合(Underfitting),即模型对训练集的一般性质学习较差,作用于训练集时表现不好。
模型选择(Model Selection):针对某个具体的任务,通常会有多种模型可供选择,对同一个模型也会有多组参数,可以通过分析、评估模型的泛化误差,选择泛化误差最小的模型。
模型评估的方法
评估思路:通过实验测试,对模型的泛化误差进行评估,选出泛化误差最小的模型。
一般我们不能得到数据全集,那么可以将已知数据集分成两部分,一部分用于训练,一部分用于测试。
使用拆分出的测试集进行泛化测试,测试误差(Testing Error)当做为泛化误差的近似。
拆分数据集
将已知数据集拆分为训练集和测试集要注意:
- 测试集和训练集尽可能互斥(两个集合中的数据尽可能不要有相同的)
- 测试集和训练集独立同分布
常见的拆分方法:
留出法(Hold-out)
将已知数据集分成两个互斥的部分,其中一部分用来训练模型,另一部分用来测试模型,评估其误差,作为泛化误差的估计。
- 两个数据集的划分要尽可能保持数据分布一致性,避免因数据划分过程引起人为的偏差
- 要保持样本的类别比例相似,可以采用分层采样(Stratified Sampleing)
- 数据分割有多种形式,会导致不同的训练集、测试集的划分。单次留出法的结果往往存在偶然性,其稳定性较差,我们通常会进 行若干次随机划分、重复试验评估,取平均值作为评估结果
- 数据集拆分成两部分,每部分的规模的设置会影响模型的评估结果。训练集、测试集的比例通常为 7:3 、8:2 等
交叉验证法(Cross Validation)
将数据集划分为K个大小相似的互斥的数据子集,子集数据尽可能保证数据分布的一致性(通过分层采样),每次从中选取一个数据集作为测试集,其余用作训练集,可以进行K次训练和测试,得到评估均值。
该方法也称作 K折交叉验证(K-fold Cross Validation)。使用不同的划分,重复P次,称为P次K折交叉验证。
留一法(Leave-One-Out,LOO)
是K折交叉验证的特殊形式,将数据集分成两个,其中一个数据集记录条数为1,作为测试集使用,其余记录作为训练集训练模型。训练出的模型和使用全部数据集训练得到的模型接近,其评估结果比较准确。缺点是当数据集较大时,训练次数和计算规模较大。
自助法(Bootstrapping)
是一种产生样本的抽样方法,其本质是有放回的随机抽样。即从已知数据集中随机抽取一条记录,然后将该记录放入测试集同时放回原数据集,继续下一次抽样,知道测试集中的数据条数满足要求。
假如已知数据集D有n条数据,采用自助法得到一个记录条数为n的数据集T。D中的一些数据会在T中出现多次,还有一些数据不会出现。
估算一下经过n次有放回采样后,大概多少记录未被选中:
某一次具体的采样,一条数据被选中的概率为 1/n,未被选中的概率为 1-(1/n)
连续n次采样均未被选中的概率为
取极限:
通过有放回的抽样获得的训练集去训练模型,用不在训练集中的数据(大概总量的36.8%)去用于测试,这样的测试结果被称作 包外估计(Out-of-Bag Estimate,OOB)
几种方法的适用场景
留出法:
- 优:实现简单、方便,在一定程度上能评估泛化误差
- 优:测试集和训练集分开,缓解了过拟合
- 缺:一次划分,评估结果偶然性大
- 缺:数据被拆分后,用于训练、测试的数据更少了
交叉验证法(留一法):
- 优:k可以根据实际情况设置,充分利用了所有样本
- 优:多次划分,评估结果相对稳定
- 缺:计算比较繁琐,需要进行k次训练和评估
自助法:
- 优:样本量较小时可以通过自助法产生多个自主样本集,且有约36.8%的测试样本
- 优:对于总体的理论分布没有要求
- 缺:无放回抽样引入了额外的偏差
几种方法的选择:
- 已知数据集数量充足时,通常采用留出法或者k折交叉验证法
- 对于已知数据集较小且难以有效划分训练集/测试集的时候,采用自助法
- 对于已知数据集较小且可以有效划分训练集/测试集的时候,采用留一法
模型的性能指标
性能度量(Performance Measure):评价模型泛化能力的标准。对于不同的模型,有不同的评价标准,不同的评价标准将导致不同的评价结果。模型的好坏是相对的,取决于对当前任务需求的完成情况。
回归模型的性能度量通常选用均方误差(Mean Squared Error)
给定样例集D={(x1,y1),(x2,y2)…(xm,ym)},模型为f,其性能度量均方误差为:
用每一条记录的预测值减去实际值的差的平方的和,除以记录条数,就得出这个模型的均方误差值(越小越好)
例:根据数据集,得出了两个模型 f1、f2
f1 模型的均方误差计算过程:
f2 模型的均方误差:
f2 模型性能更好
分类模型常用的性能度量:
错误率:分类错误的样本占总样本数的比例,其公式为:
精度:分类正确的样本占总样本数的比例,其公式为:
查准率:预测结果为正的样本中实际值也为正的比例
查全率:实际值为正的样本中被预测为正的样本的比例
P-R曲线:查准率—查询率曲线
混淆矩阵:将预测分类结果和实际分类结果做成矩阵的形式显示
Fβ—score:β值的不同体现了对查全率和查准率的不同倾向,其公式为
受试者特征曲线(ROC)和曲线下面积(AUC):TPR-FPR曲线(真正例率-假正例率曲线)
代价曲线:不同类型的预测错误对结果影响不同而增加代价(cost),绘制P(+)cost-COSTnorm曲线
……
聚类模型常用的性能度量:
外部指标(External Index):将聚类结果同某个参考模型进行比较
- Jaccard系数(Jaccrd Coefficient,JC):
- FM指数(Fowlkes and Mallows Index,FMI):
- Rand指数(Rand Index,RI):
内部指标(Internal Index):不使用参考模型直接考察聚类结果
-
DB指数(Davise-Bouldin Index,DBI):
-
Dunn指数(Dunn Index,DI):