惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
G
Google Developers Blog
有赞技术团队
有赞技术团队
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Blog — PlanetScale
Blog — PlanetScale
罗磊的独立博客
博客园 - 聂微东
V
Visual Studio Blog
博客园_首页
D
DataBreaches.Net
腾讯CDC
I
InfoQ
F
Fortinet All Blogs
量子位
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 【当耐特】
Google DeepMind News
Google DeepMind News
人人都是产品经理
人人都是产品经理
云风的 BLOG
云风的 BLOG
月光博客
月光博客
Recent Announcements
Recent Announcements
MongoDB | Blog
MongoDB | Blog
C
Check Point Blog

牛牛技术客栈

设计模式-备忘录模式 - OXOXTECH 牛牛技术客栈 设计模式-中介者模式 - OXOXTECH 牛牛技术客栈 Linux【Ubuntu】修改ssh默认端口 - OXOXTECH 牛牛技术客栈 设计模式-迭代器模式 - OXOXTECH 牛牛技术客栈 scheduled定时任务的三种基本实现方式 - OXOXTECH 牛牛技术客栈 Apriori - 基于关联规则的推荐算法(三) - OXOXTECH 牛牛技术客栈 Apriori - 基于关联规则的推荐算法(一) - OXOXTECH 牛牛技术客栈 基于JavaFX的桌面端网络调试工具 - OXOXTECH 牛牛技术客栈 Golang Channel的原理介绍 - OXOXTECH 牛牛技术客栈 Go语言Map的原理分析 - OXOXTECH 牛牛技术客栈 Go语言错误处理(panic)的最佳实践 - OXOXTECH 牛牛技术客栈 设计模式-解释器模式 - OXOXTECH 牛牛技术客栈 Redis报错Redis is configured to save RDB snapshots, but it's currently unable to persist to disk. go-webpbin库在Linux报错failed to encode image to WebP: exit status 1.......的问题 exe4j 打包加密的jar - OXOXTECH 牛牛技术客栈 Go生成图形验证码示例 - OXOXTECH 牛牛技术客栈 澳门一天游:一日尽享东方与西方的交融之美 - OXOXTECH 牛牛技术客栈 设计模式-命令模式 - OXOXTECH 牛牛技术客栈 别再自己瞎写工具类了,SpringBoot内置工具类应有尽有 - OXOXTECH 牛牛技术客栈 中山一日游 - OXOXTECH 牛牛技术客栈 设计模式-责任链模式 - OXOXTECH 牛牛技术客栈 起舞吧,齐舞吧 - OXOXTECH 牛牛技术客栈 设计模式-组合模式 - OXOXTECH 牛牛技术客栈 Go语言Web开发|GoFrame框架入门笔记 - OXOXTECH 牛牛技术客栈 Java打包exe教程 - OXOXTECH 牛牛技术客栈 设计模式-代理模式 - OXOXTECH 牛牛技术客栈 MySQL存储过程的优缺点有哪些? - OXOXTECH 牛牛技术客栈 前端渲染优化有哪些? - OXOXTECH 牛牛技术客栈 HTTP状态码及其含义 - OXOXTECH 牛牛技术客栈 从浏览器地址栏输入url到显示页面的步骤 - OXOXTECH 牛牛技术客栈
Apriori - 基于关联规则的推荐算法(二) - OXOXTECH 牛牛技术客栈
tsinghualee · 2025-09-13 · via 牛牛技术客栈

Apriori Algorithm - 先验算法,基于数据挖掘和关联规则的推荐算法(二)

前言:上一章介绍了Apriori算法的核心概念、数据频繁项集、以及算法的核心公式。接下来将通过一个例子,手工演算Apriori算法

上一章传送门:Apriori Algorithm - 先验算法,基于数据挖掘和关联规则的推荐算法(一)

Apriori实例

在一家烧烤店,有6名客人,分别购买了以下商品,计算商品之间的关联性

tips: 数据的N项集,以下简称K = N

客人购买的产品
老李鸡翅,玉米,羊肉串,韭菜,鸡杂,啤酒
老王鸡翅,韭菜,鸡杂,柠檬茶
张三羊肉串,韭菜
徐义杰玉米,鸡杂,柠檬茶,啤酒
刘淇昌鸡翅,韭菜,羊肉串,鸡杂,柠檬茶
徐家丽鸡翅,韭菜,玉米柠檬茶

step1: 定义2个关键值(minSup、minConf)

   minSup = 0.5 = 50%            minConf = 0.7 = 70%

step2: 计算数据K=1项集Sup

L1C1Sup1
鸡翅42/3 -> 0.667
玉米31/2 -> 0.5
羊肉串31/2 -> 0.5
韭菜42/3 -> 0.667
鸡杂42/3 -> 0.667
啤酒(此Sup < minSup,不再参与后续聚合)21/3 -> 0.334
柠檬茶42/3 -> 0.667

根据第一章的Sup计算公式可得出所有商品的K=1项集Sup

例:Sup{鸡翅} = 鸡翅出现的次数(4次) / 总数据项数量(6条) = 4 / 6 = 2/3 = 0.667 (之后的Sup计算不再举例说明)

