模型评估——ROC曲线与AUC计算(真正率假正率)

评估方法:
在学习得到的模型投放使用之前,通常需要对其进行性能 评估。为此, 需使用一个“测试集”(testing set)来测试 模型对新样本的泛化能力,然后以测试集上的“测试误差 ”(testing error)作为泛化误差的近似。

我们假设测试集是从样本真实分布中独立采样获得,所以 测试集要和训练集中的样本尽量互斥。

给定一个已知的数据集,将数据集拆分成训练集S和测试集 T,通常的做法包括留出法、交叉验证法、自助法。

评估指标:
要评估模型的好坏光有评估方法还不行,还得确定评估指标。

所谓评估指标就是衡量模型泛化能力好坏的评估标准,反映了 任务需求;使用不同的评估指标往往会导致不同的评估结果。

在分类预测任务中,给定测试样例集,评估分类模型的性能就 是把对每一个待测样本的分类结果和它的真实标记比较。

因此,准确率和错误率是最常用的两种评估指标:

  • 准确率就是分对样本占测试样本总数的比例
  • 错误率就是分错样本占测试样本总数的比例

ROC曲线的绘制基于TPR和FPR,这里先说真正率和假正率的计算

真正率与假正率的计算

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例题:

在这里插入图片描述
在这里插入图片描述
+、- 表示样本的真实正负,即x1为负样本,但它有0.9的概率被预测为正样本,同理,x2为正样本,它有0.9的概率被预测为正样本。

接下来,开始用一种简单的方法计算TPR和FPR

| 来分割数据(先举个例子, | 从最左移动到最右)
在这里插入图片描述

| 左侧表示样本被预测为正,右边表示样本被预测为负。

第一行,TP是被模型预测为正的正样本,即 + 样本在 | 左侧的个数,为0;FN是被模型预测为负的正样本,即 + 样本在 | 右侧的个数,为4;FP是被模型预测为正的负样本,即 - 样本在 | 左侧的个数,为0;TN是被模型预测为负的负样本,即 - 样本在 | 右侧的个数,为5个。列出表如下:

在这里插入图片描述
那第一行的TPR和FPR分别为在这里插入图片描述
**第二行,**TP是 + 样本在 | 左侧的个数,为0;FN是被模型预测为负的正样本,即 + 样本在 | 右侧的个数,为4;FP是被模型预测为正的负样本,即 - 样本在 | 左侧的个数,为1;TN是被模型预测为负的负样本,即 - 样本在 | 右侧的个数,为4个。列出表如下:在这里插入图片描述
那第一行的TPR和FPR分别为
在这里插入图片描述
同理:
在这里插入图片描述

ROC曲线 的横坐标为FPR,纵坐标为TPR,根据这九个点,用R语言画出ROC曲线如下
在这里插入图片描述
当样本量足够大时,密集的点就会使ROC曲线变得圆滑
在这里插入图片描述
直接地比较分类的好坏是比较ROC曲线的面积,也就是AUC,当后者的曲线包住前者时,说明后者的分类器比较好;但有时曲线有交叉点难以判断面积的大小时,需要计算AUC的值。在这里插入图片描述
在这里说排序法:
在这里插入图片描述
在这里插入图片描述
我这里说的比较AUC是基于多个样本集,一个样本集根据计算只能画出一个ROC曲线和AUC值(我这里只有一道题,没得比,这也是我当时看教程有点不太明白的地方,以为还可以画出多条曲线进行比较呢)

到这里就解释完了,有高见的朋友们可以留言,我对这块的内容也是自己的体会,希望可以和大家一起讨论。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
决策树算法进行心脏病预测时,可以使用ROC曲线AUC评估模型的性能。以下是评估步骤: 1. 准备数据集,将数据集分成训练集和测试集。 2. 使用训练集训练决策树模型,并使用测试集进行预测。 3. 计算模型的真阳性(TPR)和阳性(FPR)。 4. 绘制ROC曲线,并计算曲线下面积(AUC)。 在Python中,可以使用scikit-learn库来实现ROC曲线AUC计算和绘制。以下是一个简单的示例代码: ```python from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import roc_curve, auc import matplotlib.pyplot as plt # 准备数据集 X_train, X_test, y_train, y_test = ... # 训练决策树模型 model = DecisionTreeClassifier() model.fit(X_train, y_train) # 使用测试集进行预测 y_pred = model.predict(X_test) # 计算真阳性阳性 fpr, tpr, thresholds = roc_curve(y_test, y_pred) # 计算AUC roc_auc = auc(fpr, tpr) # 绘制ROC曲线 plt.plot(fpr, tpr, lw=1, label='ROC (area = %0.2f)' % roc_auc) plt.plot([0, 1], [0, 1], '--', color='gray', label='Random') plt.xlim([-0.05, 1.05]) plt.ylim([-0.05, 1.05]) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('Receiver operating characteristic') plt.legend(loc="lower right") plt.show() ``` 在这个示例代码中,我们首先准备了数据集,然后训练了一个决策树模型,并使用测试集进行预测。接着,我们计算了真阳性阳性,并使用它们绘制了ROC曲线。最后,我们计算曲线下面积(AUC),并将其显示在图表上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值