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

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

一、引言



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


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


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


二、逻辑回归简介



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


四、总结



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


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

目录
相关文章
|
12天前
|
机器学习/深度学习 数据采集 监控
如何使用机器学习模型来自动化评估数据质量?
如何使用机器学习模型来自动化评估数据质量?
|
8天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
28 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
12天前
|
机器学习/深度学习 算法 PyTorch
用Python实现简单机器学习模型:以鸢尾花数据集为例
用Python实现简单机器学习模型:以鸢尾花数据集为例
36 1
|
22天前
|
机器学习/深度学习 数据采集 Python
从零到一:手把手教你完成机器学习项目,从数据预处理到模型部署全攻略
【10月更文挑战第25天】本文通过一个预测房价的案例,详细介绍了从数据预处理到模型部署的完整机器学习项目流程。涵盖数据清洗、特征选择与工程、模型训练与调优、以及使用Flask进行模型部署的步骤,帮助读者掌握机器学习的最佳实践。
61 1
|
25天前
|
机器学习/深度学习 数据采集 监控
如何使用机器学习模型来自动化评估数据质量?
如何使用机器学习模型来自动化评估数据质量?
|
6天前
|
机器学习/深度学习 自然语言处理 语音技术
探索机器学习中的深度学习模型:原理与应用
探索机器学习中的深度学习模型:原理与应用
16 0
|
11天前
|
机器学习/深度学习
深入理解机器学习中的过拟合与正则化
深入理解机器学习中的过拟合与正则化
|
1月前
|
人工智能 算法 测试技术
PAI 大语言模型评测平台现已支持裁判员模型评测
本文将为您介绍如何在 PAI 大语言模型评测平台,基于裁判员模型,评价开源模型或者微调后模型的性能。该功能限时免费,欢迎使用。
|
1月前
|
机器学习/深度学习 数据挖掘 Serverless
手把手教你全面评估机器学习模型性能:从选择正确评价指标到使用Python与Scikit-learn进行实战演练的详细指南
【10月更文挑战第10天】评估机器学习模型性能是开发流程的关键,涉及准确性、可解释性、运行速度等多方面考量。不同任务(如分类、回归)采用不同评价指标,如准确率、F1分数、MSE等。示例代码展示了使用Scikit-learn库评估逻辑回归模型的过程,包括数据准备、模型训练、性能评估及交叉验证。
66 1
|
18天前
|
机器学习/深度学习 算法
探索机器学习模型的可解释性
【10月更文挑战第29天】在机器学习领域,一个关键议题是模型的可解释性。本文将通过简单易懂的语言和实例,探讨如何理解和评估机器学习模型的决策过程。我们将从基础概念入手,逐步深入到更复杂的技术手段,旨在为非专业人士提供一扇洞悉机器学习黑箱的窗口。

热门文章

最新文章

下一篇
无影云桌面