机器学习-模型拟合:如何使用逻辑回归精准预测临床诊断结果?

简介: 本文旨在介绍逻辑回归模型在临床诊断结果预测中的应用,并探讨相关需求和挑战。首先,将详细介绍逻辑回归模型的原理和特点,以及其在机器学习中的地位和应用范围。接着,将阐述临床诊断结果预测的重要性和现实需求,以及逻辑回归模型如何满足这些需求。

一、引言



在机器学习中,模型拟合是一个关键概念,它指的是使用数据来拟合出一个能够适应实际情况的数学模型。逻辑回归是一种常用的模型拟合方法,它可以用于处理分类问题,特别是二分类问题。逻辑回归利用了一个称为“逻辑函数”的模型来预测观测值的概率。


然而,在临床诊断领域中,准确预测疾病结果对于患者的治疗和生存至关重要。因此,使用逻辑回归进行临床诊断结果预测成为一种被广泛研究和应用的方法。


本文旨在介绍逻辑回归模型在临床诊断结果预测中的应用,并探讨相关需求和挑战。首先,将详细介绍逻辑回归模型的原理和特点,以及其在机器学习中的地位和应用范围。接着,将阐述临床诊断结果预测的重要性和现实需求,以及逻辑回归模型如何满足这些需求。


二、逻辑回归简介



2.1 逻辑回归原理


  • 「基本假设」逻辑回归模型假设在给定输入特征的情况下,输出变量的概率服从二项分布。


  • 「逻辑函数」

逻辑回归模型使用逻辑函数(Sigmoid函数)对线性组合进行变换(逻辑回归=线性回归+sigmoid函数。),将其映射到0到1之间的概率值。逻辑函数的数学表达式如下:


640.png


如上图:逻辑回归模型使用逻辑函数对线性组合进行变换,将输入特征与输出变量之间建立关系。当线性组合的值趋近于负无穷时,逻辑函数的值趋近于0;当线性组合的值趋近于正无穷时,逻辑函数的值趋近于1。通过将线性回归结果带入逻辑函数,我们可以将连续变量y转换为0-1区间内的概率值。


  • 「决策边界」:在逻辑回归模型中,当概率值小于0.5时,我们将最终结果预测为0;当概率值大于0.5时,我们将最终结果预测为1。通过这个阈值,我们可以明确地进行分类预测。


  • 「逻辑回归的算法步骤」
  1. 输入自变量特征
  2. 定义自变量的线性组合y(y = β₀ + β₁x₁ + β₂x₂ + ... + βₚxₚ),即针对自变量线性回归,其中,y表示线性组合,β₀表示模型的截距(常数项),β₁、β₂、...、βₚ表示各个输入特征的系数,x₁、x₂、...、xₚ表示对应的自变量特征。
  3. 将线性回归结果y映射到sigmoid函数,生成一个0-1范围取值的函数概率值
  4. 根据概率值,定义阈值(通常为0.5,即是决策边界),判定分类结果

640.png


2.2 逻辑回归适用场景和优势


  • 「优势」
  1. 简单而高效:逻辑回归是一种简单且易于实现的分类算法,计算速度快,适用于大规模数据集。
  2. 可解释性强:逻辑回归模型中的系数表示不同特征对结果的影响程度,可以提供变量的权重信息,便于解释模型。
  3. 适用于概率预测:逻辑回归通过sigmoid函数将线性组合映射到0-1的概率值,能够直接预测样本属于某一类别的概率。
  4. 可以处理离散特征和连续特征:逻辑回归可以同时适应处理离散特征和连续特征,不需要对特征进行过多的预处理。


  • 「适用场景」
  1. 二分类问题:逻辑回归主要用于解决二分类问题,即将样本分为两个互斥的类别。例如,预测股票市场中的涨跌、预测学生是否能被大学录取等。
  2. 概率预测:逻辑回归通过使用sigmoid函数将线性组合映射到0-1之间的概率值,可以得到样本属于某个类别的概率。因此,在需要进行概率预测的任务中,逻辑回归是一个有效的选择。例如,预测用户点击广告的概率,判断一封电子邮件是否为垃圾邮件等。
  3. 特征重要性分析:逻辑回归模型中的系数表示不同特征对结果的影响程度。根据系数的大小可以评估其在分类中的相对重要性。因此,逻辑回归可用于分析特征的重要性,帮助理解数据并进行特征选择。例如,通过逻辑回归模型确定影响房价的关键因素。
  4. 高维数据集:逻辑回归在高维数据集中表现良好,并且具有较低的计算复杂度。因此,当特征维度较高时,逻辑回归是一个可行的选择。例如,在文本分类中,逻辑回归可以用于将文本数据映射到不同的类别。


三、实例演示



3.1 数据集载入


library(survival)
str(gbsg)


结果展示:


> str(gbsg)
'data.frame':   686 obs. of  10 variables:
 $ age    : int  49 55 56 45 65 48 48 37 67 45 ...
 $ meno   : int  0 1 1 0 1 0 0 0 1 0 ...
 $ size   : int  18 20 40 25 30 52 21 20 20 30 ...
 $ grade  : int  2 3 3 3 2 2 3 2 2 2 ...
 $ nodes  : int  2 16 3 1 5 11 8 9 1 1 ...
 $ pgr    : int  0 0 0 0 0 0 0 0 0 0 ...
 $ er     : int  0 0 0 4 36 0 0 0 0 0 ...
 $ hormon : int  0 0 0 0 1 0 0 1 1 0 ...
 $ rfstime: int  1838 403 1603 177 1855 842 293 42 564 1093 ...
 $ status : Factor w/ 2 levels "0","1": 1 2 1 1 1 2 2 1 2 2 ...
age:患者年龄
meno:更年期状态(0表示未更年期,1表示已更年期)
size:肿瘤大小
grade:肿瘤分级
nodes:受累淋巴结数量
pgr:孕激素受体表达水平
er:雌激素受体表达水平
hormon:激素治疗(0表示否,1表示是)
rfstime:复发或死亡时间(以天为单位)
status:事件状态(0表示被截尾,1表示事件发生)


3.2 数据预处理


colSums(is.na(gbsg))
set.seed(1234)
gbsg$status <- as.factor(gbsg$status)
# 拆分训练集和测试集
trainIndex <- sample(1:nrow(gbsg), 0.8 * nrow(gbsg))
train <- gbsg[trainIndex,]
test <- gbsg[-trainIndex,]


3.3 逻辑回归拟合


# 拟合逻辑回归模型
model <- glm(status ~ age + meno + size + grade + nodes + pgr + er + hormon, data = train, family = binomial)
summary(model)


结果展示:


Call:
glm(formula = status ~ age + meno + size + grade + nodes + pgr + 
    er + hormon, family = binomial, data = train)
Coefficients:
              Estimate Std. Error z value Pr(>|z|)    
(Intercept) -0.0355079  0.7759338  -0.046  0.96350    
age         -0.0246618  0.0146817  -1.680  0.09300 .  
meno         0.5901891  0.2941229   2.007  0.04479 *  
size         0.0127721  0.0069394   1.841  0.06569 .  
grade        0.1391511  0.1636063   0.851  0.39503    
nodes        0.0925852  0.0215085   4.305 1.67e-05 ***
pgr         -0.0027016  0.0007524  -3.590  0.00033 ***
er           0.0007713  0.0007929   0.973  0.33073    
hormon      -0.3859417  0.2039298  -1.893  0.05842 .  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
    Null deviance: 753.96  on 547  degrees of freedom
Residual deviance: 686.34  on 539  degrees of freedom
AIC: 704.34
Number of Fisher Scoring iterations: 4


3.4 模型评估


  • 「混淆矩阵」
library(caret)
# 使用逻辑回归模型进行预测
predictions <- predict(model, newdata = test, type = "response")
# 将概率转换为类别(基于0.5的阈值)
predicted_classes <- ifelse(predictions > 0.5, 1, 0)
# 创建混淆矩阵
predicted_classes <- as.factor(predicted_classes)
test$status <- as.factor(test$status)
confusion_matrix <- confusionMatrix(predicted_classes, as.factor(test$status))
# 创建混淆矩阵
confusion_matrix <- confusionMatrix(predicted_classes, test$status)
# 将表格对象转换为数据框
cm_data <- as.data.frame(cm_data)
# 绘制混淆矩阵图
ggplot(data = cm_data, aes(x = Reference, y = Prediction, fill = Freq)) +
  geom_tile() +
  geom_text(aes(label = Freq), color = "black") +
  scale_fill_gradient(low = "white", high = "steelblue") +
  labs(x = "Actual", y = "Predicted", title = "Confusion Matrix")


640.png


从图中看出总共138例子,预测对的是93例子,错误的是45例。


  • 「ROC曲线」
# 使用逻辑回归模型进行预测
predictions <- predict(model, newdata = test, type = "response")
library(pROC)
roc <- pROC::roc(test$status, predictions)
# 绘制ROC曲线
plot(roc, main = "ROC Curve", print.auc = TRUE, auc.polygon = TRUE, grid = TRUE, legacy.axes = TRUE,col="blue")


640.png


  • 「特征重要性图」
# 提取特征系数
coef_data <- data.frame(Feature = names(coef(model)), Coefficient = abs(coef(model)))
# 按照系数绝对值降序排序
coef_data <- coef_data[order(coef_data$Coefficient, decreasing = TRUE), ]
# 绘制特征重要性柱状图
ggplot(data = coef_data, aes(x = reorder(Feature, Coefficient), y = Coefficient)) +
  geom_bar(stat = "identity", fill = "steelblue") +
  xlab("Feature") +
  ylab("Coefficient (Absolute Value)") +
  ggtitle("Logistic Regression Feature Importance")


