概述
我们平时做机器学习的时候,总是会将数据集分成两个互斥的子集。这两个子集分别作为训练集和测试集。而为什么我们一定要这样做呢?直接在训练集上输出错误率或精度不就好了吗?我们总是留出一部分样本作为测试集的原因是因为过拟合的不可避免。
过拟合:模型将训练样本的某些特点当做是所有潜在样本都具有的一般性质,导致模型泛化能力下降。训练样本是不可避免的,因为机器学习面临的问题总是NP难的,如果我们认为过拟合可彻底避免,那么就可以通过经验误差最小化求得最优解P=NP。然而我们相信P != NP,因此过拟合无法避免。
数据集处理方法
名称 | 方法 | 优缺点 | 备注 |
---|---|---|---|
留出法 | 最经常使用的处理方法。随机将数据集按比例分层采样成训练集和测试集,重复多次划分并计算精度的均值作为结果 | 划分方法很多,单次划分作为结果的话不够靠谱。一般都是随机划分多次 | 分层采样,即保证数据子集中每个类别之间的比例和原来数据集是相同的 |
交叉验证法 | 将数据集分层采样成k个子集,进行k轮训练,每轮将一个子集作为测试集,其他k-1个子集作为训练集。k轮结束后计算他们的均值做出精度输出 | 于留出法相同,将数据集划分成k个子集仍然有多种划分方法。因此一般做多次交叉验证。并把验证结果取均值。 | |
留一法 | 交叉验证当k=m时,即为留一法。也就是每次拿一个样本进行测试,拿m-1个样本作为训练。 | 留一法中每次训练集只比真实数据集少一个样本,因此训练得到的模型和最终希望得到的模型是最相近的。然而当数据量很大时,要训练m个模型的时间开销过大。 | |
自助法 | 从数据集中有放回的抽取m个样本形成训练数据集,那么训练数据集和完整的数据集中同样都还有m个样本,只是完整数据集中有36.8%的样本没有出现在训练数据集中。 | 在数据集较小,难以有效划分训练/测试集的时候有用;同时能从初始数据集中产生多个不同的训练集,对集成学习等方法有好处。然而会自助法产生的数据集改变了初始数据集的分布,可能会引入估计误差。 | 关于36.8%的来源:初始数据集中每个样本在每次抽样的过程中被抽到的概率是 1m ,那么m次抽取中都不被抽中的概率为 limm→∞(1−1/m)m 。根据洛必达法则可求得 p=1e≈0.368 |
性能度量
度量标准 | 计算方法 |
---|---|
错误率 | E(f;D)=1m∑mi=1I(f(xi)≠yi) |
均方误差MSE | E(f;D)=1m∑mi=1(f(xi)−yi)2 |
查准率,查全率 | 记TP(真正例),FN(假反例),FP(假正例),TN(真反例)。则查全率= TPTP+FN ,查准率= TPTP+FP 。根据预测结果对样本进行排序,排在前面的则是最有可能为正例的。逐一将前面的样本认为是正例,可以得到多个P-R值,最终得到P-R曲线 |
平衡点BEP,F1度量 | BEP为P=R时的值,F1= 2∗TPm+TP−TN |
均方误差MSE | E(f;D)=1m∑mi=1(f(xi)−yi)2 |
Fβ 度量 | Fβ=(1+β2)∗P∗R(β2∗P)+R ,当 β>0 时度量查全率和查准率的相对重要性。 β>1 时查全率有更大的印象,反之。 |
ROC与AUC | 在P-R曲线中x轴是查全率,y轴是查准率。而在ROC曲线中,则是用真正例率和假正例率分别作为y轴和x轴。真正例率 TPR=TPTP+FN ,假正例率 FPR=FPTN+FP 。而AUC则是ROC曲线下方包围的区域面积。AUC越大模型精度越高。 |
EER | Equal Error Rate,就是ROC曲线中真正例率与假正例率相等时的值。与P-R曲线中的BEP类似。 |
关于性能度量的其它
- 首先是TP, TN, FP, FN四个值的记忆问题。首先第二个字母(N或P)是指分类器将样本分成负样本或正样本。而第一个字母(T或F)则是指分类器的分类正确性。TP是指分类器将样本分成正样本,且分类结果正确。此时样本的正式结果则为正类。而FN则是指分类器将样本分成负样本,而分类结果错误,所以样本真实类别也为正类
查准率P,查全率R,真正例率TPR以及假正例率FPR这四个指标比较难记忆。但分清他们的物理意义,就比较好理解了。
- 查准率P:所有被分类成正类的样本中,实际上也为正类的样本比例
- 查全率R:所有正样本中,被正确分类成正样本的样本比例
- 真正例率TPR:等同于查全率R
- 假正例率FPR:所有负样本中,被错误分类成正样本的样本比例
根据上述物理意义,我们可以知道查准率和查全率呈负相关关系,而TPR和FPR则呈正相关关系