基本概念
1.一些定义
- 定义I = {i1,i2,i3…….im} 为全局项的集合
- I 中部分项或全部项构成的集合称为项集。
- 事务ti对应 I 的一个子集,ti是事务的唯一标识,i 表示事务的序号。事务数据库D是事务的一个集合。
- 给定一个全局项集和事务数据库D , 一个项集 I 1在D上的支持度是包含 I1的事务在D中所占的百分比。
- 对于 I 的非空子集 I1 ,若支持度大于等于最小支持度min_sup , 则称 I1 为频繁项集。
- I1 项集中项的个数为K,称为k-项集 , 若 I1 是频繁项集,称为频繁k-项集。
2. 关联规则
关联规则研究的是事务集合内部的项集与项集之间的关系,这种关系有要有两种表现形式。关联规则挖掘:找出支持度大于等于minsup(最小支持度)并且置信度大于等于minconf(最小置信度)==的所有规则。
(1)支持度确定可以用于给定数据集(X和Y)的频繁程度。支持数除以事务总数
(2) 置信度确定Y在包含X的事务中出现的频繁程度。X与Y的支持数除以X的支持数。
(3) 提升度反映了X与Y的相关性,提升度>1且越高表明正相关性越高,提升度<1且越低表明负相关性越高,提升度=1表面没有相关性。负值,有相互排斥的作用.
Apriori性质
- 若A是一个频繁项集,则A的每一个子集都是一个频繁项集。
- 若A是一个非频繁项目集,则A的所有超集是非频繁项目集。
- 若X ⊆ Y ,则support(X) ≥support(Y)
Apriori 算法描述
(1)根据最小支持度找出数据集D中的所有频集。
- 初始通过单遍扫描数据集,确定每个项的支持度。从而得到频繁1-项集的集合F1.
- 使用上次迭代发现的频繁(k-1)项集,产生新的频繁k项集。(关键步骤)
- 对候选集支持度计数,算法需要扫描一次数据集,使用子集函数确定包含在每一个事务t中所有候选k项集。
- 计算候选项的支持度计数之后,算法将删去支持度计数小于minsup的所有候选集。
- 当没有新的频繁项集产生,算法结束。
(2)根据频繁项目集和最小置信度产生关联规则。
上述过程不那么清晰明了,通过一个例子来简单说明一下:
例子:该例数据库中有9个事务,即|D|=9。Apriori假定事务中的项按字典次序存放
1. 生成频繁项集的过程如下:
2. 找出强关联规则
频繁集L1={I1, I2, I5},L1的非空子集有{I1, I2}, {I1, I5}, {I2, I5}, {I1}, {I2}, {I5}
1^ I2 => I5, confidence=2/4=50%
I1 ^ I5 => I2, confidence=2/2=100 %
I2 ^ I5 => I1, confidence=2/2=100 %
I1 => I2 ^ I5, confidence=2/6=33 %
I2 => I1 ^ I5, confidence=2/7=29 %
I5 => I1 ^ I2, confidence=2/2=100 %
最小置信度阀值为70%,则只有第2、3和最后一个规则可以输出。
频繁集L2={I1, I2, I3},L2的非空子集有{I1, I2}, {I1, I3}, {I2, I3}, {I1}, {I2}, {I3}
I1^ I2 => I3, confidence=2/4=50%
I1 ^ I3 => I2, confidence=2/4=50 %
I2 ^ I3 => I1, confidence=2/4=50%
I1 => I2 ^ I3, confidence=2/6=33 %
I2 => I1 ^ I3, confidence=2/7=29 %
I3 => I1 ^ I2, confidence=2/6=33 %
无满足情况的。