模型评估与选择
这篇文章是学习了2周后,对模型评估与选择的总结,对应:
- 第一周:(04)1.4 机器学习算法的组成部分
- 第一周:(08)1.6 线性回归模型——模型选择
- 第二周:(04)2.4 不平衡数据分类学习
- 第二周:(05)2.5 分类模型的评价
- 《机器学习》(西瓜书):第2章 模型评估与选择
- 维基百科(en):“Precision and recall” 词条
- 维基百科(en):“Receiver operating characteristic” 词条
- 维基百科(en):“F1 score” 词条
文章标题排版以西瓜书为参考。另外公式比较多,app会乱码。请在浏览器或电脑查看。
1 经验误差(empirical error)与过拟合(overfitting)
错误率(error rate):错误的样本数占样本总数的比例。
即在m个样本中有a个样本分类错误,则:
- 错误率(errpr rate): E = a / m
- 精度(accuracy):1 - a / m
误差(error):实际预测输出与样本的真实输出之间的差异。
训练误差(training error)或经验误差(empirical error):训练集(training set)上的误差。
泛化误差(generalization error):新样本上的误差。
过拟合(overfitting):把训练样本自身的一些特点当成所有潜在样本都会具有的一般性质,导致泛化性能下降。
欠拟合(underfitting):对训练样本的一般性质尚未学好。
2 评估方法(evaluation)
要评估,需使用一个“测试集”(testing set)来测试学习器对新样本的判别能力,然后以测试集上的“测试误差”(testing error)作为泛化误差的近似。
测试集应尽可能与训练集互斥。
假定,一个包含m个样例的数据集D,从中产生训练集S和测试集T,则:
2.1 留出法(hold-out)
留出法:直接将数据集D分割成两个互斥集合,即:
分层采样(stratified sampling):保留类别比例的采样方式。
单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一把要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的结果。
留出法的问题:
如果S较大,结果可能不够稳定准确;
如果S较小,会降低评估结果的保真性(fidelity)。
这个问题没有完美的解决方案,常见做法是将大约 2/3 ~ 4/5 的样本用于训练。
2.2 k折交叉验证法(k-fold cross validation)
k折交叉验证法:将D分割成k个大小相似的互斥子集,即:
然后,每次用k-1个子集的并集作为训练集,余下的子集作为测试集;进行k次训练和测试,最终返回k个测试结果的均值。
常见k的取值:5,10,20等
为减少因样本划分不同而引入的差别,k折交叉验证通常要随机使用不同的划分重复p次,最终评估结果是p次k折交叉验证结果的均值。
当 k = m 时,称为留一法(Leave-One-Out,简称LOO)。留一法评估结果往往被认为比较准确,但当D比较大时,开销可能是难以忍受的。
2.3 自助法(bootstrapping)
自助法:以自助采样(bootstrap sampling)为基础产生数据集,即随机从D中选择一个样本的拷贝,重复m次,作为训练集。不被采样到的概率再取极限得
即,约有36.8%未被采样,并将它作为测试集。这样产生的测试结果称为“包外估计”(out-of-bagestimate)。
由于自助法产生的数据集改变了初始数据集的分布,这会引入估计误差。因此,当数据量足够时,留出法与交叉验证法更常用。
2.4 调参(parameter tuning)与最终模型
对每种参数配置都训练出模型是不可行的。常见做法,对每个参数选定一个范围和变化步长。
在模型选择完成后,学习算法和参数配置已选定,此时应该用D重新训练。
模型评估与选择中用于评估测试的数据集常称为“验证集”(validation set)。
3 性能度量(performance measure)
性能度量:衡量模型泛化能力的评价指标。学习器记作 f f 。
最常用的指标是均方误差(mean squared error):
对于数据分布D与概率密度函数p(·),均方误差为:
E(f;D)=∫x∼D(f(x)−y)2p(x)dx E ( f ; D ) = ∫ x ∼ D ( f ( x ) − y ) 2 p ( x ) d x3.1 错误率(error rate)与精度(accuracy)
一般的
错误率(error rate)
E(f;D)=1m∑i=1mI(f(xi)≠yi) E ( f ; D ) = 1 m ∑ i = 1 m I ( f ( x i ) ≠ y i )精度(accuracy):
acc(f;D)=1m∑i=1mI(f(xi)=yi)=1−E(f;D) a c c ( f ; D ) = 1 m ∑ i = 1 m I ( f ( x i ) = y i ) = 1 − E ( f ; D )
对于数据分布D与概率密度函数p(·),有
错误率(error rate)
E(f;D)=∫x∼DI(f(x)≠y)p(x)dx E ( f ; D ) = ∫ x ∼ D I ( f ( x ) ≠ y ) p ( x