分类模型哪个好?ROC/ AUC

从上篇的confusion matrix可以延生出不同的比例,从比例我们也可以在延伸出不同的曲线来比较模型。

ROC curve

我们都知道logistic model基本上就是把linear model放进sigmoid function转换成机率,但如果要回答分类问题(有心脏病/没有心脏病),我们就需要设定threshold来判断:假设threshold设定为0.5,那模型预测机率0.5以上的人模型都会说有心脏病,反之则没有,我们可以藉由这个结果来产出一个confusion matrix,所以,不同的threshold就会产生不同的confusion matrix,我们可以计算出相应的比率来画出ROC curve。

https://ithelp.ithome.com.tw/upload/images/20210925/20142004BNuvtdqLfb.png

ROC curve其实就是统整不同confusion matrix结果的图,y轴为sensitivity(true positive rate),x轴为false positive rate (1-specificity),透过同一个模型里设定不同的threshold,我们可以画出下图:
https://ithelp.ithome.com.tw/upload/images/20210925/20142004qMsxAhJeuo.png

我们所希望的是true positive rate越高而false positive rate越低,所以最佳的threshold位置为靠近(0,1)的地方

AUC

那如果我们想要比较不同模型怎麽办呢?因为每个模型都可以画出自己的ROC curve,所以在比较不同模型时,我们可以计算AUC(area under the curve):
https://ithelp.ithome.com.tw/upload/images/20210925/20142004vTiqgqKcwm.png

因为知道最佳的点会集中在(0,1)的区域,所以线下的面积越大,代表模型的表现越好,像是上图就表示红色线模型优於蓝色线模型,我们对AUC数值的解读为:随机抽取一个正样本,正确判断的机率,通常AUC的范围为:
AUC = 0.5: no discrimination
0.7 <= AUC <= 0.8: acceptable
0.8 <= AUC <= 0.9: excellent
0.9 <= AUC <= 1.0: outstanding

另外小小补充,因为ROC curve同时考量正例与负例,所以在负例多(不平衡)的资料中会表现得过度乐观(TN多导致false positive rate 低),这时候我们会把x轴从false positive rate换成precision rate (TP/TP+FP)只专注於正例,此时曲线越靠近(1,1)越好,曲线称为PR curve (precision-recall curve)。

reference:
https://www.youtube.com/watch?v=4jRBRDbJemM


<<:  Day 11 state & props -2

>>:  [DAY11] Data Access Layer 设计概念

ESP32_DAY4 用VS Code开范例程序

经过前两天的环境准备,我们就来试着让ESP32开发板上内建的LED灯闪烁,熟悉一下如何在VS Cod...

Day02【JS】Event Delegation 事件委派

所谓的 Event Delegation, 即是藉由事件传递减少监听器数目的一种方法。 事件传递 事...

【Day19】SPI 状态机的实现

SPI是什麽? SPI(Serial Peripheral Interface),是一种同步的传输协...

Day 25 - 演算法入门理解

前言 如果昨天是资料结构,那今天必然是来讨论演算法啦! 「演算法」是另一个会让许多非本科系的 dev...

Day3 program, process, thread傻傻分不清楚

昨天讲完了linux的核心架构,今天就开始让我们认识重要的部分吧。 以下是三个名词,程序(progr...