基于集成机器学习的二型糖尿病自助诊断系统的研究与实现

2020-03-10 22:45马吉聪
科学与财富 2020年32期
关键词:机器学习统计学

摘 要:糖尿病是内分泌失调综合症中的一种,已经越来越多地出现在我们身边,并且成为了危害现代人类正常生活的一大杀手。当血糖超过肾脏的负荷时,血液中的糖分便会经由尿液排出,故称为糖尿病。近年来,随着糖尿病病例的不断增加,对于现有的医疗资源和医疗体系提出了越来越高的要求。虽然我国的疾病防治团队力量一直在不断扩充和壮大,但是面对快速增长的患病人群,依然远远没有满足广大人民的问诊需求。机器学习作为集计算机学科和统计学科与一体的跨领域学科,近几年正在如火如荼地发展着。如果能够将机器学习的历史复盘,拟合能力应用于病理诊断领域,必将能够极大地提高患者的问诊效率,使得医护人员能够从大量繁杂的重复工作中解放出来,从而进一步解决“看病难,看病慢”的问题。本文基于该思路,利用决策树,SVM等机器学习手段,实现了能够集病患自助诊断,医师辅助诊断,医患信息管理,历史疾病复盘等功能于一体的糖尿病医疗问诊系统。

关键词:糖尿病诊断;机器学习;统计学

背景

糖尿病是一种代谢性疾病,它的特征是患者的血糖长期高于标准值。高血糖会造成俗称“三多一少”的症状:多食、多饮 、频尿及体重下降。对于第一型糖尿病,其症状会在一个星期至一个月期间出现,而对于第二型糖尿病则较后出现。不论是哪一种糖尿病,如果不进行治疗,可能会引发许多并发症。一般病征有视力模糊、头痛、肌肉无力、伤口愈合缓慢及皮肤很痒。急性并发症包括糖尿病酮酸血症与高渗透压高血糖非酮酸性昏迷;严重的长期并发症则包括心血管疾病、中风、慢性肾脏病、糖尿病足、以及视网膜病变等。2型糖尿病患者的初始治疗包括教育,强调饮食、运动、减重(适当时)等生活方式改变。大多数患者需要二甲双胍单药治疗,部分患者可能需要将胰岛素作为初始治疗。虽然一些研究发现经初始治疗后2型糖尿病的缓解可能会维持数年,但大多数患者为了维持正常或接近正常的血糖仍需要持续的治疗。有研究显示,肥胖患者通过减肥手术大幅减重后,大部分患者的2型糖尿病缓解。不论患者对治疗的初始反应如何,从大多数2型糖尿病患者的自然病程来看,血糖浓度都会随时间逐渐升高。因此,2型糖尿病的防控和治疗作为一个医疗难题,必然會耗费大量的医疗医护资源。本文提出了一种能够从源头上节省医疗成本的方法,即从患者的自身情况,利用机器学习对历史数据的拟合能力,从患者患病初期就能对患者身体展现的各项指标进行推断,最终获得初步预测的患病概率。辅以医护人员的专业建议,不仅大大减少了医疗救护成本,而且有利于糖尿病例数据的收集和维护,是计算机领域向医疗领域跨入的一次比较好的尝试。

数据

众所周知,机器学习项目需要大量高质量的数据作为基准,而且其数据分布需要符合目标领域的分布。基于分布的考虑,我们主要从以下几个方面考虑对数据的选取:

(1)特征指标获取的难易程度:特征指标应当是普通人在日常生活中常见且易于获取的,否则获取指标依然需要耗费很大的人力和物力资源;

(2)目标人种的聚合程度:本文的目标针对中国范围内的2型糖尿病患者及潜在患者,由于人种差异,采集的数据最好在亚洲/东南亚范围内进行采集;

基于上面的考虑,我们采用印度Pima地区的人种体征患病标注数据来进行本文中系统的建模,该数据集包含如下特征列:

(1)Pregnancies:受孕次数,如果为男性,则该指标为0;

(2)Glucose:人体血液葡萄糖含量;

(3)BloodPressure:血压值,计量单位为mm/Hg;

(4)SkinThickness:皮层厚度,计量单位为mm;

(5)Insulin:胰岛素含量,2小时范围内血清胰岛素含量,计量单位为Mu/ml;

