XGB-8: 加速故障时间的生存分析

什么是生存分析

生存分析(回归)模型时间到感兴趣事件的持续时间。生存分析是一种特殊的回归,与传统的回归任务不同,具体如下:

  • 标签始终为正值,因为不能等待负时间直到事件发生
  • 标签可能不是完全已知,或被截断,因为“测量时间需要时间”

第二点至关重要,更深入地研究一下。正如从名称中猜到的那样,生存分析的最早应用之一是对给定人群的死亡率进行建模。以NCCTG肺癌数据集为例。前8列表示特征,最后一列“生存时间”表示标签。

InstAgeSexph.ecogph.karnopat.karnomeal.calwt.lossTime to death (days)
37411901001175N/A306
368109090122515455
356109090N/A15[1010,+∞)
557119060115011210
1601010090N/A0883
12741150805130[1022,+∞)
76822706038410310

仔细看一下第三位患者的标签,是一个范围,而不是一个单一的数字。第三位患者的标签被称为被截断,因为由于某种原因实验者无法获得该标签的完整测量。可能的情况之一:患者在第1010天幸存并于第1011天走出诊所,因此他的死亡并没有直接观察到。另一种可能性:由于实验无法永远进行,实验被提前中断,无法观察到他的死亡。在任何情况下,他的标签是,这意味着他的死亡时间可以是任何大于1010的数字,例如2000、3000或10000。

有四种类型的截断:

  1. 未被截断:标签未被截断,以单一数字给出
  2. 右截断:标签的形式为,其中是下限
  3. 左截断:标签的形式为,其中是上限
  4. 区间截断:标签的形式为,其中和分别是下限和上限。

右截断是最常用的。

加速故障时间模型

加速失效时间(AFT) 模型是生存分析中最常用的模型之一。该模型的形式如下:

ln ⁡ Y = ⟨ w , x ⟩ + σ Z \ln{Y} = \langle \mathbf{w}, \mathbf{x} \rangle + \sigma Z lnY=w,x+σZ

其中:

  • x x x 是表示特征 R d R^d Rd的向量

  • w w w是由 d d d个系数组成的向量,每个系数对应一个特征

  • ⟨ ⋅ , ⋅ ⟩ \langle \cdot, \cdot \rangle ,是向量的点积

  • ln ⁡ ( ⋅ ) \ln{(\cdot)} ln()是自然对数

  • Y Y Y Z Z Z是随机变量

    • Y Y Y是输出标签
    • Z Z Z是已知概率分布的随机变量。常见的选择包括正态分布、逻辑分布和极值分布。直观地说, Z Z Z表示将预测值 ⟨ w , x ⟩ \langle \mathbf{w}, \mathbf{x} \rangle w,x从真实对数标签 ln ⁡ Y \ln{Y} lnY远离的“噪声”。
  • σ \sigma σ是缩放 Z Z Z的参数

请注意,该模型是线性回归模型 Y = ⟨ w , x ⟩ Y = \langle \mathbf{w}, \mathbf{x} \rangle Y=w,x的广义形式。为了使AFT与梯度提升一起工作,将模型修改为:

ln ⁡ Y = T ( x ) + σ Z \ln{Y} = \mathcal{T}(\mathbf{x}) + \sigma Z lnY=T(x)+σZ

其中 T ( x ) \mathcal{T}(\mathbf{x}) T(x)表示给定输入 x \mathbf{x} x的决策树集合的输出。由于 Z Z Z是随机变量,可以为表达式 ln ⁡ Y = T ( x ) + σ Z \ln{Y} = \mathcal{T}(\mathbf{x}) + \sigma Z lnY=T(x)+σZ定义一个似然性。因此,XGBoost 的目标是通过拟合良好的决策树集合 T ( x ) \mathcal{T}(\mathbf{x}) T(x)来最大化(对数)似然性。

如何使用

第一步是将标签表示为范围的形式,使得每个数据点都与两个数字关联,即标签的下界和上界。对于未被截断的标签,请使用形式的退化区间。

Censoring typeInterval formLower bound finite?Upper bound finite?
Uncensored[a, a]
Right-censored[a, +∞)
Left-censored[0, b]
Interval-censored[a, b]

将下界数值收集到一个数组中(y_lower_bound),将上界数值收集到另一个数组中(y_upper_bound)。通过调用xgboost.DMatrix.set_float_info(),将范围标签与数据矩阵对象关联起来:

