码迷,mamicode.com
首页 > 其他好文 > 详细

关联规则

时间:2017-09-30 13:19:32      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:color   方法   除了   事物   阈值   image   分类   cond   依次   

关联规则

1 关联规则

关联规则挖掘的目的是在数据项目中找出所有的并发关系,除了基本Aprioris算法,还有一些常用的改进算法,例如多最小支持度的关联规则挖掘,分类关联规则挖掘。

Aprioris算法基于演绎原理(或称为向下封闭属性)来高效地产生所有频繁项目集。算法基于逐级搜索的思想,它采用多轮搜索的方法,每一轮搜索扫描一遍整个数据集,并最终生成所有的频繁项目集合。

多最小支持度算法简称为"MS-Apriori算法",它通过对项目集合中的项目基于最小项目支持度值来进行升序排序。该算法也是基于逐级搜索的,通过多次遍历数据之后产生所有频繁项目集。

分类关联规则挖掘(Class Association Rules,CAR)和一般的关联规则有两点不同,第一点是:CAR的后件只有一个项目,第二点是:CAR的后件只能从分类标识集合中选取。项目集合中的项目都不能作为后件使用,分类标识集合中的项目也不能作为前件使用。

下面通过具体应用说明上述三种关联规则的应用与差别。

首先给出一个事物集合的例子。

技术分享

给定最小支持度minsup=30%和最小置信度mincof=80%。通过三种数据挖掘方法,找寻事物集合中的关联规则。

1.1 Apriori算法

技术分享

Apriori算法分两步进行,第一步生成所有频繁项目集,第二步从频繁项目集中生成所有可信关联规则。

1.1.1 生成频繁项目集过程

(1)在第一轮搜索中,算法计算出所有只包含一个项目的项集在事务中的支持度,并且写出单项目频繁项目集(即1-频繁项目集)。(算法第1-2行)

