基于扩展主题模型的异常医疗处方检测方法*

2020-01-11 06:26刘少钦赵俊峰王亚沙
计算机与生活 2020年1期
关键词:视图实例处方

刘少钦,唐 爽,赵俊峰,3+,王亚沙,3,卓 琳

1.北京大学 信息科学技术学院,北京100871

2.高可信软件技术教育部重点实验室,北京100871

3.北京大学(天津滨海)新一代信息技术研究院,天津300450

4.北京大学 公共卫生学院 流行病与卫生统计学系,北京100871

1 引言

医疗处方是指医师在诊疗活动中为患者开具的,作为患者用药凭证的医疗文书。每张处方决定了患者在之后的诊疗活动中需要使用的药物,这些药物能够对患者的治疗产生极大影响。世界卫生组织在内罗毕提出,合理用药即是“对症开药,供药适时,价格低廉,配药准确,以及剂量、用药时间和间隔均正确无误,药品必须有效、质量合格、安全无害[1]。”其中提到的药方、剂量、用药时间等通常都由医生写在所开具的处方中。如果医疗处方出现错误,患者所使用的药物就会有偏差,出现不合理用药现象,影响患者的治疗效果,甚至造成严重的后果。

在医师所开具的大量处方中,难免会出现一些异常,这些异常会增加医疗机构和患者的负担。调查显示,异常处方中主要的问题有:药物的滥用、过多给药以及错开药。随着医疗系统逐步实现全面数字化,医疗处方大多以电子形式开具,如果能够实现一个自动检测异常处方的方法,将提高患者就医效率,对药物滥用和过多开药等社会问题都有着重要意义。

处方数据一般有三个主要特点:数据量巨大,数据高维稀疏,数据片段(时序)化。虽然已有大量机器学习和统计学方法用于解决异常检测问题,如有监督的分类方法,使用传统的分类方法如SVM(support vector machine)找出异常的记录;使用无监督学习的异常点算法,通过计算离群点来找出异常记录;部分使用高斯混合模型的统计学方法。这些方法在一定程度上解决了异常检测问题,但也存在着一些不足,导致其在异常处方检测中效果较差,比如有监督学习方法训练时所需要的高质量人工标注数据集难以获得;以异常点检测为主的无监督学习方法和以高斯模型为主的统计学方法大都没有考虑不同种类特征的关系,倾向于把一些不经常出现的特征归为异常,例如认为一些很少出现的疾病是数据异常。但是,这类具有罕见特征的数据并非一般情况下人们所认为的异常数据,人们所认为的异常处方往往是疾病和用药之间的匹配关系异于大多数数据的处方,比如无诊断依据的不合理用药等。目前,也有一些相关研究试图检测两类特征不匹配导致的异常,如上下文异常监测(contextual anomaly detection,CAD)[2-3]等,但是由于处方数据具有高维稀疏的特性,这些方法的应用效果不佳。

主题建模(topic modeling)技术[4]最初是从自然语言文本中抽取主题信息的一种技术,该技术假设主题是一组语义相关的词语,而文章由多个主题混合而成。主题建模是一种无监督学习方法,它能对无标注数据进行分析。由于医疗处方数据具有高维稀疏的特性,在使用异常检测的机器学习方法前通常需要对处方数据进行降维来提高方法的效果。主题模型能够实现文档从高维的原始特征(单词)降到低维的抽象特征(主题),相比主元素分析(principal component analysis,PCA)[5]一类的降维方法,主题模型中低维的主题特征是具有语义可以解释的,在处方数据训练出来的主题模型中,主题特征即为一类病症所对应的诊断(用药),在医学上具有良好的可解释性。因此本文选择主题建模方法来处理前面所提到的大量高维度、低质量、无标注的结构化数据。

本文提出了一种基于扩展主题模型的异常处方检测方法,该方法是一个无监督学习方法,在不需要标注数据集的情况下,能够检测处方数据中的异常处方。在使用大量处方数据对该模型经过训练后,模型可以自动检测新处方是否异常。本文提出的方法首先通过扩展的主题模型——多视图主题模型建模得到疾病和用药之间的匹配关系,而后对于每个处方,判断其诊断及用药是否满足匹配关系,进而判断该处方是否正常。该方法不仅可以用于检测异常处方,对于医疗领域中任意需要检测是否正常匹配的数据,都可以使用该方法。