640.png


四、总结



这个结果肯定是不如人意的,如果想知道如何实现提高预测的准确率,以及模型调优的方法,欢迎关注和私信我,我们一起讨论学习。原创不易,如果觉得写的还行的话,请留下您的赞和再看,谢谢!


*「未经许可,不得以任何方式复制或抄袭本篇文章之部分或全部内容。版权所有,侵权必究。」

目录
相关文章
|
21天前
|
人工智能 自然语言处理 IDE
模型微调不再被代码难住!PAI和Qwen3-Coder加速AI开发新体验
通义千问 AI 编程大模型 Qwen3-Coder 正式开源,阿里云人工智能平台 PAI 支持云上一键部署 Qwen3-Coder 模型,并可在交互式建模环境中使用 Qwen3-Coder 模型。
287 109
|
1月前
|
人工智能 自然语言处理 运维
【新模型速递】PAI-Model Gallery云上一键部署Kimi K2模型
月之暗面发布开源模型Kimi K2,采用MoE架构,参数达1T,激活参数32B,具备强代码能力及Agent任务处理优势。在编程、工具调用、数学推理测试中表现优异。阿里云PAI-Model Gallery已支持云端部署,提供企业级方案。
170 0
【新模型速递】PAI-Model Gallery云上一键部署Kimi K2模型
|
2月前
|
机器学习/深度学习 算法 安全
差分隐私机器学习:通过添加噪声让模型更安全,也更智能
本文探讨在敏感数据上应用差分隐私(DP)进行机器学习的挑战与实践。通过模拟DP-SGD算法,在模型训练中注入噪声以保护个人隐私。实验表明,该方法在保持71%准确率和0.79 AUC的同时,具备良好泛化能力,但也带来少数类预测精度下降的问题。研究强调差分隐私应作为模型设计的核心考量,而非事后补救,并提出在参数调优、扰动策略选择和隐私预算管理等方面的优化路径。
191 3
差分隐私机器学习:通过添加噪声让模型更安全,也更智能
|
1月前
|
人工智能 自然语言处理 运维
【新模型速递】PAI-Model Gallery云上一键部署gpt-oss系列模型
阿里云 PAI-Model Gallery 已同步接入 gpt-oss 系列模型,提供企业级部署方案。
|
2月前
|
机器学习/深度学习 分布式计算 Java
Java 大视界 -- Java 大数据机器学习模型在遥感图像土地利用分类中的优化与应用(199)
本文探讨了Java大数据与机器学习模型在遥感图像土地利用分类中的优化与应用。面对传统方法效率低、精度差的问题,结合Hadoop、Spark与深度学习框架,实现了高效、精准的分类。通过实际案例展示了Java在数据处理、模型融合与参数调优中的强大能力,推动遥感图像分类迈向新高度。
|
2月前
|
机器学习/深度学习 存储 Java
Java 大视界 -- Java 大数据机器学习模型在游戏用户行为分析与游戏平衡优化中的应用(190)
本文探讨了Java大数据与机器学习模型在游戏用户行为分析及游戏平衡优化中的应用。通过数据采集、预处理与聚类分析,开发者可深入洞察玩家行为特征,构建个性化运营策略。同时,利用回归模型优化游戏数值与付费机制,提升游戏公平性与用户体验。
|
2月前
|
机器学习/深度学习 算法 Java
Java 大视界 -- Java 大数据机器学习模型在舆情分析中的情感倾向判断与话题追踪(185)
本篇文章深入探讨了Java大数据与机器学习在舆情分析中的应用,重点介绍了情感倾向判断与话题追踪的技术实现。通过实际案例,展示了如何利用Java生态工具如Hadoop、Hive、Weka和Deeplearning4j进行舆情数据处理、情感分类与趋势预测,揭示了其在企业品牌管理与政府决策中的重要价值。文章还展望了多模态融合、实时性提升及个性化服务等未来发展方向。
|
3月前
|
缓存 人工智能 负载均衡
PAI 重磅发布模型权重服务,大幅降低模型推理冷启动与扩容时长
阿里云人工智能平台PAI 平台推出模型权重服务,通过分布式缓存架构、RDMA高速传输、智能分片等技术,显著提升大语言模型部署效率,解决模型加载耗时过长的业界难题。实测显示,Qwen3-32B冷启动时间从953秒降至82秒(降幅91.4%),扩容时间缩短98.2%。
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
【新模型速递】PAI-Model Gallery云上一键部署MiniMax-M1模型
MiniMax公司6月17日推出4560亿参数大模型M1,采用混合专家架构和闪电注意力机制,支持百万级上下文处理,高效的计算特性使其特别适合需要处理长输入和广泛思考的复杂任务。阿里云PAI-ModelGallery现已接入该模型,提供一键部署、API调用等企业级解决方案,简化AI开发流程。