【Survival Analysis】【机器学习】【1】
前言:
今年在做的一个博士课题项目,主要是利用病人的数据,训练出一个AI模型,做因果分析,
以及个性化治疗。自己一直是做通讯+AI方向的,这个系列主要参考卡梅隆大学的教程,以及临床医生的角度 了解一下医学领域的相关背景,
参考 卡梅隆大学的 George 的【 Predicting Time-to-Event Outcomes - A Tour of Survival Analysis from Classical to Modern】
目录:
- Survail Aanalysis 简介
- 生存分析基本问题框架
- 传统回归模型解决此类问题
一 Survial Analysis 简介
预测事件发生时间,主要包括下面几类:
1: 死亡时间(本篇只讨论这个)
2: 疾病复发时间
3: 出院时间
4: 病情再次复发时间
5: 用户退订服务时间
Predicting time-to-event outcomes:
• Time until death Phrase terminology using this example
• Time until disease relapse
• Time until hospital discharge
• Time until a convicted criminal reoffends
• Time until a user unsubscribes from a service
本教程主要讨论下面几个事:
生存分析基本问题框架
经典估计方法与预测误差评估
机器学习界神经网络新进展
开放挑战与未来方向
二 生存分析基本问题框架
2.1 数据集说明
| feaures | 中文翻译 |
|---|---|
| Gluten allergy | 麸质过敏 |
| Immuno suppressant | 免疫抑制剂 |
| Low resting heart rate | 静息心率过低 |
| Irregular heart beat | 心律不齐 |
| High BMI | 高身体质量指数 |
在预测病人生存期时候,通长会遇到病人还是活着的情况,这个时候6天要用大于等于6来替代

2.2 持续时间预测专用回归模型:
它的数据集标签跟一般的机器学习模型不一样,有两个:
标签1: 生存时间,
标签2: 死亡状态状态
2.3 例子
活着的例子

死亡的例子

2.4 生存曲线

生存曲线(Survival Curves)是生存分析(Survival Analysis)中的核心可视化工具,用于描述特定群体随时间推移的生存(或事件未发生)概率。以下是结构化解读:
基本定义
-
数学表达: S(t) = P(T > t)
表示个体存活时间T超过时间点t的概率,其中t≥0 -
典型类型:
-
Kaplan-Meier曲线 (非参数估计,临床研究最常用)
-
Nelson-Aalen曲线 (累积风险函数估计)
-
参数模型曲线 (如指数分布/威布尔分布拟合)
-
2.4 生存曲线解读
正向事件 vs 负向事件
| 场景示例 | 时间延长含义 | 应用领域典型场景 |
|---|---|---|
| Time until death (死亡时间) | "优"(生存期越长越好) | 癌症治疗评估、慢性病预后分析 |
| Hospital length of stay (住院时长) | "劣"(时间越长越差) | 医疗资源优化、医院运营效率评估 |
在给定的特征向量, 我们希望了解生存函数


2.5 理论基础 (Remarks on Theory)
总体而言,我们无法对所有时间点都任意精确地估计条件生存函数S(t | x)(即使在训练数据中,也存在最大观测时间!)。
典型的假设是:专注于在某个时间范围内估计S(t | x)
• 删失机制和删失率至关重要!当删失率较高时(例如40%以上),生存估计器的效果会显著下降 →预测硬盘故障时间、音乐人签约唱片公司时间等任务会变得非常困难

