热线电话:13121318867

登录
首页精彩阅读数据挖掘案例—药物选择决策支持
数据挖掘案例—药物选择决策支持
2016-03-21
收藏

数据挖掘案例—药物选择决策支持

【案例简要描述】

针对病人的病情和体质情况,医生往往需要采用不同的用药。本案例通过数据挖掘,对医院积累的历史数据进行分析,确定病人选择何种药物对治疗疾病最为有效。并开发了相应的药物选择决策支持系统的应用系统。

案例正文

【背景介绍】

       XX病是一种常见的疾病,目前有5种药物可以对其治疗,分别是——A、B、C、X、Y。不同的药物对病人有不同的疗效。历史上,医院往往根据医生的经验去判断针对特定的病人应该选择何种药物。但是由于新医生的加入,这种仅仅靠经验判断的做法造成了很多误诊。

       该医院有比较完善的病例留存,为了改变以上局面,也为了更好的利用历史数据和专家经验,该医院决定通过数据挖掘技术对历史数据进行分析研究,并期望能够建立一套有效的药物选择决策支持系统。

【数据说明】

       目前有历史病例数据1200条,咨询专家意见,我们提取了其中影响选择药物的若干个变量记入数据库,它们是年龄、性别、血压、胆固醇含量、钠含量、钾含量,最后一个变量是我们需要确定的选择药物,数据存贮在Microsoft Access数据库中。

数据挖掘过程】

1、 商业理解

在这个阶段我们主要需要描述清楚业务问题,并对我们手头拥有的资源有一个非常清晰的认识。在这个案例中,我们需要根据病人的个人情况和身体特征来确定何种药物对它最为合适。由于问题比较简单,我们的商业理解也比较简单。

2、 数据理解

数据理解阶段用来完成对数据质量、数据之间的基本关系进行探索性分析等项工作。在这个阶段,我们对历史数据中的1200条数据进行图形观察,初步观察病人的情况和身体特征是否与选择药物关系明显。数据流图见图1。 

 

E59BBE1

图1:数据理解

下面是产生的一些典型图形,图形解释略。

E59BBE2

图2:对数据的初步探索性分析


3、 数据准备

数据准备主要完成对不同的数据源的整合,并且对数据进行适当的变换,使之适合数据挖掘的需要,对于特定的模型,需要把原始数据集合拆分成训练数据集和检验数据集也在这个步骤中完成。

对于本案例来说,由于数据源只有一个,并且数据格式也相对单一简单,我们在数据准备中主要完成对原始数据集的拆分,从而用训练数据集建立模型,用检验数据集对模型的效果进行评估。

在Clementine中,对数据集的拆分,是通过引入一个中间变量来完成的。在本案例中,我们把全部1200条数据中的2/3左右(800左右)作为训练数据集,把1/3左右(400左右)作为检验数据集。我们引入了一个二分变量——拆分变量,这个二分变量对应1200条原始数据有2/3左右为“真”(T),1/3左右为“假”(F)。我们挑出那些拆分变量值取“真”(T)的记录作为训练数据集,那些拆分变量值取“假”(F)的记录作为检验数据集。实现该过程的数据流见图3。



E59BBE3

图3:数据准备

4、 模型建立和评估

在模型建立阶段,我们将逐步建立和调整模型,并对如何提高模型的预测效果进行尝试。

(1)       建立最简单的模型。对于训练数据集,我们首先把病人的年龄、性别、血压、胆固醇含量、钠含量、钾含量等不经过任何处理,全部作为预测选择药物的输入变量,而把选择药物作为待预测变量(输出变量)。数据流图见图4,我们建立了神经网络、C5.0和Logistic回归三个模型。



E59BBE4

图4:药物选择决策支持模型1

接下来我们用检验数据集对模型进行检验,数据流图见图5。模型检验结果见图6。从检验结果我们可以看出,Logistic模型的评估效果最好,达到了96.21%。



E59BBE5 

图5:药物选择决策支持模型1检验



E59BBE6

图6:药物选择决策支持模型1检验结果


讨论——如何提高模型的效果:从模型检验中我们可以看出,三个模型中可能有不一致的情况,这就使得我们有一种思路,即我们在发布模型的时候,可以考虑把那些三个模型预测一致的才作为预测,而把三者预测不一致的作为待判记录随后进行深入的分析,这样我们就使得模型的精度提高到了98.29%,但是作为牺牲,我们也会约有12%左右的病人是无法判断的,需要我们对记录做进一步的研究。

(2)为了更好的建立和调整模型,我们对业务进行深入了解,引入医生的业务经验。根据医生对医学理论的讨论和过去实践经验的积累,他们认为人体中的钠含量和钾含量对病人选择何种药物的作用并不是特别明显,但是他们的比例却是影响选择何种药物的一个关键因素,所以在我们下面建立的模型中,我们生成新变量——钠钾比例,而剔除钠含量和钾含量两个变量。数据流图见图7,模型我们仍旧采用神经网络,C5.0和Logistic回归三种模型。



E59BBE7

图7:药物选择决策支持模型2

类似(1),我们对模型效果进行检验,检验数据流和检验结果分别如图8和图9所示。



E59BBE8

图8:药物选择决策支持模型2检验



E59BBE9

图9:药物选择决策支持模型2检验结果

从结果中,我们可以看出,随着我们业务经验的引入,我们的模型效果有了显著的提高,并且我们选择模型也发生了变化。精度由原来的Logistic回归最优96.21%提高到了C5.0最优99.75%。

5、 模型发布

模型建立是为了应用,我们前面的全部工作都在于我们建立的模型能够被最终的业务人员所使用,假设我们由以下10个病人的资料数据,需要根据他们的情况判断使用什么药物最好。

表1:病人资料

年龄 性别 血压 胆固醇 钠含量 钾含量

25

F HIGH HIGH

0.675996

0.074834

17

F HIGH HIGH

0.539756

0.030081

23

M LOW NORMAL

0.556453

0.03618

24

M NORMAL NORMAL

0.845236

0.055498

74

F LOW HIGH

0.849624

0.076902

40

F NORMAL HIGH

0.67683

0.049634

32

F HIGH HIGH

0.581664

0.024803

70

M LOW HIGH

0.716359

0.036936

64

M HIGH NORMAL

0.640789

0.078302

45

M HIGH HIGH

0.664105

0.047819

该病人资料也被我们存放在Access数据库中。我们可以考虑以下三种方式对我们的模型进行发布供业务人员(医生)使用。

(1)       直接写报告的方式,通过HTML展示。数据流图10,结果展示实际效果如图11。



E59BBE10

图10:模型发布数据流1



E59BBE11

图11:报告方式发布结果示例

(2)       把选择药物直接写回数据库。数据流如图12,结果大致情形如图13。



E59BBE12

图12:模型发布数据流2



E59BBE13

图13:模型发布—把结果写回数据库

(3)       通过Clementine Solution Publisher结合Visual C++开发应用系统界面,业务人员(医生)可以直接输入病人资料,实时的得到药物推荐。发布数据流见图14,系统界面如图15。



E59BBE14

图14:模型发布数据流3



E59BBE15


图15:模型发布——开发应用系统

数据分析咨询请扫描二维码

最新资讯
更多
客服在线
立即咨询