基于CURE-SMOTE算法的随机森林在医学不平衡数据中的应用
2019-08-31范潇文杨琳琳洪佳明魏航陈沁群
范潇文 杨琳琳 洪佳明 魏航 陈沁群
中图分类号:TP18文献标识码:A文章编号:1003-9082(2019)08-000-01
引言
近年来,在全球信息化浪潮的推动下,机器学习和数据挖掘等计算机界的热门研究领域越来越多地应用于医疗,但在实际的医疗诊断中,存在大量的不平衡数据,即分类数据中某一类(多数类)的数量远大于另一类(少数类)的数量[1]。不平衡数据分类问题已成为数据挖掘领域内一个重要的研究课题。
对不平衡数据的分类问题的探讨具有很大的学术研究价值和广泛的现实应用意义,针对该类特点的数据集的数据挖掘方法尤其是随机森林分类算法的深入研究,有助于理清不平衡分类问题的重点和难点,抓住随机森林算法影响分类效果的关键和实质。本文提出改进的基于CURE-SMOTE算法的随机森林对不平衡数据进行分类,并在此基础上进行不平衡数据分类研究,实现更为精准有效的不平衡数据分类,以期促进医学事业的发展。
本文选取UCI中的Pima、Haberman、Post-operative、New-thyroid四个医学数据集,并对数据进行数据预处理。同时提出改进的基于CURE-SMOTE算法的随机森林模型,结合训练数据集的不平衡程度,即数据预处理的平衡化采样所给算法带来的影响,以实现对医学不平衡数据更为精准有效的分类。
一、基于CURE-SMOTE算法的随机森林
1.CURE算法原理
CURE[2]层次聚类算法是针对大数据集的高效算法,适合任意形状的数据集,对孤立点不敏感,优于BIRCH、CLARANS和DBSCAN算法等,具有识别异常点的性质[3]。CURE算法的基本思想是通过划分数据集,视所有样本点各为一个簇,然后局部聚类后再合并,直到结束,适合分布式扩展[4]。具体步骤如下:
Step1 初始化参数:形成的簇数,代表点(代表该簇的大致分布)的数目,收缩因子。
Step2 聚类:对每个划分进行局部聚类,获得代表点后,利用收缩因子收缩或向族中心移动;
Step3 合并:对局部簇在进行聚类,直到整个数据集聚类完毕。
CURE算法提出者建议,算法中的收缩因子取值在[0.2 ,0.7],代表点的数量在大于10时,能取得较好的聚类效果。
2.CURE-SMOTE算法设计与分析
CURE-SMOTE算法设计思想为:将小类样本点经过CURE聚类,保留聚类后的点、若干个代表点和中心点,然后应用修正的SMOTE公式产生新样本。
Step1 数据集归一一化处理,提取小类样本X,计算小类样本之间的距离dist,初次每个点为一个簇类。对于一个簇类U,Ur和Uc代表类U的代表点集合和中心点。设p,q为数据项,则两个簇类U和V之间的距离为:
Step2 设置聚类个数c,进行聚类,合并距高最小的两个簇类,更新中心点和代表点。
其中|U|表示该簇类所含数据項的个数,α为收缩因子(一般取0.5)。对于增长速度非常慢的簇类,判定为异常点,删除。若代表点的数量超过要求,则选取距离聚类中心最远的数据点作为第一个代表点,而后的代表点为距离前一个代表点最远的数据点。达到聚类中心个数,则算法停止,判断每个簇类的样本个数,样本个数过少的簇需要删除。
Step3 根据修正的SMOTE插值公式,产生新的样本,表示经过CURE算法聚类后的样本点,向代表点随机移动。
Step4 计算数据集的不平衡度IR,当数据集没有达到IR。时,返回Step3.
Step5 利用随机森林算法对处理后的新数据集和大类样本进行分类操作。
其中为人工生成的新样本,直到IR大于或等于阈值IR时,需要生成的样本量为n。距离衡量采用欧几里德距离,样本1 X1=(X11,X12,...X1M)和样本2 X2=(X21,X22,...,X2M)之间的距离为
在上述CURE-SMOTE算法聚类过程中,通过设定算法结束准则:达到聚类个数、达到代表点的数量、达到距离阈值等其中种, 避免设定原始SMOTE算法的k值,减小算法的不稳定性,对算法可控。利用CURE-SMOTE算法k可进行不平衡数据处理。
二、基于CURE-SMOTE算法的随机森林模型研究
探究随机森林在解决类别不平衡的医学数据问题的性能,选取UCI中的Pima、Haberman、Post-operative、New-thyroid四个医学数据集,并对数据进行数据预处理,然后使用随机森林训练、测试,使用综合评价指标F1进行评估。
1.构建实验数据集
(1) Pima
数据集的目标是基于数据集中包含的某些诊断测量来诊断性的预测患者是否患有糖尿病。数据集由多个医学预测变量和一个目标变量组成Outcome。
(2)Haberman
数据集包含了关于乳腺癌手术患者生存的研究案例,该数据集包含了一项研究的病例,该研究是在1958年至1970年期间在芝加哥大学比林斯医院(University of Chicago s Billings Hospital)进行的,研究对象是接受过乳腺癌手术的患者的存活率。
(3)Post-operative
该数据集的分类任务是确定患者在术后恢复区应该被送往下一步。因为手术后降低体温是一个重要的问题,所以这些属性与体温测量值基本一致。
(4)New-thyroid
这个数据集是UCI存储库中关于甲状腺的几个数据库之一。患者类别有正常、甲状腺功能亢进、甲状腺功能减退。
2.数据预处理
2.1数据清理与输出数据编码
主要进行的数据清理包括数据集成、类型转换和混乱格式处理。数据集成的主要工作是从数据集中把本课题研究所利用的数据特征和对应的诊断结果择取出来;类型转换的主要工作是对输出数据(诊断结果)进行重新的编码,正常类别的标识为“0”;异常类别的标识为“1”;混乱格式处理的主要工作是把数据变成标准的矩阵样式,每一行代表一个记录实例,每一列是一个特征值。
因目标属性书多分类属性,需要将其转化为二值日序列。本文采用one-hot编码(独热编码)将其转化为多分类模式。
2.2输入数据归一化
关于数据转换,对数据集中的输入数据进行归一化处理。 因为各维的数据存在数量级差异,输入输出变量的数量级如果差别比较大,可能会导致网络预测的效果不佳,为了避免上述情况,需进行归一化处理。数据进行归一化处理后,数据可以转化为(0-1)之间的数值数据归一化的方式往往有下面:
(a)最大最小法。函数的形式如下:
式中,为数据各列中的最小值; 为数据各列中的最大值。
三、实验结果与分析
本文利用UCI机器学习数据库中的四个标准数据集,对基于CURE-SMOTE算法的随机森林模型的构建。
根据精确率 P(Precision=TP/(TP+FP))、召回率R(Recall=TP/(TP+FN)和综合评价指标F1(F-score=2*P*R/P+R)进一步分析不同数据集在模型中的性能。其中四个数据集的Precision分别为,97.51%、97.54%、79.37%和95.24%,Recall分别为96.01%、95.32%、86.21%和95.24%。基于CURE-SMOTE算法的随机森林模型的 F1 得分分别为96.75%、96.43%、82.65%和 95.24%。基于CURE-SMOTE算法的随机森林模型有着较好的结果。这也说明了,基于CURE-SMOTE算法的随机森林模型在解决医学数据不平衡问题中起到了较好的效果。
四、结论
在面对在实际的医疗诊断中存在大量的不平衡数据,本文针对该类特点的数据集进行数据挖掘,本文提出的改进基于CURE-SMOTE算法的随机森林对不平衡数据进行分类,并在此基础上进行不平衡数据分类研究,抓住了随机森林算法影响分类效果的核心和实质。选取UCI中的Pima、Haberman、Post-operative、New-thyroid四个医学数据集在基于CURE-SMOTE算法的随机森林模型中取得了较好的效果,结合训练数据集的不平衡程度,即数据预处理的平衡化采样所给算法带来的影响,以实现对医学不平衡数据更为精准有效的分类,以期能够更好地辅助临床决策。
参考文献
[1]Longadge MR, Donger MSS, Malik L. Class Imbalance Problem in Data Mining: Review. International Journal of Computer Science and Network, 2013, (2): 83-87.
[2]Guha S, Rastogi R, Shim K. CURE: an efficient clustering algorithm for large databases[C]//ACM SIGMOD Record.ACM,1998, 27(2):73-84
[3]周亞建,徐晨,李维国,基于改进CURE聚类算法的无监督异常检测方法[J].通信学报,2010,31(7):18-23.
[4]邱荣财,基于Spark平台的CURE算法并行化设计与应用[D].华南理工大学硕士论文,2014.