机器学习IV - 评估模型(Evaluating Model)
模型评估方法评价指标模型评估位于整个数据分析中的非常重要的部分。
6. 评估模型(Evaluating Model)
常用评估方法有以下:
留出法 Hold-out
“留出法”将两个数据集拆分为两个互斥的集,一般训练集为70%,测试集为30%。这样使用测试集得出的测试误差(testing error)更具有泛性。
交叉验证法 Cross Validation
将数据集拆分为n份,依次选取其中的一份作为测试集,然后平均得出结果。
自助法 bootstrapping
自助法为从有$n$个样本量数据集中有放回随机选取一个样本集,作为训练集。在重复了$n$的抽样之后,样本从来没有被选到过的几率为:
自助法在数据集较小时,较为有用。此外,自助法可以产生多个训练集,对集成学习有很大的好处,但是自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差,因此在数据量足够时,交叉验证法更为常用。
6.1 性能度量
回归任务中,最常用的性能度量为MSE(mean squared error)
以下主要讨论分类模型的常用性能度量
6.1.1 错误率与精度
错误率:
精度:
6.1.2 查准率、查全率、与F1
错误率和精度虽常用,但并不能满足所有任务需求。例如二分类模型,我们需要知道判断为真的部分有多少确实为真,或者确认为真的部分多少被预测为真。这两种需求就无法满足。
对于二分类问题,可将样例根据
其真实类别与学习器预测类别的组合划分为真正例(true positive) 、假正例 (false positive) 、真反倒(true negative)、假反例 (false negative) 四种情形,令 TP、FP、TN、FN分别表示样例数。
查准率(预测为真中,有多少实际为真):
查全率(实际为真中,有多少预测为真):
对于在不同的模型中做对比时,我们常用P-R曲线。如下图,ABC代表了三个模型,如果其中一个模型完全将另一个模型的曲线包裹在内,则代表模型性能更优(例如B优于C)。对比面积是比较好的一个选择,但是计算难度较大,所以一般使用平衡点作为度量值。平衡点(Break-Event Point)是$P=R$时的值。
由于BEP还是过于太简化了,更常用的是$F1$度量:
其中$n$ = 样本量。F1的核心思想在于,在尽可能的提高P和R的同时,也希望两者之间的差异尽可能小。
但是在结合业务时,有时我们想在一定程度上偏向P或者R,例如商品推荐系统,我们希望推荐更精准(更大的P)且少打扰用户(更小的R),这个时候我们就需要使用$F1$更泛性的度$F_{\beta}$
其中$\beta$度量了查全率对查准率的相对重要性:$\beta > 1$时更偏向R,$\beta < 1$更偏向P。
如果使用了类似交叉验证法,我们会得到多个confusion matrix,一般处理这种情况有两种选择:
宏观 $macro\,F1$
对于每个confusion matrix先计算出$P$、$R$,然后求得平均并带入公式求$macro\,F1$
微观 $micro\,F1$
先求confusion matrix各元素的平均值,然后计算$P$、$R$。
6.1.3 ROC与AUC
ROC 全称是”受试者工作特征” (Receiver Operating Characteristic)。与P-R曲线不同的是,ROC使用了“真正例率”和“假正例子率”
对比模型间的好坏,与P-R类似,是对比ROC曲线下的面积,称之为AUC(Area Under ROC Curve)。
假定ROC曲线由$\left\{(x_1,y_1),(x_2, y_2)…(x_m, y_m)\right\}$一系列的点组成,且$x_1 = 0, x_m = 1$,则AUC可以估算为长方形面积的和:
实际一般使用AUC与Wilcoxon-Mann-Whitney Test U统计量的关系,来计算AUC,
笔者的另一篇笔记Mann-Whitney U Test与ROC、AUC
从概念上理解,简单来说其实是随机抽出一对样本(一个正样本,一个负样本),然后用训练得到的分类器来对这两个样本进行预测,预测得到正样本的概率大于负样本概率的概率。
6.2 误差(Bias)与方差(Variance)
高误差/欠拟合(Underfitting):$J_{train}(\Theta), J_{CV}(\Theta)$都较高
高方差/过拟合(Overfitting):$J_{train}(\Theta)$低,$J_{CV}(\Theta)$高
高误差时:
- 如果样本量少,$J_{train}(\Theta)$低,$J_{CV}(\Theta)$高
- 如果样本量多,$J_{train}(\Theta)$和$J_{CV}(\Theta)$都比较高
高方差时:
- 如果样本少,$J_{train}(\Theta)$低,$J_{CV}(\Theta)$高
- 如果样本多,在添加样本量同时,$J_{train}(\Theta)$,$J_{CV}(\Theta)$均变好,但其间的差距仍然十分显著
解决办法:
解决高误差:
- 增加额外特征
- 增加高纬特征
- 减小正则系数
解决高方差:
- 增加样本量
- 减少特征
- 增加正则系数