甲骨文认证体系
Vmware认证体系
AWS亚马逊
阿里云认证体系
红帽认证体系
ZStack云计算认证体系
思科认证体系
华为认证体系
CDA数据分析师认证
达梦认证体系
麒麟
定制化课程
模型评估与优化2--模型评估与选择
发布日期:2020-03-31 14:11:59阅读次数:

1.模型评估
模型在训练集上的误差通常称为 “训练误差” 或 “经验误差”,而在新样本上的误差称为 “泛化误差”。显然,机器学习的目的是得到泛化误差小的学习器。然而,在实际应用中,新样本是未知的,所以只能使训练误差尽量小。所以,为了得到泛华误差小的模型并避免过拟合,在构建模型时,通常将数据集拆分为相互独立的训练数据集,验证数据集和测试数据集等。
在训练过程中使用验证数据集来评估模型并据此更新超参数,训练结束中使用测试数据集评估训练好的模型的性能。

2.数据集拆分
在机器学习中,通常将所有的数据集划分为三:训练数据集,验证数据集和测试数据集。它们的功能分别为:
训练数据集(train dataset): 用来构建机器学习模型。
验证数据集(validation dataset): 辅助构建模型,用于构建过程中评估模型,为模型提供无偏估计,进而调整模型超参数。
测试数据集(test dataset): 用来评估训练好的模型的性能。

3.数据集划分的方法
不断使用测试集和验证集会使其逐渐失去效果。即使用相同数据来设置超参数或其他模型改进的次数越多,结果的泛华效果就越差。验证集的失效速度通常比测试集缓慢。如果可能的话,建议收集更多数据来“刷新”测试集和验证集。重新开始划分是一种很好的重置方式。
为了划分这几种数据集,可以选择采用留出法、K-折交叉验证法或者自助法等多种方法。这些方法都对数据集有一些基本的假设,包括:
数据集是随机抽取且独立同分布的
分布是平稳的且不会随时间发生变化
始终从同一分布中抽取样本
注意:
请勿对测试数据集进行训练

4.留出法
留出法 (hold-out): 直接将数据集划分为互斥的集合,一个作为训练集S,一个作为测试集T,满足D=S U T且 S n T =Φ, 常见的划分为:大约2/3 – 4/5的样本用作训练,剩下的用作测试。如通常选择70%数据作为训练集,30%作为测试集。
需要保持划分后集合数据分布的一致性,避免划分过程中引入额外的偏差而对最终结果产生影响。通常来说,单次使用留出法得到的结果往往不够稳定可靠,一般采用分层抽样或者若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。

5.交叉验证法
将数据集D划分为k个大小相同的互斥子集,满足D=D1 U D2 U …U Dk, Di ∩ Dj = Ф ( i ), 同样地尽可能保持数据分布的一致性,即采用分层抽样的方法获得这些子集。
交叉验证的目的:在实际训练中,模型的结果通常对训练数据好,但是对训练数据之外的数据拟合程度差。交叉验证的作用就是用于评价模型的泛华能力,从而进行模型选择。
使用单独的测试集或者验证集具有一定的局限性,包括:
测试集是对模型的单次评估,无法完全展现评估结果的不确定性。
将大的测试集划分成测试集和验证集会增加模型性能评估的偏差。
分割的测试集样本规模太小。
模型可能需要每一个可能存在的数据点来确定模型值。
不同测试集生成的结果不同,造成测试集具备极大的不确定性。
重采样方法可对模型在未知样本上的性能进行更合理的预测。
因此实际应用中,会选择K-折交叉验证法的方式来评估模型,其偏差低,性能评估变化小。

6.K-折交叉验证法
交叉验证的思想:每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集,这样就有K种训练集/测试集划分的情况,从而可进行K次训练和测试, 最终返回k次测试结果的均值。
K折交叉验证取K:k最常用的取值是10,此时称为10折交叉验证。其他常用的K值还有5、20等。
K-折交叉验证一般用于模型调优,找到使得模型泛华性能最优的超参数,在全部训练集上重新训练模型,并使用独立测试集对模型性能做出最终评价。
如果训练集相对较小,则增大K值: 增大K值,在每次迭代过程中将会有更多的数据用于模型训练,能够得到最小偏差,同时算法时间延长。且不同训练集间高度相似,导致评价结果方差较高。
如果训练集相对较大,则减小K值:减小K值,降低模型在不同的数据集上进行重复拟合的性能评估的计算成本,在平均性能的基础上获得模型的准确评估。

7.自助法

关于回归模型评估
1.均方误差

