机器学习评价指标之决策曲线

news/2024/8/26 12:43:08 标签: 机器学习, 人工智能, 算法

决策曲线是一种用于评估和比较不同分类模型性能的工具,它可以帮助研究人员和数据分析者理解模型在不同阈值设置下的收益和风险。以下是一些关于分类模型决策曲线的详细信息:

决策曲线的构成:

  1. 阈值(Threshold):分类模型通常会输出一个概率分数,表示样本属于正类的概率。阈值是用于将概率转换为类别标签的界限。例如,如果阈值设定为0.5,那么概率大于或等于0.5的样本将被分类为正类。

  2. 真正率(True Positive Rate, TPR):也称为灵敏度或召回率,表示所有正类样本中被正确分类为正类的比例。

  3. 假正率(False Positive Rate, FPR):表示所有负类样本中被错误分类为正类的比例。

  4. 净收益(Net Benefit):是真正率与假正率的差值,或者说是分类器在特定阈值下的性能度量。

决策曲线的类型:

  1. 受试者工作特征曲线(Receiver Operating Characteristic, ROC):ROC曲线展示了不同阈值下真正率和假正率的关系。

  2. 提升曲线(Lift Curve):展示了模型相对于随机猜测的绩效提升。

  3. 净收益曲线(Net Benefit Curve):直接展示了不同阈值下的净收益。

如何创建决策曲线:

  1. 计算概率:使用分类模型为每个样本计算属于正类的概率。

  2. 设置阈值:选择一系列阈值(例如,从0到1,以0.01为步长)。

  3. 计算TPR和FPR:对于每个阈值,计算TPR和FPR。

  4. 绘制曲线:在坐标系中,以FPR为横轴,TPR为纵轴,绘制ROC曲线。对于净收益曲线,以阈值为横轴,净收益为纵轴。

决策曲线的应用:

  • 模型比较:通过比较不同模型的决策曲线,可以选择性能最佳的模型。
  • 阈值选择:可以帮助确定最佳的分类阈值,以最大化模型的净收益。
  • 临床决策支持:在医疗领域,决策曲线可以帮助医生理解不同诊断测试的收益和风险。

注意事项:

  • 决策曲线应结合具体的应用背景和业务目标来解释。
  • 在不平衡数据集的情况下,决策曲线的解读需要特别小心,因为假正率和真正率的计算可能会受到少数类的影响。

通过决策曲线,可以更全面地评估分类模型在实际应用中的表现,并作出更合理的决策。

代码实现:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import roc_curve, auc, roc_auc_score

# 创建一个分类数据集
X, y = make_classification(n_samples=1000, n_features=20, n_informative=2, n_redundant=10, random_state=42)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=42)

# 训练随机森林分类器
clf = RandomForestClassifier(random_state=42)
clf.fit(X_train, y_train)

# 预测测试集的概率
y_score = clf.predict_proba(X_test)[:, 1]

# 计算ROC曲线的FPR和TPR
fpr, tpr, thresholds = roc_curve(y_test, y_score)
roc_auc = auc(fpr, tpr)

# 绘制ROC曲线
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic (ROC) Curve')
plt.legend(loc="lower right")

# 绘制净收益曲线
# 计算净收益
net_benefit = tpr - fpr
# 找到最大的净收益和对应的阈值
max_net_benefit = np.max(net_benefit)
best_threshold = thresholds[np.argmax(net_benefit)]

plt.subplot(1, 2, 2)
plt.plot(thresholds, net_benefit, color='blue', lw=2, label='Net Benefit')
plt.axhline(0, color='black', lw=2, linestyle='--')
plt.axvline(best_threshold, color='red', linestyle='--', label='Best Threshold')
plt.xlabel('Threshold')
plt.ylabel('Net Benefit')
plt.title('Net Benefit Curve')
plt.legend(loc="lower right")

plt.tight_layout()
plt.show()

在这段代码中,我们首先创建了一个合成数据集,然后使用随机森林分类器进行训练。接着,我们使用测试集来计算分类概率,并使用这些概率来绘制ROC曲线和净收益曲线。

  • ROC曲线显示了不同阈值下模型的性能。
  • 净收益曲线则直接展示了不同阈值下的净收益,帮助确定最佳阈值。

通过这种方式,你可以直观地比较不同模型或同一模型在不同阈值下的表现。


http://www.niftyadmin.cn/n/5558086.html

相关文章

YOLOv8目标跟踪deepsort

原文:YOLOv8目标跟踪deepsort - 知乎 (zhihu.com) 一、YOLOV8 tracking 参考文章: Ctrl CV:YoloV5 + DeepSort1 赞同 0 评论文章 二、行人重识别(ReID) ——Market-1501 数据集 2.1、数据集简介 Market-1501 数据集在清华大学校园中采集,夏天拍摄,在 2015 年构建并…

Python环境安装参考(python解释器+Pycharm软件)

Python代码经过Python解释器的处理可以生成能让计算机理解的二进制代码 python解释器安装: Python的下载安装(手把手教学)_如何下载python-CSDN博客文章浏览阅读3.7w次,点赞53次,收藏274次。程序员养成日记第一天&a…

在线图源或者离线资源的国家队-天地图简介及Qgis加载相关资源实战

目录 前言 一、如何注册天地图 1、进入天地图官网 2、登录天地图 二、天地图的功能简介 1、地图服务 2、开发资源 3、服务中心 三、如何使用Qgis加载天地图的底图 1、tianditu 工具插件 2、dianditu插件的使用 2、xyz瓦片加载 总结 前言 相信作为地理信息方面的从…

ubuntu 18 cuda 11.8 安装 vllm

根据官方文档 # Install vLLM with CUDA 11.8. export VLLM_VERSION0.4.0 export PYTHON_VERSION310 pip install https://github.com/vllm-project/vllm/releases/download/v${VLLM_VERSION}/vllm-${VLLM_VERSION}cu118-cp${PYTHON_VERSION}-cp${PYTHON_VERSION}-manylinux1_…

[Linux+git+Gitee+Jenkins]持续集成实验安装配置详细

首先理解持续集成原理,看懂并理解图 1。 图 1 持续集成原理结构 图 1 中,版本控制服务器指远程代码仓库,本实验使用 GitEE 作为远程代码仓库;Jenkins 自动化部署服务器为虚拟机,操作系统为 Linux &#xff1b…

ES6 对象的扩展(十五)

1. 属性的简洁表示(Property Shorthand) 特性:在对象字面量中,如果属性名和变量名相同,可以省略属性名,直接使用变量值。 用法:简化对象字面量的书写。 const x 1, y 2; const obj { x, y …

前端框架入门之Vue的模版语法与数据单向绑定 数据双向绑定

目录 vue的模版语法 数据绑定 vue的模版语法 关于模版这个概念 root容器里面被称为模版 我们的语法分为插值语法和插值语法 这样就是实现了插值语法 接下来我们实现指令语法 首先我们写一个a标签 链一个超链接上去 <h1>指令语法</h1><a href"https:/…

VMware安装CentOS 7

在虚拟机中安装无论是Windows还是Linux其实都差不多&#xff0c;主要还是需要熟悉VMware的使用&#xff0c;多新增几次就熟悉了&#xff0c;可以反复删除再新增去练习… 如下是安装CentOS 7 安装过程&#xff1a; VMare Workstation 16 PRO 中安装CentOS 7 CentOS 7 下载推荐…