参考资料:
1.Understanding AUC - ROC Curve
2.ROC101.pdf(比较详细系统地介绍了ROC)
3.程序画ROC教程
4.sklearn中 F1-micro 与 F1-macro区别和计算原理
分数问题
因为ROC曲线要分类器输出一个类似confidence的分数,但是有些分类器并没有这样的分数,可以通过以下几个办法来产生。(参考资料2章节3.3)
决策树每个叶子判断为某个分类是根据叶子节点中类别的比例,比例最大的作为那个叶子的分类,可以把这个比例当作分数。
bagging的方法产生多个分类器进行分类,然后根据票数决定分数。-
算法1
以一定的间隔increment遍历整个threshold,然后对固定的threshold计算曲线上的一个点,需要把所有n个点都遍历一遍。两层for循环,外层至少是n,里层是n,所以总的时间复杂度是O(n^2)。
-
算法2
将样本分数从大到小进行排列(O(nlgn)),然后依次将阈值设置为每个样本的大小(O(n))。总的复杂度O(nlgn)
-
算法2的一种特殊情况——相同分数
算法2的7~10行是为了解决相同分数的情况,如下图所示。虽然模型出来相同的分数,得出的预测结果也都是一样的,但样本实际便签可能不同。比如第一种极端情况,都预测对了,那么对应上面的折线,都预测错了,对应下面的折线。其他预测情况可能出现在这格子中的曲线,其中如果样本顺序不一样,可能曲线也不一样,比如把对的全部放前面,错的放后面就会更乐观。所以算法这里取其中的期望值,相同分数的时候去中间的那条斜线。不这样做,误差可能达到半个方框那么大的面积。
macro与micro的区别
macro 每个类别的参数(比如TP,FP)计算出每个类别的分数(多个)(比如F1),然后进行平均
micro 每个类别的参数结合起来,然后计算一个F1