基于关联规则挖掘药物副作用
2020-07-18张志山陈育煌
◎张志山 陈育煌
(1.惠州卫生职业技术学院教育技术与信息中心;2.惠州卫生职业技术学院药学系,广东惠州516025)
从技术上而言,数据挖掘就是从大量的已知的数据中,补齐修正不完整的数据,去除噪音数据,从中寻找那些人们往往需要依赖经验才能体会的潜在知识和信息的过程[1]。由于新药临床前诸多因素的制约,对于新药的副作用的认识非常局限,必须通过药品的上市后监测(Post Marketing Study,PMS)即IV期临床试验,完成对一种新药的全面评价[2]。另一方面,药物副作用(ADR)引起的病患占据所有医院病患的6%,这俨然成为导致医院死亡的第五大因素[3],可见,药物副作用带来的危害越来越大。
目前,对于上市后的药品安全性评估主要有神经网络、回归分析法、数据离散法、函数依赖法等,这些算法往往需要知道各参数之间的关系,训练时间较长,过程复杂,额外开销大,很难推广。影响评估数值的因素很多,各种因素之间存在着复杂的非线性联系,采用一般的数学统计方法很难准确预测其含量[4]。文献[5]提出的基因表达式编程(gene expression programming,GEP)是进化计算的新成员,具有遗传算法(genetic algorithm,GA)和遗传规划(genetic programming,GP)的优点,同时克服了GA和GP的缺点,但是GEP算法在进化过程中容易陷入局部最优不能自拔。文献[6]则提出了一种基于种群密集度的GEP算法挖掘药物不良反应,对文献[5]的方法进行改进,提出了种群密集度和新陈代谢等概念,证明了种群密集度的性质等,为进一步加强ADR监测提供一种有效的技术手段[6]。文献[7]则利用GEP算法建立起对脂肪肝的辅助诊断的新方法。
关联规则挖掘是数据挖掘中的一种重要应用。它通过对数据集的分析处理,挖掘出数据集中频繁项之间的有趣联系[8]。关联规则挖掘中尤以Apriori算法最为经典。该算法结构简单、数据要求低,但Apriori算法也存在一些缺点,如要对数据库多次扫描,内存占用大、候选集项目多,运行效率不高[9]。Apriori算法涉及的主要概念如下:支持度是指项集出现的概率,其公式是Support(A->B)=P(AUB)。置信度是指在总事物集中包含A的同时也包含B的百分比,其公式是Confidence(A->B)=P(A|B)=P(A,B)/P(A)=P(AUB)/P(A)。提升度Lift(A->B)=P(B|A)/P(B)。当提升度为1时,表示A与B相互独立,即是否有A对于B的出现无影响。当提升度满足0<Lift(A->B)<1时,表示A与B存在负相关联系。当提升度满足Lift(A->B)>1时,表示A与B存在正相关联系。强规则是指同时满足最小支持度和最小置信度的关联规则[8],否则就是弱规则。
1 算法的研究与改进
(1)选择频繁项集。关联规则挖掘并不是每次都要挖掘所有的属性关联,对数据库中无须挖掘的属性谓词,算法不予考虑,进行剔除。
(2)基于维数目约束。通常,一个规则的有用与否最终取决于用户的需要,所以只有用户才能决定关联规则的取舍。为此,算法中加入了number参数(用户想知道的最大的频繁项集数目)作为维数目约束值,算法根据number值选择扫描到L[2],L[3]……L[number]个链表。
(3)基于事务集的约简。第一次迭代扫描数据库D1后,剔除不可能是频繁1-项集的事务,更新数据库为D2,第二次迭代扫描数据库D2后,剔除不可能是2-项集的元素,更新数据库为D3,以此类推,直到数据库Dnumber。从而达到降低I/O开销,减少数据库和谓词集存储,提高挖掘速度的目的。
(4)基于链表结构。从第二次扫描数据库D2开始,将对应的事务数据库拆解成用户需要的各类候选2-、3-……K-候选集,并把结果存入对应的链表结构中,直至产生所有的候选谓词集。最后,分别计算各候选集的支持度,满足最小支持度和最小置信度的即为频繁k项集。
根据上述改进算法思想得到该算法的伪代码如下:
输入:原始数据库D1,最小支持度support,最小置信度confidence,最大频繁项集数量number。
输出:正关联规则positive rule、负关联规则negative rule。
//找出候选L1,在LK中加入频繁1-项谓词集,在Ck中加入候选1谓词集。
Dime set=get Multi Dime(t.属性);//搜索频繁谓词集,并计数
2 实验
根据上述算法设计思想,进行系统的分析和设计。药物副作用挖掘系统的结构如图1所示,具体包括三个模块,从上到下分别是模型可视化分析模块、关联规则算法模块和数据预处理模块。
每个副作用拥有一个UMLS(Unified Medical Language System)一体化医学语言系统的概念编号CUI,并由含义相同的一种或者多种副作用名称构成[10]。具体如表1所示。
图1 关联规则挖掘系统架构
表1 UMLS分配
实验平台:PC为I5-7200U-2.5GHZ,双核,8GB的DDR4内存,256GB固态硬盘,widows7旗舰版64位。用户操作子系统的WEB服务器采用Apache的tomcat7作为容器管理,数据库采用微软的SQL Server2008R2存储用户操作数据。数据挖掘子系统采用Weka 3.6作为基础框架做进一步扩展开发。对Apriori算法和本文改进算法进行模拟,得到如图2所示的执行时间比较。可见,笔者改进算法在各个支持度下都比Apriori算法执行效率高。
应用笔者改进算法,得到如表2、表3和表4所示的,频繁1-项集、频繁2-项集和频繁3-项集出现频率最高的5个。得出结论,药物副作用中,皮肤损伤最为常见,当2个副作用同时出现时,皮肤损伤和视觉系统伤害最为常见。当3个副作用同时出现时,皮肤损伤、神经系统损害和重度全身性损害最为常见。
图2 执行时间比较
实验结果分析,从表5得到部分关联规则,第一项表示,当皮肤损害和视觉系统伤害同时发生时,有62%的可能性会同时导致重度全身性伤害,以及有62%的可能性肝胆不受损。最后一项表示,当重度全身性伤害和非呼吸系统损害同时发生时,有54%的可能性会使肝胆伤害,以及有54%的可能性神经系统不受伤害。
表2 频繁1-项集频率最高的前5个
表3 频繁2-项集频率最高的前5个
表4 频繁3-项集频率最高的前5个
表5 部分关联规则
3 结语
笔者对经典关联规则算法进行升级改造,提出了基于维数目约束、事务集约简的关联规则挖掘算法,给出了改进算法的伪代码,并将算法思想,应用于药物副作用挖掘系统。该算法与经典Apriori算法相比,提高了挖掘速度,减少了存储空间,能够更加有效地挖掘出有研究价值的药物副作用关联规则,为药物研制和使用提供了科学决策依据,具有重要的意义。