import numpy as np
import xgboost as xgb# 4-by-2 Data matrix
X = np.array([[1, -1], [-1, 1], [0, 1], [1, 0]])
dtrain = xgb.DMatrix(X)# Associate ranged labels with the data matrix.
# This example shows each kind of censored labels.
#                         uncensored    right     left  interval
y_lower_bound = np.array([      2.0,     3.0,     0.0,     4.0])
y_upper_bound = np.array([      2.0, +np.inf,     4.0,     5.0])
dtrain.set_float_info('label_lower_bound', y_lower_bound)
dtrain.set_float_info('label_upper_bound', y_upper_bound)params = {'objective': 'survival:aft','eval_metric': 'aft-nloglik','aft_loss_distribution': 'normal','aft_loss_distribution_scale': 1.20,'tree_method': 'hist', 'learning_rate': 0.05, 'max_depth': 2}bst = xgb.train(params, dtrain, num_boost_round=100,evals=[(dtrain, 'train')])

将目标参数objective设置为survival:aft,将评估指标设置eval_metricaft-nloglik,以便最大化AFT模型的对数似然。 (XGBoost实际上将最小化负对数似然,因此称为aft-nloglik

参数aft_loss_distribution对应于AFT模型中项 Z Z Z的分布,而aft_loss_distribution_scale对应于缩放因子 σ \sigma σ

目前,可以从三个概率分布中选择aft_loss_distribution

aft_loss_distributionProbability Density Function (PDF)
normal exp ⁡ ( − z 2 / 2 ) 2 π \dfrac{\exp{(-z^2/2)}}{\sqrt{2\pi}} 2π exp(z2/2)
logistic e z ( 1 + e z ) 2 \dfrac{e^z}{(1+e^z)^2} (1+ez)2ez
extreme e z e − exp ⁡ z e^z e^{-\exp{z}} ezeexpz

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/695472.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搭建XSS 测试平台

XSS 测试平台是测试XSS漏洞获取cookie并接收Web 页面的平台,XSS 可以做 JS能做的所有事,包括但不限于窃取cookie、后台增删改文章、钓鱼、利用XSS漏洞进 行传播、修改网页代码、网站重定向、获取用户信息(如浏览器信息、IP 地址)等。这 里使用的是基于x…

Windows下搭建EFK实例

资源下载 elasticSearch :下载最新版本的就行 kibana filebeat:注意选择压缩包下载 更新elasticsearch.yml,默认端口9200: # Elasticsearch Configuration # # NOTE: Elasticsearch comes with reasonable defaults for most …

Rust Vs Go:从头构建一个web服务

Go 和 Rust 之间的许多比较都强调它们在语法和初始学习曲线上的差异。然而,最终的决定性因素是重要项目的易用性。 “Rust 与 Go”争论 Rust vs Go 是一个不断出现的话题,并且已经有很多关于它的文章。部分原因是开发人员正在寻找信息来帮助他们决定下…

信息系统基础

本博客地址:https://security.blog.csdn.net/article/details/136211072 一.信息系统概述 1、信息系统是由计算机软硬件、网络和通信设备、信息资源、用户和规章制度组成的以处理信息流为目的的人机一体化系统。信息系统的功能有:输入、存储、处理、输…

前端架构: 实现脚手架终端UI样式之ANSI escape code, Chalk, Ora介绍

在脚手架当中实现命令行的UI显示 1 )概述 在命令行中,如果想实现除传统的常规文本以外的内容比如想对字体进行加粗斜体下划线,包括对它改变颜色改变前景色改变后景色等等需要借助一个叫做 ANSI escape code 这样的一个概念它其实是一个标准&…

人工智能与机器学习行业新闻:颠覆企业运营方式的 AI 趋势

AI 推动业务转型 人工智能 (AI) 和机器学习已经在重塑各行各业的业务模式。AI 通过处理和整合数据支持战略决策的制定,其规模和速度远远超过了人脑。无疑,未来我们还将在 AI 领域取得许多重大突破,而拥有大量数据的行业可能会从人工智能革命…

Spring Authorization Server (如何使用具有 PKCE 的单页应用程序进行身份验证-2)

使用 Spring Authorization Server 实现具有 PKCE 的单页应用程序进行身份验证 开启 CORS SPA 由静态资源组成,可以通过多种方式进行部署。它可以与后端分开部署,例如使用 CDN 或单独的 Web 服务器,也可以使用 Spring Boot 与后端一起部署。…

Practical User Research for Enterprise UX

