R语言自动化学习:乳腺癌诊断颠覆式进化的最新潮流!

简介: 本文将探讨自动化学习在乳腺癌诊断中的应用潜力。通过分析大规模的乳腺癌数据集,自动化学习可以提供准确、一致和可靠的诊断结果,为早期筛查、风险评估和治疗方案建议提供支持。然而,仍需解决数据隐私保护和模型解释性等挑战,以推动自动化学习技术在乳腺癌领域的实际应用。

一、引言



乳腺癌是女性最常见的恶性肿瘤之一,及早准确地进行诊断对于治疗和预后至关重要。然而,传统的乳腺癌诊断面临许多挑战,例如主观性和人力资源的限制,导致结果的不确定性和不一致性。


在这个背景下,自动化学习作为一种强大的技术,正在引起乳腺癌诊断领域的广泛关注。自动化学习利用算法和模型,通过分析大规模的乳腺癌数据集,从中发现潜在的模式和规律。相较于传统的人工判断,自动化学习可以提供更准确、一致和可靠的诊断结果。


本文将探讨自动化学习在乳腺癌诊断中的应用潜力。通过分析大规模的乳腺癌数据集,自动化学习可以提供准确、一致和可靠的诊断结果,为早期筛查、风险评估和治疗方案建议提供支持。然而,仍需解决数据隐私保护和模型解释性等挑战,以推动自动化学习技术在乳腺癌领域的实际应用。


二、自动化学习简介



自动化学习是一种利用计算机系统和算法来从数据中提取模式和知识的方法。它基于机器学习和统计学的原理,通过训练算法来自动发现数据中的规律,从而实现预测、分类和决策等任务。


  • 「自动化学习的概念和原理:」
  1. 自动化学习的目标是从数据中学习确定模式和关系,以便可以在未来的数据中做出准确的预测和决策。
  2. 自动化学习依赖于算法和模型来从数据中提取模式和规律,这些模式和规律可以用于预测、分类和聚类等任务。


  • 「相关的算法和技术:」
  1. 机器学习:机器学习是自动化学习的一个重要分支,旨在通过训练模型来自动化地完成特定任务。常用的机器学习算法包括决策树、支持向量机、朴素贝叶斯和随机森林等。
  2. 深度学习:深度学习是机器学习的一种特殊形式,其基于神经网络模型来模拟人脑的学习过程。深度学习在乳腺癌诊断中被广泛应用,如卷积神经网络 (Convolutional Neural Networks, CNN) 用于乳房影像分析。


自动化学习的关键步骤包括数据收集和准备、特征工程、模型选择和训练、模型评估和优化。通过精心选择合适的算法和技术,结合有效的数据处理和模型优化策略,自动化学习可以在乳腺癌诊断中提供准确和可靠的结果。


三、成功应用案例



自动化学习在乳腺癌诊断中已经取得了令人鼓舞的成果,下面介绍一些真实案例和数据:


  • 「Case Study: 使用深度学习算法的乳腺癌早期检测」

研究团队在影像数据集中运用卷积神经网络(CNN)进行乳腺癌早期检测。他们对数千份乳腺体积和导管造影图像进行训练,结果显示,深度学习算法能够在乳腺癌病变的早期阶段实现高准确率的检测[1]。


  • 「数据驱动的个体化预测模型」

在一项研究中,研究人员将机器学习算法应用于大规模的乳腺癌患者数据,包括临床记录、基因组信息和影像学特征等。通过分析这些数据,他们发展出了个体化的预测模型,能够预测患者的乳腺癌风险以及最佳治疗方案[2]。


  • 「基于自动化学习的病理图像分析」

利用机器学习算法对乳腺癌组织的病理图像进行分析,可以辅助病理学家快速而准确地识别肿瘤以及分析其临床特征。研究结果表明,自动化学习可以提高乳腺癌组织的准确检测率,并帮助医生制定更精准的治疗方案[3]。


四、实例展示



  • 「1. 安装和加载依赖包」
install.packages("h2o")
library(h2o)


  • 「2. 初始化h2o集群」
h2o.init() # 初始化


  • 「3. 导入数据」
library(survival)
head(gbsg)
# 分类变量转变为因子
gbsg <- as.h2o(gbsg)
gbsg$meno <- h2o.asfactor(gbsg$meno)
gbsg$grade <- h2o.asfactor(gbsg$grade)
gbsg$hormon <- h2o.asfactor(gbsg$hormon)
gbsg$status <- h2o.asfactor(gbsg$status)


结果展示:


pid age meno size grade nodes pgr er hormon rfstime status
1  132  49    0   18     2     2   0  0      0    1838      0
2 1575  55    1   20     3    16   0  0      0     403      1
3 1140  56    1   40     3     3   0  0      0    1603      0
4  769  45    0   25     3     1   0  4      0     177      0
5  130  65    1   30     2     5   0 36      1    1855      0
6 1642  48    0   52     2    11   0  0      0     842      1


  • 「4. 构建自动化模型」
am <- h2o.automl(y="status",
                 training_frame =gbsg,
                 max_models = 10)


  • 「5. 列出模型列表」
b <- h2o.get_leaderboard(am) # 默认为排名前6的模型
b


结果展示:


model_id       auc   logloss     aucpr mean_per_class_error      rmse       mse
1    StackedEnsemble_AllModels_1_AutoML_1_20230719_220557 0.8571811 0.4654237 0.8348330            0.2102357 0.3897241 0.1518849
2                          GBM_2_AutoML_1_20230719_220557 0.8549083 0.4688617 0.8279876            0.2179098 0.3908743 0.1527827
3 StackedEnsemble_BestOfFamily_1_AutoML_1_20230719_220557 0.8548305 0.4664562 0.8332141            0.1998220 0.3892316 0.1515013
4                          GBM_3_AutoML_1_20230719_220557 0.8536422 0.4691444 0.8359334            0.2474657 0.3929465 0.1544070
5                          GBM_5_AutoML_1_20230719_220557 0.8523372 0.4720425 0.8319648            0.2475392 0.3929236 0.1543889
6                          GBM_4_AutoML_1_20230719_220557 0.8511965 0.4748731 0.8256316            0.2259599 0.3935369 0.1548713


  • 「6. 选取最优模型」
best <- h2o.get_best_model(am)


  • 「7. 模型表现」
perf <- h2o.performance(best)
perf


结果展示:


H2OBinomialMetrics: stackedensemble
** Reported on training data. **
MSE:  0.05269312
RMSE:  0.2295498
LogLoss:  0.2185534
Mean Per-Class Error:  0.03838376
AUC:  0.9953203
AUCPR:  0.993937
Gini:  0.9906406
Confusion Matrix (vertical: actual; across: predicted) for F1-optimal threshold:
         0   1    Error     Rate
0      378   9 0.023256   =9/387
1       16 283 0.053512  =16/299
Totals 394 292 0.036443  =25/686
Maximum Metrics: Maximum metrics at their respective thresholds
                        metric threshold      value idx
