一、关联规则的概念
关联规则(association rules)就是从frequent patterns中发现的规律。而frequent patterns就是在数据集中频繁出现的patterns(例如,itemsets, subsequences, substructures)。在实际的association rules挖掘中,有以下几个基本定义:
1. session:有1个unique key,用于标识一组transactions的集合。例如,超市中一个用户一次进行的所有购买,或者某个客户在购物网站上的所有购买。
2. transaction:在sessions的定义中已经提到;每一个transactions中与session关联的key与另一个key(可以为一个编号,也可以直接是时间),构成1个unique keys组合,用于区别不同的transaction。例如,某个用户购买物品的一条记录就是transaction。
3. item:一次transaction中,除了unique keys组合外,其它的attributes都可作为item。例如,一条购买记录的物品就作为item。
4. itemset:一个session中,多次transactions所涉及的多个items可组成一个itemset。
5. association rule:1个session所有的关系X=>Y。这里X为该session中的1个item或itemset,称作antecedent;而Y为另1个item或itemset,称作consequent。通常Y只是1个item。例如{A,B,C}=>{D},这里A,B,C,D都是items,这个规则可以解释为:买了A,B,C,就会买D。
二、关联规则的评价指标
有了以上的定义,我们就可以定义一些评价association rules的指标了
1. support count:满足该association rule的所有sessions的数目。若该association rule为X=>Y,其中X={A,B,C},Y={D},则
supoort_count(X=>Y) = count{ABCD}
以上是规则的support_count,而任意子集的support_count,也就是count
support_count(Y) = count(Y) = count{D}
2. support:定义为
support(X=>Y) = P(X∪Y)
= support_count(X=>Y)/count_all
= count{ABCD}/count_all
以上定义了规则的support,实际上每个子集也可以有support,定义为
support(Y) = P(Y)
= support_count(Y)/count_all
= count{D}/count_all
3. confidence:定义为
confidence(X=>Y) = P(Y|X) = P(X∪Y)/P(X)
= support(X=>Y)/support(X)
= support_count(X=>Y)/count(X)
= count{ABCD}/count{ABC}
4. lift:定义为
lift(X=>Y) = confidence(X=>Y)/support(Y)
= P(X∪Y)/P(X)/P(Y)
= (support_count(X=>Y)/count_all)/(count(X)/count_all)/(count(Y)/count_all)
= count{ABCD}*count_all/count{ABC}/count{D}
如果把在session中各个items/itemsets出现的先后顺序考虑进来,则support_count(X=>Y)也要考虑X和Y出现的顺序。因此定义更改为:
support_count(X=>Y)=count{ABC->D}
可以解释为,先买了A,B,C,在购买D
三、指标小结
再把前面指标的定义总结一下:设association rule为X=>Y,其中X={ABC},Y={D}
1. antecedent support: P(X) =count{ABC}/count_all
2. consequent support: P(Y) =count{D}/count_all
3. rule support: P(X∪Y) =count{ABCD}/count_all
4. confidence: P(X∪Y)/P(X) =count{ABCD}/count{ABC}
5. lift: P(X∪Y)/P(X)/P(Y) =count{ABCD}*count_all/count{ABC}/count{D}