2.1 Why It’s Hard to Get Support for Research in Enterprises 2.1.1 Time and Budget Instead of answering the question “What dowe gain if we do this research?”, ask instead “What do we stand to lose if we don’t do the research?” 2.1.2 Legacy Thinkin…

鸿蒙会成为安卓的终结者吗?

随着近期鸿蒙OS系统推送测试版的时间确定,关于鸿蒙系统的讨论再次升温。 作为华为自主研发的操作系统,鸿蒙给人的第一印象是具有颠覆性。 早在几年前,业内就开始流传鸿蒙可能会代替Android的传言。毕竟,Android作为开源系统&…

python中websockets与主线程传递参数

目录 一、子线程创建websockets服务端接收客户端数据 二、主线程内启动子线程接收并处理数据 一、子线程创建websockets服务端接收客户端数据并存入队列 发送的消息客户端与服务端统一,多种消息加入判断的标签 服务端:web_server.py import asynci…

迷你世界彩色建筑生成

local x0,y0,z00,20,0--起点坐标 local dx,dy,dz100,100,1--外切长方体横纵竖长度 local count,all0,dx*dy*dz--计数,总数 local m,k10000,0--单次生成方块数,无用循环值 local x,y,z0,0,0--当前坐标 local id600--方块id local demath.random(2,12)/2 -…

如何使用idea连接服务器上的mysql?

安全组进行开放 具体步骤 关闭防火墙 开放端口号 重启防火墙 firewall-cmd --reload在mysql进行修改配置 update user set host % where user root;flush privileges;使得其他网络也可以连接这个数据库 另外如果想要sqlyog或者其他图形化界面要连接到数据库可以看下面这…

创建无名信号量

#include<myhead.h> //创建无名信号量 sem_t sem;//定义生产者 void *task1(void *arg) {int num5;while(num--){sleep(1);printf("我生产了一辆特斯拉\n");//释放资源sem_post(&sem);}//退出线程pthread_exit(NULL); } //定义消费者 void *task2(void *ar…

Android Debug Bridge (ADB) v1.0.31

Android Debug Bridge [ADB] v1.0.31 References Android SDK Platform Tools for Windows, Linux, Mac (all versions) https://developer.android.google.cn/studio/releases/platform-tools Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。保…

Python: argparse基本用法

Python: argparse基本用法 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;【Matplotlib之旅&#xff1a;零基础精通数据可视化】 &#x1f4a1; 创作高质量博文&#xff0c;分享更多关于深度学习、PyTorch、Python领域的优质内容&#xff0…

Flink介绍

Flink 介绍 文章目录 Flink 介绍1. 简介1.1 背景1.2 用途 2. 核心概念2.1 流&#xff08;Stream&#xff09;2.2 转换&#xff08;Transformation&#xff09;2.3 窗口&#xff08;Window&#xff09;2.4 状态&#xff08;State&#xff09; 3. 编程模型3.1 编程模型介绍3.2 程…

排序算法1:冒泡排序、快速排序、插入排序

排序算法&#xff1a;交换类排序&#xff0c;插入类排序、选择类排序、归并类排序 交换类排序&#xff1a;冒泡排序、快速排序 一、冒泡排序 #include <stdio.h> #include <stdlib.h> #include <time.h> typedef int ElemType; typedef struct{ElemType *e…

【Java EE初阶二十二】https的简单理解

1. 初识https 当前网络上,主要都是 HTTPS 了,很少能见到 HTTP.实际上 HTTPS 也是基于 HTTP.只不过 HTTPS 在 HTTP 的基础之上, 引入了"加密"机制&#xff1b;引入 HTTPS 防止你的数据被黑客篡改 &#xff1b; HTTPS 就是一个重要的保护措施.之所以能够安全, 最关键的…

第2.5章:StarRocks表设计--Colocation Join

目录 一、StarRocks数据划分 1.1 分区 1.2 分桶 二、Colocation Join实现原理 2.1 Colocate Join概述 2.2 Colocate Join实现原理 三、应用案例 注&#xff1a;本篇文章阐述的是StarRocks-3.2版本的Colocation Join 官网文章地址&#xff1a; Colocate Join | StarRoc…

css知识:盒模型盒子塌陷BFC

1. css盒模型 标准盒子模型&#xff0c;content-box 设置宽度即content的宽度 width content 总宽度content&#xff08;width设定值&#xff09; padding border IE/怪异盒子模型&#xff0c;border-box width content border padding 总宽度 width设定值 2. 如何…