本文有两个主要贡献:

(1)多视图主题模型(multi-view latent Dirichlet allocation,MV-LDA):由于朴素的LDA 模型无法发掘特征之间的联系,本文提出了一种改进的主题模型MV-LDA,将不同种类的特征看成是从不同的视图对实例进行的描述,因而共享同一个实例主题分布,从中得到不同特征之间的匹配关系。

(2)基于多视图主题模型的异常处方检测方法:基于多视图主题模型,提出了一种异常处方检测方法,在高维稀疏的处方数据上取得了良好的效果。与其他传统方法(如CAD)相比,该方法准确率较高,在数据极其稀疏的时候依旧有着稳定的检查结果。该方法不仅可以用于检测异常处方,还可以用于检测其他特征之间的匹配关系异常。与其他的医疗领域中异常检测算法相比,本文方法的应用范围更广。

基于这种方法,本文实现了一个实现异常处方检测的工具,并在真实数据集上进行了实验,实验结果表明,本文方法可以有效地发现异常处方。

2 相关的研究工作

2.1 异常检测方法

现有医疗领域内的异常检测算法可以分成有监督和无监督两类[6]。在有监督的学习方法中,常用一些机器学习方法对人工标注的医疗数据进行分析。例如,Kumar等人在一个标记了足够多异常实例并且质量良好的数据集中,运用SVM 有监督学习方法,检测医疗索赔数据中的记录错误[7]。Heller 等人[8]假设所有实例都属于某个确定的类别,用SVM 方法从数据集中描绘出两类实例的边界,任何分错边的实例都被视为有异常信息的实例。但是由于获取有监督学习所需要的高质量标记数据集非常困难,为此研究人员也提出了一系列的无监督的异常检测方法。无监督方法一般是通过寻找离群点来实现的,通过把每个实例抽象成高维空间中的一个点,把远离空间中其他点的数据点作为异常点。例如,Yamanishi等人[9]就是使用基于概率生成模型的无监督点异常监测(point anomaly detection,PAD)方法去检测病理数据的异常;以及Breunig 等人提出的基于密度的局部异常因子(local outlier factor,LOF)方法[10]。但是在医疗领域中,这类离群点并不一定都是异常数据,因为医疗领域中存在着大量的发病率很低的罕见病,实际上,除去部分较为常见的病症之外,大部分的疾病发病率都非常低,异常点检测的方法无法处理这类问题。与罕见数据相比,更希望检测那些特征之间不匹配的实例。上下文异常检测(CAD)就是一种使用两类特征之间的关系进行异常值检测的无监督方法,CAD 把特征分为上下文特征(设为y)和指示特征(设为x),在假设绝大多数数据是正常的情况下,学习得出x到y的一个映射函数y=f(x)。对于某一条测试数据,如果其两类特征不符合y=f(x),就认为这条数据是异常数据。CAD 方法在医疗中也有应用,例如Hu 等人[11]的解决方案是在指示特性和一组语境特征上使用回归模型,然后使用剩余部分的测试实例,来确定异常值,从而在医疗记录中识别异常用药案例。但是由于医疗数据的高维稀疏性,CAD方法在医疗领域取得的效果并不好,且CAD 方法只能用于检测两类特征之间的不匹配。

2.2 主题模型

主题模型是一类用于描述无结构文本组成方式的统计模型,在机器学习领域中,它被用来从一系列文本中挖掘潜在特征“主题”。通过使用主题这一抽象特征作为中间层,主题模型可以有效地对文本进行特征抽取,将文本的映射向量从高维度的词空间,映射到低维度的主题空间,并且主题这一抽象概念是一组语义上相关的词及其对应概率,描述的是语料的“中心思想”,具有良好的可解释性。

主题模型相关的研究有很多,例如最初提出的Deerwester 等人提出潜在语义分析(latent semantic analysis,LSA)[12],利用矩阵求解的方法进行主题计算。Blei 等人[13]在2003 年提出的潜在狄利克雷分布方法(latent Dirichlet allocation,LDA),由于出众的主题抽取效果以及易扩展的概率表示方式,也成为应用最广泛的模型。

