开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,www.kaggle.com/c/quora-ins…
www.kaggle.com/c/titanic/o…
不过开始用到和阈值相关的评价指标有时是在模型已经确定以后。第一步在确定模型时,往往还是需要一些可以综合衡量模型整体表现的指标。简单!粗暴!别整啥曲线阈值的,你给我个数就完了!
综合评价指标
综合评价指标基本都是对上述指标再加工的产物。对应的kaggle比赛会持续更新。
tpr(recall) + fpr = ROC-> AUC
随着阈值从1下降到0,我们预测为正的样本会逐渐变多,被正确筛选出的正样本会逐渐增多,但同时负样本被误判为正的概率也会逐渐上升。
整个遍历阈值的过程可以用ROC曲线来表示,横轴是误判率(fpr),纵轴是准确率(tpr/recall/sensitivity)。但是给你两个分类器想要直接比较谁的ROC曲线会有点困难,所以我们用一个scaler来描述ROC曲线就是AUC – Area under curve。 ROC曲线下的面积越大越接近完美的分类器,而对角线50%是随机猜正负就可以得到的AUC。
Kaggle链接 www.kaggle.com/c/santander…
AUC 适用于正负样本相对balance的情况,且分类问题对模型预测概率的准确度没有要求的情况。详见【实战篇】
precision + recall = AUCPR(AP)
和上述ROC-AUC的思路相同。随着阈值从1下降到0,预测为正的样本变多,被正确筛选出的正样本增多,但同时预测为正的准确率会下降。
这样我们得到PR曲线,以及曲线下的面积AUCPR。有时AUCPR也被称作AP,就是对所有recall取值对应的precision求平均。第一眼看上去我也被糊弄了,一直当成两个概念来记。但是式子一写出来,妈呀这俩不是一个东西么。
AUCPR=∑1KΔr(k)∗p(k)=∫o1p(r)dr=APAUCPR = sum_1^KDelta{r(k)} * p(k) = int_o^1 {p(r) dr} = AP
AP 刚好弥补AUC曲线的不足,适用于正负样本imbalance的情况,或者我们更关心模型在正样本上表现的情况。但AP同样不能保证模型预测概率的准确率。详见【实战篇】
cross-entropy loss
cross-entropy放在这里会有点奇怪,因为本质上它是和这里其他所有指标都不同的存在。其他的评价指标评价的是0/1的分类效果,或者更准确说是对排序效果(根据阈值把预测值从大到小分成0/1两半)进行评价。但是cross-entropy是直接对预测概率是否拟合真实概率进行评价。
L=−∑i=1Nyi∗logpi+(1−yi)∗log(1−pi)L = -sum_{i=1}^N y_i * log p_i + (1-y_i) * log(1-p_i)
kaggle链接 www.kaggle.com/c/statoil-i…
cross-entropy弥补了AP和AUC的不足。如果分类目标其实是获得对真实概率的估计的话,使用cross-entropy应该是你的选择。详见【实战篇】
*Mean F1 Score
kaggle链接 www.kaggle.com/c/instacart…
第一次见到这个指标是在Instacart的kaggle比赛里面。这里的mean不是指的对所有阈值下的F1求平均值而是对每个order_id的多个product_id求F1,再对所有order_id的F1求平均,有点绕…
之所以把这个评价指标也放在这里是因为这个特殊的评价方法会对你如何split训练集/测试集,以及如何选定最优的阈值产生影响。有兴趣的可以来试一试,反正我觉得自己是把能踩的坑都踩了一个遍,欢迎大家一起来踩坑 >_<
Reference
- Alaa Tharwat,Classification assessment methods,Applied Computing and Informatics
- Nan Ye,Kian Ming A. Chai,Wee Sun Lee,Hai Leong Chieu,Optimizing F-Measures: A Tale of Two Approaches,
- en.wikipedia.org/wiki/Confus…