一种基于FP-growth的药品推荐方法与流程

文档序号:15463923发布日期:2018-09-18 18:50阅读:1508来源:国知局

本发明涉及一种基于FP-growth的药品推荐方法,属于数据挖掘推荐技术领域。



背景技术:

当前,现代医疗技术已取得巨大进步。然而,各种药品的关联与其名称、药性复杂度也为医生开具处方的结果造成了一定干扰。

FP-growth算法是韩家炜等人在2000年提出的关联分析算法,它采取如下分治策略:将提供频繁项集的数据库压缩到一棵频繁模式树(FP-tree),但仍保留项集关联信息。在算法中使用了一种称为频繁模式树(Frequent Pattern Tree)的数据结构。FP-tree是一种特殊的前缀树,由频繁项头表和项前缀树构成。FP-growth算法基于以上的结构加快整个挖掘过程。而且算法已经被广泛的应用到商业、网络安全等各个领域,但还没有应用到医学领域。



技术实现要素:

本发明要解决的技术问题是一种基于FP-growth的药品推荐方法,将FP-growth算法应用到处方药品开单中作为优化编辑作用,提高医生开处方时对药品编辑的准确性与高效性。

本发明采用的技术方案是:一种基于FP-growth的药品推荐方法,包括如下步骤:

Step1、建立一个处方药品开单记录的数据库,患者编号作为标识符TID,对应处方药品集合的编号作为一个事务T,所有事务的集合为D;

Step2、对事务集D进行第一次扫描,计算每一个事务T中各项药品的支持度计数support_count_x,设置一个最小支持度阈值min_sup,support_count_x≥min_sup的药品作为频繁项保留,反之剔除,然后将频繁项按照支持度计数降序排列;

Step3、对事务集D进行第二次扫描,每读入一个事务T时,创建标记为其药品的节点,然后形成根节点null到药品节点的路径,直到每个事务都映射到FP-tree的一条路径,读入所有事务后形成FP-tree;

Step4、从FP-tree的每条路径的结尾节点依次向上提取出相应的项集,项集的支持度计数support_count_xj大于等于min_sup时,该项集作为频繁项集l保留,反之剔除;

Step5、设置一个最小置信度阈值min_conf;每个频繁项集l所产生的每个非空子集为s,若子集(l-s)与s的支持度计数之比大于等于最小置信度阈值min_conf,则输出强关联规则该强规则的置信度大小为l与s的支持度计数之比的值

Step6、将所计算出来的所有强关联规则按照其置信度confidence的大小进行排序,当输入一个药品时,通过关联规则得出与该药品相关联的其他处方药品。

具体地,所述步骤Step1中,处方药品开单记录数据库中每条信息包含患者编号字段及所开处方药品字段,患者编号作为标识符TID,对应处方药品集合的编号作为一个事务T,所有事务的集合为D,每一个药品编号作为一个项。

具体地,所述步骤Step2中,最小支持度阈值min_sup的大小由用户根据自己的需求自行设置。

具体地,所述步骤Step3中,路径由根节点null和对应的所有药品节点组成,其中药品节点的路径顺序为Step2中的频繁项支持度计数降序排序。

具体地,所述步骤Step5的关联规则置信度大小的计算公式如公式(1)所示:

其中:

式(1)和(2)中,min_conf为最小置信度阈值;l为频繁项集,l所产生的每个非空子集为s;support_count(l)、support_count(s)、support_count(l-s)分别为括号内字母的支持度计数,为强关联规则。

本发明的有益效果是:本发明先建立一个医院处方药品开单记录(包含患者编号及所开处方药品编号)的数据库,患者编号作为标识符TID,对应处方药品编号作为一个事务T,所有事务的集合为D;对D进行第一次扫描,计算并保留频繁项药品;然后,对D进行第二次扫描,构建频繁模式树FP-tree,并提取出频繁项集;其次,由各频繁项集产生相应的强关联规则,并计算出各强关联规则的置信度大小;最后,通过各强关联规则的置信度大小,将这些频繁项集进行推荐排序。本发明与现有技术相比,主要提供了FP-growth算法对开具处方药品编辑时起到优化推荐作用,提高医生开处方时对药品编辑的准确性与高效性。

附图说明

图1是本发明总体流程图;

图2是本发明步骤Step2详细流程图;

图3是本发明步骤Step3详细流程图;

图4是本发明具体实施方式中所举例子中Step3的流程图。

具体实施方式

下面结合附图和具体实施例,对本发明作进一步的说明。

实施例1:如图1-4所示,一种基于FP-growth的药品推荐方法,包括如下步骤:

Step1、建立一个处方药品开单记录的数据库,患者编号作为标识符TID,对应处方药品集合的编号作为一个事务T,所有事务的集合为D;

Step2、对事务集D进行第一次扫描,计算每一个事务T中各项药品的支持度计数support_count_x,设置一个最小支持度阈值min_sup,support_count_x≥min_sup的药品作为频繁项保留,反之剔除,然后将频繁项按照支持度计数降序排列;

Step3、对事务集D进行第二次扫描,每读入一个事务T时,创建标记为其药品的节点,然后形成根节点null到药品节点的路径,直到每个事务都映射到FP-tree的一条路径,读入所有事务后形成FP-tree;

Step4、从FP-tree的每条路径的结尾节点依次向上提取出相应的项集,项集的支持度计数support_count_xj大于等于min_sup时,该项集作为频繁项集l保留,反之剔除;

Step5、设置一个最小置信度阈值min_conf;每个频繁项集l所产生的每个非空子集为s,若子集(l-s)与s的支持度计数之比大于等于最小置信度阈值min_conf,则输出强关联规则该强规则的置信度大小为l与s的支持度计数之比的值

