🌳 FP-Growth算法演示

基于FP-tree的频繁模式挖掘 - 更高效的关联规则发现

📚 算法原理

什么是FP-Growth算法?

FP-Growth(Frequent Pattern Growth)算法是一种高效的频繁项集挖掘算法,它通过构建FP-tree(频繁模式树)数据结构来压缩数据,避免重复扫描数据库。

核心思想

FP-Growth的优势:

  • 只需要扫描数据库两次(Apriori需要多次扫描)
  • 使用FP-tree压缩数据,减少内存占用
  • 采用分治策略,递归挖掘频繁模式
  • 不需要生成候选项集,效率更高

算法步骤

步骤1:第一次扫描数据库,构建频繁1-项集

统计每个商品的支持度,按支持度降序排序

步骤2:第二次扫描数据库,构建FP-tree

对每个事务,按照频繁1-项集的顺序重新排序,插入FP-tree

步骤3:构建条件模式基(Conditional Pattern Base)

从FP-tree中提取每个频繁项的条件模式基

步骤4:构建条件FP-tree

根据条件模式基构建条件FP-tree

步骤5:递归挖掘

在条件FP-tree上递归挖掘频繁模式

FP-tree结构

FP-tree的特点:

  • 根节点:标记为"null"
  • 内部节点:包含项名和支持度计数
  • 头表(Header Table):指向FP-tree中每个项的链接
  • 相同项通过链接连接,形成链表

⚖️ FP-Growth vs Apriori

算法对比

特性 Apriori FP-Growth
数据库扫描次数 多次(每次迭代一次) 仅2次
候选项集生成 需要生成和测试 不需要
数据结构 简单的集合 FP-tree(压缩树)
内存使用 较高(存储所有候选项集) 较低(FP-tree压缩数据)
适用场景 小到中等数据集 大数据集,效率更高

💼 使用场景

🛒 大规模购物篮分析

处理大型超市的海量交易数据,快速发现商品关联规则

📊 网站日志分析

分析用户浏览路径,优化网站结构和推荐策略

🔍 生物信息学

发现基因序列中的频繁模式,研究基因关联

📱 用户行为分析

分析移动应用中的用户操作序列,改进产品设计

🎮 交互式演示

示例数据:超市购物记录

交易ID 购买的商品

参数设置

0.3
0.6