6.1问题定义
关联分析(association analysis) 用于发现隐藏在大型数据集中有意义的联系,所发现的联系可以用关联规则或者频繁项集的形式表示
项集和支持度计数
以购物篮数据集为例
TID | 面包 | 牛奶 | 尿布 | … |
---|---|---|---|---|
1 | 1 | 1 | 0 | … |
2 | 1 | 0 | 1 | … |
… | ||||
5 | 1 | 1 | 1 | … |
令 I = { i 1 , i 2 , … , i d } I=\{i_1,i_2,\ldots,i_d\} I={ i1,i2,…,id}表示所有项的集合, T = { t 1 , … , t N } T=\{t_1,\ldots,t_N\} T={ t1,…,tN}表示所有事务的集合。在关联分析中包含0个或多个项的集合被称为项集(itemset).如果一个项集包含k个项,则称他为k-项集。事物的宽度定义为事务中出现的项的个数。项集的另一个重要性质是支持度系数,即包含特定项集的事务数,可以表示为: σ ( X ) = ∣ { t i ∣ X ⊆ t i , t i ∈ T } ∣ \sigma(X)=|\{t_i|X \subseteq t_i,t_i\in T\}| σ(X)=∣{ ti∣X⊆ti,ti∈T}∣其中|·|表示为集合中元素的个数。
关联规则(association rule)
关联规则是形如 X → Y X\to Y X→Y的蕴含表达式,其中X和Y是不相交的项集。关联规则的强度可以用支持度(support)和置信度(confince)度量.支持度可以用于给定数据集的频繁程度,而置信度确定Y在包含X的事务中出现的频繁程度。 s ( X → Y ) = σ ( X ∪ Y ) N c ( X → Y ) = σ ( X ∪ Y ) σ ( X ) s(X\to Y)=\frac{\sigma(X\cup Y)}{N}\\ c(X\to Y)=\frac{\sigma(X\cup Y)}{\sigma(X)} s(X→Y)=Nσ(X∪Y)c(X→Y)=σ(X)σ(X∪Y)支持度低的规则可能是偶然出现的,置信度低的规则Y,在出现X的事务中出现的可能性较低。
关联规则挖掘任务分解为两个子任务
- 频繁项集产生:发现满足最小支持度阈值的所有项集。
- 规则的产生:从上一步发现的频繁项集中提取所有的高置信度的规则,这些规则称为强规则。也就是说这些规则XY同时出现的概率很高
6.2频繁项集的产生
通过格结构(lattice structure)来枚举可能的项集,经过每个候补项集与事务进行比较筛选出频繁项集。
为了减少频繁项集的计算复杂度:
- 减少候选项集的数目。运用先验原理
- 减少比较次数。可以使用更高级的数据结构或者存储候选项集或者压缩数据集
这些方法在后面的章节会有讨论
6.2.1先验原理
如果一个项集是频繁的,那么他的所有子集一定也是频繁的。相反如果一个项集是非频繁的,那么他的超集一定也是非频繁的。
一旦发现一个项集是非频繁的,整个包含它的超集的子图可以被立刻剪枝。这种基于支持度度量剪枝的策略称为基于支持度的剪枝。这种策略依赖于一个关键性质,即一个项集的支持度绝不会超过它的子集的支持度
6.2.2Apriori算法的频繁项集产生
| k = 1 k=1 k=1
| F k = { i ∣ i ∈ I ∧ σ { i } ≥ N × m i n s u p } F_k=\{i|i\in I\land\sigma\{i\}\ge N\times minsup\} Fk={
i∣i∈I∧σ{
i}≥N×minsup} ( 发 现 所 有 的 频 繁 1 − ∣ 项 集 ) (发现所有的频繁1-|项集) (发现所有的频繁1−∣项集)
| r e p e a t repeat repeat
| k = k + 1 \quad k=k+1 k=k+1
| C k = a p r i o r i − g e n ( F k − 1 ) \quad C_k=apriori-gen(F_{k-1}) Ck=apriori−gen(Fk−1) ( 产 生 候 选 项 集 ) (产生候选项集) (产生候选项集)
| f o r 每 个 事 务 t ∈ T d o \quad for 每个事务t∈T do for每个事务t∈Tdo
| C i = s u b j e c t ( C k , t ) \qquad C_i=subject(C_k,t) Ci=subject(Ck,t) ( 识 别 属 于 t 值 的 所 有 候 选 ) (识别属于t值的所有候选) (识别属于t值的所有候选)
| f o r 每 个 候 选 项 集 c ∈ C t \qquad for 每个候选项集c \in C_t for每个候选项集c∈Ct do
| σ ( c ) = σ ( c ) + 1 \qquad \sigma(c)=\sigma(c)+1 σ(c)=σ(c)+1 ( 支 持 度 计 数 增 值 ) (支持度计数增值) (支持度计数增值)
| e n d f o r \qquad end\ for end for
| e n d f o r \quad end\ for end for
| F k = { c ∣ c ∈ C k ∧ σ ( c ) ≥ N × m i n s u p } ( 提 取 频 繁 k − 项 集 ) \quad F_k=\{c|c\in C_k \land \sigma(c)\ge N \times minsup\}(提取频繁k-项集) Fk={
c∣c∈Ck∧σ(c)≥N×minsup}(提取频繁