(6)BMI:体重指数,计算规则为(体重/身高)2;

(7)DiabetesPedigreeFunction:糖尿病谱系功能值;

(8)Age:年龄(岁)

(9)Outcome:label,0/1.

该数据集由上面的列以及768条样本交错组成。

数据可视化

首先对数据进行可视化,我们引用python中的pandas包,采用以下几个步骤对数据进行预处理:

(1)数据空值及数据类型探查

该数据集格式较为整齐,且不存在缺失值,因此不需要对缺失值进行特别处理;

(2)数据各个维度交叉可视化

由于数据样本条数不多,加上所有的样本特征均为数值型,在各个维度上进行数据的数值可视化如下:

其中,整体图例横/纵坐标轴分别由上面提到的所有特征列组成,该图例展示了各个特征列之间的两两相互情况。

(3)数据单维度与标签交叉统计可视化

数据单维度与标签交叉统计可视化是探索特征与标签关系的一个非常重要的部分,这一步骤可以帮助我们初步探查特征与标签之间的关系。我们以Pregenancies与标签的统计关系为例,得到下面的直方图:

上图中的横轴数值为怀孕次数,纵轴为患病的0/1数量的比例,其中蓝色部分柱形代表未患病的数量,橙色部分柱形代表患病的数量。可以看出,随着x轴的推移,蓝色部分的柱形长度趋向于0,因此可以初步得出类似于“患病概率与怀孕次数正相关”类似结论,但是该结论实际上并不具有说服力,因为单一的特征并不能完全概括所得到结果的置信度。

数据预处理

数据预处理过程由离群点检测和数据增强两部分组成:其中离群点检测用于进行离群点数据的剔除;数据增强则通过对数据增加噪声来增强模型对于更复杂情况数据的泛化能力和鲁棒性。下面分开详述:

(1)离群点的检测和剔除。离群点检测可以使用的方法比较多,我们从数据规模和计算难度两方面对离群点检测的方法进行挑选。该数据集仅有768条记录,就算进行噪声加入后,数量级也不会超过104,再加上该模型建立之后需要服务于客户端,对于性能上要求可能比较高。因此,我们需要选择一种能够快速定位和区分离群点的方法来辅助进行医疗决策。基于上面的考虑,我们决定采用Robust Covariance和isolate Forest两种方法从单维度上对数据进行离群点剔除。其中,Robust Covariance方法是一种数据集协方差的鲁棒估计 (robust estimator)。 这个想法是找出一个给定比例的”好”观察值,它们不是离群值, 且可以计算其经验协方差矩阵。 然后将该经验协方差矩阵重新缩放以补偿所执行的观察选择;Isolate Forest方法需要对采样到的特征随机生成分割点即可,不需要像各种决策树算法一样,按照各种标准(基尼系数,信息增益或者信息增益率)选特征,选分割。我们以preganancies维度为例,利用;Isolate Forest算法进行离群点检测的结果如下:

可以看到,选用Robust Covariance时,得到的边界较为均匀圆润,而选用isolate Forest时,得到的表姐比较粗糙。因为我们希望引入更少的离群点以获得更多符合规则的数据样本,因此选用isolate Forest是可行的。

(2)数据加噪

数据加噪的本质是通过数据的污染,对模型的训练造成难度,模型在训练过程中自主克服这些难度,从而达到更好的鲁棒性和泛化能力的效果。同时,模型加噪可以进一步扩充数据集容量,对于模型的充实和饱满也具有比较积极的意义。基于上面的考虑,我们对该数据集进行加噪类型如下:

(1)泊松噪声。泊松噪声是数据样本中存在的比较主要的特征,尽管其有0均值的特质但是由于其独立于信号之外,因此很难除掉;

(2)乘性伯努利噪声;

(3)Text加性噪声;

(4)随机脉冲噪声

(5)交叉噪声:例如对数据同时进行泊松噪声和乘性伯努利特征的加噪。

特征工程

在该步骤中,我们将对数据的各种特征进行融合,裁剪和归一化。然后通过与最终模型的融合步骤展示这些特征工程的给最终效果带来的好处。

(1)特征归一化

