基于随机森林算法的数据分析软件设计
周屹;冯兆祥;白熙卓;贾子一;戴洋洋;盛鑫宇
【摘 要】随机森林是一种流行的机器学习方法,已经被广泛地应用于生物医学和生物信息学.针对医学数据集的特征高维等固有特点,设计一个基于随机森林的医学数据分析软件系统.本系统基于Web技术,在客户端采用Java语言接收用户数据和参数,并显示数据分析结果,在服务器端用R语言执行机器学习算法,进行数据分析.本系统具有友好的用户界面、操作简单,实现在Web端调用随机森林算法对医学临床数据进行分析,并且能够很容易地扩展到调用其他机器学习方法.
【期刊名称】《黑龙江工程学院学报(自然科学版)》
【年(卷),期】2017(031)003
【总页数】4页(P38-41)
【关键词】机器学习;数据挖掘;随机森林;Java语言;R语言
【作 者】周屹;冯兆祥;白熙卓;贾子一;戴洋洋;盛鑫宇
【作者单位】黑龙江工程学院 计算机科学与技术学院,黑龙江 哈尔滨 150050;黑龙江工程学院 计算机科学与技术学院,黑龙江 哈尔滨 150050;哈尔滨铁路局 信息技术所,黑龙江 哈尔滨 150006;黑龙江工程学院 计算机科学与技术学院,黑龙江 哈尔滨 150050;黑龙江工程学院 计算机科学与技术学院,黑龙江 哈尔滨 150050;黑龙江工程学院 计算机科学与技术学院,黑龙江 哈尔滨 150050
【正文语种】中 文
【中图分类】TP391.3
随着国内医院信息化建设的发展,医院信息系统中积累了大量的病人资料和医疗数据,这些数据中包含对医生、医院管理者和医疗管理部门都有着重要意义的信息,如何提取出这些信息,成为一个亟待解决的问题。传统的医学数据分析大多采用医学统计学方法,然而医学数据尤其是医学临床数据固有的非线性、不完整、多类型、类别不平衡等特点,给传统的统计分析方法,如多元回归、主成分分析等,带来很大的挑战。因此,越来越多的研究者开始使用数据挖掘或机器学习方法来分析和解释医学数据。
当前,利用机器学习或数据挖掘方法分析医学数据,探索影响疾病发生、发展的危险因素及机制,对疾病进行分类或预测,已经成为机器学习在医学领域的重要研究方向。然而,对于医学专业人员来说,利用计算机编程进行数据分析是非常困难的。为了便于医学专业人员利用机器学习方法进行医学数据分析和医学研究,本文设计了一个基于Web的医学数据分析软件,在客户端以用户友好的方式接收用户提交的数据和参数,在服务器端运行基于R语言的机器学习算法对数据进行挖掘分析,并将结果以用户友好的方式在客户端展示给用户。随机森林方法是一种流行的机器学习方法,已经被广泛地应用于生物医学与生物信息学研究。本文以Ⅱ型糖尿病临床数据为对象,以随机森林分类和预测算法为工具,对所设计的软件系统原型进行模拟实现。实验结果显示,本软件系统能够有效地完成医学临床数据的挖掘分析任务,并可以容易地扩展到其他医学数据和机器学习算法。
1.1 随机森林
随机森林(Random Forest, RF)是由Breiman于2001年提出的一种集成机器学习算法,目前已成为机器学习和数据挖掘领域最流行的分类与回归算法之一。RF算法结合了随机重采样和随机子空间技术,利用bootstrap采样技术从原始样本中抽取多个样本,对每个bootstrap样本
进行决策树建模,在训练决策树进行节点分裂时,从一个属性子集中随机选取一个属性进行分割,最后组合多个决策树预测,通过多数投票的方式确定最终的分类或预测结果。随机森林分类器是由一系列的决策树分类器h(x,θk)构成,其中,θk是服从独立同分布的随机向量,每个决策树分类器对于特定的输入给出独立的分类,并对最终分类结果进行投票。随机森林生成步骤如下:
1)从原始训练数据中应用bootstrap采样法有放回地随机抽取k个新的自助样本集,并由此构建k棵决策回归树(Decision and Regression Tree,CART),每次未被抽到的样本组成k个袋外数据(out-of-bag, OOB)。
2)设原始数据集中共有n个变量,则在训练每一棵CART树进行节点分裂时,随机抽取mtry个变量(mtry≤n)进行计算,然后在mtry个变量中选择一个最具有分类能力的变量用于节点分割。
3)每棵CART树最大限度地生长,不做任何剪裁。
4)生成的k棵CART树组成随机森林,用森林中的每棵树为OOB中的样本进行分类。
5)统计每个类别获得的投票数,得票数最多的类别被认为是被测样本的类别。
相对于其他机器学习算法,随机森林方法具有很多优点:首先,它能处理多种数据类型,包括定性的数据和定量的数据;第二,它能够生成变量重要性分数,可以用于特征选择,尤其适用于疾病危险因素分析,便于用户理解疾病各种危险因素的相对重要性;第三,它能生成内部无偏估计的分类器,具有非常好的分类性能;第四,它对于噪声数据和存在缺失值的数据具有很好的鲁棒性;最后,它具有较快的学习速度,对于大规模数据集来说,计算时间是合适的。近年来,随机森林已经成为机器学习和数据挖掘领域的研究热点。
本系统在服务器端直接调用R平台上的随机森林算法的一个具体实现randomForest(version 4.6-7)进行数据挖掘分析,并将结果在客户端使用网页进行展示。
1.2 变量重要性评分
随机森林的每一棵分类树为二叉树,根节点包含全部训练数据,按照节点不纯度最小原则分裂。若节点n上的分类数据全部来自于同一类别,则此节点的不纯度I(n)=0。不纯度度量方法是Gini准则,即假设p(ωj)是节点n上属于ωj类样本个数占训练样本总数的频率,则Gini准则表示为[6]
).
设原始样本含量为N,表示各特征的变量为x1,x2,…,xm。应用bootstrap法有放回地随机抽取b个新的自助样本,并由此形成b个分类树,每次未被抽到的样本则组成b个袋外数据。袋外数据作为测试样本可以用来评估各个变量在分类中的重要性,实现过程如下:
1)用自助样本形成每一个树分类器,同时对相应的OOB进行分类,得到b个自助样本OOB中每一个样品的投票分数,记为rate1, rate2, …, rateb。
2)将变量xi的数值在b个OOB样本中的顺序随机改变,形成新的OOB测试样本,然后用已建立的随机森林对新的OOB进行分类,根据判别正确的样品数得到每一个样本的投票分数,所得结果可以表示为
正则化算法调用3)用rate1, rate2, …, rateb与式(2)对应的第i 行向量相减,求和平均后再除以标准得变量xi的重要性评分,即
rJava是一个R语言和Java语言的通信接口,通过底层JNI实现调用,允许在R中直接调用Java的对象和方法。rJava还提供了Java调用R的功能,是通过JRI(Java/R Interface)实现的。
JRI现在已经被嵌入到rJava的包中,rJava包已经成为基于Java开发R包的基础功能组件。
2.1 系统实现
由于rJava是底层接口,并使用JNI作为接口调用,所以效率非常高。在JRI的方案中,JVM直接通过内存加载RVM,调用过程性能几乎无损耗,因此,是非常高效的连接通道,是R和Java通信的首选开发包。
系统实现所涉及到的软件工具包括:R服务器为R version 3.0.2,随机森林算法为RandomForest version 4.6-7,Web客户端开发环境为MyEclipse 2016 Stable 1.0,Web服务器为Tomcat 7.0,数据库为MySQL 5.6.24,系统的体系结构如图1所示。
在图1中,普通用户可以在Web客户端提交需要进行挖掘分析的原始数据集,并选择合适的机器学习算法(随机森林等)以及算法参数,提交任务后将数据打包发送给Web服务器,Web服务器再调用R服务器上的机器学习算法进行数据挖掘分析,并将最终的结果通过Web服务器传递给Web客户端进行显示。
2.2 系统分析实验
用户可以在客户端上传数据文件、选择机器学习算法以及设置参数等,并可以查看数据分析结果,如生成的随机森林分类模型及其分类性能、变量的相对重要性分数等。
数据来自于黑龙江省某医院的糖尿病临床数据,原始的数据集中包括患者的性别、年龄、身高、体重、腰围、臀围等自然信息;糖尿病病史、饮酒史、吸烟史等病史信息;血糖、胰岛素、胆固醇、甘油三酯、脂蛋白等生化信息。
系统的效果如图2所示。
为了提高数据分析的准确性,对原始的数据进行预处理,包括删除部分信息不完整和重复的数据,对数值数据进行正则化和离散化处理。最终,测试数据中包括1 910个样本和46个变量,以样本患者是否患有外周动脉疾病作为目标变量,执行机器学习算法训练分类器。
本模型采用5次交叉验证的方式比较Logistic回归模型、决策树(C5.0)算法、支持向量机(support vector machine,SVM)算法以及随机森林算法这四种方法,建立分类模型的工作性能,如表1所示。每次实验都是随机选取数据测试集和样本集,最后取10次实验平均值分别计算出分类器的准确性(Accurary)、敏感性(Sensitivity)和特异性(Specificity),准确性就是预
测正确的比例,敏感性实际上就是真阳性率,特异性衡量的是该模型预测对个体特异性变化的应变能力。从实验结果和对分类器的评估可以看出,选用随机森林方法更接近于真实情况,真阳性率比较高,达到了94%,其准确性、特异性也都高于其他机器学习算法。由此可说明,本文所提出的软件设计方案是可行的。
本文设计并实现一款基于R的医学数据分析软件,采用Web结构,在客户端接收用户数据和参数,显示数据分析结果;在服务器端调用R算法包进行数据挖掘分析,采用rJava包实现R语言与Java语言的通信。该软件系统克服了R平台命令行操作和编程不利于医学专业人员使用的缺点,以用户友好、易学易用的操作界面为非计算机专业用户提供便捷的数据分析服务。通过真实的糖尿病临床数据和随机森林算法对系统进行测试,表明该设计方案是可行的。当然,本文只是实现了一个系统原型,集成更多的机器学习算法并在更多的医学临床数据上对系统进行测试,是下一步的研究方向。
【相关文献】
[1] MAROCO J, SILVA D, RODRIGUES A, et al. Data mining methods in the prediction of Dementia: A real-data comparison of the accuracy, sensitivity and specificity of linear discri
minant analysis, logistic regression, neural networks, support vector machines, classification trees and random forests[M]. BMC Research Notes,2011,4:1-14.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论