2. 中国科学院 沈阳计算技术研究所, 沈阳 110168
2. Shenyang Institute of Computing Technology, Chinese Academy of Sciences, Shenyang 110168, China
近些年来, 随着我国经济的迅速发展和国民生活方式以及饮食结构的改变, 我国糖尿病患者人数正在以惊人的速度增长. 糖尿病呈现发病率高、知晓率、治疗率和达标率低的现象[1], 严重的威胁了患者的身体健康, 同时给家人和社会带来了沉重的经济负担[2]. 目前大部分医疗机构对糖尿病的诊断还是依靠医生的个人经验和体检数据为准, 这种诊断方式对医生的要求很高, 具有很强的主观性, 容易出现误诊和漏诊的情况, 错失了预防和治疗的最佳时机, 将严重影响到病人的身心健康. 如果将糖尿病和机器学习结合, 采用机器学习算法来辅助医生诊断, 将会很大程度上提高诊断和科学性, 有效的克服医生凭经验诊断的主观性的问题. 因此, 使用机器学习的方法对糖尿病患者进行预测, 具有很大的现实意义.
关于疾病预测, 国内外教育专家已经做过很多尝试, 研究出了很多算法, 如: logistic回归、BP神经网络模型、COX比例风险模型、决策树模型[3–5]. 这些方法在疾病预测方面有较好的效果, 但是也有各种各样的缺点, 比如要求数据量大、要求一定时间段的的连续数据、泛化能力太弱、过度拟合、陷入局部最小值、对随机性和波动性数据不敏感、对不平衡数据预测 效果不理想等问题等等. 现有的研究大多采用单个全局优化模型, 单分类器模型性能有限, 存在泛化能力弱和容错性较差等问题.
本文使用集成学习模型进行预测, 它是使用一系列的学习器进行学习, 并使用某种规则把各个学习器的学习结果进行整合, 从而获得比单个学习器更好的学习效果的一种机器学习方法[6]. 集成学习模型现在主要分为Bagging和Boosting. 基于Bagging的模型的方差较小, 但是偏差较大, 故对基分类器的准确性要求较高. Boosting可以降低模型偏差, 它通过迭代地训练一系列的分类器, 每个分类器采用的样本分布都和上一轮的学习结果有关, 对基分类器的准确性要求较低. CatBoost在2017年被Yandex首次提出, 是boosting的一种实现方式, 它采用对称树的方式, 并且用特殊的方式来处理categorical features, 从而有效的避免了过拟合的问题, 提高了泛化能力, 提高了模型的鲁棒性, 特别适合样本量小、数据不平衡的情况. 目前该算法在糖尿病预测方面还没有应用[7–9].
通过以上分析, 本文决定采用一种基于特征选择和集成学习算法的模型来进行糖尿病的预测. 通过 IV 值分析进行特征选择, 有效的去除冗余特征, 确定最后的最优特征子集来训练模型; 使用CatBoost有效的避免过拟合的问题, 提高模型的泛化能力和鲁棒性, 最终达到良好的预测效果.
1 算法描述CatBoost是Boosting策略的一种实现方式, 它和lightGBM与Xgboost类似, 都属于GBDT类的算法. CatBoost在GBDT的基础上主要做了两点改进: 处理标称属性和解决预测偏移的问题, 从而减少过拟合的发生.
1.1 GBDTGBDT算法是通过一组分类器的串行迭代, 最终得到一个强学习器, 以此来进行更高精度的分类[10]. 它 使用了前向分布算法, 弱学习器使用分类回归树(CART).
假设前一轮迭代得到的强学习器是
$ {h^t} = \mathop {\arg \min }\limits_{h \in H} EL\left( {\left( {y,{F^{t - 1}}\left( x \right) + h\left( x \right)} \right)} \right) $ | (1) |
GBDT使用损失函数的负梯度来拟合每一轮的损失的近似值, 式(2)中
${g^t}(x,y) = \frac{{\partial L(y,s)}}{{\partial s}}{|_{s = {F^{t - 1}}(x)}}$ | (2) |
通常用式(3)近似拟合
${h^t} = \mathop {\arg \min }\limits_{h \in H} E{( - {g^t}(x,y) - h(x))^2}$ | (3) |
最终得到本轮的强学习器, 如式(4)所示:
${F^t}(x) = {F^{t - 1}}(x) + {h^t}$ | (4) |
标称属性的一般处理方法是one hot encoding (独热编码), 但是会出现过拟合的问题, CatBoost在处理标称属性时使用了更有效的策略, 可以减少过拟合的发生. 为训练集生成一个随机序列, 假设原来的顺序是
$\frac{{\displaystyle\sum\nolimits_{j = 1}^p {[{x_{j,k}} = {x_{i,k}}] \cdot \mathop Y\nolimits_i + a \cdot P} }}{{\displaystyle\sum\nolimits_{j = 1}^n {[{x_{j,k}} = {x_{i,k}}]} + a}}$ | (5) |
这里添加了一个先验值P和参数a>0. 这是一种常见做法, 它有助于减少从低频类别中获得的噪音.
预测偏移经常是困扰建模的问题, 在GDBT的每一步迭代中, 损失函数使用相同的数据集求得当前模型的梯度, 然后训练得到基学习器, 但这会导致梯度估计偏差, 进而导致模型产生过拟合的问题. CatBoost通过采用排序提升 (ordered boosting) 的方式替换传统算法中梯度估计方法, 进而减轻梯度估计的偏差, 提高模型的泛化能力, Ordered boosting的算法流程如图1所示.
由图1可知, 为了得到无偏梯度估计, CatBoost对每一个样本
2 实验分析
对于整个糖尿病预测的研究包括以下几部分: 数据采集、数据预处理、特征选择、模型预测、结果分析. 如图2所示.
2.1 数据采集
本研究的数据来源于实 验室项目: 骕派智慧社区. 数据集是沈阳某医院的2018年的一次脱敏体检数据, 包含2377条数据, 数据维度高达63.
2.2 数据预处理由于原始数据规模太过庞大, 数据不完整、重复、杂乱等问题显著, 数据预处理对于后期的建模预测影响显著. 原始数据存储在不同的数据表中, 并且存在很多缺失项以及数据冗余, 需要对原始数据进行预处理. 本文在数据预处理方面做了以下工作: 丢弃缺失项过多的样本、丢弃缺失值过多的特征、采用均值进行缺失值填充、对标称属性、二元属性进行数据转换、数据集成以及去除冗余.
2.3 特征选择特征选择对后期的建模预测起着关键性的作用, 尤其是在样本量小、特征多的情况下, 剔除噪音、正确的选择特征会对模型整体的准确性和稳定性有着质的提升.
IV值分析是常见的处理特征值的方法, 它衡量了某个特征对目标的影响程度. 其基本思想是根据该特征所命中黑白样本的比率与总黑白样本的比率, 来对比和计算其关联程度, 计算公式如下:
$IV = \sum\limits_i^n {({P_{yi}} - {P_{ni}})*\ln \frac{{{P_{yi}}}}{{{P_{ni}}}}} $ | (6) |
其中, n代表样本在该特征上分成的组数,
本文采用IV值分析的方法进行特征选择, 最终选出23个对糖尿病有影响的特征变量作为模型的输入变量, 其中包括性别、年龄、体重指数、收缩压、舒张压、胆固醇、甘油三酯、尿素/肌酐等.
2.4 模型预测经过前面的分析, CatBoost算法适合用于对糖尿病的研究, 本文就选择CatBoost模型来建模. 经过数据预处理和特征选择, 把23个特征变量作为输入变量输入模型进行预测, 将70%作为训练样本, 30%作为测试样本.
分类阈值对模型的准确性影响重大, 本文利用样本的区间准确率来确定最后的阈值: 将样本按照预测值进行排序, 然后没5%分为一个区间, 找到最后一个区间准确率大于50%的区间, 将该区间的端点值作为最后的阈值.
基于准确率、召回率、F1值等评价指标, 通过与随机森林、XGBoost等模型进行对比分析, 能够得出CatBoost在处理该问题上具有更好的效果.
2.5 评价标准选取评价指标是整个实验环节的重要一环, 直接影响到后期的结果分析. 分类器性能的优劣通常使用准确率(accuracy)、精确率(precision)和召回率(recall)来评价. 准确率(accuracy)指的是被分类正确的样本数占总样本数的比值, 精确率(precision)表示的是预测为正的样本中, 实际为正的所占的比例, 召回率(recall)表示的是实际为正的样本中, 被预测为正的所占的比例. 分类结果混淆矩阵如表1所示.
本文选取精确率(precision)、召回率(recall)和F1值作为评价指标.
$accuracy = \frac{{TP + TN}}{{TP + TN + FP + FN}}$ | (7) |
$precision = \frac{{TP}}{{TP + FP}}$ | (8) |
$recall = \frac{{TP}}{{TP + FN}}$ | (9) |
$F1 = \frac{{2{\rm{*}}precision*recall}}{{precision + recall}}$ | (10) |
其中, P为阳性样本总数, TP为预测正确的阳性样本数, TN是预测错误的阳性样本数, F1值是精准率和召回率的加权调和平均值, 为1时最优, 为0时最差. 对于复杂的模型和大量的数据, 计算速度也是衡量模型优劣的一个指标, 本实验在服务器上运行, 使用Python包的time. time()函数记录模型运行的时间.
2.6 试验结果与分析经过以上步骤的数据处理、特征选择和模型预测, 得出了使用CatBoost模型的预测结果, 并且和使用随机森林、lightGBM模型得出的结果进行了对比, 结果如表2所示.
从表2可以看出, 在模型精确率方面, 随机森林略高于XGBoost模型和CatBoost模型, 在召回率和F1值方面, CatBoost都高于XGBoost和随机森林, 在运行时间方面, CatBoost和XGBoost明显高于随机森林.
3 总结本文以糖尿病发病人数多、发现率少以及医疗数据维数高、缺失量大为背景, 依托于实验室骕派智慧社区项目, 实现了对糖尿病的预测模型.
本文使用一种新型的Boosting算法CatBoost进行糖尿病预测, 并且取得了良好的预测结果. 在文中, 首先对原始数据进行预处理, 然后采用IV值分析的方法进行特征选择, 并采用适用于该问题的集成学习模型CatBoost进行预测, 最终得出较好的预测结果. 通过实验分析, CatBoost在各项评价指标上比其他模型都具有明显的优势, 说明 CatBoost在糖尿病预测方面具有很好的应用价值. 通过本文的研究, 可以对糖尿病预测提供有效的指导, 对保护人们的健康具有非常积极的意义.
[1] |
白碧玉, 于琦, 苏闫兵, 等. 中国糖尿病研究论文合作分析. 中国药物与临床, 2017, 17(11): 1619-1621. |
[2] |
王海鹏. 我国诊断糖尿病疾病经济负担趋势预测研究[博士学位论文]. 济南: 山东大学, 2013.
|
[3] |
苏萍, 杨亚超, 杨洋, 等. 健康管理人群2型糖尿病发病风险预测模型. 山东大学学报(医学版), 2017, 55(6): 82-86. DOI:10.6040/j.issn.1671-7554.0.2017.347 |
[4] |
罗森林, 成华, 张铁梅, 等. 多维2型糖尿病实测数据的预处理技术. 计算机工程, 2004, 30(17): 178-181. DOI:10.3969/j.issn.1000-3428.2004.17.071 |
[5] |
吴海云, 潘平, 何耀, 等. 我国成年人糖尿病发病风险评估方法. 中华健康管理学杂志, 2007, 1(2): 95-98. DOI:10.3760/cma.j.issn.1674-0815.2007.02.012 |
[6] |
张洪侠, 郭贺, 王金霞, 等. 基于XGBoost算法的2型糖尿病精准预测模型研究. 中国实验诊断学, 2018, 22(3): 408-412. DOI:10.3969/j.issn.1007-4287.2018.03.008 |
[7] |
Bottou L. Large-Scale machine learning with stochastic gradient descent. Proceedings of the 19th International Conference on Computational Statistics Paris France. Keynote. 2010. 177–186.
|
[8] |
Tan PN. Receiver operating characteristic. Liu L, Özsu MT. Encyclopedia of Database Systems. New York, NY, USA: Springer, 2013. 2349–2352.
|
[9] |
Sau A, Bhakta I. Screening of anxiety and depression among the seafarers using machine learning technology. Informatics in Medicine Unlocked, 2018. DOI:10.1016/j.imu.2018.12.004 |
[10] |
Yang T, Chen WT, Cao GT. Automated classification of neonatal amplitude-integrated EEG based on gradient boosting method. Biomedical Signal Processing and Control, 2016, 28: 50-57. DOI:10.1016/j.bspc.2016.04.004 |