标题 | 一种应用于医疗诊断推理机的改进分类算法 |
范文 | 于霄 陈伟建 李崭 方然 摘要 基于数据挖掘领域的分类算法成功设计并实现了医疗诊断专家系统的推理机,并将应用于推荐系统中的潜在因子算法的思想用于改进分类算法。对几种经典分类算法在医疗诊断专家系统推理机中的应用进行了研究;结合医疗诊断中用户个体差异对分类准确度影响极大的实际情况,使用影响因子改进了组合分类算法。实验结果表明基于改进的组合分类算法的医疗诊断专家系统推理机,实现了对疾病的诊断,对于现实医疗初诊具有很大意义。 关键词 分类算法; 数据挖掘; 专家系统; 潜在因子; 医疗诊断 中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2018)09-0024-03 Abstract: Based on the classification algorithm in the field of data mining, a reasoning machine of intelligent medical diagnosis expert system was designed and realized successfully. And the idea of the potential factor algorithm in the recommendation system is used for improvement. The application of several classical classification algorithms in reasoning machine of medical diagnosis expert system is studied. Combined with the actual situation in which the individual differences in the medical diagnosis affect the accuracy of the classification significantly, the combined algorithm is improved by using the latent factor. The experimental results show that the reasoning machine of medical diagnosis expert system based on improved combined classification algorithm has realized the diagnosis of diseases, which is of great significance to the reality medical diagnosis. Key words: classification algorithm; data mining; expert system; latent factor; medical diagnosis; 1 引言 分类是一种重要的数据分析方法,分类算法是解决分类问题的方法,是数据挖掘、机器学习和模式识别中一个重要的研究领域。分类算法通过对已知类别训练集的分析,从中发现分类规则,以此预测新数据的类别,在诊断预测系统的开发中应用广泛。 专家系统是一个具有专业知识与经验的计算机程序系统,应用人工智能技术和计算机技术,根据某特定领域专家提供的知识和经验,进行推理和判断,模拟人类专家的决策过程,从而解决需要人类专家亲身处理的专业问题。而专家系统的核心就是推理机部分。 对于目前医疗诊断领域的专家系统推理机的研究,国内外多以针对特定疾病进行二分类判断开发,过于狭窄不适应当前的实际应用需求,存在的实现的系统多为基于固定的规则判断,无法学习进化,完全靠大量人工专家进行维护改善,最重要的是在医疗诊断领域忽视了用户个体差异带来的及其重大的影响,其诊断准确性并不可观。研究了各种经典分类算法在医疗诊断专家系统中的应用,改进了分类算法,并基于国内外临床医学经典著作,结合职业医师建议建立了可靠的知识库,实现了准确可靠鲁棒的医疗诊断专家系统推理机。 2 医疗诊断专家系统推理机 专家系统作为以智能计算机程序为核心的系统,其系统内蕴含有专业领域专家的知识,模拟人类专家的决策过程,解决复杂问题。专家系统由人机交互界面、知识库、推理机、解释器、综合数据库、知识获取构成。其核心为知识库和推理机。推理机针对当前输入问题匹配知识库中的知识,结合内置算法对问题进行求解,过程如同人类专家的解决问题流程一样。改进后的分类算法被应用于推理机模块。 3 分类算法在推理机中的应用 3.1 分类算法的发展 分类是数据挖掘的一个重要概念。分类作为一种重要的数据分析形式,提取刻画重要数据类的模型。这种模型成为分类器,预测分类的类标号[1]。 从最早的线性判别分析到决策树分类再到神经网络。分类的方法数不胜数,对于分类器的评价指标也有很多,在不同的应用环境和不同的数据集下应当将不同的指标作为评价一个分类器的依据。 3.2 经典分类算法的效果对比与分析 对一套皮肤科疾病数据集合使用经典的分类算法进行分类。此数据集包含内科各种常见疾病,是由专家和研究人员共同从真实病例中提取得到I-S向量集,测试用数据集共有200条数据。对每种算法均采用10折交叉验证(10-fold Cross-validation)。对比结果如图1所示: 由于训练所使用的数据集皆为人类专家认可的正样本。故正负样本分布得极不均匀,存在数据标签倾斜,此时使用F-Measure和Recall来评判分类器性能比ROC-AUC更有意义:则贝叶斯算法和近邻算法以及决策树算法C4.5相比其他分类算法有着明显的优势。考虑到实际应用下,近邻算法的庞大计算量并不适合本系统,而组合分类方法对分类算法的提升,以及大量理论及实验表明决策树的优化相比于贝叶斯算法对于过拟合问题有更方便地改善[3]。故本系统采取决策树算法作為基础算法进行改进。 4 潜在因子在医疗诊断中的应用 4.1 潜在因子算法 潜在因子算法是在NetFlix的推荐算法竞赛中获奖的算法,最早被应用于电影推荐中。用户-潜在因子矩阵Q,表示不同的用户对于不用元素的偏好程度。潜在因子-电影矩阵P,表示每种电影含有各种元素的成分。由: [R=QPT] (1) 可得每个用户对每部电影的评分矩阵[R],从而进行推荐。 4.2 用于医疗诊断的潜在因子的挖掘 在医疗诊断中诸如性别,年龄,地理位置,季节等因素导致的个体差异对于诊断的影响不可忽视,在算法中考虑这些潜在因子的影响就能更好地应用在医疗诊断的场景中。潜在因子主要来源于临床医学资料以及专家的领域知识的经验总结。同时曾勇对电子病历的挖掘研究证明对病例进行关联规则分析是可行的[5]。故通过对大量病例进行关联规则分析也可以作为各种疾病隐藏的潜在因子的来源。 本文采用XX市某三甲医院皮肤科专家一年的诊断记录进行关联规则分析,使用Apriori算法进行挖掘,例如: {丘疹性荨麻疹} => {儿童,秋季}(支持度=0.04186, 置信度=0.557241) 从而我们认为丘疹性荨麻疹的潜在因子有秋季和儿童,这些都和专家的知识以及医学资料的描述不谋而合。挖掘大量数据分析得到的关联规则结合专家知识从而可以建立各种疾病的潜在因子的知识库用于改进算法。 5 基于潜在因子的组合分类算法 5.1 数据集中的数据对象 系统中存在数据集的模块包括知识库和数据库。知识库中的数据来源由领域专家通过知识获取模块输入,如此得到的数据可以保证其准确性、一致性以及可信性。采用数据挖掘中最经典的属性向量来存储数据对象。 本系统中的属性向量包含illness-symptom向量以及对算法优化所使用的user-latent factor向量和illness-symptom向量。illness-symptom向量,意为疾病-症状属性向量,以下均简称为I-S向量,由数值属性以及标称属性组成。某疾病的每种症状作为数值属性,而最后一个标称属性为疾病名称本身:I-S向量的结构:(S1,S2,...,Sn,I)。例如,喉炎拥有如下常见的症状:声嘶,中度咳嗽,咽痒,咽痛以及轻度淋巴结肿大。由专家选择症状描述并根据轻重程度量化来得到I-S向量的数值属性,最后以喉炎作为标称属性得到I-S向量:{1 100,2 100,3 100,11 100,12 70,15 10,42 "喉炎"}。数据集中拥有大量的数据对象,从而保证了训练出的分类器的质量。本文使用由大量真实病例整理,提取I-S向量作为研究所用数据集。 5.2 使用潜在因子优化组合分类结果 潜在因子对于提高医疗诊断系统准确度的影响是不可忽略的,再结合4.1小节中运用组合分类思想,从而可以改进出一种适用于医疗诊断专家系统推理机的组合分类算法。系统维护用户-潜在因子矩阵(user-latent factor)阵,记为U阵,如表1所示: 随着时间和用户的特定行为矩阵会变化:用户自身信息的变化,地理迁移,重大疾病,接种疫苗等严重影响诊断的行为都会使该用户的潜在因子向量发生改变。 如4.2小节所述,挖掘大量数据分析得到的关联规则结合专家知识所建立的知识库中维护着疾病-潜在因子矩阵(illness-latent factor)阵,记为I阵,如表2所示: 參考4.1小节则应由 [D=UIT]可得诊断结果阵D,表示用户对不同疾病的潜在偏向程度。事实上因为因子众多,并且对于单一疾病而言,其与大部分因子并没有关联性,导致矩阵十分稀疏。为了避免耗时的分解降维处理,本算法应用时由单用户查找U阵得到向量R,由组合分类器各个子分类器的结果筛选I阵得到一个规模很小的I阵的子矩阵P,从而将之前的[D=UIT]运算简化成了将单一的向量R和矩阵P的运算:[D=RPT]。由于矩阵P是之前各个子分类器结果的并集,其规模很小,故不会得到稀疏矩阵,故不用进行分解这一效率低耗时高的过程。然后得到一个诊断向量[D],对各维度的数值进行降序排序,先序的诊断结果拥有更高的置信度。 5.3 改进后算法流程详述 5.3.1 基分类器算法 设S是s个数据样本的集合,m个不同类C,[si]是[Ci]的样本数,[pi]是任意样本属于[Ci]的概率:设非类别属性A的取值集[{a1,a2,...,av}] ,依据A将S划分为v个子集:[Sj]为在A上值为[aj]的样本。[sij]是[Sj]中[Ci]的样本数,则A划分S的熵由式(2)给出[9]: 信息增益比率定义如式(3)所示: 基分类器采用决策树算法,训练流程如下: (1)生成结点node; (2)如果D中样本全属于同一类别C,则将node标记为C类叶结点; (3)如果A为空或D中所有样本在A上均取值相同,则将node标记为叶结点,其类别标记为D中最频繁的类; (4)从A中选择最优划分属性a*:使式(3)取得最大值; (5)遍历a*:对每一个a*_v为node生成一个分支;[Dv]表示D集合中在a*上取值为a*_v的样本子集;若[Dv]为空则将分支结点标记为叶结点,其类别标记为D中最频繁的类;否则,以treeGenerate([Dv], A\{a*})为分支结点。 输出:单棵决策树 5.3.2 改进的组合分类器算法 基于4.3小节中所述,改进组合分类算法流程。其中调用函数接口定义如下: treeGenerate(D,A):4.4.1中基分类器的决策树的训练算法; baseClassifier(I):使用treeGenerate(D,A)训练的模型对外供调用的接口,其输入为症状向量I,返回分类器的分类结果。 输入:疾病大科分类 A 病症属性 I 用户属性 U 组合的基分类器数 N 过程:function improvedClassifier(A, I, U, N) (1)如果A||D||U||N为空,判定为非法输入; (2)根据A调用相应训练好的分类器进行分类,调用N次baseClassifier(I),将N次分类返回的结果存储为集C (3)遍历C:以C中每个c为索引查找illness-latent factor阵,将C的所有查找的结果即illness-latent factor阵的子矩阵存为P阵; (4)以U为索引查找user-latent factor阵结果存为向量R; (5)代入[D=RPT]; (6)将[D]向量各个维度的值从大到小降序排序。 输出:最大的值对应的疾病为分类结果 5.4 改进前后的组合分类结果对比分析 下面对200例皮肤科患者病例分别使用C4.5算法和5.3中所述的改进算法进行了分类诊断,对比结果如图2所示: 如3.2小节中所述在这个场景中我们更加关注Recall和F-Measure的指标。实验结果表明改进后的算法比C4.5算法有更优秀的表现:改进后的分类器的召回率Recall达到0.689相比C4.5的0.578有了极大的提升,F-Measure也由0.540提升到了0.642。运行效率上由于I阵的规模小,且对于每次诊断是针对单个用户向量R的,则实际上每次[D=RPT]运算在如今计算机运算能力下都是很轻松的,且各个基分类器在实际软件系统的实现中可运用多线程技术来并行计算的得到结果,故由潜在因子改进的组合分类算法的优化代价完全可以接受。 6 结束语 本文所提出的应用于医疗诊断专家系统推理机的一种由潜在因子改进的组合分类算法,解决了单颗决策树易过拟合,导致泛化能力不强的问题,同时将个体差异对于诊断分类的强烈影响通过潜在因子的方式用于为组合分类器结果进行加权优化,最后排序后得到有最高置信度的分类结果。由潜在因子改进的组合分类算法能更好地应用在医疗诊断场景中,且实现了对常见疾病的诊断,对于现实医疗诊断具有极大的参考意义,算法性能稳定、鲁棒性强,较好地满足了使用要求。 参考文献: [1] Han J, Kamber M, Pei J. Data Mining: Concepts and Techniques: Concepts and Techniques[J]. Data Mining Concepts Models Methods & Algorithms Second Edition, 2011, 5(4):1 - 18. [2] Yan R, Ma Z, Zhao Y, et al. A decision tree based data-driven diagnostic strategy for air handling units[J]. Energy & Buildings, 2016, 133:37-45. [3] Holzinger A. Data Mining with Decision Trees: Theory and Applications[J]. Online Information Review, 2015(3). [4] Gorunescu F. Introduction to Data Mining[J]. Data Analysis in the Cloud, 2016, 22(6):1-25. [5] 曾勇. 基于關联规则的电子病历挖掘的应用研究[D]. 广州:华南理工大学, 2012. [6] Zhao Y, Wen J, Wang S. Diagnostic Bayesian networks for diagnosing air handling units faults – Part II: Faults in coils and sensors[J]. Applied Thermal Engineering, 2015, 90(5):145-157. [7] Breiman L I, Friedman J H, Olshen R A, et al. Classification and Regression Trees (CART)[J]. Biometrics, 2015, 40(3):358. [8] 孟杰. 随机森林模型在财务失败预警中的应用[J]. 统计与决策, 2014(4):179-181. [9] 熊赟, 朱扬勇, 陈志渊. 大数据挖掘[M]. 上海:上海科学技术出版社, 2016. [10] Smith T C, Frank E. Introducing Machine Learning Concepts with WEKA[J]. Methods in Molecular Biology, 2016, 1418:353. |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。