LDA 主题模型假设输入数据是无结构的“词袋”(词的无序集合),由于处方数据为结构化数据,诊断和用药之间存在着关联关系,因此无法直接利用LDA 主题模型进行建模。需要针对性研究面向结构化数据的主题建模技术,使得主题模型能够在对数据降维的同时,反映处方数据中的匹配关系。

3 基于改进主题建模的异常检测方法

LDA 主题模型能够实现文档从高维的原始特征(单词)到低维的抽象特征(主题)的降维,这一特性可以用来解决处方数据高维稀疏的问题。使用主题模型对处方数据进行降维,把高维稀疏的处方数据转变成其他方法容易处理的形式之后,就可以使用常用的异常检测方法,同时与PCA 等方法不同,主题模型中的主题是具有语义可以解释的,在处方数据训练出来的主题模型中,主题特征为一类病症所对应的诊断(用药),在医学上具有良好的可解释性。

但是由于处方数据中诊断和用药这两类特征之间存在着关联关系,无法直接使用LDA 主题模型,而如果对诊断和用药都使用一个LDA 模型来降维,就会丢失特征之间的对应关系。为了在保留处方中诊断和用药之间的对应关系的同时对处方数据进行降维,本文首先提出了一个改进的主题模型——多视图主题模型(MV-LDA),而后给出了基于该模型的异常检测算法。

3.1 多视图主题模型

根据前文的描述,由于处方数据的诊断与用药这两类特征之间存在着需要保留的关联关系,因此无法直接使用LDA 主题模型。但同时注意到,每个实例(处方)由诊断和用药这两类特征来描述,而相同种类的特征之间依然满足词袋假设,并且不同种类的特征可以看成是从不同的视图对实例的描述。针对这些情况,本文提出了多视图主题模型(MVLDA),以解决描述同一实例的不同种类的特征的建模问题。在MV-LDA 中,将不同种类的特征看作描述同一实例的多个视图,不同种类的特征通过描述的相同实例形成对应关系。

3.1.1 MV-LDA 模型

为了保持主题模型特征抽象能力的同时给出多类特征间的关联关系,本文将对LDA 主题模型进行特征视图的扩充:LDA 主题模型中每个主题所关联的特征属于同一类别,特征间可相互交换,可以看作只包含一个视图;对于有多种特征描述的实例,可以把这些特征看作从不同的视图对实例进行了描述,并通过它们所描述的实例进行关联。

假设对A、B这两种特征进行建模,则每个实例都视为从A、B两个视图来进行描述,其MV-LDA 模型的概率图表示如图1 所示。

Fig.1 MV-LDA probability graph model图1 MV-LDA 概率图模型

与LDA 主题模型一样,图1 中α为主题分布的超参数,β为主题下词语分布的超参数,θ表示每个实例的主题分布。不同的地方在于,由于将不同种类的特征视为从不同视图对实例的刻画,每个主题也由多个视图来描述,因此不同的视图有着不同的主题特征分布ϕA与ϕB。在不同视图中,主题分配变量z,产生的特征x,以及超参数β均不同,而不同视图中的特征x也因为由相同的实例主题分布θ产生而产生了对应关系。

如概率图中所描述的,多视图LDA 的概率生成过程见过程1。

过程1MV-LDA 生成过程

(1)对于每个主题:

①从以βA为参数的Dirichlet 分布中抽样一个特征的分布ϕA~Dirichlet(βA),重复K次。

②从以βB为参数的Dirichlet 分布中抽样一个特征的分布ϕB~Dirichlet(βB),重复K次。

(2)对于每一个实例:

①从以α为参数的Dirichlet 分布中抽样一个主题分布θ~Dirichlet(α),重复D次。

②对于实例中的每个A类特征:

从该实例主题分布θ中抽样一个主题Zd,n~Mult(θ)。

基于该特征所属主题Zd,n从多项分布ϕA中抽样一个特征值。在实例d中重复次,得到d实例的所有A类特征。

③对于实例中的每个B类特征重复步骤②,将主题特征分布替换为对应的ϕB,得到实例d的所有B类特征。

由以上生成过程可知,每个主题都有着多个主题特征分布,每个主题特征分布都属于不同的视图。此外,同一个实例中的A、B两类特征由同一个参数为θ的多项分布抽样而来,具有相同的“潜在语义”。以此为关联,就能把两类特征的主题-特征分布对应起来。具体而言,如果把处方看成一个实例,诊断看成A类特征,用药看成B类特征,那么通过MVLDA 就可以得到诊断与用药之间的匹配关系。

