决策曲线拆解分析兼随机森林DCA绘制
创始人
2025-05-30 19:45:39

临床决策曲线(DCA)解析兼绘制随机森林的DCA曲线(R)

临床决策曲线的独特作用

  • 协助决定阈值;cost-benefit 比值的概念和净收益的概念对临床决策阈值的选择都有重要的参考作用。
  • 协助选择模型,通常区分度和校准度是评价模型和选择模型的标准,这两个参数越高的模型越好,但是在实际情况下,往往是一个模型仅有一方面比另外一个模型好,那么这种情况下该选择哪个模型就是一个问题,决策曲线将有助于模型的选择。

关于DCA的几个观念

  • DCA曲线可以用于预测模型、检验marker等实验中。
  • 建议使用DCA确定一个阈值范围而不是单个阈值。
  • 明确预测模型使用的后续具体的检查或者治疗,比如某某检查或者某某手术等。

cost-benefit比值的概念

  • cost 的意思是,检查或者手术本身的不适和副作用;
  • benefit的意思是,检查或者手术的诊断和治疗作用;
  • 临床上两者往往不是等同的, 一般情况下benefit会大于cost。
  • 在DCA中,cost-benefit比值和选择的概率密切相关,比如如果选择的阈值概率为0.1(0.1以上接受检查或者治疗),那么cost-benefit比值为1:9,横坐标轴下的标线就表示出cost-benefit比值。选择阈值为0.1代表了一种考量,即我们愿意检查或者治疗10个人(至多),其中有1个获得了应有的检查或者治疗。在临床上,选择决策阈值之前,可以问这样的问题“你愿意接受检查或者治疗多少人而其中有1个得到了所需的检查或治疗?”,将有助于确定阈值。

净收益概念

  • 净收益是DCA的纵坐标,DCA中的treat all曲线和模型曲线需要计算净收益,且两者的计算公式稍微有些区别。下面是treat all 曲线的净收益计算方法,实际上是使用真实值(而不是预测值)来计算的。
#引用自https://blog.csdn.net/qq_48321729/article/details/123241746
def calculate_net_benefit_all(thresh_group, y_label):net_benefit_all = np.array([])tn, fp, fn, tp = confusion_matrix(y_label, y_label).ravel()total = tp + tnfor thresh in thresh_group:#阈值net_benefit = (tp / total) - (tn / total) * (thresh / (1 - thresh))net_benefit_all = np.append(net_benefit_all, net_benefit)return net_benefit_all

以下是模型曲线净收益的计算公式。可以看到两者是略有区别的。

#引用自https://blog.csdn.net/qq_48321729/article/details/123241746
def calculate_net_benefit_all(thresh_group, y_label):net_benefit_all = np.array([])tn, fp, fn, tp = confusion_matrix(y_label, y_label).ravel()total = tp + tnfor thresh in thresh_group:net_benefit = (tp / total) - (tn / total) * (thresh / (1 - thresh))#公式net_benefit_all = np.append(net_benefit_all, net_benefit)return net_benefit_all
  • 从以上公式中也可以看出,只要知道模型预测的概率就可以画出DCA曲线,而treat all曲线和模型无关,所以各种预测模型的treat all 曲线都是相同的,这样我们就可以绘制出随机森林等各种模型的DCA。

绘制随机森林模型的DCA

