关联规则挖掘 ---- Apriori算法与CBA算法

基本概念:

通过数据的关联性进行分析挖掘,适合用于大数据样本中。

项集:包含0个或多个项的集合。包含k个项就是一个k项集

事务:表示事件

(比如每次去商场购买东西是一次事务,而实际购买到的东西就是项集)

支持度:说明给定数据集的频繁程度,sup(x->y)表示x和y同时出现的概率
置信度:说明推理的可靠程度,con(x->y)表示在x出现的情况下,出现y的概率


局限性:
支持度:许多潜在的有意义的模式由于包含支持度小的项而删去
置信度:忽略了规则后键(箭头后面那个项)的支持度,忽略了逆关系


最大频繁项集:
定义:最大频繁项集的所有直接超集都是不频繁的
性质:最大频繁项集和它的所有子集都是频繁项集
问题:缺失支持度信息


闭频繁项集:
闭项集定义:闭频繁项集具有和它的所有直接超集不同的支持度数
闭频繁项集定义:在闭项集的基础上支持度达到支持度阈值的项集
性质:非闭频繁项集的支持度必定是它的所有直接超集中支持度的最大值
(最大频繁项集一定是闭频繁项集,但是闭频繁项集不一定是最大频繁项集,因为闭频繁项集的直接超集有可能是频繁的)


Apriori算法:频繁项集生成

原理:如果一个项集是频繁的,则它的所有子集也是频繁的。如果一个项集不频繁,那么它的超集也一定不频繁,

           因此可以从子集往上生成,因此我们就可以进行候选项集的产生与剪枝操作。

实现: 用频繁的(k – 1)项集生成候选的频繁 k项集

Lk表示包含k项的候选集,Sk表示包含k项的候选集的频繁项集,假设Lk的项集是按顺序排列的

(1)自连接:把所有的Lk-1p跟Lk-1q连接起来,得到k项集

(2)修剪:把不频繁的k项集剪掉

瓶颈:(1)巨大的候选项集  (2)多次扫描数据库

算法过程如下:


CBA算法是基于关联规则的分类算法,利用Apriori挖掘出的关联规则做分类判断。
分类器的建立:
(1)找出所有形如xi1∧x => Ci 的关联规则,即右部为类别属性值的类别关联规则(CAR)

         (2)对于左部相同,右部不同的关联规则,选择最高置信度的作为可能规则。

算法原理:(参考http://blog.csdn.net/androidlushangderen/article/details/43818787)

CBA算法作为分类算法,他的分类情况也就是给定一些预先知道的属性,然后叫你判断出他的决策属性是哪个值。判断的依据就是Apriori算法挖掘出的频繁项,如果一个项集中包含预先知道的属性,同时也包含分类属性值,然后我们计算此频繁项能否导出已知属性值推出决策属性值的关联规则,如果满足规则的最小置信度的要求,那么可以把频繁项中的决策属性值作为最后的分类结果。具体的算法细节如下:
1、输入数据记录,就是一条条的属性值。
2、对属性值做数字的替换(按照列从上往下寻找属性值),就类似于Apriori中的一条条事务记录。
3、根据这个转化后的事务记录,进行Apriori算法计算,挖掘出频繁项集。
4、输入查询的属性值,找出符合条件的频繁项集(需要包含查询属性和分类决策属性),如果能够推导出这样的关联规则,就算分类成功,输出分类结果



阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页