[ PROMPT_NODE_27372 ]
ensemble-models
[ SKILL_DOCUMENTATION ]
# 生存分析的集成模型
## 随机生存森林 (Random Survival Forests)
### 概述
随机生存森林将随机森林算法扩展到带有删失数据的生存分析中。它们在自助采样(bootstrap samples)上构建多棵决策树并聚合预测结果。
### 工作原理
1. **自助采样**: 每棵树都在训练数据的不同自助样本上构建
2. **特征随机性**: 在每个节点,仅考虑随机子集的特征进行分裂
3. **生存函数估计**: 在终端节点,Kaplan-Meier 和 Nelson-Aalen 估计量计算生存函数
4. **集成聚合**: 最终预测对所有树的生存函数进行平均
### 何时使用
- 特征与生存之间存在复杂的非线性关系
- 不需要对函数形式做出假设
- 希望以最少的调优获得稳健的预测
- 需要特征重要性估计
- 样本量充足(通常 n > 100)
### 关键参数
- `n_estimators`: 树的数量(默认:100)
- 树越多 = 预测越稳定但速度越慢
- 典型范围:100-1000
- `max_depth`: 树的最大深度
- 控制树的复杂度
- `min_samples_split`: 分裂节点所需的最小样本数(默认:6)
- 值越大 = 正则化越强
- `min_samples_leaf`: 叶节点处的最小样本数(默认:3)
- 防止对小群体过拟合
- `max_features`: 每个分裂点考虑的特征数量
- 'sqrt': sqrt(n_features) - 良好的默认值
- 'log2': log2(n_features)
- None: 所有特征
- `n_jobs`: 并行作业数量(-1 使用所有处理器)
### 示例用法
python
from sksurv.ensemble import RandomSurvivalForest
from sksurv.datasets import load_breast_cancer
# 加载数据
X, y = load_breast_cancer()
# 拟合随机生存森林
rsf = RandomSurvivalForest(n_estimators=1000,
min_samples_split=10,
min_samples_leaf=15,
max_features="sqrt",
n_jobs=-1,
random_state=42)
rsf.fit(X, y)
# 预测风险评分
risk_scores = rsf.predict(X)
# 预测生存函数
surv_funcs = rsf.predict_survival_function(X)
# 预测累积风险函数
chf_funcs = rsf.predict_cumulative_hazard_function(X)
### 特征重要性
**重要提示**:基于分裂不纯度的内置特征重要性对于生存分析并不总是可靠的。