📚 算法原理
什么是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