逻辑回归:疾病风险概率建模
尽管名称里带着'回归',逻辑回归(Logistic Regression)实际上是一种经典的分类模型。在医疗领域,它凭借简单高效、可解释性强以及能直接输出概率值的特性,成为了疾病风险预测、诊断辅助和预后评估的基石算法。
我们将从算法原理入手,深入探讨它在医疗场景中的适用性,并通过实战案例展示从数据预处理到模型训练、结果解释的完整流程。
核心原理:从线性到概率
逻辑回归的核心思想是利用线性回归的输出,通过一个非线性函数来估计样本属于某个类别的概率。
链接函数与 Sigmoid
线性回归试图用特征的线性组合预测连续值:
[ z = \theta_0 + \theta_1 x_1 + \dots + \theta_p x_p = \theta^T x ]
对于二分类问题,我们需要输出一个介于 0 到 1 之间的概率 $P(y=1|x)$。由于线性输出的范围是 $(-\infty, +\infty)$,我们需要一个链接函数将其映射到 $(0,1)$ 区间。逻辑回归采用的是 Sigmoid 函数:
[ \sigma(z) = \frac{1}{1 + e^{-z}} ]
这个 S 形曲线将任意实数压缩到 0 到 1 之间,当 $z=0$ 时输出为 0.5。因此,模型表示为:
[ P(y=1|x) = \sigma(\theta^T x) = \frac{1}{1 + e^{-\theta^T x}} ]
而 $P(y=0|x) = 1 - P(y=1|x)$。
决策边界与优化
逻辑回归的决策边界由 $\theta^T x = 0$ 决定,本质上是一个线性超平面。当 $\theta^T x > 0$ 时,预测为正类;反之则为负类。我们可以通过调整分类阈值来控制模型的灵敏度与特异度。
参数 $\theta$ 通常通过极大似然估计(MLE)求解。为了便于计算,我们最大化对数似然函数,这等价于最小化交叉熵损失函数:
[ J(\theta) = -\frac{1}{m} \sum_{i=1}^{m} \left[ y^{(i)} \log(\hat{y}^{(i)}) + (1-y^{(i)}) \log(1-\hat{y}^{(i)}) \right] ]
由于没有闭式解,我们使用梯度下降等迭代优化算法。更新规则如下:
[ \theta := \theta - \alpha \nabla J(\theta) ]
其中 $\alpha$ 是学习率。有趣的是,交叉熵损失的梯度形式与线性回归非常相似,只是 $\hat{y}$ 的计算不同。
为了防止过拟合,我们常加入正则化项。L2 正则化(岭回归)惩罚大参数值,L1 正则化(Lasso)则能产生稀疏解,有助于特征选择。在医疗场景中,L1 正则化常被用来识别关键的风险因素。
医疗场景落地
逻辑回归在医疗领域的应用极其广泛,以下是几个典型场景:
- 疾病风险预测:构建风险评分模型,如 Framingham 冠心病风险评分,基于年龄、血压等变量预测患病概率。
- 诊断辅助:根据症状和检验结果输出患病概率,辅助医生决策,例如肺炎诊断或败血症早期识别。
- 预后预测:预测患者发生死亡、复发或并发症的概率,如术后并发症风险。
- 药物疗效分析:预测患者对特定药物的反应概率或不良反应风险。
- 资源利用预测:评估再入院风险或 ICU 入住需求,辅助床位管理。
- 风险校正与绩效评估:比较实际结局与预期结局,用于医院或医生的绩效评估。
- 变量筛选:通过系数解释性和统计检验,探索疾病的危险因素。
实战:乳腺癌诊断模型
接下来我们通过威斯康星乳腺癌数据集(Wisconsin Breast Cancer Dataset),演示如何构建一个诊断模型。该数据集包含 569 个样本,每个样本有 30 个数值型特征(如半径、纹理、周长等),标签为良性(Benign)或恶性(Malignant)。


