关联规则挖掘算法-FP-tree算法

FP-tree两个主要步骤:
1. 利用事务数据库中的数据构造FP-tree;
2. 从FP-tree中挖掘频繁模式。

具体过程:
1.扫描数据库一次,得到频繁1-项集。
2.把项按支持度递减排序。
3.再一次扫描数据库,建立FP-tree。

为了方便大家理解,下面附上一个简单的例子。

给出一个具体的事务数据库:

关联规则挖掘算法-FP-tree算法_第1张图片

利用出现的次数计算频繁1-项目集。

关联规则挖掘算法-FP-tree算法_第2张图片

重新调整事务数据库:(在这里是对于每一个Items进行调整,把支持度高的放在前面)

关联规则挖掘算法-FP-tree算法_第3张图片

创建根结点和频繁项目表:

关联规则挖掘算法-FP-tree算法_第4张图片

加入第一个事务(I2,I1,I5):

关联规则挖掘算法-FP-tree算法_第5张图片

加入第二个事务(I2,I4),在I2冒号后面数字是其出现的次数,其他也是:

关联规则挖掘算法-FP-tree算法_第6张图片

加入第三个事务(I2,I3),注意此时I2后面的数字为3:

关联规则挖掘算法-FP-tree算法_第7张图片

加入第四个事务(I2,I1,I4),I1后面加1变为2:

关联规则挖掘算法-FP-tree算法_第8张图片

加入第五个事务(I1,I3):

关联规则挖掘算法-FP-tree算法_第9张图片

........依次加入所有的事务:

关联规则挖掘算法-FP-tree算法_第10张图片

然后生成FP-tree,从支持度最小的I5开始看:

根据这个得到I5的:

关联规则挖掘算法-FP-tree算法_第11张图片

条件模式基可以理解为,以I5为结点所有路径的情况,删除I3是因为I3达不到I5的最小支持度:

关联规则挖掘算法-FP-tree算法_第12张图片

然后看I4:

关联规则挖掘算法-FP-tree算法_第13张图片

然后考虑I3,I2后面的4是根据总的I2:7减去不是I3的分支数,即可得到:

关联规则挖掘算法-FP-tree算法_第14张图片

关联规则挖掘算法-FP-tree算法_第15张图片

最后考虑I1:

关联规则挖掘算法-FP-tree算法_第16张图片

算法结束,频繁项集就得到了。

在实际项目中,可以通过增大最小支持度来减小树的复杂度。

FP-tree优点:
FP-tree 算法只需对事务数据库进行二次扫描。
避免产生的大量候选集。
FP-tree缺点:
要递归生成条件数据库和条件FP-tree,所以内存开销大只能用于挖掘单维的布尔关联规则。

你可能感兴趣的:(数据挖掘,机器学习)