三 传统Linear regression 问题
预测回归模型,我们常用的是Linear Regression ,但是这里面存在一个问题。
当人是活着的,其生存时间是大于记录的时间。这个跟其它任务是不一样的。
针对该任务的特殊性,在模型的方向,自己也想到了一个创新的点,目前代码刚刚写完,预计本周会把结果做出来。
这边要感谢印度的 Mrutyunjaya Hiremath,做了回复
- Master of Technology
- Researcher at REVA University
You’re bringing up a very important issue. Predicting how long a patient will survive differs greatly from typical machine learning tasks like image recognition or binary classification. You’re right that using linear or logistic regression isn’t enough—these models don’t work well when survival time and censored data (patients still alive) are involved.
Better Models for Your Task
Since this is a survival prediction problem, here are some models that are more suitable and still offer good interpretability:
- Cox Proportional Hazards (CoxPH)
- A widely used model in medicine.
- It gives clear results like hazard ratios, which doctors can understand.
- Available in Python (lifelines) and R (survival).
- Random Survival Forests (RSF)
- A tree-based model that handles complex data and works well with censored information.
- You can still interpret which features are most important.
- DeepSurv
- A deep learning version of CoxPH that can capture more complex patterns.
- It is still interpretable using tools like SHAP.
- Paper link :
Article Deep Survival: A Deep Cox Proportional Hazards Network
- Code link : https://github.com/jaredleekatzman/DeepSurv
- Multi-task Logistic Regression (MTLR)
- Models survival over different time points.
- More flexible than Cox in some situations.
Better Metrics to Evaluate the Model
Standard metrics like AUC, R², or MSE are not the best fit for survival tasks. Instead, try these:
- C-index (Concordance Index): Checks how well the model ranks patients by survival time.
- Time-dependent AUC: AUC score that changes with time.
- Brier Score and Integrated Brier Score: Measure the accuracy of the model’s probability predictions over time.
These are made specifically for survival models and take censored data into account.
Try Some Early Plots
Before training models, you could try plotting Kaplan-Meier survival curves for groups like GCB vs. ABC or high vs. low KPS score. This can help show which features matter early on.
Useful Tools
- Python: scikit-survival, lifelines
- R: survival, survminer, randomForestSRC
- Deep Learning: DeepSurv GitHub link: https://github.com/jaredleekatzman/DeepSurv
Final Thoughts
In clinical settings, having a model that doctors can trust and understand is just as important as accuracy. You’ve raised a great question that applies to many medical AI projects.
教程: https://sites.google.com/view/survival-analysis-tutorial
代码: https://github.com/georgehc/dksa
相关文章:
【Survival Analysis】【机器学习】【1】
前言: 今年在做的一个博士课题项目,主要是利用病人的数据,训练出一个AI模型,做因果分析, 以及个性化治疗。自己一直是做通讯AI方向的,这个系列主要参考卡梅隆大学的教程,以及临床医生的角度 了…...
WebShell详解:原理、分类、攻击与防御
目录 一、WebShell的定义与核心概念 二、WebShell的分类 三、WebShell的攻击原理与常见手法 1. 攻击原理 2. 常见攻击路径 四、WebShell的危害 五、防御与检测策略 六、总结 一、WebShell的定义与核心概念 WebShell是一种以ASP、PHP、JSP等网页脚本形式存在的恶…...
JavaScript---原型和原型链
目录 一、引用类型皆为对象 二、原型和原型链是什么 三、__proto__与prototype 总结 四、原型链顶层 五、constructor 六、函数对象的原型链 一、引用类型皆为对象 原型和原型链都是来源于对象而服务于对象: JavaScript中一切引用类型都是对象,…...
离散数学问题集--问题5.9
问题 5.9 综合了计算机组成原理、数字逻辑和离散数学中的关键概念,旨在帮助学生理解二进制算术运算的硬件实现、逻辑门与算术运算的关系,以及如何使用数学方法来验证数字系统的正确性。它强调了从规范到实现再到验证的完整过程。 思想 函数抽象…...
手游防DDoS攻击SDK接入
在手游中集成防DDoS攻击SDK是抵御流量型和应用层攻击的核心手段之一。以下从SDK选型、接入流程、防护策略优化三个维度提供完整指南,并附关键代码示例: 一、SDK选型与核心能力对比 服务商优势劣势适用场景…...
Java—HTML:CSS选择器
今天我要介绍的知识点内容是Java HTML中的CSS选择器; CSS选择器用于定位HTML元素并为其添加样式。它允许我们控制网页的颜色、字体、布局和其他视觉元素。通过分离内容与样式。 下面我将介绍CSS中选择器的使用,并作举例说明; 选择器基本语…...
如何将/dev/ubuntu-vg/lv-data的空间扩展到/dev/ubuntu-vg/ubuntu-lv的空间上
要将 /dev/ubuntu-vg/lv-data 的空间扩展到 /dev/ubuntu-vg/ubuntu-lv 上,实际上是将 lv-data 的空间释放出来,并将其分配给 ubuntu-lv。以下是详细的步骤和操作说明: 已知信息 你有两个逻辑卷: /dev/ubuntu-vg/lv-data/dev/ubun…...
SSM阶段性总结
0 Pojo类 前端给后端:DTO 后端给前端:VO 数据库:PO/VO 业务处理逻辑:BO 统称pojo 1 代理模式 实现静态代理: 1定义接口2实现类3写一个静态代理类4这样在调用时就可以使用这个静态代理类来实现某些功能 实现动态代…...
Qt 5.14.2入门(一)写个Hello Qt!程序
目录 参考链接:一、新建项目二、直接运行三、修改代码增加窗口内容1、Qt 显示一个 QLabel 标签控件窗口2、添加按键 参考链接: Qt5教程(一):Hello World 程序 Qt 编程指南 一、新建项目 1、新建一个项目(…...
Jmeter分布式测试启动
代理客户端配置 打开jmeter.properties文件,取消注释并设置端口(如server_port1099), 并添加server.rmi.ssl.disabletrue禁用SSL加密。 (Linux系统)修改jmeter-server文件中的RMI_HOST_DEF为代理机实际IP。…...
redis itheima
缓存问题 核心是如何避免大量请求到达数据库 缓存穿透 既不存在于 redis,也不存在于 mysql 的key,被重复请求 public Result queryById(Long id) {String key CACHE_SHOP_KEYid;// 1. redis & mysqlString shopJson stringRedisTemplate.opsFo…...
mysql 执行计划中eq_ref是什么意思?
在 MySQL 的执行计划中,eq_ref 是一种连接类型(type),表示查询优化器在使用**主键(PRIMARY KEY)或唯一索引(UNIQUE INDEX)**进行等值匹配()时,对表…...
QT 调用动态链接库
引入QT提供的动态加载库的类 #include <QLibrary>定义函数指针类型 typedef void (*GetResFunction)(uint8_t*, uint8_t*, int);定义函数指针的主要目的是为了解析和调用动态链接库中的函数。如果你不定义函数指针,就无法直接调用动态链接库中的函数 加载动…...
100天精通Python(爬虫篇)——第122天:基于selenium接管已启动的浏览器(反反爬策略)
文章目录 1、问题描述2、问题推测3、解决方法3.1 selenium自动启动浏览器3.2 selenium接管已启动的浏览器3.3 区别总结 4、代码实战4.1 手动方法(手动打开浏览器输入账号密码)4.2 自动方法(.bat文件启动的浏览器) 1、问题描述 使用…...
MPP 架构解析:原理、核心优势与对比指南
一、引言:大数据时代的数据处理挑战 全球数据量正以指数级增长。据 Statista 统计,2010 年全球数据量仅 2ZB,2025 年预计达 175ZB。企业面临的核心挑战已从“如何存储数据”转向“如何快速分析数据”。传统架构在处理海量数据时暴露明显瓶颈…...
GitHub 趋势日报 (2025年04月06日)
GitHub 趋势日报 (2025年04月06日) 本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ 📈 今日整体趋势 Top 10 排名项目名称项目描述今日获星语言1microsoft/markitdownPython tool for converting files and office documents to Markdown.⭐ 548Py…...
Python设计模式-工厂模式
一、模式定义与核心思想 工厂模式(Factory Pattern)属于创建型设计模式,其核心思想是通过一个"工厂类"来创建对象,而不是直接调用类的构造函数。这种模式将对象的实例化过程封装起来,使系统在实例化对象时能…...
SAP-ABAP:SAP的Open SQL和Native SQL详细对比
在SAP ABAP开发中,Open SQL和Native SQL是两种操作数据库的方式,它们的核心区别在于可移植性、功能范围及底层实现机制。以下是详细对比: 1. Open SQL:深入解析 1.1 核心特性 数据库抽象层 Open SQL 由 SAP 内核的 Database Interface (DBI) 转换为目标数据库的 SQL(如 …...
蓝桥杯 拼数(字符串大小比较)
题目描述 设有 n 个正整数 a1…an,将它们联接成一排,相邻数字首尾相接,组成一个最大的整数。 输入格式 第一行有一个整数,表示数字个数 n。 第二行有 n 个整数,表示给出的 n 个整数 ai。 输出格式 一个正整…...
Server-Sent Events一种允许服务器向客户端发送实时更新的 Web API
Server-Sent Events(SSE)是一种允许服务器向客户端发送实时更新的 Web API。它基于 HTTP 协议,提供了一种单向的、服务器到客户端的通信机制,客户端可以通过监听服务器发送的事件来接收实时数据。下面从原理、使用场景、代码示例等…...
彻底解决VS2008编译错误:fatal error C1083 无法打开包括文件“stdint.h“
彻底解决VS2008编译错误:fatal error C1083 无法打开包括文件"stdint.h" 一、错误现象与本质原因 当在Visual Studio 2008中编译包含C99标准整数类型(如int8_t、uint32_t)的代码时,常出现以下编译错误: f…...
react从零开始的基础课
全文约5万字。 1.hello,.. // App.jsx import { useState } from react import reactLogo from ./assets/react.svg import viteLogo from /vite.svg import ./App.cssfunction App() {const [count, setCount] useState(0)return (<><Greeting name"world&qu…...
算法题型讲解
一.双指针 主要分为俩种类型: 1.左右指针:双指针指向开头,以一定标准移动或交换,对区域进行划分,或找到特殊点的位置 (如:快慢指针判断有无环,移动零) 2.对撞指针&am…...
操作主机的管理
1.在AD林范围内,有哪几个操作主机角色 架构主机(Schema Master) 功能:负责整个AD林中所有对象和属性的定义,是唯一可以更新目录架构的DC。架构更新会从架构主机复制到目录林中的所有其他域控制器。 作用范围…...
Redis和数据库一致性问题
操作模拟 1、先更新数据库还是先更新缓存? 1.1先更新缓存,再更新数据库 按并发的角度来说,有两个线程A、B,操作同一个数据,线程A先更新缓存为1,在线程A更新数据库之前,这时候线程B进来&#…...
第R8周:RNN实现阿尔茨海默病诊断(pytorch)
>- **🍨 本文为[🔗365天深度学习训练营]中的学习记录博客** >- **🍖 原作者:[K同学啊]** 本人往期文章可查阅: 深度学习总结 一、准备工作 🏡 我的环境: 语言环境:Python3.1…...
《穿透表象,洞察分布式软总线“无形”之奥秘》
分布式系统已成为众多领域的关键支撑技术,而分布式软总线作为实现设备高效互联的核心技术,正逐渐走入大众视野。它常被描述为一条“无形”的总线,这一独特属性不仅是理解其技术内涵的关键,更是把握其在未来智能世界中重要作用的切…...
C++基础精讲-02
文章目录 1.C/C申请、释放堆空间的方式对比1.1C语言申请、释放堆空间1.2C申请、释放堆空间1.2.1 new表达式申请数组空间 1.3回收空间时的注意事项1.4malloc/free 和 new/delete 的区别 2.引用2.1 引用的概念2.2 引用的本质2.3 引用与指针的联系与区别2.4 引用的使用场景2.4.1 引…...
【网络安全】Linux 命令大全
未经许可,不得转载。 文章目录 前言正文文件管理文档编辑文件传输磁盘管理磁盘维护网络通讯系统管理系统设置备份压缩设备管理其它命令前言 在网络安全工作中,熟练掌握 Linux 系统中的常用命令对于日常运维、日志分析和安全排查等任务至关重要。 以下是常用命令的整理汇总,…...
双相机结合halcon的条码检测
以下是针对提供的C#代码的详细注释和解释,结合Halcon库的功能和代码结构进行说明: --- ### **代码整体结构** 该代码是一个基于Halcon库的条码扫描类GeneralBarcodeScan,支持单台或双台相机的条码检测,并通过回调接口返回结果。…...
