36、医疗数据分类中处理不平衡问题的机器学习方法

医疗数据分类中处理不平衡问题的机器学习方法

1. Repeated Edited Nearest Neighbours (RENN) 算法

RENN 是 ENN 算法的扩展,是一种迭代的欠采样技术。它多次重复执行 ENN 算法以移除更多数据,直至无法再移除数据为止。具体操作是先对数据集应用 ENN 算法,移除不属于多数类的样本,然后多次重复该过程。这样做有助于改善数据集的平衡性,降低对多数类过拟合的风险。

2. 性能评估

2.1 所用数据集

实验使用了四个公开的医疗相关数据集,这些数据集在规模和类别比例上差异较大,具有不同程度的不平衡比率(IR)。具体如下:
| 数据集 | 多数类 | 少数类 | 不平衡比率 | 特征数量 |
| — | — | — | — | — |
| 贫血数据集 | 380 | 113 | 3.36 | 43 |
| 糖尿病数据集 | 500 | 268 | 1.87 | 9 |
| 肺癌数据集 | 238 | 38 | 6.26 | 16 |
| 肥胖数据集 | 525 | 146 | 3.60 | 43 |

  • 贫血数据集 :从 2011/12 年南非全国健康与营养检查调查(SANHANES)中提取,主要用于根据一组特征判断受访者是否患有贫血。
  • 糖尿病数据集 :包含至少 21 岁且有皮马印第安血统女性的糖尿病相关记录和关键参数,目标是诊断患者是否患有糖尿病。
  • 肺癌数据集 :是广泛使用的 Kaggle 数据,格式为 CSV,有 309 行 16 列,包含定量和定性变量。
  • 肥胖数据集 :同样来自 SANHANES 调查,用于根据特征判断受访者是否超重。

2.2 所用指标