step3: 计算数据K=2项集Sup

同理,Sup < minSup的数据集不再记录在表格中

L2C2Sup2
{鸡翅,韭菜}42/3 → 0.667
{鸡翅,鸡杂}31/2 → 0.5
{鸡翅,柠檬茶}31/2 → 0.5
{羊肉串,韭菜}31/2 → 0.5
{韭菜,鸡杂}31/2 → 0.5
{韭菜,柠檬茶}31/2 → 0.5

step4: 计算数据K=3项集Sup

L3C3Sup3
{鸡翅,韭菜,鸡杂}31/2 → 0.5
{鸡翅,韭菜,柠檬茶}31/2 → 0.5

至此,所有数据集的Sup计算完毕!

step5: 计算全部Sup对应的Conf

   Conf({鸡翅,韭菜} -> {鸡杂}) = {鸡翅,韭菜,鸡杂} / {鸡翅,韭菜}  = C3 / C2 = 3 / 4 = 0.75

   Conf({鸡翅,鸡杂} → {韭菜})= {鸡翅,鸡杂,韭菜} / {鸡翅,鸡杂} = C3 / C2 = 3/3 = 1

   Conf({鸡翅,韭菜} → {柠檬茶})= {鸡翅,韭菜,柠檬茶} / {鸡翅,韭菜} = C3 / C2 = 3/4 = 0.75

以上为K=3的Conf计算

   Conf({柠檬茶,韭菜} → {鸡翅})= {鸡翅,韭菜,柠檬茶} / {柠檬茶,韭菜} = C3 / C2 = 3/3 = 1

   Conf{鸡翅} → {韭菜} = {鸡翅,韭菜} / {鸡翅} = C2 / C1 = 4/4 = 1

   Conf{鸡杂} → {鸡翅} = {鸡翅,鸡杂} / {鸡杂} = C2 / C1 = 3/4 = 0.75

   Conf{鸡翅} → {柠檬茶} = {鸡翅,柠檬茶} / {鸡翅} = C2 / C1 = 3/4 = 0.75

   Conf{羊肉串} → {韭菜} = {羊肉串,韭菜} / {羊肉串} = C2 / C1 = 3/3 = 1

   Conf{韭菜} → {羊肉串} = {羊肉串,韭菜} / {韭菜} = C2 / C1 = 3/4 = 0.75

   Conf{韭菜} → {鸡杂} = {韭菜,鸡杂} / {韭菜} = C2 / C1 = 3/4 = 0.75

   Conf{韭菜} → {柠檬茶} = {韭菜,柠檬茶} / {韭菜} = C2 / C1 = 3/4 = 0.75

以上为K=3的Conf计算

至此,所有数据集的Conf值计算完毕!

*这里可能会有疑问,为什么没有K=1的Conf值?第一章里关于Conf的介绍讲到,Conf值是“信心值”。而K=1项集时,数据没有关联性,所以不存在Conf值,Conf值的计算最早只有在K=2时才开始

step6: 计算Lift

Lift({鸡翅,韭菜} → {鸡杂}) = Sup{鸡翅,韭菜,鸡杂} / Sup{鸡翅,韭菜} * Sup{鸡杂} = 0.5 / 2/3 * 2/3 = 0.5 / 0.44 = 1.136

Lift({鸡翅,鸡杂} → {韭菜}) = Sup{鸡翅,韭菜,鸡杂} / Sup{鸡翅,鸡杂} * Sup{韭菜} = 0.5 / 0.5 * 0.667 = 1.497

Lift({鸡翅,韭菜} → {柠檬茶}) = Sup{鸡翅,韭菜,柠檬茶} / Sup{鸡翅,韭菜} * Sup{柠檬茶} = 0.5 / 0.667 * 0.667 = 1.124

Lift({柠檬茶,韭菜} → {鸡翅}) = Sup{鸡翅,韭菜,柠檬茶} / Sup{柠檬茶,韭菜} * Sup{鸡翅} = 0.5 / 0.5 * 0.667 = 1.497

以上为三阶Lift计算,即:购买产品A和B是否会对C有影响。

以此类推,可继续计算二阶Lift的所有结果,以得出产品A对B是否有购买影响。

由于Lift为【提升度】通过所有Lift的计算,对Lift < 1的结果,以及对应的Sup,Conf作废弃处理,即:此Sup和Conf均不具备参考性

篇幅受限,K=2的Lift值将不计算,读者可以自己动手试试

通过以上演算,我们可以得出以下结论:

结论1: 购买鸡翅,韭菜的客人大概率会买鸡杂

结论2: 购买鸡翅,鸡杂的客人有较高的概率会买韭菜

结论3: 购买鸡翅,韭菜的客人有大概率会买柠檬茶

结论4: 购买柠檬茶,韭菜的客人有较高概率会买鸡翅

请记住:Sup、Conf、Lift都不能单独采信,若要算法做出精准决策时,需要3个关键值均达到要求。且不同场景下,3个关键值大小的设置,会极大程度上影响算法做出的决策!

至此,我们已经通过一个简单的小例子,展示了Apriori算法的能力。下一章我们将把本章的算法思想通过代码实现!