这里仅以两种特征为例说明了MV-LDA 模型,实际上该模型可以扩展到任意多个视图,这样的话就可以得到这n种特征之间的匹配关系。

3.1.2 模型求解

与LDA 模型一样,本文使用吉布斯采样方法对MV-LDA 模型进行求解,计算生成过程的参数。求解过程中,首先对所有的特征随机分配一个主题;而后根据当前状态,对每一个实例的每一个特征所对应的主题进行采样并更新。具体的将在下面给出采样时的概率公式。

对于有两种特征的MV-LDA 模型而言,假设对A类特征进行抽样,则在前一时刻的状态已知的情况下,为实例m中A类特征xa分配主题k的概率为:

其中,C表示矩阵,对于第一个因子,VA是A类特征类别数量,代表所有实例中xA分配给主题k的计数,代表所有分配给主题k的任意A类特征的计数,βA是Dirichlet先验。左边的式子代表所有分配了主题k的A类特征中特征xa所占的比例,也就是。

对于第二个因子,与上相似,K表示主题数目,表示实例m中的所有特征(包括AB两类)中分配了主题K的数目,表示实例m中的所有特征的数目,α是Dirichlet 先验。右式就代表了实例m中分配了主题k的特征占总特征的比例,也即是。

3.1.3 数据推断

在MV-LDA 模型计算完毕后,其可以对新数据进行推断,计算新数据的实例主题分布。在使用模型推断时,MV-LDA 中的每个视图都能看成一个独立的LDA 模型,可以单独使用这一类特征来进行推断。举例来说,在某个数据集上已经训练了一个图1中的包含A、B两类特征的模型,此时可以把A特征的主题-特征分布ϕA单独用来对只包含A特征的实例进行推断,估计其A类特征在该模型上的实例-主题分布,推断公式如下:

推断过程只使用了A类特征相关的主题特征分布和A类特征的技术,因此可以从多个视图分别进行推断,得到多个实例-主题分布。由于这些分布是描述同一个实例的,故而这些分布应该非常接近。具体的,对于需要进行异常检测的处方,使用已有的模型分别对诊断和用药进行推断,得出两个处方的实例主题分布,而后再比较这两个分布的相似度,来判断处方是否正常。

3.2 基于多视图主题模型的异常检测方法

由于多视图主题模型能够在对处方数据进行降维的同时保留诊断和用药之间的对应关系,本文提出了一种基于多视图主题模型的异常处方检测方法(MV-LDA based abnormal detection,MBAD)。该方法的主要思路是利用多视图主题模型对处方数据中的诊断和用药两类特征进行建模得到其对应关系,之后利用MV-LDA 对新数据的推断能力分别从诊断和用药两个视图推断处方的实例主题分布,通过比较这些分布的相似度发现测试数据中不符合对应关系的数据,并将其作为潜在的异常记录。

设诊断特征为A,用药特征为B,进行异常处方检测的方法主要包含了以下三个步骤:

(1)模型训练:利用MV-LDA 在训练数据上抽取代表xA与xB对应关系的主题。

(2)数据推断:使用步骤(1)学习得到的主题-特征分布去推断测试数据的实例-主题分布。具体的,需要分别使用A、B两类特征推断处方的实例-主题分布。

(3)异常值计算:选取合适的度量,计算A类特征的实例-主题分布和B类的实例-主题分布是否匹配,越不匹配则异常值越高。

3.2.1 模型训练

处方数据一般都以结构化数据的形式保存,例如保存在关系数据库中。本文处理了两个数据集:一个是医疗保险数据,医疗保险数据主要由病例数据组成,每条病例数据可能由一条或者多条处方组成,如表1 所示,包含记录的ID、诊断、用药三部分;另一个是来自合理用药监测网的处方数据,与保险数据不同的是其每条记录保存的是单个处方的信息。

Table 1 Medical prescription data sample表1 医疗处方数据样例