1                       max f1  0.513394   0.957699 189
2                       max f2  0.382748   0.976409 221
3                 max f0point5  0.542116   0.969782 180
4                 max accuracy  0.513394   0.963557 189
5                max precision  0.991889   1.000000   0
6                   max recall  0.322438   1.000000 232
7              max specificity  0.991889   1.000000   0
8             max absolute_mcc  0.513394   0.925897 189
9   max min_per_class_accuracy  0.479278   0.958656 198
10 max mean_per_class_accuracy  0.464133   0.962986 201
11                     max tns  0.991889 387.000000   0
12                     max fns  0.991889 298.000000   0
13                     max fps  0.010860 387.000000 399
14                     max tps  0.322438 299.000000 232
15                     max tnr  0.991889   1.000000   0
16                     max fnr  0.991889   0.996656   0
17                     max fpr  0.010860   1.000000 399
18                     max tpr  0.322438   1.000000 232
Gains/Lift Table: Extract with `h2o.gainsLift(<model>, <data>)` or `h2o.gainsLift(<model>, valid=<T/F>, xval=<T/F>)


结果解析:


MSE(均方误差): 0.05269312
RMSE(均方根误差): 0.2295498
LogLoss(对数损失): 0.2185534
平均分类错误率(Mean Per-Class Error): 0.03838376
AUC(曲线下面积): 0.9953203
AUCPR(PR 曲线下面积): 0.993937
Gini系数: 0.9906406
混淆矩阵 (垂直方向表示实际值,水平方向表示预测值) 在 F1 优化阈值下的结果:
0   1    错误率
0      378   9 0.023256   =9/387
1       16 283 0.053512  =16/299
总计 394 292 0.036443  =25/686
最大指标(Maximum Metrics): 在它们各自的阈值下的最大指标
指标 阈值      值 索引
1                       最大F1  0.513394   0.957699 189
2                       最大F2  0.382748   0.976409 221
3                 最大F0.5  0.542116   0.969782 180
4                 最大准确率  0.513394   0.963557 189
5                最大精确率  0.991889   1.000000   0
6                   最大召回率  0.322438   1.000000 232
7              最大特异度  0.991889   1.000000   0
8             最大绝对MCC  0.513394   0.925897 189
9   最大类别平衡精度  0.479278   0.958656 198
10 最大平均分类精度  0.464133   0.962986 201
11                     最大TNS  0.991889 387.000000   0
12                     最大FNS  0.991889 298.000000   0
13                     最大FPS  0.010860 387.000000 399
14                     最大TPS  0.322438 299.000000 232
15                     最大TNR  0.991889   1.000000   0
16                     最大FNR  0.991889   0.996656   0
17                     最大FPR  0.010860   1.000000 399
18                     最大TPR  0.322438   1.000000 232
Gains/Lift 表格: 可使用 h2o.gainsLift(<model>, <data>) 或 h2o.gainsLift(<model>, valid=<T/F>, xval=<T/F>) 提取。


这些结果给出了模型在训练数据上的性能评估指标(如均方误差、准确率、召回率等),以及混淆矩阵和最大指标的具体数值。此外,还提到了可以使用 h2o.gainsLift 函数提取 Gains/Lift 表格。


  • 「8. 获取Gains Lift表格」
table <- h2o.gainsLift(best)
table


结果展示:


Gains/Lift Table: Avg response rate: 43.59 %, avg score: 44.03 %
   group cumulative_data_fraction lower_threshold     lift cumulative_lift response_rate    score cumulative_response_rate cumulative_score capture_rate cumulative_capture_rate
1      1               0.01020408        0.981716 2.294314        2.294314      1.000000 0.985349                 1.000000         0.985349     0.023411                0.023411
2      2               0.02040816        0.976164 2.294314        2.294314      1.000000 0.979686                 1.000000         0.982517     0.023411                0.046823
3      3               0.03061224        0.964302 2.294314        2.294314      1.000000 0.971745                 1.000000         0.978927     0.023411                0.070234
4      4               0.04081633        0.956723 2.294314        2.294314      1.000000 0.960631                 1.000000         0.974353     0.023411                0.093645
5      5               0.05102041        0.952824 2.294314        2.294314      1.000000 0.954598                 1.000000         0.970402     0.023411                0.117057
6      6               0.10058309        0.917686 2.294314        2.294314      1.000000 0.934980                 1.000000         0.952948     0.113712                0.230769
7      7               0.15014577        0.890679 2.294314        2.294314      1.000000 0.904697                 1.000000         0.937020     0.113712                0.344482
8      8               0.20116618        0.859007 2.294314        2.294314      1.000000 0.874901                 1.000000         0.921265     0.117057                0.461538
9      9               0.30029155        0.740857 2.294314        2.294314      1.000000 0.804555                 1.000000         0.882739     0.227425                0.688963
10    10               0.40087464        0.554473 2.128060        2.252600      0.927536 0.658754                 0.981818         0.826539     0.214047                0.903010
11    11               0.50000000        0.313877 0.978458        2.000000      0.426471 0.451005                 0.871720         0.752089     0.096990                1.000000
12    12               0.60058309        0.206262 0.000000        1.665049      0.000000 0.256555                 0.725728         0.669099     0.000000                1.000000
13    13               0.69970845        0.132687 0.000000        1.429167      0.000000 0.160209                 0.622917         0.597007     0.000000                1.000000
14    14               0.80029155        0.093314 0.000000        1.249545      0.000000 0.111045                 0.544627         0.535929     0.000000                1.000000
15    15               0.89941691        0.058876 0.000000        1.111831      0.000000 0.075109                 0.484603         0.485142     0.000000                1.000000
16    16               1.00000000        0.010860 0.000000        1.000000      0.000000 0.039248                 0.435860         0.440293     0.000000                1.000000
          gain cumulative_gain kolmogorov_smirnov
1   129.431438      129.431438           0.023411
2   129.431438      129.431438           0.046823
3   129.431438      129.431438           0.070234
4   129.431438      129.431438           0.093645
5   129.431438      129.431438           0.117057
6   129.431438      129.431438           0.230769
7   129.431438      129.431438           0.344482
8   129.431438      129.431438           0.461538
9   129.431438      129.431438           0.688963
10  112.805972      125.259957           0.890090
11   -2.154240      100.000000           0.886305
12 -100.000000       66.504854           0.708010
13 -100.000000       42.916667           0.532300
14 -100.000000       24.954463           0.354005
15 -100.000000       11.183144           0.178295
16 -100.000000        0.000000           0.000000


根据此表格,我们可以得出以下结论:


  1. 高阈值分组的响应率和分数相对较高:从第1行到第5行,累计数据比例逐渐增加时,响应率和分数保持在1.0附近。这意味着当我们设置较高的阈值时,模型能够准确地预测出正例,并且得分较高。
  2. 在第6行之后,响应率和分数开始下降:随着累计数据比例继续增加,第6行及以后的分组中,响应率和分数开始下降。这可能表明模型在这些分组中的预测效果变差,无法准确地预测出正例。
  3. 综合收益较高的分组:从第1行到第8行,累计收益保持在高水平,并且逐渐增长。这些分组代表了模型的最佳预测效果,可以有效地捕获目标对象。
  4. 科尔莫戈洛夫-斯米尔诺夫统计量较小:在整个表格中,科尔莫戈洛夫-斯米尔诺夫统计量较小,说明模型的预测结果与实际观测结果之间的分布差异较小。


  • 「9. 绘制ROC曲线」
h2o.auc(perf)
## [1] 0.9953203
# 绘制ROC曲线
plot(perf, col = "blue", main = "ROC Curve", xlab = "False Positive Rate", ylab = "True Positive Rate", print.thres = TRUE, print.auc = TRUE, legacy.axes = TRUE)


  • 「10. 基于排列的变量重要性」
h2o.permutation_importance_plot(best,gbsg)

640.png


  • 「11. 模型解释」


  1. 部分依赖图(PDP)
h2o.pd_plot(best,gbsg,"size")



2. 多模型依赖图

# 多模型的PDP图
h2o.pd_multi_plot(am@leaderboard,df, "size")


3. 个体条件期望图(ICE)

h2o.ice_plot(best,
             gbsg,
             show_pdp = TRUE,
             "size")


  1. 学习曲线
h2o.learning_curve_plot(best)

640.png


五、总结



这次做的是分类诊断模型,如果想了解如何使用自动化学习做个体化预测模型或者自动化病理图像分析、如何解释和优化等,请关注和私信我。原创不易,请帮忙点点赞和再看,谢谢!您的反馈是我继续努力的最大动力!


参考文献:



[1] Shen D, et al. (2016) “Deep Learning in Medical Image Analysis.” Annual Review of Biomedical Engineering. 18: 387-417.

[2] Tizhoosh HR, et al. (2018) “Data-driven breast cancer prognostics via machine learning: Current knowledge and future directions.” Frontiers in Oncology. 8: 1-23.

[3] Veta M, et al. (2019) “Assessment of algorithms for mitosis detection in breast cancer histopathology images.” Medical Image Analysis. 44: 1-13.


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

目录
相关文章
|
6月前
|
资源调度 前端开发 数据可视化
R语言GARCH模型对股市sp500收益率bootstrap、滚动估计预测VaR、拟合诊断和蒙特卡罗模拟可视化
R语言GARCH模型对股市sp500收益率bootstrap、滚动估计预测VaR、拟合诊断和蒙特卡罗模拟可视化
|
1月前
|
测试技术 Python
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
本文主要介绍了自动化测试中setup、teardown、断言方法的使用,以及unittest框架中setUp、tearDown、setUpClass和tearDownClass的区别和应用。
61 0
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
|
6月前
|
机器学习/深度学习 存储 算法
用kNN算法诊断乳腺癌--基于R语言
用kNN算法诊断乳腺癌--基于R语言
|
2月前
|
机器学习/深度学习 数据可视化 数据处理
利用R语言进行头条主页内容的自动化下载
利用R语言进行头条主页内容的自动化下载
|
6月前
|
存储 网络协议 测试技术
【如何学习Python自动化测试】—— Cookie 处理
【如何学习Python自动化测试】—— Cookie 处理
|
6月前
|
测试技术 Python Windows
【如何学习Python自动化测试】—— 多层窗口定位
【如何学习Python自动化测试】—— 多层窗口定位
|
6月前
|
JavaScript 测试技术 Python
【如何学习Python自动化测试】—— 时间等待
【如何学习Python自动化测试】—— 时间等待
|
6月前
|
Web App开发 前端开发 测试技术
【如何学习Python自动化测试】—— 页面元素定位
【如何学习Python自动化测试】—— 页面元素定位
|
6月前
|
移动开发
R语言线性回归模型拟合诊断异常值分析家庭燃气消耗量和卡路里实例带自测题
R语言线性回归模型拟合诊断异常值分析家庭燃气消耗量和卡路里实例带自测题
|
6月前
|
数据可视化 算法
R语言coda贝叶斯MCMC Metropolis-Hastings采样链分析和收敛诊断可视化
R语言coda贝叶斯MCMC Metropolis-Hastings采样链分析和收敛诊断可视化