(每个频繁项目集后的数字表示这个频繁项目集的支持计数,在例子中支持度计数大于等于3即可)

  1. 随后每一轮搜索都分为三步进行:
  2. 将算法第(k-1)生成的频繁项目集集合技术分享作为种子集合产生候选项集集合技术分享,而技术分享中的这些候选项目集都是可能的频繁项目集。这个过程通过candidate-gen函数完成。

    技术分享

    Candidate-gen(候选项集集合技术分享的生成)函数:该函数可以分成两步:合并和剪枝

    合并:这一步将两个(k-1)-频繁项目集合并来产生一个可能的k-候选项集c。两个频繁项目集的前k-2个项目都是相同的,只有最后一个项目是不同的。随后c被加入到候选项目集合技术分享中。

    剪枝:从合并步中得到的候选项集集合并不是最终的技术分享。该候选项集要满足向下封闭原理,需要判断c的所有(k-1)-子集是否都在技术分享中。

  3. 随后算法对整个事务数据库进行扫描,计算技术分享中每个候选项集c的支持度。(算法5-10行)
  4. 在本轮搜索的最后,算法计算出技术分享中每个候选项集的支持度,并将符合最小支持度要求的候选项集加入技术分享中。(算法11行)
  5. 算法最终输出的是所有频繁项目集的集合F。

    1.1.2 事例生成频繁项目集的过程

    技术分享:{{牛肉}:4,{鸡肉}:5,{牛奶}:4,{奶酪}:4,{衣服}:3}

    技术分享:{{牛肉,鸡肉},{牛肉,牛奶},{牛肉,奶酪},{牛肉,衣服},......}

    ?

    技术分享:{{牛肉,鸡肉}:3,{鸡肉,牛奶}:4,{牛肉,奶酪}:3,{鸡肉,衣服}:3,{衣服,牛奶}:3}

    技术分享:{{鸡肉,衣服,牛奶}}

    技术分享:{{鸡肉,衣服,牛奶}:3}

    1.1.3 规则生成的过程

    技术分享

    首先,需要明确一点,当给定一个频繁项目集f时,如果一个关联规则的后件为a,那么所有以a的任一非空子集为后件的候选规则都是关联规则。(先前条件)

    算法如下:

  6. 从频繁项目集f中生成所有后件只有一项的关联规则。
  7. 然后利用所有得到的关联规则和candidate-gen()函数,调用ap-genRules函数生成所有2-后件候选关联规则,依次类推,同时要满足先前条件,即1-后件可以组合生成2-后件。

    1.1.4 事例规则生成的过程

    技术分享中的频繁项目集生成1-后件候选关联规则:

    规则1:鸡肉,衣服技术分享牛奶[支持度=3/7,置信度=3/3]

    规则2:鸡肉,牛奶技术分享衣服[支持度=3/7,置信度=3/4](删除)

    规则3:衣服,牛奶技术分享鸡肉[支持度=3/7,置信度=3/3]

    技术分享中的频繁项目集生成2-后件候选关联规则:

    规则4:衣服技术分享牛奶,鸡肉[支持度=3/7,置信度=3/3]

    1.2 MS-Apriori算法

    ?

    技术分享

    2.1.1 生成频繁项目集过程

    MS-Apriori算法的详细流程。

    算法第1行对I中的所有项目根据项目的MIS值(存储在MS中)进行排序。

    算法第2行调用init-pass()函数对数据进行第一遍遍历,得到生成技术分享(基数为2的候选项集集合)的种子L。Init-pass函数分为两步:

  8. 扫描一遍数据,计算每个项目的支持计数。
  9. 按存储顺序在M中找出第一个满足技术分享的项目i,将其加入L中。对于M中i之后的每个项目j,如果技术分享,则将j加入L中。

    之后对数据的每一遍遍历,算法都执行三步操作:

    1. MScandidate-gen函数利用在第(k-1)轮找到的频繁项目集集合技术分享生成候选项集集合技术分享。K=2是一个特例,这是候选项集集合的函数为Level2-candidate-gen()。

    技术分享

    Level2-candidate-gen函数:函数有一个参数L,返回一个集合,是所有2-频繁项目集集合的超集。同时要满足技术分享

    技术分享

    MScandidate-gen函数:函数也分为两步,合并和剪枝。合并步和candidate-gen()函数一样。剪枝步则不同。

    对于c的每个(k-1)-子集s,如果s不在技术分享中,且s包含c[1],也即c中拥有最低MIS值的项目,则c就能从技术分享中删除。如果这个s不不包含c[1],则即使s并不在技术分享中,我们也不能把c删除,因为我们不能断定s不满足MIS(c[1])。

    1. 扫描数据,计算技术分享中各项集的支持计数。对每个候选项集c,算法不仅计算它的支持计数,同时也计算去掉c的第一个项目后的支持计数,也即c-{c[1]},这个数据将在关联规则的生成阶段用到。

    ?

    注意:在实际应用中,如果不想生成某些频繁项目集,只需将该频繁项目集的最小支持度设置为101%。

    2.1.2 规则生成的过程

    在MS-Apriori算法中,仅仅记录每个频繁项目集的支持计数是不够的。同时我们还要避免头项目问题的产生,即只有当频繁项目集中具有最小MIS值的项目处于规则的后件时才会发生头项目问题。

    1.3 分类关联规则

    生成分类关联规则的算法称为CAR-Apriori,是基于Apriori算法的。CAR-Apriori算法需要多次遍历数据来生成所有频繁项目规则的项。

    技术分享

    不同于一般的关联规则挖掘CAR可以直接一步生成,关键的操作是找出所有支持度高于最小支持度阈值的规则项。一个规则项表示为:

    (condset,y)

    其中condset属于I是一个项目集合,成为条件集,y属于Y是一个类标。一个条件集的支持计数表示为condsupCount,是T中包含该条件集的事物的数量,称为条件集支持计数。一个规则项(condset,y)的支持计数表示为rulesupCount,是T中包含条件集countset且类标为y的事物的数量,称为规则支持计数。只要满足最小支持度的规则项都称为频繁规则项,其余的都称为非频繁规则项。

    在第一遍遍历中,算法计算每个1-规则项的支持计数。所有的1-候选规则项的集合为:

    技术分享

    算法第2行决定技术分享中候选1-规则项是否频繁的。从频繁1-规则项中,我们生成1-前件CAR。后续的遍历,以K-1轮生成的频繁(k-1)-规则项的集合为种子生成k-候选规则项的集合。每个候选k-规则项的真实支持计数,包括condsupCount和rulesupCount,在对事物数据集合的扫描中得到更新。在数据扫描结束后,算法决定技术分享中哪些候选k-规则项是真正频繁地。与Aprioir算法中唯一的不同是,CARcandidate-gen()中,仅仅将具有相同 分类的规则项通过合并它们的条件集进行合并。

关联规则

标签:color   方法   除了   事物   阈值   image   分类   cond   依次   

原文地址:http://www.cnblogs.com/smuxiaolei/p/7614241.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!