在利用MV-LDA 抽取处方中诊断和用药之间的对应关系前,需要先将数据转变成适合处理的格式。对于诊断特征,本文将每条记录中的诊断转换成由国际疾病分类-10 编码(international classification of diseases-10,ICD-10)[14]的特征集合。而用药信息中包括药品编码及对应费用,这里将费用看成是药品的用量,将其作为特征集合中的词频。

对于某个药品m,设其在某个诊断记录中的费用为cm,将其正规化为一个整型数值nm,公式如下:

式中,Median(m)函数表示药品m的费用在数据集中的中位数。Round()是四舍五入取整函数,λ表示一个乘数因子,人工确定用来使药物数量(nm)的取值不小于1。经过这样变换之后,能够得到用于训练MVLDA 模型的输入处方数据集。

处方数据集中每条数据都包含一个诊断特征集合和一个用药特征集合,将该数据集作为训练数据作为MV-LDA 的输入,即可得到保留了诊断和用药之间关联关系的K个主题。每个主题包含两个主题-特征分布,分别对应该主题在用药特征上的多项分布以及在诊断特征上的多项分布。图2 展示了从医疗保险数据中抽取的一个主题(主题1)的示例。依据主题-特征分布中概率值的高低,图中展示了三个与该主题最相关的药品和ICD 编码。药品中排在第一位的卡托普利是一种广泛应用的降压类药物;而诊断特征的第一位编码i63则对应脑梗死疾病。可见该主题和高血压引起的脑部血管疾病高度相关。由此可见,诊断特征和用药特征的关联关系通过主题得到了保留。主题个数K的选择和数据集信息量的丰富程度相关,将会通过后续的实验说明如何选择K值。

Fig.2 MV-LDA sample of topic 1图2 MV-LDA 主题1 示例

3.2.2 数据推断

在使用MV-LDA 进行异常检测时有一个重要假设,即绝大部分数据都是正常的。基于这个假设,使用全部的数据集进行模型训练得到的主题分布受到异常数据的干扰不大,得到的不同特征之间的对应关系依然比较准确。

基于这个假设,在模型训练完成之后,本文要根据学得的主题模型对每一个测试实例进行检验,判断其是否异常。即在学习完成后,要在相同的数据集上进行一次数据推断来检测原数据集中的异常。

在这个步骤,将分别单独使用诊断数据和用药数据来推断出处方的实例-主题分布,而根据模型假设,诊断和用药是从不同的视图对处方进行的相同描述,而这种对应关系体现在了主题中,如果处方正常,则从不同的视图推导出来的实例-主题分布应该相近;反之,如果分布相差较大,则该处方很可能是个异常处方。

3.2.3 异常值计算

根据假设,正常数据的用药和诊断的对应关系符合绝大部分数据中诊断和用药的对应关系,数据推断步骤中通过诊断和用药分别推断得到的在各个主题上的分量的值应该较为相似。由于没有系统性的研究表明哪种相似性度量适用于计算两个多项分布的相似度,本文分别采用KL 散度(KL)、欧几里德距离(EUC)、余弦相似度(COS)、皮尔逊相关性(PS)、向量点乘(DOT)进行了实验。

(1)KL 散度(KL)。该度量广泛应用于测量两个概率分布的相似度。本文利用对称的KL 散度来作为的相似性度量,值越大相似度越低:

其中:

(2)欧几里德距离(EUC)。用于计算空间中的两个点之间距离的最常用相似性度量。该值越大相似度越低。

(3)余弦相似度(COS)。该相似度根据两个向量夹角的大小来确定相似度,而不考虑向量的长度:

(4)皮尔逊相关性(PS)。该度量往往用于度量两组数据间的相关性。这里由于各个维度上分量之和为1,因此可以用相关性来度量其相似度。其相关性越高,则两个向量的相似度越高。

其中,μ表示向量各个维度的均值,σ表示向量各个维度的方差。

(5)向量点乘(DOT)。和式(7)中的余弦相似度相比,向量点乘舍去了向量长度的归一化分母,因此既考虑了向量的角度,又考虑了向量的长度。

除了这些距离度量方法之外,本文还将提出一种匹配方法来进行异常值的计算。