Step6、将所计算出来的所有强关联规则按照其置信度confidence的大小进行排序,当输入一个药品时,通过关联规则得出与该药品相关联的其他处方药品。

进一步地,所述步骤Step1中,处方药品开单记录数据库中每条信息包含患者编号字段及所开处方药品字段,患者编号作为标识符TID,对应处方药品集合的编号作为一个事务T,所有事务的集合为D,每一个药品编号作为一个项。

进一步地,所述步骤Step2中,最小支持度阈值min_sup的大小由用户根据自己的需求自行设置。

进一步地,所述步骤Step3中,路径由根节点null和对应的所有药品节点组成,其中药品节点的路径顺序为Step2中的频繁项支持度计数降序排序。

进一步地,所述步骤Step5的关联规则置信度大小的计算公式如公式(1)所示:

其中:

式(1)和(2)中,min_conf为最小置信度阈值;l为频繁项集,l所产生的每个非空子集为s;support_count(l)、support_count(s)、support_count(l-s)分别为括号内字母的支持度计数,为强关联规则。

所述步骤Step6的推荐方式中,假设给出以下几个关联规则及其置信度(Ii表示为第i个药品编号,置信度阈值设置为50%):

当医生输入处方药品I1时,算法则按前后顺序依次推荐出{I3,I5}、{I2,I3}的药品选项;当医生输入药品{I1,I2}时,算法则按前后顺序依次推荐出I4、I3的药品选项。

举例说明:下面结合举例的例子,详细说明本发明的方案:

一种基于FP-growth的药品推荐方法,所述方法的具体步骤如下:

Step1、建立一个处方药品开单记录的数据库,患者编号作为标识符TID,对应处方药品集合的编号作为一个事务T,所有事务的集合为D;具体地:

为方便阐述本发明,假设药品编号规则如下:

假设所建数据库中有如下处方药品开单记录数据:

Step2、对事务集D进行第一次扫描,计算每一个事务T中各项药品的支持度计数support_count_x。设置一个最小支持度阈值min_sup,support_count_x≥min_sup的药品作为频繁项保留,反之剔除,然后将频繁项按照支持度计数降序排列;具体地:

设置本案例中的最小支持度阈值为3,则得到的结果为:

Step3、对事务集D进行第二次扫描。每读入一个事务T时,创建标记为其药品的节点,然后形成根节点null到药品节点的路径。直到每个事务都映射到FP-tree的一条路径,读入所有事务后形成FP-tree;具体地:

因本案例中共有五条处方药品开单记录数据即五个事务T,所以将产生五条路径分支,如下图所示。

首先,读入第一个事务T,得到第一条路径分支<(f:1),(m:1),(c:1),(a:1),(p:1)>,如图4所示;其次,读入第二个事务T,得到第二条路径分支<(f:1),(m:1),(c:1),(a:1),(b:1)>,其中路径前四项与上一步相同,则在这四个节点的数目上加1,然后将(b:1)作为一个分支加在(a:2)节点后,成为它的子节点,如下流程图中的(b);依次循环类推,直至读入所有事务T,构建出完整的FP-tree;

Step4、从FP-tree的每条路径的结尾节点依次向上提取出相应的项集。项集的支持度计数support_count_xj大于等于min_sup时,该项集作为频繁项集l保留,反之剔除;具体地:

首先,从FP-tree的结尾节点p开始提取相应的项集,它的两个节点存在路径<(f:4),(m:4),(c:3),(a:3),(p:2)>和<(c:1),(b:1),(p:1)>。其中,路径<f,m,c,a,p>出现了2次,<c,b,p>出现了1次。但是由于最小支持度阈值是3,所以从FP-tree上只能提取出一个直接频繁集{(p:3)}(该符号表示项集中包含p,其支持度计数为3)。结尾节点b类似,只能提取出一个直接频繁集{(b:3)}。

然后,从FP-tree的倒数第二个节点a开始提取相应的项集,它的节点存在路径<(f:4),(m:4),(c:3),(a:3)>中。那么路径<f,m,c,a>出现了3次,所以从FP-tree上提取的频繁项集有:{(fmca:3)}、{(fma:3)}、{(fca:3)}、{(fa:3)}、{(a:3)}。

依次循环类推,节点c相应的频繁项集有:{(fmc:3)}、{(fc:3)}、{(mc:3)}、{(c:3)}。节点m相应的频繁项集有:{(fm:4)}、{(m:4)}。节点f相应的频繁项集有:{(f:4)}。将所有的频繁项集及其支持度计数统计到下表中。

Step5、设置一个最小置信度阈值min_conf;每个频繁项集l所产生的每个非空子集为s,若子集(l-s)与s的支持度计数之比大于等于最小置信度阈值min_conf,则输出强关联规则该强规则的置信度大小为l与s的支持度计数之比的值具体地:

设置最小置信度阈值min_conf=80%。为简要阐述该步骤,此处仅讨论Step4中f项作为前项的频繁项集,计算后所有关联规则及其置信度大小如下表所示。

则强关联规则仅有:

Step6、将所计算出来的所有强关联规则按照其置信度confidence的大小进行排序,当医生输入一个药品时,通过强关联规则得出与该药品相关联的其他处方药品,将其推荐给医生作为参考选项,从而对医生开具处方药品进行推荐优化;具体地:

将Step5所得强关联规则按其置信度大小排序,即当医生输入f(感康复方氨酚烷胺片)时,算法则按推荐选项m(板蓝根)作为下一个处方药品参考选项。

上面结合附图对本发明的具体实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1