评估方法
- 留出法 Hold-out
“留出法”将两个数据集拆分为两个互斥的集,一般训练集为70%,测试集为30%。这样使用测试集得出的测试误差(testing error)更具有泛性。 -
交叉验证法 Cross Validation
将数据集拆分为n份,依次选取其中的一份作为测试集,然后平均得出结果。
10 folds 交叉验证法 - 自助法 bootstrapping
自助法为从有个样本量数据集中有放回随机选取一个样本集,作为训练集。在重复了
的抽样之后,样本从来没有被选到过的几率为:
自助法在数据集较小时,较为有用。此外,自助法可以产生多个训练集,对集成学习有很大的好处,但是自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差,因此在数据量足够时,交叉验证法更为常用。
性能度量
回归任务中,最常用的性能度量为MSE(mean squared error)
以下主要讨论分类模型的常用性能度量
- 错误率与精度
错误率:
精度:
- 查准率、查全率、与F1、
错误率和精度虽常用,但并不能满足所有任务需求。例如二分类模型,我们需要知道判断为真的部分有多少确实为真,或者确认为真的部分多少被预测为真。这两种需求就无法满足。
对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为真正例(true positive) 、假正例 (false positive) 、真反倒(true negative)、假反例 (false negative) 四种情形,令 TP、FP、TN、FN分别表示样例数。
分类结果混淆矩阵
查准率(预测为真中,有多少实际为真):
查全率(实际为真中,有多少预测为真):
对于在不同的模型中做对比时,我们常用P-R曲线。如下图,ABC代表了三个模型,如果其中一个模型完全将另一个模型的曲线包裹在内,则代表模型性能更优(例如B优于C)。对比面积是比较好的一个选择,但是计算难度较大,所以一般使用平衡点作为度量值。平衡点(Break-Event Point)是
P-R曲线示意图
由于BEP还是过于太简化了,更常用的是
其中
但是在结合业务时,有时我们想在一定程度上偏向P或者R,例如商品推荐系统,我们希望推荐更精准(更大的P)且少打扰用户(更小的R),这个时候我们就需要使用
其中
如果使用了类似交叉验证法,我们会得到多个confusion matrix,一般处理这种情况有两种选择:
- 宏观
对于每个confusion matrix先计算出、
,然后求得平均并带入公式求
- 微观
先求confusion matrix各元素的平均值,然后计算、
。
- ROC与AUC
ROC 全称是"受试者工作特征" (Receiver Operating Characteristic)。与P-R曲线不同的是,ROC使用了“真正例率”和“假正例子率”
ROC与AUC示例
对比模型间的好坏,与P-R类似,是对比ROC曲线下的面积,称之为AUC(Area Under ROC Curve)。
假定ROC曲线由一系列的点组成,且
,则AUC可以估算为长方形面积的和:
实际一般使用AUC与Wilcoxon-Mann-Whitney Test U统计量的关系,来计算AUC,
笔者的另一篇笔记Mann-Whitney U Test与ROC、AUC
从概念上理解,简单来说其实是随机抽出一对样本(一个正样本,一个负样本),然后用训练得到的分类器来对这两个样本进行预测,预测得到正样本的概率大于负样本概率的概率。
reference
周志华,机器学习
scikit learn官方文档
Mann-Whitney U Test与ROC、AUC