目前数据标准化方法有多种,归结起来可以分为直线型方法(如极值法、标准差法)、折线型方法(如三折线法)、曲线型方法(如半正态性分布)。不同的标准化方法,对系统的评价结果会产生不同的影响,然而不幸的是,在数据标准化方法的选择上,还没有通用的法则可以遵循。根据本文所选取的数据,我们需要将各个指标的量纲进行统一化即可,即采用简单的min-max scaler,将各列数据进行去中心化(具体做法为X-min(x)/std(x))即可;

(2)特征融合和裁剪

特征融合有多种方式,包括全排列组合(将所有特征两两/三三…进行组合)等手段。在这里,我们选取了特征的两两组合即可。一方面这样即节省了计算的时间和空间,满足能够快速推断,快速迭代的需求;另一方面,这样能够引入较少的参数和误差,在模型训练时能够快速收敛并取得成效。

评价指标

基于选用的数据,我们选择交叉熵(cross-entropy)作为损失函数。交叉熵的概念与信息量息息相关。信息量来衡量一个事件的不确定性,一个事件发生的概率越大,不确定性越小,则其携带的信息量就越小。而熵用来衡量一个系统的混乱程度,代表系统中信息量的总和;熵值越大,表明这个系统的不确定性就越大。在本文描述的系统中,因为存在着正负样本代价不对等的问题(将一名患者诊断为无病造成的损失较将一名无病者诊断为患者造成的损失大),因此使用交叉熵来解决这个问题。交叉熵中的Log能够将正确判断的收益折损,并且将误判的损失放大,较为符合本文中系统所取的场景。

模型建立

基于前面的数据处理步骤,我们选取几种比较常见的机器学习方法,如下:

1.LR(Logistic Regression,逻辑回归),Logistic Regression 虽然被称为回归,但其实际上是分类模型,并常用于二分类。Logistic Regression 因其简单、可并行化、可解释强深受工业界喜爱。其本质为假设数据服从这个分布,然后使用极大似然估计做参数的估计;

2.KNN(K Nearrest Neightbour,最邻近算法),KNN是通过测量不同特征值之间的距离进行分类。它的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别,其中K通常是不大于20的整数。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别;

3.DT(Decition Tree,决策树模型),决策树算法采用树形结构,使用层层推理来实现最终的分类。预测时,在树的内部节点处用某一属性值进行判断,根据判断结果决定进入哪个分支节点,直到到达叶节点处,得到分类结果。这是一种基于 if-then-else 规则的有监督学习算法,决策树的这些规则通过训练得到,而不是人工制定的。

4.AdaBoost;Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。Adaboost算法本身是通過改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过权值的新数据集送给下层分类器进行训练,最后将每次得到的分类器最后融合起来,作为最后的决策分类器。

训练阶段的acc展示如下:

通过上面的建模,得到各个特征的重要程度如下:

可以看出,血糖浓度为判断糖尿病的最直接指标,这与我们的认知是相符的,从这点上至少说明,模型已经在一定程度上表现出人类的知识特性。

工程建造

本文所述系统基于python语言搭建,在工程端基于Django框架搭建,数据库采用mysql 8.0,前端采用html+css+jquery实现,目前已经实现了用户管理,自主诊断,医师诊断,病例管理等多项功能。

参考文献:

[1] Falvo D, Holland BE. Medical and psychosocial aspects of chronic illness and disability. Jones & Bartlett Learning; 2017.

[2] Skyler JS, Bakris GL, Bonifacio E, Darsow T, Eckel RH, Groop L, et al. Differentiation of diabetes by pathophysiology, natural history, and prognosis. Diabetes 2017;66:241-55.

[3] Tao Z, Shi A, Zhao J. Epidemiological perspectives of diabetes. Cell Biochem Biophys 2015;73:181-5.

作者简介:

马吉聪 (1987-8-2)性别:男 民族:汉 籍贯省市:山东省烟台市 学历硕士 主要从事方向研究:人工智能。

(云南师范大学  云南 昆明  650000)

猜你喜欢
机器学习统计学
关于投稿的统计学要求
统计学符号使用的说明
统计学符号使用的说明
统计学符号使用的说明
本刊对来稿中统计学处理的有关要求
本刊对来稿中统计学处理的有关要求
基于词典与机器学习的中文微博情感分析
基于网络搜索数据的平遥旅游客流量预测分析
前缀字母为特征在维吾尔语文本情感分类中的研究
机器学习理论在高中自主学习中的应用