近些年来,医患关系受到广泛关注。如何准确地挖掘异常用药是制约医生和缓减医患关系的关键。本文提出了一种检测医生用药异常的总体框架。该框架集成处方数据的耦合相似度度量和变色龙聚类算法,并分为三个阶段,定性分析,定量分析和异常检测。在真实处方数据上进行了充分的实验,实验验证了该框架能够有效地检测出医生用药异常。 In recent years, the doctor-patient relationship has received extensive attention. How to exactly mine the abnormal use of drugs is the vital to constrain doctors and relieve the doctor-patient relationship. This paper presents a general framework for detecting the abnormal use of drugs. The framework integrates coupled similarity and Chameleon clustering algorithm, and consists of three stages, qualitative analysis, quantitative analysis and abnormal detection. We conduct extensive experiments on real-world prescription data. The experiments evaluate that the framework can efficiently detect abnormal use of drugs.
王丽珍1,2,芦俊丽2,邓世昆1,张静2
1云南大学滇池学院,理工学院,云南 昆明
2云南大学,信息学院,云南 昆明
收稿日期:2017年1月6日;录用日期:2017年1月23日;发布日期:2017年1月26日
近些年来,医患关系受到广泛关注。如何准确地挖掘异常用药是制约医生和缓减医患关系的关键。本文提出了一种检测医生用药异常的总体框架。该框架集成处方数据的耦合相似度度量和变色龙聚类算法,并分为三个阶段,定性分析,定量分析和异常检测。在真实处方数据上进行了充分的实验,实验验证了该框架能够有效地检测出医生用药异常。
关键词 :耦合关系,聚类,异常分析
Copyright © 2017 by authors and Hans Publishers Inc.
This work is licensed under the Creative Commons Attribution International License (CC BY).
http://creativecommons.org/licenses/by/4.0/
近些年来,医患关系越来越引起人们的重视,尤其是对医生滥开检查单、过度用药、开大处方等问题。究其原因,一是医学的复杂性和医生的诊治水平因素;二是经济原因。医院过于市场化的发展,医务人员的收入与医院的经济效益直接关联,开单提成、药物回扣等以药养医行为屡见不鲜;三是法律规章制度。例如在医疗事故鉴定法中规定了医生在鉴定过程中举症倒置的制度,这可能导致医生对病人做大量检查、开具较多药物等“防御性”的行为 [
针对上述问题,本文提出一种检测医生用药异常的框架。此框架包含三个阶段,第一阶段,定性分析,将处方划分为相似团体,在相似团体下进行医生用药异常检测。第二阶段,定量分析,首先,针对复杂的处方数据,提出了基于耦合关系的处方相似度度量方法。然后,应用变色龙算法对处方数据进行聚类。第三阶段,异常检测,应用自定义的聚类指标检测医生用药异常。
大多数相似性度量都是基于数据之间相互独立的假设,但是在处方数据中,药物之间存在紧密配合与相互影响的关系,即耦合关系。考虑了耦合关系之后的医生处方用药异常检测,能够更准确地挖掘到医生用药异常情况。
论文其余部分的组织如下:第2节描述相关工作和相关概念,包括耦合相似度计算和变色龙聚类等。第3节给出了基于耦合关系的医生用药异常分析框架,包括定性分析,定量分析和异常检测。第4节在真实处方数据上进行了充分的实验,验证了所提出的框架和挖掘方法的有效性。
相似度用于衡量对象之间的相似程度,是数据挖掘和自然语言处理的基础,在诸如聚类、异常点检测等数据挖掘技术中广泛使用。由于描述数据对象的属性多种多样,相似度计算方式也分为很多种。计算数值属性的相似度常用欧几里得距离、曼哈顿距离和闵可夫斯基距离。离散属性有二值属性和多值属性,Jaccard系数 [
聚类分析简称聚类,根据数据对象及其关系的信息,将数据对象划分成子集的过程 [
聚类分析常被用于异常检测。目前异常检测已经应用到诈骗检测、入侵检测、医疗、纳税等方面 [
本节主要介绍在定量分析中采用的耦合相似度 [
本小节以信息表为例,介绍如何计算属性值的耦合相似度(CASV),以及对象的耦合相似度(CASO) [
使用耦合关系进行相似度度量时,不承认信息表中属性间、对象间相互独立的假定。耦合分为属性内耦合和属性间耦合。
1) 属性内耦合相似度(IaASV)
同一个属性内,属性值出现的次数差异反映的是值的频率分布,同一个属性内的两个值出现的频率越相近,它们的相似度越高 [
其中,
U A | a1 | a2 | a3 |
---|---|---|---|
u1 | A1 | B1 | C1 |
u2 | A2 | B1 | C1 |
u3 | A2 | B2 | C2 |
u4 | A3 | B3 | C2 |
u5 | A4 | B3 | C3 |
u6 | A4 | B2 | C3 |
表1. 信息表的例子
2) 属性间耦合相似度(IeASV)
属性间耦合是指属性之间的相互影响。属性
其中,
例如,计算
属性
其中,
综上,IaASV强调的是属性内的属性值出现的频率,而IeASV强调的是属性间的相互影响。属性值耦合相似度(CASV)则通过这两种度量结合得到。
3) 属性值耦合相似度(CASV)
属性值
其中
4) 对象耦合相似度(CASO)
对象耦合相似度(CASO)可以由属性值耦合相似度(CASV)累计得到。对象
其中
在表1中,对象
变色龙聚类算法是利用动态模型的层次聚类算法,可以发现同构、自然的簇。它采用动态建模的方法来确定一对簇之间的相似度,不依赖于一个静态的、用户提供的模型,能自动地适应被合并簇的内部特征。所以,当簇具有不同的形状、大小和密度时,变色龙算法也能够有效地聚类。
变色龙算法可分为构造k-最近邻图,用最大生成树划分该k-最邻近图和合并子簇形成最终簇三个阶段。在第三阶段,通过子簇Ci和Cj之间的相对互连性RI{Ci, Cj}和相对近似度RC{Ci, Cj}来决定两个子簇之间的相似度,然后选择使得相似度函数取值最大的两个子簇合并。
本文提出的框架(如图1所示)由三个阶段组成:定性分析,把现有的医院的真实处方转换成合适的表示形式,处方按相似团体进行划分,为下阶段定量分析做准备。定量分析,利用耦合关系度量处方间的相似性,用变色龙算法对处方进行聚类。异常检测,利用自定义的聚类指标检测医生用药异常。
为方便说明,先给出一些相关概念。
定义1 (专向科室):是指专门诊治某一类疾病或某一身体部位病症的科室。例如,眼科、皮肤科。
定义2 (综合科室):除了专向科室的科室均视为综合科室,它不具体诊治某一类疾病或某一身体部位病症。例如,简易门诊、急诊。
定义3 (相似团体):综合科室中相同疾病为一个相似团体,是跨门诊的;而专向科室中每一个科室中相同疾病为一个相似团体。
在相似团体内的处方中进行异常检测,才有意义,还可以减少计算时间,减少结果偏差。
定量分析由相似度计算和聚类两部分组成。相似度计算引入了耦合。考虑药物和药物之间的耦合关系,更真实地反应药物间的相互影响。如有些药品之间是有相互辅助作用的,它们往往同时出现。
本文以处方为数据对象,药物为属性。为方便计算相似度,采用1或0表示此处方是否使用该药物。数据组织如图2所示,其中第一列代表处方编号。
利用信息表中属性及对象的耦合相似度度量方法(2.2.1节中已介绍)对处方数据进行相似度度量,其步骤如下:
1) 使用公式(1)计算属性值
2) 使用公式(2)计算属性值
图1. 医生用药异常分析框架
图2. 数据组织
3) 使用公式(3)计算属性值
4) 使用公式(4)计算对象
计算CASO的时间复杂度为
下面举例说明CASO的计算过程,表2是由三个处方构成的实例,利用CASO计算得到各处方之间的相似度,如表3所示,表2中的处方之间越相似,表3中的相似度值越大。
本论文采用变色龙算法进行聚类,如算法1所示,变色龙有两个关键步骤:图划分和层次聚类。
本文中一个处方表示一个数据点。若点
假定m是数据对象(处方)的个数,p是子簇的个数。划分图需要的时间复杂度 [
处方编号 | 诊室 | 病患 | 医生 | 处方 |
---|---|---|---|---|
1 | 儿科门诊 | 马** | 刘** | 1、氯化钠注射剂;2、氨溴索注射液;3、5%葡萄糖注射剂; 4、炎琥宁注射剂;5、头孢硫脒注射剂(限儿童) |
2 | 儿科门诊 | 党** | 王* | 1、布洛芬缓释混悬液;2、四季抗病毒合剂; 3、肺力咳合剂(乙) (限儿童);4、阿莫西林克拉维酸钾分散片 |
3 | 儿科门诊 | 叶** | 邹* | 1、布洛芬缓释混悬液;2、四季抗病毒合剂; 3、肺力咳合剂(乙) (限儿童);4、阿莫西林干混悬剂 |
表2. 处方实例
1 | 2 | 3 | |
---|---|---|---|
1 | 0 | 0.218 | 0.119 |
2 | 0.218 | 0 | 0.873 |
3 | 0.119 | 0.873 | 0 |
表3. 处方间CASO相似度
Algorithm 1. Chameleon
算法1. 变色龙
利用变色龙算法对处方聚类后,再对结果进行统计,将处方的聚类结果映射到医生。通过处方异常点率PO和簇内处方比率CP对医生用药进行异常检测,PO和CP定义为:
其中
公式(6)主要检测:某医生诊治某相似团体次数较多,且使用的处方大致相似(医生一般都有自己的用药习惯),会导致该医生的处方可能自成一簇。将自成簇的医生按异常报告出来,由领域专家鉴别。
在异常检测中,PO和CP的大小分别与异常点率阈值C1和簇内处方比率阈值C2进行比较,如果PO或CP大于相应阈值,即可认定该医生在此相似团体中用药异常。其中,C1应大于该相似团体所有异常点数量与该相似团体处方总量的比值,C2的值需要考虑到该医生在此相似团体中处方比重较大的情况,因此C2应大于该医生在此相似团体中的处方数量与该相似团体中总的处方数量的比值。
例如在数据规模为500的情况下,A医生在综合诊室的上呼吸道感染这个相似团体中所开设处方104个,经聚类后该相似团体共有62个异常点,其中A医生共有5个异常点,将处方的结果映射到医生后,对A医生的聚类统计结果如表4所示。
按照上述阈值C1和C2的取值原则,C1大于62/500 = 0.124,取0.3,C2大于104/500 = 0.208,取0.4。A医生的处方群点率为5/104 = 0.048小于C1。A医生在簇2中处方比率为60/113 = 0.53大于0.4,因此可以把A医生在该相似团体的簇2中的用药情况报告出来,待专家鉴别。
本论文中对象间耦合相似度(CASO)的计算由MATLAB 2012b完成,变色龙算法由JAVA语言实现。所有实验均在主频2.4 GHz的因特尔酷睿2处理器,1 GB内存,windows7操作系统的PC机上运行。
本实验使用的是某医院的真实处方数据。本着实验数据全面、准确的原则,采用的是有多名医生诊治且每名医生都诊治较多次的相似团体——综合诊室的上呼吸道感染和消化内科的慢性胃炎两个相似团体,其中综合诊室的上呼吸道感染共涉及93个药品,经预处理后有50个药品,消化内科的慢性胃炎共涉及49个药品,即两类处方数据分别有50和49个属性,处方规模均为1000。
实验利用离散属性相似度计算中应用比较广泛的Jaccard相似度与对象耦合相似度CASO进行相似度度量,对比使用两者进行变色龙聚类得到的异常处方数和子簇个数,结果如图3,图4所示。
从图3中可以看出,使用Jaccard的异常点明显多于使用CASO的异常点。且随着数据集规模的增加,使用Jaccard的异常点数量增长速度明显大于使用CASO的增长速度。但不论使用哪种方法,上呼吸道感染的异常点数量均大于慢性胃炎,这是因为慢性胃炎的治疗药物主要集中在少数几个药品中,且处方的重复率较高。从图4可以看出,使用Jaccard的簇数量多于使用CASO的簇数量。经领域专家对聚类结果进行鉴定,由CASO得到的簇和异常点更合理和准确。这是由于Jaccard仅仅考虑两个对象间同时出现的属性个数是完全不够的,还需要考虑属性间耦合作用和属性内耦合作用,比如氨溴索注射液和氨溴索注射剂是不可能在同一处方中出现的,CASO就会考虑到这种情况。
从上述实验结果可以看出,CASO计算处方间相似度时充分考虑了属性以及对象的耦合作用,在聚类时有较好的效果。但是,正因为CASO充分考虑了耦合作用,其计算时间复杂度较高,并且其时间复杂度受属性个数影响很大,3.1节已阐述。
本节对CASO的计算时间随着属性数增加的变化情况进行了实验。从图5可以看出随着属性数量的
簇中的处方数量 | 该簇中A医生的处方数量 | |
---|---|---|
簇1 | 54 | 9 |
簇2 | 113 | 60 |
簇3 | 87 | 8 |
簇4 | 184 | 22 |
表4. A医生聚类结果
图3. 数据规模增加对异常点数量的影响
图4. 数据规模增加对簇数的影响
增加,CASO的计算时间增长较快。改善CASO计算复杂度也是未来工作中的主要任务之一。
将处方的聚类结果映射到医生,检验医生在该相似团体中用药是否异常。本文在消化科室的慢性胃炎的1000个处方中进行检验。表5为将处方聚类后的簇映射到医生时的聚类情况。而表6为每个医生的异常点数及其在该相似团体内的处方总数。
表7为异常检测结果,其中的异常情况列若为“异常点”,表示此医生所开的处方异常点比率(公式(5)所示)大于阈值C1。异常情况列若为“簇*、簇*”,表示此医生在这几个簇中的处方比重很大,被怀疑是自成簇。从表中可以看出医生B、C、D、E、F、G均有所异常,对簇中包含的主要药品进行分析可以发现,B医生偏于使用的药品有莫沙必利分散片、瑞巴派特片、泮托拉唑钠肠溶胶囊;C医生偏于使
图5. 数据规模增加对簇数的影响
簇1 | 簇2 | 簇3 | 簇4 | 簇5 | 簇6 | 簇7 | 簇8 | 簇9 | 簇10 | |
---|---|---|---|---|---|---|---|---|---|---|
A医生 | 48 | 0 | 14 | 0 | 0 | 13 | 2 | 2 | 0 | 3 |
B医生 | 53 | 2 | 16 | 30 | 24 | 18 | 10 | 16 | 1 | 0 |
C医生 | 52 | 0 | 4 | 11 | 4 | 3 | 1 | 33 | 2 | 3 |
D医生 | 152 | 110 | 1 | 85 | 1 | 3 | 0 | 3 | 42 | 0 |
E医生 | 11 | 0 | 1 | 0 | 4 | 4 | 1 | 5 | 0 | 1 |
F医生 | 32 | 0 | 17 | 0 | 17 | 2 | 24 | 2 | 0 | 0 |
G医生 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 11 |
总计 | 350 | 112 | 53 | 126 | 50 | 43 | 38 | 61 | 45 | 18 |
表5. 映射为医生后的聚类结果
异常点数 | 处方总数 | |
---|---|---|
A医生 | 4 | 86 |
B医生 | 19 | 189 |
C医生 | 10 | 123 |
D医生 | 37 | 434 |
E医生 | 14 | 41 |
F医生 | 18 | 112 |
G医生 | 2 | 15 |
慢性胃炎相似团体 | 104 | 1000 |
表6. 异常点映射为医生后情况表
阈值C1 | 阈值C2 | 异常情况 | |
---|---|---|---|
A医生 | 0.2 | 0.3 | 无 |
B医生 | 0.2 | 0.3 | 簇3、簇5、簇6 |
C医生 | 0.2 | 0.3 | 簇8 |
D医生 | 0.2 | 0.6 | 簇2、簇4、簇9 |
E医生 | 0.2 | 0.2 | 异常点 |
F医生 | 0.2 | 0.35 | 簇7 |
G医生 | 0.2 | 0.1 | 簇10 |
表7. 异常检测结果
用养蔚灵颗粒;D医生则更加偏于使用胶体果胶铋干混悬剂、曲美布汀胶囊、猴头菌颗粒、复方尿囊素片、二氯乙酸二异丙胺片、伊托必利片;G医生虽然关于慢性胃炎的处方较少,但大部分都集中在复方聚乙二醇电解质散;而E医生虽然因为异常点认定为在诊治慢性胃炎时用药异常,但并没有为病人使用固定药物。
本文针对医患矛盾中的医生用药异常问题,提出一种医生用药异常检测的框架。该框架包括定性分析,定量分析和异常检测三部分。其中定量分析中集成了处方数据的耦合相似度度量方法和变色龙聚类算法。实验验证了所提出的框架能够较好的发现医生用药异常的情况。未来的工作是改进利用CASO计算处方耦合相似度的效率,以及在此框架下提出更高效的算法进行医生用药异常检测。
国家自然科学基金(61472346, 61662086);云南省自然科学基金(2016FA026, 2015FB149)。
王丽珍,芦俊丽,邓世昆,张 静. 基于耦合关系的医生用药异常分析 Detecting Abnormal Use of Drugs Based on Coupled Relationships[J]. 计算机科学与应用, 2017, 07(01): 88-99. http://dx.doi.org/10.12677/CSA.2017.71011