(6)主题匹配(topic mapping,TP)。在主题匹配方法中,将使用MV-LDA 中得到的主题-特征分布,为每个诊断和用药分配一个或多个主题,而后将二者匹配起来。具体的,对每个诊断,先通过MV-LDA模型得到其出现在某个主题的概率,并将它出现概率比较高的主题标记出来;而后对每个药品,找到其出现概率较高的主题,如果这些主题中没有任何一个被标记出来,说明该药品与之前的任何一个诊断都没有对应,认为其为异常用药,异常值加1。最后如果异常值的数目大于阈值,则认为该处方为异常。

后续的实验验证中,将分别采用上述几种相似度度量的方法,衡量诊断和用药所对应的主题分布间相似度的效果。由于在现实世界中,一般都缺乏标注好的异常处方数据训练集,因此无法准确确定用以区分正常记录和异常记录的相似度“阈值”。在后续的实验中,本文将计算数据中所有实例的主题分布相似度,并根据相似度由低到高对实例进行排序,取排名靠前的实例作为检测得到的异常数据样本来衡量方法的有效性。

4 工具的实现与验证

本文在一个医疗保险数据集和一个处方数据集上进行了实验。

实验的真实医保数据集包含处方信息,共有47 303个实例,每个实例包含诊断和用药两类特征。诊断特征包含1 652个不同的特征值(诊断编码),用药特征包含3 785个不同的特征值(药品);每个实例平均只包含4.81种可见的诊断特征和34.43种可见的用药特征,因此该数据集是一个典型的高维稀疏数据集。

处方数据由全国合理用药检测办公室收集,该机构受卫生部委托成立,主要负责收集医疗相关数据。获得的数据集包括从2016 年10 月到2016 年12月期间,该机构收集到的所有医院的上报数据。原始数据约1.3 亿条,涉及处方约4 400 万条,患者2 200万人。共有用药1.3 亿个,诊断1.9 亿个,平均每条处方对应的诊断只有5 个,用药只有3 个,比医保数据更加稀疏。此外,处方数据集中还有一个约1 万条数据的人工标注出异常数据的测试集。

本文首先在医保数据上对方法进行验证。在保险数据上的验证分为两个步骤:首先,由于保险数据中缺乏标注数据,本文利用人工扰动产生模拟的异常数据,尝试利用提出的方法检测数据中的人工扰动,以此对方法进行定量分析。而后本文在处方数据集上进行了验证,使用其测试集给出了该方法的准确率。

下面分别给出两个实验的结果。

4.1 实验1

针对不包含准确的可被标注的“异常”医保记录的数据集,本文将通过人工扰动的方法在其中添加少量的“异常记录”。具体的,在所有数据集中随机选取1%的医疗保险记录,固定每条记录的诊断信息,同时将记录的用药信息重新进行随机排列。经过扰动后,该1%的保险记录中每条记录原先的用药信息被随机选择的其他保险记录中的用药信息替代,因此可以看作是包含不匹配的诊断和用药信息的异常记录。

在添加扰动后的医疗保险数据集上,本文使用CAD 方法和本文所提出的方法进行了比较。对于CAD 方法,其核心在于在两类特征之间训练一个映射函数xA=f(xB),并且检验测试数据和该函数的偏离程度。本文采用一个单层的神经网络作为映射函数来训练两类特征间的关系。

为了衡量方法的效果,本文将所有测试数据按照异常检测方法给出的异常值进行排序,并且利用准确率-召回率曲线的面积(area under the precisionrecall curve,AUPRC)来衡量方法效果。在衡量正负样本非常不均匀的数据在某种分类方法下的效果时,AUPRC 的衡量准确性优于一般使用的接收者操作特征曲线的面积(area under the receiver operating characteristic,AUROC)[15]。

由于医疗保险数据中两类特征的维度较大,数据量较多,因此采用了较大的主题数量K值,在K=20,50,100 这三种情况下测试了各个方法的效果,结果用AUPRC 表示。具体结果见表2。

表2 中粗体部分是两种方法中最优的结果。从表中的实验结果可以看到:首先,向量点乘在所有的相似性度量中给出了最好的结果;其次,本文方法的效果显著优于CAD 方法的效果,可见其更适用于高维稀疏的处方数据。

Table 2 Artificial disturbance data anomaly detection result表2 人工扰动数据异常检测结果

4.2 实验2