关于分类模型评估
1.混淆矩阵


2.精度和错误率
在分类问题中,即预测离散值的问题, 最常用的错误率和精度,错误率是预测错误的样本数占样本总数的比例,又被称为汉明损失(Hamming loss)。精度则是分类正确的样本数占样本总数的比例,又被称为预测准确率(Accuracy)。错误率+精度 = 1
错误率定义为:(FP+FN)/(P+N)
精度则定义为:(TP+TN)/(P+N)
准确率是最常用的指标,可以总体上衡量一个预测的性能。但在某些情况下,我们会更偏向于其他两种情况。查准率和查全率

3.查准率和查全率
查准率 (precision):在所判别的正例结果中,真正正例的比例。可表示为:TP/(TP+FP)。查准率表示分类算法预测是否分类为1中实际为0的误报成分(真正例样本数/预测结果是正例的样本数)。
查全率 (Recall):又被称为召回率,是指分类器预测为正例的样本占实际正例样本的比例。可表示为:TP/(TP+FN)。查全率则表示算法预测是否漏掉了一些该分为1的,却被分为0的成分,也就是漏报的(真正例样本数/真实是正例的样本数)。
宁愿漏掉,不可错杀:一般适用于识别垃圾邮件的场景中。因为我们不希望很多的正常邮件被误杀,这样会造成严重的困扰。因此,在此类场景下Precision 将是一个重要的指标。
宁愿错杀,不可漏掉:一般适用于金融风控领域。我们希望系统能够筛选出所有风险的行为或用户,然后进行人工鉴别,如果漏掉一个可能造成灾难性后果。因此,在此类场景下,Recall将是一个重要的指标。

4.综合评价
对于Precision和Recall,虽然从计算公式来看,并没有什么必然的相关性关系。但是在大规模数据集合中,这两个指标往往是相互制约的。理想情况下,两个指标都较高。但一般情况下,如果Precision高,Recall就低;如果Recall高,Precision就低。
在实际项目中,常常需要根据具体情况做出取舍,例如一般的搜索情况,在保证召回率的条件下,尽量提升精确率。而像癌症检测、地震检测、金融欺诈等,则在保证精确率的条件下,尽量提升召回率。
很多时候我们需要综合权衡这2个指标,这就引出了一个新的指标F-score。这是综合考虑Precision和Recall后的调和值。

综合评价 (F-Score):

5.总结:混淆矩阵的相关性能度量

6.PR曲线
PR曲线是描述查准率/查全率变化的曲线,以查准率(precision)和查全率(recall)分别作为纵、横轴坐标。
根据学习期的预测结果(一般为一个实值或概率)对测试样本进行排序,将最可能是“正例”的样本排在前面,最不可能是“正例”的排在后面,按此顺序逐个把样本作为“正例”进行预测,每次计算出当前的P值和R值。

7.ROC曲线
学习器对测试样本的评估结果一般为一个实值或概率输出,设定一个阈值,大于阈值为正例,小于阈值为负例,因此这个实值/概率输出的好坏直接决定了学习器的泛化性能,若将这些实值/概率输出排序,则排序的好坏决定了学习器的性能高低。 ROC曲线正是从这个角度出发来研究学习器的泛化性能。
ROC曲线与PR曲线十分类似,都是按照排序的顺序逐一按照正例预测,不同的是ROC曲线以 “真正例率”(True Positive Rate,简称TPR)为横轴,纵轴为 “假正例率”(False Positive Rate,简称FPR),ROC偏重研究 基于测试样本评估值的排序好坏。

8.AUC面积
进行模型的性能比较时,若一个学习器A的ROC曲线被另外一个学习器B的ROC曲线完全包住,则称B的性能优于A。若A和B的曲线发生了交叉,则谁的曲线与坐标轴围成的面积大,谁的性能更优。ROC曲线下的面积定义为AUC(Area Under ROC Curve)。
AUC越大,证明分类的质量越好,AUC为1时,证明所有正例排在了负例前面,AUC为0时,所有的负例排在了正例的前面。

关于聚类模型评估
聚类的评价方式在大方向上被分成两类,一种是分析外部信息,另一种是分析内部信息。外部信息就是能看得见的直观信息,这里指的是聚类结束后的类别号。还有一种分析内部信息的办法,本质就是聚完类后会通过一些模型生成这个类聚的怎么样的参数,诸如熵和纯度这种数学评价指标。
较为常用的分析内部信息的方法,例如互信息评分,兰德系数,轮毂系数等。
————————————————
腾科教育