ROC曲线原理及绘制
ROC曲线(Receiver Operating Characteristic Curve)是一种用于评价二分类模型性能的图形工具。它展示了模型在不同阈值下的分类性能,通过绘制假阳性率(FPR)和真阳性率(TPR)之间的关系来表现。
1.混淆矩阵
混淆矩阵是对预测正例样本的进一步分析,而准确率是综合了正例与反例的比例.
预测值 | 预测值 | ||
---|---|---|---|
正例 (positive) | 假例 (negtive) | ||
真实正例 | 真正例TP | 伪反例FN | TPR=TP/真实正例 |
真实假例 | 伪正例 FP | 真反例TN | FPR=FP/真实假例 |
2.ROC曲线的含义
ROC曲线(Receiver Operating Characteristic Curve)是一种用于评价二分类模型性能的图形工具。它展示了模型在不同阈值下的分类性能,通过绘制假阳性率(FPR)和真阳性率(TPR)之间的关系来表现。
真阳性率(TPR, True Positive Rate):也称为灵敏度(sensitivity)或召回率(recall),表示真正被分类为正类的比例。公式为: \[ \text{TPR} = \frac{\text{TP}}{\text{TP} + \text{FN}} \]
假阳性率(FPR, False Positive Rate):表示被错误分类为正类的负类样本比例。公式为: \[ \text{FPR} = \frac{\text{FP}}{\text{FP} + \text{TN}} \]
3.ROC曲线的绘制步骤
- 计算预测概率:使用二分类模型对数据进行预测,得到每个样本属于正类的概率。
- 确定阈值:从0到1选择一系列阈值,对每个阈值进行如下操作:
- 将预测概率与当前阈值比较,得到分类结果(大于等于阈值为正类,小于阈值为负类)。
- 计算对应的TPR和FPR。
- 绘制曲线:以FPR为横坐标,TPR为纵坐标,绘制曲线。
4.实例说明
假设有一个简单的二分类问题,以下是一些预测结果及对应的实际标签:
实际标签 | 预测概率 |
---|---|
1 | 0.9 |
0 | 0.8 |
1 | 0.7 |
1 | 0.6 |
0 | 0.4 |
1 | 0.3 |
0 | 0.2 |
0 | 0.1 |
我们使用这些数据来绘制ROC曲线。
步骤1:计算TPR和FPR
我们选择几个阈值来计算TPR和FPR:
- 阈值 = 0.9
- 阈值 = 0.7
- 阈值 = 0.5
- 阈值 = 0.3
- 阈值 = 0.1
对于每个阈值,计算TPR和FPR:
阈值 = 0.9:
- 预测结果:1 0 0 0 0 0 0 0
- TPR = 1/4 = 0.25
- FPR = 0/4 = 0
阈值 = 0.7:
- 预测结果:1 1 1 0 0 0 0 0
- TPR = 2/4 = 0.5
- FPR = 1/4 = 0.25
阈值 = 0.4:
- 预测结果:1 1 1 1 1 0 0 0
- TPR = 3/4 = 0.75
- FPR = 2/4 = 0.5
阈值 = 0.3:
- 预测结果:1 1 1 1 1 1 0 0
- TPR = 4/4 = 1
- FPR = 2/4 = 0.5
阈值 = 0.2:
- 预测结果:1 1 1 1 1 1 1 0
- TPR = 4/4 = 1
- FPR = 3/4 = 0.75
5.python绘制曲线
我们将这些TPR和FPR值在图上绘制出来,得到ROC曲线。
下面用Python代码实现绘制ROC曲线:
1 |
|
这段代码将绘制出对应的数据的ROC曲线。ROC曲线越靠近左上角,表示模型性能越好。曲线下面积(AUC, Area Under the Curve)可以用来量化模型的整体性能,AUC值越大表示模型性能越好。