来自合理用药检测网的处方数据有约4 000 万条未标注的处方数据,以及人工标注的1.5 万条测试数据,其中有3 000 余条数据被标记为异常数据。本文在处方数据集上进行了实验2,首先使用未标注的处方数据训练得到MV-LDA 模型,而后在测试集上使用提出的方法进行异常检测,将异常检测的结果与人工标注的结果相比对来评估方法的效果。

为此在这里使用了一个匹配的方法来计算异常值。比对了模型在主题数目为20、25、30 下取得的效果。首先比较模型检出的异常值前100 的处方中异常处方的个数,而后由于匹配的方法检测的是是否有不匹配的药物,因此将直接给出其检测出的所有异常的准确率和召回率。检测结果如表3 所示。

Table 3 Anomaly detection results of labeled prescription data表3 标注处方数据异常检测结果

这里可以看到在25 个主题下,MBAD 检测出了2 905 个异常处方,其中有37%的处方是被人工标记为异常的处方,占所有异常的32%。

而后观察了25 个主题下取得的结果,如表4 所示。从表4 中可以看出,当异常值的阈值设为3 以上时,能取到比较高的准确度,而当异常值降低时,检出的异常个数增加,但是准确率也急剧下降。也因此,通过设定一个异常值的阈值,MBAD 能够准确地发现异常处方。

Table 4 Detailed results of model with 25 topics表4 25 个主题下检测详细结果

Table 5 Example of detected abnormal prescription表5 异常处方检测实例

最后展示了模型检出的异常值大于或等于所设定的异常阈值(本例中异常阈值设为3)的异常处方,如表5 所示。

综上所述,本文所提方法能够帮助专家更加高效地在海量的保险数据中发现潜在的异常记录,并且能够覆盖多种异常情况。这些异常情况通常是由于用药和诊断两类高维特征之间的不匹配造成的。这种高维特征之间的多对多关系难以用传统的数据挖掘方法进行刻画。多视图主题模型在对高维特征降维的同时保持了特征之间的对应关系,因此能够有效地用于发现这类异常。

5 总结及未来工作

医疗异常处方检测技术是结构化医疗数据挖掘领域的重要部分,由于处方数据的规模巨大,人工检测难度大,耗时久。此外,由于处方数据高维稀疏的特性,用于异常检测的常用机器学习算法无法在处方数据上取得良好的效果。于是,本文提出了一种异常处方检测方法,该方法基于主题模型,能够检测处方数据中的异常处方。由于主题模型有着降维的效果,可以将实例的表示向量从高维的特征空间降至低维的主题空间,因此可以“适应”高维稀疏的特性,使本文方法取得比传统异常检测方法更好的效果。本文的主要工作包括:

(1)提出了可以对特征之间存在着关联关系的结构化数据进行主题建模的多视图主题模型。文中把不同种类的特征看成是描述同一个实例的不同视图中的特征,基于机器学习中多视图学习的思想,提出了MV-LDA 模型,并讨论了其求解过程。多视图主题模型能够在抽取主题的同时准确刻画不同类别特征间对应关系。基于模型保留的对应关系,本文提出了一个异常检测算法。

(2)使用多视图主题模型提出了一个异常处方检测方法,并通过实验证明了方法的有效性。本文基于MV-LDA 模型,实现了一个能够从大量的处方中检测异常处方的方法。通过验证,该方法比其他方法的检测准确率更高、更有效,且扩展性更好。由于MV-LDA 可以扩展到任意视图并得到多种视图之间的对应关系,本文方法可以更方便地检测多种特征之间的匹配异常。

根据这一方法,本文实现了相应的工具,可以用于检测医疗数据中的异常,并在真实数据集上进行了实验。实践表明本文工作在异常处方检测中能取得较好的效果。

本文所介绍的异常检测工具已经能够初步检测不同类型特征之间的不匹配,但异常检测的准确性仍有提高空间。未来将尝试在本文提到的方法中融入领域知识,以求进一步提升准确率;此外,在模型中损失了实例之间的时序信息,如果将这个因素考虑进方法中,准确率可能会进一步提高。

猜你喜欢
视图实例处方
人间处方
卫健委新规:药师将审核医生处方
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
《投影与视图》单元测试题
Django 框架中通用类视图的用法
完形填空Ⅱ
完形填空Ⅰ
祝您健康处方(8)烧心、反胃
祝您健康处方(7)心悸、过早搏动