为避免使用准确率指标评估不平衡数据集时出现的问题,采用了六个指标来评估数据集的不平衡性和机器学习模型在重采样技术上的性能:
- 不平衡比率(IR) :对于二元分类数据集,$IR = \frac{#Instances_{majority}}{#Instances_{minority}}$。IR 值为 1 表示数据集平衡,大于 1 表示数据不平衡。
- 准确率(Accuracy) :$Accuracy = \frac{Correct_predictions}{All_predictions}$,总结整个模型的表现。
- 平衡准确率(Balanced Accuracy) :$Balanced\ accuracy = \frac{TPR + TNR}{2}$,是灵敏度(召回率或真阳性率)和特异度(真阴性率)的平均值,能公平评估模型性能,范围从 0 到 1,1 为最佳。
- 受试者工作特征曲线下面积(AUC - ROC) :考虑了真阳性率和假阳性率,能清晰显示模型区分不同类别的能力。
- F1 分数(F1 Score) :$F1_score = 2 \times \frac{Precision \times recall}{Precision + recall}$,是精确率和召回率的调和平均值,适用于评估少数类为正类的不平衡数据分类问题。
- 马修斯相关系数(MCC) :$MCC = \frac{(TP \times TN) - (FP \times FN)}{\sqrt{(TP + FP) (TP + FN) (TN + FP) (TN + FN)}}$,适用于多数类可能占主导的不平衡数据集,取值范围从 -1 到 1,越远离 0 越好。

2.3 机器学习算法

使用了以下几种知名的机器学习算法来比较在健康数据集上使用重采样技术前后的分类器性能:
- 逻辑回归(Logistic Regression) :用于二元分类任务的监督学习算法,使用逻辑函数建模输入样本属于特定类别的概率,本身不处理类别不平衡问题。
- 伯努利朴素贝叶斯(Bernoulli Naïve Bayes) :专门为二元分类任务设计的朴素贝叶斯算法变体,假设特征在给定类别标签下条件独立,使用贝叶斯定理估计类别概率。
- 支持向量机(Support Vector Machine,SVM) :有效的二元和多类分类技术,在处理样本少、特征多的数据集时特别有效。

2.4 后续步骤

为全面了解不平衡数据问题,首先对数据集进行探索,然后对部分数据集进行必要的预处理,如对分类变量进行编码和对缺失值进行插补。接着,按照 80:20 的比例将数据划分为训练集和测试集,由于数据集不平衡,采用基于标签的分层抽样进行划分。具体划分后的数据分布如下:
| 数据集 | 划分 | 多数类 | 少数类 | 不平衡比率 |
| — | — | — | — | — |
| 贫血数据集 | 训练集 | 304 | 90 | 3.38 |
| | 测试集 | 76 | 23 | 3.30 |
| 糖尿病数据集 | 训练集 | 400 | 214 | 1.87 |
| | 测试集 | 100 | 54 | 1.85 |
| 肺癌数据集 | 训练集 | 190 | 30 | 6.33 |
| | 测试集 | 48 | 8 | 6.00 |
| 肥胖数据集 | 训练集 | 419 | 117 | 3.58 |
| | 测试集 | 106 | 29 | 3.66 |

整个数据处理流程可以用以下 mermaid 流程图表示:

graph LR
    A[探索数据集] --> B[数据预处理]
    B --> C[数据划分(80:20)]
    C --> D[分层抽样]

3. 结果与讨论

3.1 重采样技术的不平衡比率

对五个不平衡的健康数据集应用不同的重采样技术,结果显示,过采样和欠采样技术都能将不平衡比率调整为 1。具体如下表所示:
| 重采样技术 | 贫血 | 糖尿病 | 肺癌 | 肥胖 |
| — | — | — | — | — |
| 过采样 - SMOTE | 1.0 | 1.0 | 1.0 | 1.0 |
| 过采样 - 随机过采样 | 1.0 | 1.0 | 1.0 | 1.0 |
| 过采样 - ADASYN | 1.0 | 1.0 | 1.0 | 1.0 |
| 过采样 - Borderline - SMOTE | 1.0 | 1.0 | 1.0 | 1.0 |
| 过采样 - Borderline - SMOTE SVM | 1.0 | 1.0 | 1.0 | 1.0 |
| 欠采样 - NearMiss | 1.0 | 1.0 | 1.0 | 1.0 |
| 欠采样 - 随机欠采样 | 1.0 | 1.0 | 1.0 | 1.0 |
| 欠采样 - ENN | 1.0 | 1.0 | 1.0 | 1.0 |
| 欠采样 - RENN | 1.0 | 1.0 | 1.0 | 1.0 |
| 欠采样 - CNN | 1.0 | 1.0 | 1.0 | 1.0 |

3.2 重采样前机器学习算法的性能评估

在对训练数据集进行重采样之前,对机器学习算法在测试数据集上的性能进行了评估,结果如下:
| 数据集 | 分类器指标 | 逻辑回归 | SVM | 伯努利朴素贝叶斯 |
| — | — | — | — | — |
| 肺癌数据集 | 准确率 | 0.911 | 0.857 | 0.857 |
| | 平衡准确率 | 0.740 | 0.500 | 0.500 |
| | AUC - ROC | 0.948 | 0.956 | 0.406 |
| | F1 分数 | 0.949 | 0.923 | 0.923 |
| | MCC | 0.588 | 0.000 | 0.000 |
| 贫血数据集 | 准确率 | 0.808 | 0.768 | 0.768 |
| | 平衡准确率 | 0.678 | 0.500 | 0.500 |
| | AUC - ROC | 0.847 | 0.832 | 0.523 |
| | F1 分数 | 0.513 | 0.000 | 0.000 |
| | MCC | 0.408 | 0.000 | 0.000 |
| 糖尿病数据集 | 准确率 | 0.714 | 0.721 | 0.649 |
| | 平衡准确率 | 0.669 | 0.653 | 0.521 |
| | AUC - ROC | 0.824 | 0.784 | 0.536 |
| | F1 分数 | 0.560 | 0.517 | 0.156 |
| | MCC | 0.353 | 0.348 | 0.082 |
| 肥胖数据集 | 准确率 | 0.778 | 0.785 | 0.785 |
| | 平衡准确率 | 0.520 | 0.500 | 0.500 |
| | AUC - ROC | 0.690 | 0.580 | 0.500 |
| | F1 分数 | 0.118 | 0.000 | 0.000 |
| | MCC | 0.088 | 0.000 | 0.000 |

从这些结果可以看出,平衡准确率在大多数数据集上约为 0.5,表明性能不太理想。F1 分数和 MCC 出现较多零值,可能意味着分类器无法识别出单个真阳性或真阴性样本。逻辑回归模型在几乎所有数据集上的表现都优于其他模型。

3.3 过采样方法后分类器的性能评估

过采样方法通过向特征空间添加更多数据来平衡多数类和少数类,但可能导致数据重复和模型过拟合。这里讨论了随机过采样器和 ADASYN 过采样技术的结果。

3.3.1 随机过采样器

随机过采样器在多个指标上取得了较好的结果,提高了所有数据集的平衡准确率和 MCC。虽然对某些指标的改善不显著,但整体表现良好。逻辑回归在各个数据集的各项性能指标上平均表现最佳。具体结果如下:
| 数据集 | 分类器指标 | 逻辑回归 | SVM | 伯努利朴素贝叶斯 |
| — | — | — | — | — |
| 肺癌数据集 | 准确率 | 0.875 | 0.339 | 0.429 |
| | 平衡准确率 | 0.927 | 0.510 | 0.406 |
| | AUC - ROC | 0.964 | 0.685 | 0.406 |
| | F1 分数 | 0.921 | 0.413 | 0.568 |
| | MCC | 0.675 | 0.016 | -0.132 |
| 贫血数据集 | 准确率 | 0.747 | 0.616 | 0.455 |
| | 平衡准确率 | 0.760 | 0.568 | 0.523 |
| | AUC - ROC | 0.812 | 0.668 | 0.523 |
| | F1 分数 | 0.590 | 0.367 | 0.357 |
| | MCC | 0.451 | 0.119 | 0.041 |
| 糖尿病数据集 | 准确率 | 0.734 | 0.701 | 0.578 |
| | 平衡准确率 | 0.727 | 0.685 | 0.539 |
| | AUC - ROC | 0.823 | 0.783 | 0.547 |
| | F1 分数 | 0.650 | 0.596 | 0.404 |
| | MCC | 0.440 | 0.362 | 0.077 |
| 肥胖数据集 | 准确率 | 0.667 | 0.607 | 0.785 |
| | 平衡准确率 | 0.688 | 0.612 | 0.500 |
| | AUC - ROC | 0.724 | 0.688 | 0.500 |
| | F1 分数 | 0.483 | 0.404 | 0.000 |
| | MCC | 0.311 | 0.186 | 0.000 |

3.3.2 ADASYN

ADASYN 也是一种优秀的平衡数据类别的方法,但在许多指标上的结果不如随机过采样器。例如,在肺癌数据集上,ADASYN 的平衡准确率为 0.802,而随机过采样器为 0.927,未重采样时为 0.740。这表明 ADASYN 是一种不错的过采样技术,但可能不是最佳选择。具体结果如下:
| 数据集 | 分类器指标 | 逻辑回归 | SVM | 伯努利朴素贝叶斯 |
| — | — | — | — | — |
| 肺癌数据集 | 准确率 | 0.929 | 0.393 | 0.429 |
| | 平衡准确率 | 0.802 | 0.646 | 0.406 |
| | AUC - ROC | 0.953 | 0.701 | 0.406 |
| | F1 分数 | 0.959 | 0.452 | 0.568 |
| | MCC | 0.684 | 0.236 | -0.132 |
| 贫血数据集 | 准确率 | 0.758 | 0.626 | 0.545 |
| | 平衡准确率 | 0.751 | 0.575 | 0.477 |
| | AUC - ROC | 0.778 | 0.674 | 0.477 |
| | F1 分数 | 0.586 | 0.373 | 0.262 |
| | MCC | 0.444 | 0.131 | -0.041 |
| 糖尿病数据集 | 准确率 | 0.747 | 0.688 | 0.610 |
| | 平衡准确率 | 0.750 | 0.679 | 0.551 |
| | AUC - ROC | 0.826 | 0.780 | 0.594 |
| | F1 分数 | 0.678 | 0.593 | 0.388 |
| | MCC | 0.481 | 0.347 | 0.108 |
| 肥胖数据集 | 准确率 | 0.667 | 0.667 | 0.215 |
| | 平衡准确率 | 0.587 | 0.587 | 0.500 |
| | AUC - ROC | 0.656 | 0.635 | 0.500 |
| | F1 分数 | 0.366 | 0.366 | 0.354 |
| | MCC | 0.155 | 0.155 | 0.000 |

3.4 欠采样方法后分类器的性能评估

欠采样的核心思想是将多数类样本数量减少到与少数类样本数量相当的水平,从而实现数据的平衡。在众多欠采样方法中,RENN、ENN 和 CNN 的表现相近,且相对随机欠采样和 NearMiss 方法更优。因此,这里仅展示 RENN 欠采样方法的结果,具体如下表所示:
| 数据集 | 分类器指标 | 逻辑回归 | SVM | 伯努利朴素贝叶斯 |
| — | — | — | — | — |
| 肺癌数据集 | 准确率 | 0.946 | 0.857 | 0.857 |
| | 平衡准确率 | 0.969 | 0.500 | 0.500 |
| | AUC - ROC | 0.984 | 0.911 | 0.406 |
| | F1 分数 | 0.968 | 0.923 | 0.923 |
| | MCC | 0.826 | 0.000 | 0.000 |
| 贫血数据集 | 准确率 | 0.758 | 0.788 | 0.768 |
| | 平衡准确率 | 0.736 | 0.574 | 0.500 |
| | AUC - ROC | 0.827 | 0.634 | 0.523 |
| | F1 分数 | 0.571 | 0.276 | 0.000 |
| | MCC | 0.423 | 0.261 | 0.000 |
| 糖尿病数据集 | 准确率 | 0.727 | 0.669 | 0.532 |
| | 平衡准确率 | 0.760 | 0.702 | 0.551 |
| | AUC - ROC | 0.821 | 0.762 | 0.536 |
| | F1 分数 | 0.691 | 0.633 | 0.478 |
| | MCC | 0.498 | 0.388 | 0.097 |
| 肥胖数据集 | 准确率 | 0.704 | 0.785 | 0.785 |
| | 平衡准确率 | 0.623 | 0.500 | 0.500 |
| | AUC - ROC | 0.685 | 0.675 | 0.500 |
| | F1 分数 | 0.412 | 0.000 | 0.000 |
| | MCC | 0.224 | 0.000 | 0.000 |

从结果来看,RENN 方法在多个性能指标上表现出色,尤其是平衡准确率和 MCC。不过,对于肥胖数据集,其效果不如重采样前。逻辑回归与 RENN 结合是解决类别不平衡问题的有效途径,而伯努利朴素贝叶斯和 SVM 的整体表现相对较弱。以下 mermaid 流程图展示了欠采样处理流程:

graph LR
    A[原始不平衡数据] --> B[RENN 欠采样]
    B --> C[平衡后数据用于模型训练]

3.5 机器学习算法的性能比较

逻辑回归、支持向量分类器和伯努利朴素贝叶斯都是经典的机器学习算法,在训练和评估过程中通常表现良好。在本次研究中,逻辑回归在未对数据集进行重采样时就有不错的表现,经过过采样和欠采样处理后,其性能进一步提升。相比之下,伯努利朴素贝叶斯和支持向量分类器的结果未能超越逻辑回归。

3.6 过采样和欠采样重采样技术的比较

以逻辑回归为例,比较随机过采样器(过采样技术)和 RENN(欠采样技术)在不同数据集上的平衡准确率,结果如下:
- 肺癌数据集 :欠采样(RENN)的效果优于过采样(随机过采样器),且两者都比未重采样的原始数据集表现更好。
- 贫血数据集 :随机过采样器的准确率高于 RENN。
- 肥胖数据集 :随机过采样器的效果更佳。
- 糖尿病数据集 :RENN 的结果更优。

以下表格总结了不同数据集上两种重采样技术的平衡准确率对比:
| 数据集 | 随机过采样器平衡准确率 | RENN 平衡准确率 |
| — | — | — |
| 肺癌数据集 | 0.927 | 0.969 |
| 贫血数据集 | 0.760 | 0.736 |
| 肥胖数据集 | 0.688 | 0.623 |
| 糖尿病数据集 | 0.727 | 0.760 |

4. 结论

在医疗数据分类问题中,数据不平衡是一个常见的现象。这可能是由于数据收集不完善,以及负面案例通常多于正面案例导致的。例如,在 2023 年,感染 COVID - 19 的人数(阳性案例)可能远少于未感染的人数,从而造成数据的巨大不平衡。

为了解决这个问题,研究了多种重采样方法,包括过采样和欠采样。实验结果表明,这两种方法都能在一定程度上提高性能指标,但也存在各自的缺点。欠采样可能导致欠拟合、偏差增大和信息丢失,而过采样可能会引入外来数据到特征空间。不过,与原始数据集相比,重采样方法仍能显著改善不平衡医疗数据集的分类效果。

在使用重采样方法时,逻辑回归的整体表现优于伯努利朴素贝叶斯和支持向量分类器。因此,在处理不平衡医疗数据分类问题时,可以优先考虑将逻辑回归与重采样方法结合使用。

综上所述,重采样方法为解决医疗数据分类中的不平衡问题提供了有效的途径,但在实际应用中,需要根据具体情况权衡过采样和欠采样的优缺点,选择最合适的方法和算法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值