数据挖掘|关联规则Apriori算法详解及其在中医医案中的应用

时间:2024-04-09 07:35:26

由于本菜鸡所学专业为中医院校的医学信息工程,所以接触较多的是利用多种算法处理中医医案数据。本文简单介绍传统数据挖掘关联规则算法中的Apriori算法,以及在挖掘中医医案辨证规律中的应用。并简单分析传统算法缺点,提出简要的改进思路。

一、关联规则简介

引入:“啤酒和尿布”
通过对超市数据进行分析,发现hin多男性在买尿布的时候会买几瓶啤酒,因为年轻的爹给娃买尿布的时候也会顺带着给自己带瓶啤酒回去LOL。So,在超市调整货架后,明显的提升了超市啤酒尿布的销量。

简单来说,关联规则就是用来找规律的。(不过数据量比较庞大,所以找规律时比较复杂)

关联规则目的:从海量数据中找出事物之间存在的隐藏的关系
形如X→Y的蕴涵式(若X,则Y)
X:关联规则的先导
Y:关联规则的后继

二、Apriori算法简介

Apriori这个单词啥意思呢?翻翻小字典,发现【adj. 先验的;推测的,adv. 自原因推及结果地】有这两层意思。
所以,很好理解,他是关联规则的一种算法,是用来挖掘海量医案中潜在的隐性规律的。而且是那种肉眼看不出来的规律嘤嘤嘤。

三、Apriori步骤

核心步骤有两个。
Step1:找频繁项集
所有元素中共同出现概率较大的元素集合(很好理解,就是利用概率,找出共同出现很频繁的一组数据,以集合形式呈现)

Step2:从频繁项集找出关联规则
从频繁项集中找出规则X→Y,X和Y可能为单个元素,也可能为多个元素。(可以理解为:X出现的条件下,Y出现的可能性很大,找出这样若干组X、Y,计算即条件概率

Step1 找频繁项集

频繁项集是什么?是一个集合,集合里是共同出现概率偏大的一组数据。

求解频繁项集时利用的评价指标为支持度Support(名字这么好听……说白了就是共现概率呗)
Support(X,Y)=P(XY)

这里有一个规定:
如果一个项集是频繁项集,则它的所有子集都是频繁项集;如果一个集合不是频繁项集,则它的所有父集都不是频繁项集。(很容易理解叭)
利用这样的思想即可进行下面的步骤。此处举例说明。

已知有4条数据,和ABCDE五个元素,表格展示了每条数据中不同元素的分布情况。
数据挖掘|关联规则Apriori算法详解及其在中医医案中的应用
目的是为了找到一个元素都出现很频繁的集合。先设定支持度即共现概率的阈值,若计算结果小于该值,则表示出现不频繁,自然频繁项集中就没有这些元素。
设定支持度阈值为0.5。
1、先从一元集合入手,共ABCDE五个数据,所以第一步得到{A}{B}{C}{D}{E}五个一元元素集合,计算每个集合中元素出现的概率,如{A}出现概率为2/4,以此类推。将小于0.5的集合舍去,即{D}。
2、得到{A}{B}{C}{E}四个一元集合,进一步找二元集合,即将刚才的四个一元集合排列组合拼接,得到{AB}{AC}{AE}{BC}{BE}{CE},再次计算二元集合内部元素的支持度,如{AB}支持度为AB共同出现的概率1/4,小于0.5,舍去。同理,得到符合要求的二元集合。
3、同理,增加集合元素数,元素数为3、4……时,计算出支持度……得到最后的结果,频繁项集为{BCE}
数据挖掘|关联规则Apriori算法详解及其在中医医案中的应用
数据挖掘|关联规则Apriori算法详解及其在中医医案中的应用

Step2 找关联规则

规则是什么?是一个蕴含式X->Y(若X即Y),且X、Y同属于一个集合,X、Y无交集。

计算关联规则标准时利用的评价指标为置信度Confidence(名字依旧好听……其实就是条件概率)
Confidence(X,Y)=P(Y|X)

找关联规则时是通过频繁项集的子集得到的,{BCE}的子集有{B},{C},{E},{B,C},{B,E},{C,E},计算这些子集两两之间的置信度,将小于阈值的规则舍去。
设定置信度阈值为0.5。
如{B}->{C}即计算B出现的情况下C出现的概率,为2/3。同理,计算其他。最后得到下图符合条件的结果。
数据挖掘|关联规则Apriori算法详解及其在中医医案中的应用

四、算法缺点

实验数据为中医医案,实验目的为找中医辨证规律,即症状、病位、病性、症状两两之间的关系。
数据为excel表格,每一行是一条医案,用Apriori明显有两个缺点。
1、重复度太高。结果会有A->B,A->C,A->BC,显然前两个规则是重复的。当然这和阈值设定有关,如果阈值太低,重复度就会惊人的高!
2、易过滤出现次数少但很重要的数据。比如实验时发现“证型”数据总是被筛除,支持度阈值小于0.04时,频繁项集中才出现证型。那阈值低了之后,能确保结果出现证型这类比较少的数据,可是其他数据很多重复的呀,这就很矛盾。
3、规则前后项类别混杂。由于频繁项集里的元素会有不同证类型数据,而找规则时是利用频繁项集子集,所以不同证类别地位平等,就导致结果会有类似“症状,病位->病位,病性”这种,明显不符合要求。

五、中医药数据挖掘的改进方法

以“症状->病位”的规则为例。
将原有症状数据和病位数据单独抽取出来,做两个0-1矩阵,每个矩阵行为医案索引,列为所有出现过的症状或病位。
然后计算每一个症状到每一个病位的共现频率和条件概率,设定二者阈值,筛选出符合要求的二元规则,最后将重复以元素聚合。

okk
以上就是全部内容啦
下期再会~