目前为止,官方只给出了线性模型(逻辑回归和COX)的DCA绘制方法,这一点是有点奇怪的,可能有些方面不适合向随机森林这样的模型(可能是其中的某些关键元素只能用线性模型来解释),但是从技术层面来看,各种模型都可以制作DCA曲线。

  • 线性模型:逻辑回归或者cox回归有现成的R包(rmda)可以用于绘制DCA。
  • 从上面的净获益的计算公式可以看出,只要有预测概率就可以计算,所以理论上所有的模型都可以计算净获益,也就可以制作DCA曲线,所以,计算净收益用到的是预测概率,所以模型的预测概率与实际概率的符合程度(校准度)是重要的。
  • 随机森林模型:理论上我们只要可以得到阈值(X轴)和净收益(Y轴)的数据,我们就可以绘制出DCA曲线。。
    • 考虑到上面所述“奇怪”的情况,同时绘制出线性模型的DCA作为参考,可能是比较妥当的。

    • 制作中遇到一个问题,就是“该使用全部数据,训练数据集还是测试数据集来绘制DCA曲线呢?”。对照线性模型的情况来看,应该使用全部数据集来绘制DCA曲线,那麽我们就要使用训练出的模型来预测整个数据集的概率,这会产生overfit的疑虑,所以目前觉得使用交叉验证的方法来获得整个数据集的预测概率是比较妥当的。

    • 这里使用了rmda官方的包作为基础绘制,在上面添加random forest 的DCA曲线的方式,比其它的方式更加简洁。

    • 绘制的详细代码可以参照链接(https://www.heywhale.com/notebooks/run/6413b2941c8c8b518ba04e52?label=62412710e2ca7e0017eaff45&image=63aa8edc230abea285abb899¬ebook=6413b294530f9c6c19267ed6&beta=1),一键运行。

相关内容

热门资讯

Git Actions自动发布... Git Actions自动发布部署,非最完善但足够完善和上手的一篇 文章最后附带完整...
【Java (一:12-4 D... DTD&schema 笔记记录一、DTD&schema1. xml约束分类DTD&schema1.1...
#ubuntu# #perf#... 关于 perf相关内容,抓取命令较多,当需要大量数据时每次输入命令会比较...
计算机图形学 | 可编程渲染管... 计算机图形学 | 可编程渲染管线计算机图形学 | 可编程渲染管线3.1 从固定到可编程图形编程的发展...
【FPGA实验2】二进制转为格... 关于FPGA入门实验2——二进制到格雷码的转换的一个记录 实验中作用到的仪器信息: 芯...
代码随想录算法训练营第四十九天... LeetCode 121 买卖股票的最佳时机题目链接:https://leetcode...
损失2亿美元后续,Euler正... 损失金额约2亿美元的Euler finance 闪电贷攻击已经成为2023年最大的去中心化金融黑客攻...
pb清空数组 1、 清空数组 string a[],b[] a[1] = '1';a[1] = '2';a[1] ...
嘉兴市联合上海证券交易所举办科... 为进一步拓宽科创企业融资渠道、优化发行机制,全力支持科技创新,5月30日,嘉兴市联合上海证券交易所举...
全网最详细,python接口自... 目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目...
专业、简单、稳定,融云重新定义... 艾瑞咨询《2023 年全球互联网通信云行业研究报告》(下简称《报告》)显...
没有Unity,没想到居然还有... 搞什么硬件,当然搞得是安卓手机当然多年前,哥是有去过中兴面试的ÿ...
OJ练习第52题——插入区间 插入区间 力扣链接:57.插入区间 题目描述 给你一个 无重叠的 ,按照...
【分享】为什么我设计的PCB很... 同事都很奇怪,为什么我设计的PCB都很少出错,而他们设计的PCB...
神经科学年鉴 | 全面综述情绪... 导读情绪是经历和行为的基础,影响和激励我们生活的方方面面。几个世纪以来,...
雅克比矩阵学习笔记 前置 假设f:Rn→Rmf:R_n\to R_mf:Rn​→Rm​是从nnn维欧氏空间线性映射到到m...
国产操作系统第一股,杨涛的麒麟... 文丨熔财经作者|星影随着chatGPT和AI技术的火热,国产芯片和操作系统能否适应人机...
原创 扛... 据报道,外交部副部长马朝旭与美国常务副国务卿兰多通电话的消息引发关注。尽管中美双方新闻稿内容简洁,但...
重大违法,强制退市,周五停牌 每天三分钟 公告很轻松 双林股份拟定增募资不超15亿元;光洋股份:终止购买银球科技100%股权等事项...
基于C++的AI五子棋游戏项目... 项目资源下载 基于C++的AI五子棋游戏项目源码压缩包下载地址基于C+...
人工智能能否取代软硬件开发工程... 版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog....
CGI编程 1.什么是CGI?   CGI是通用网关接口(Common Gateway Interface);是...
windows下远程连接aws... 一:安装或更新kubectlKubectl 是一个命令行工具,用于与 K...
jemeter-arthas做... jemeter-arthas做接口压测 一、jemeter 是一款压力测试工具,使用如...
maven的pom依赖配置介绍... 依赖模板 ch.qos.logbacklogback-classic1.4.4test
知识点梳理2408482-09... 基础产品数据(Basic Product Data):CA...
牛顿-拉弗森算法 这是一种迭代算法,为了求解多变量方程f⃗(x⃗)=0⃗\vec{f}(\vec...
linux clash部署 linux clash部署linux clash 部署使用一 环境二 下载1 下载2 解压三 配置1...
国科大计算机算法分析与设计1—... 写在前面 国科大算法复习的时候,想着复习一下平常的作业题,也正好记录一下...
提前涨停!这一A股控制权生变 ... 【导读】实控人丁福如筹划公司股份协议转让事宜,菲林格尔股票停牌中国基金报记者 牛思若5月30日,菲林...