当前位置: 首页 > ops >正文

【机器学习入门】3.1 关联分析——从“购物篮”到推荐系统的核心逻辑

你有没有想过:为什么淘宝会推荐 “买了牛奶的人还会买面包”?为什么超市会把啤酒和尿不湿放在一起?这些 “精准关联” 的背后,靠的就是机器学习中的关联分析技术。

这篇文章会从 “生活化例子” 切入,帮你吃透关联分析的核心概念(关联规则、支持度、置信度),再详解两大核心算法(ALS、FP)的原理与应用,所有内容贴合入门学生的认知,不堆砌复杂公式,只讲 “能懂、能用” 的干货,让你明白 “关联分析如何从数据中挖规律,又如何落地到推荐场景”。

一、关联分析基础:从 “购物篮” 理解核心概念

关联分析(又称关联挖掘)是机器学习中 “挖掘数据内在联系” 的经典技术,最典型的场景就是购物篮分析—— 通过分析用户的购物记录,找出 “哪些商品经常被一起购买”,进而指导运营(如商品摆放、推荐)。我们先从三个核心概念入手:关联分析、关联规则、频繁项集。

1.1 关联分析:找 “数据中的隐藏关联”

定义

关联分析是在交易数据、关系数据等信息载体中,查找项目集合或对象集合之间的频繁模式、关联、相关性的技术。简单说,就是从数据中挖 “哪些东西总是一起出现”。

经典例子:购物篮分析

假设超市有以下 5 条用户购物记录(事务数据),每条记录(TID)代表一次购物的商品集合:

TID(事务 ID)购买商品集合(项集)
1面包、牛奶、鸡蛋
2面包、尿布、啤酒
3牛奶、尿布、啤酒、可乐
4面包、牛奶、尿布、啤酒
5面包、牛奶、尿布、可乐

通过关联分析,我们能发现这样的规律:

  • “面包 + 牛奶” 经常一起被购买;
  • “尿布 + 啤酒” 的组合出现频率很高(这就是沃尔玛经典的 “啤酒与尿不湿” 案例的简化版)。

这些规律就是关联分析要挖掘的 “频繁模式”,也是后续生成 “推荐规则” 的基础。

图片来源于网络,仅供学习参考

1.2 关联规则:“如果买 X,就可能买 Y” 的逻辑

找到频繁模式后,我们需要把它转化为 “可落地的规则”—— 这就是关联规则。

定义

关联规则是形如 X→Y 的表达式,其中:

  • X 是 “前件”(规则头):表示 “用户购买了 X”;
  • Y 是 “后件”(规则体):表示 “用户可能购买 Y”;
  • X 和 Y 是不相交的项集(不能有重叠商品,比如 “面包→面包” 没有意义)。
例子

从上面的购物数据中,我们可以提取出这些关联规则:

  • 面包→牛奶(如果用户买了面包,可能还会买牛奶);
  • 尿布→啤酒(如果用户买了尿布,可能还会买啤酒);
  • 面包 + 牛奶→尿布(如果用户买了面包和牛奶,可能还会买尿布)。

1.3 衡量关联规则的两大指标:支持度与置信度

不是所有关联规则都有价值 —— 比如 “买可乐→买钢琴” 这种规则几乎不会出现,没有实际意义。我们需要用支持度(S) 和置信度(C) 两个指标,筛选出 “频繁且可信” 的规则。

1. 支持度(S):规则的 “频繁程度”

支持度衡量 “X 和 Y 一起出现的频率”,反映规则在数据集中的普遍程度。如果支持度太低,说明规则只在极少数情况下出现,没有推广价值。

计算公式

例子计算(用上面的 5 条事务数据)

计算规则 “尿布→啤酒” 的支持度:

  • 同时包含 “尿布” 和 “啤酒” 的事务:TID2、TID3、TID4(共 3 条);
  • 总事务数:5;
  • 支持度 S(尿布→啤酒) = 3/5 = 0.6(即 60%)。
2. 置信度(C):规则的 “可信程度”

置信度衡量 “在买了 X 的前提下,买 Y 的概率”,反映规则的可靠性 —— 置信度越高,说明 “买 X 后买 Y” 的可能性越大。

计算公式

例子计算

还是计算规则 “尿布→啤酒” 的置信度:

  • 同时包含 “尿布” 和 “啤酒” 的事务:3 条(TID2、TID3、TID4);
  • 包含 “尿布” 的事务:TID2、TID3、TID4、TID5(共 4 条);
  • 置信度 C(尿布→啤酒) = 3/4 = 0.75(即 75%)。
关键结论:筛选 “强规则”

只有同时满足 “最小支持度阈值” 和 “最小置信度阈值” 的关联规则,才被称为强规则(有实际应用价值)。比如设定最小支持度 = 0.4、最小置信度 = 0.6:

  • “尿布→啤酒” 的支持度 0.6(≥0.4)、置信度 0.75(≥0.6),是强规则;
  • 若有规则 “可乐→面包”,支持度 = 1/5=0.2(<0.4),则不是强规则。
图片来源于网络,仅供学习参考

1.4 关联分析的核心策略:两步生成强规则

关联分析的过程分两步,逻辑清晰,所有关联算法(包括后面的 FP 算法)都遵循这个框架:

第一步:生成 “频繁项集”
  • 目标:找出所有 “满足最小支持度阈值” 的商品集合(项集),这些项集就是频繁项集;
  • 为什么要先找频繁项集?因为 “非频繁的项集” 不可能生成 “强规则”(支持度不够),先过滤掉非频繁项集,能大幅减少后续计算量;
  • 例子:在上面的购物数据中,若最小支持度 = 0.4(即至少出现 2 次),则 “尿布 + 啤酒”(出现 3 次)、“面包 + 牛奶”(出现 4 次)是频繁项集;“鸡蛋”(只出现 1 次)不是频繁项集。
第二步:从频繁项集中生成 “强规则”
  • 目标:对每个频繁项集,生成所有可能的关联规则,再筛选出 “满足最小置信度阈值” 的强规则;
  • 例子:从频繁项集 “面包 + 牛奶 + 尿布” 中,可生成规则 “面包 + 牛奶→尿布”“面包 + 尿布→牛奶” 等,再计算每个规则的置信度,保留达标的强规则。

二、关联与推荐:关联分析如何落地到推荐系统?

关联分析的核心应用之一就是推荐系统—— 通过挖掘用户行为的关联规律,推测用户可能喜欢的商品 / 内容。我们结合两种经典推荐方式(基于内容、基于协同),看关联分析如何发挥作用。

图片来源于网络,仅供学习参考

2.1 基于内容的推荐:用关联规则做 “直接推荐”

核心逻辑

以 “用户已购商品” 为关联规则的 “前件 X”,以 “频繁一起购买的商品” 为 “后件 Y”,直接推荐 Y 给用户。本质是 “利用关联规则的置信度,判断用户购买 Y 的倾向”。

例子

假设通过关联分析得到强规则:

  • 面包→牛奶(置信度 0.8);
  • 尿布→啤酒(置信度 0.75);
  • 牛奶 + 面包→鸡蛋(置信度 0.6)。

当用户购物时:

  • 若用户加入 “面包” 到购物车,系统会推荐 “牛奶”(因为规则 “面包→牛奶” 置信度高);
  • 若用户同时加入 “牛奶” 和 “面包”,系统会额外推荐 “鸡蛋”。
适用场景
  • 电商平台的 “购物车推荐”“买了还买” 模块;
  • 超市的商品摆放(比如把面包和牛奶放在相邻货架)。
图片来源于网络,仅供学习参考

2.2 基于协同的推荐:用关联思想做 “评分预测”

基于协同的推荐(协同过滤)虽然不直接用 “关联规则”,但核心思想和关联分析一致 ——“找相似用户 / 相似物品的关联”,通过 “评分预测” 实现推荐。协同过滤的三步流程,我们结合例子讲透:

图片来源于网络,仅供学习参考
三步流程(以电影推荐为例)
  1. 用户评分:构建 “用户 - 物品评分矩阵” 首先收集用户对物品的评分(比如 1-5 分,1 分最差,5 分最好),形成一个矩阵。假设我们有 3 个用户对 3 部电影的评分(“-” 表示未评分,需要预测):

    用户 \ 电影电影 A(爱情)电影 B(恐怖)电影 C(爱情)
    用户 A5-4
    用户 B-3-
    用户 C425
  2. 寻找最近邻居:找 “兴趣相似的用户 / 物品”

    • 相似用户:比如用户 A 和用户 C 都喜欢 “爱情电影”(对电影 A、C 评分高,对恐怖电影 B 评分低),所以 A 和 C 是 “最近邻居”;
    • 相似物品:比如电影 A 和电影 C 都是 “爱情类型”,且用户对它们的评分趋势一致(A 给 A 打 5 分、C 打 4 分;A 给 C 打 4 分、C 打 5 分),所以 A 和 C 是 “相似物品”。
  3. 推荐:预测未评分项,推荐高分物品

    • 比如预测用户 A 对 “电影 B” 的评分:用户 A 的最近邻居是 C,C 给 B 打 2 分,所以预测 A 对 B 的评分约为 2 分(不推荐);
    • 比如预测用户 B 对 “电影 A” 的评分:电影 A 的相似物品是 C,但 B 没给 C 评分,可找 “喜欢恐怖电影 B 的用户”(比如无直接相似用户,可扩大范围),若预测评分低,则不推荐;若预测用户 B 对 “电影 C” 评分高,则推荐电影 C。
关联思想的体现

协同过滤的核心是 “利用相似性关联”—— 要么关联 “相似用户的行为”(用户协同),要么关联 “相似物品的评分”(物品协同),这和关联分析 “找数据中的关联规律” 的本质是一致的。

三、ALS 算法:协同过滤的 “高效实现方案”

在协同过滤中,“用户 - 物品评分矩阵” 通常是稀疏的(比如 1000 个用户对 1000 部电影,可能只有 1% 的评分数据),直接计算相似性会很耗时。ALS(交替最小二乘法)算法通过 “矩阵分解” 解决了稀疏性问题,是工业界常用的协同过滤算法。

3.1 ALS 的核心思想:用 “低维特征” 表示用户与物品

ALS 的核心是把 “稀疏的用户 - 物品评分矩阵” 分解为两个 “稠密的低维矩阵”,通过这两个矩阵的乘积,近似还原原评分矩阵(包括未评分的项)。

矩阵分解的逻辑

例子(简化版)

假设 k=2(两个特征:爱情偏好度、恐怖偏好度):

3.2 ALS 的 “交替优化” 过程

ALS 的名字 “交替最小二乘法” 来源于它的优化逻辑 —— 交替优化用户特征矩阵 U 和物品特征矩阵 V,直到误差最小:

  1. 固定 V,优化 U 假设物品特征矩阵 V 已知,我们通过 “最小化预测评分与真实评分的平方误差”,求解每个用户的特征向量(U 的每行);
  2. 固定 U,优化 V 假设用户特征矩阵 U 已知,再通过同样的 “最小化平方误差”,求解每个物品的特征向量(V 的每列);
  3. 重复交替 不断重复 “固定 V 优化 U→固定 U 优化 V” 的过程,直到误差收敛(不再明显下降),此时得到的 U 和 V 就是最优的低维特征矩阵。

3.3 ALS 的应用场景

ALS 算法因为 “能高效处理稀疏矩阵”,广泛应用于需要 “评分预测” 的推荐场景:

  • 视频平台:如 Netflix 用 ALS 预测用户对电影的评分,推荐高分电影;
  • 电商平台:如亚马逊用 ALS 预测用户对商品的 “潜在评分”,推荐 “你可能喜欢” 的商品;
  • 音乐平台:如 Spotify 用 ALS 预测用户对歌曲的偏好度,推荐个性化歌单。

四、FP 算法:高效挖掘频繁项集的 “利器”

在关联分析的 “第一步生成频繁项集” 中,早期的 Apriori 算法需要 “多次扫描数据”(比如每次生成候选项集都要扫一遍事务数据),当数据量很大时(比如百万级购物记录),效率很低。FP 算法(FP-Tree 算法)通过 “构建 FP 树” 实现 “一次扫描数据”,大幅提升了频繁项集的挖掘效率。

4.1 FP 算法的核心优势:解决 Apriori 的 “效率痛点”

Apriori 算法的问题:比如要挖掘 “3 项频繁集”,需要先扫描数据找 “1 项频繁集”,再扫描找 “2 项频繁集”,再扫描找 “3 项频繁集”—— 数据量越大,扫描次数越多,耗时越长。

FP 算法的改进:

  • 只扫描数据两次:第一次统计 “每个项的出现频率”,第二次构建 FP 树;
  • 用 FP 树 “压缩存储” 事务数据:把所有事务的频繁项按 “频率降序” 存储在树上,避免重复存储,减少计算量。

4.2 FP 算法的两步流程(以购物篮数据为例)

FP 算法的核心是 “先建 FP 树,再从树中挖掘频繁项集”,我们结合之前的 5 条购物数据(TID1-TID5),一步步拆解:

第一步:预处理数据,构建 “项头表”
  1. 统计项频:计算每个商品的出现次数(项频),并按 “项频降序” 排序(过滤掉非频繁项,假设最小支持度 = 2,项频≥2):

    • 面包:4 次(TID1、2、4、5);
    • 牛奶:4 次(TID1、3、4、5);
    • 尿布:4 次(TID2、3、4、5);
    • 啤酒:3 次(TID2、3、4);
    • 可乐:2 次(TID3、5);
    • 鸡蛋:1 次(TID1,非频繁,过滤)。
  2. 构建项头表:记录每个频繁项的 “项频” 和 “在 FP 树中的位置指针”(用于后续挖掘):

频繁项项频FP 树指针
面包4指向树中所有 “面包” 节点
牛奶4指向树中所有 “牛奶” 节点
尿布4指向树中所有 “尿布” 节点
啤酒3指向树中所有 “啤酒” 节点
可乐2指向树中所有 “可乐” 节点
  1. 事务排序:将每条事务中的 “非频繁项删除”,剩余频繁项按 “项频降序” 排序:
    • TID1(面包、牛奶、鸡蛋)→ 删鸡蛋 → [面包、牛奶];
    • TID2(面包、尿布、啤酒)→ [面包、尿布、啤酒];
    • TID3(牛奶、尿布、啤酒、可乐)→ [牛奶、尿布、啤酒、可乐](牛奶和尿布项频都是 4,顺序可互换);
    • TID4(面包、牛奶、尿布、啤酒)→ [面包、牛奶、尿布、啤酒];
    • TID5(面包、牛奶、尿布、可乐)→ [面包、牛奶、尿布、可乐]。
第二步:构建 FP 树,挖掘频繁项集
  1. 构建 FP 树: FP 树是一棵 “前缀树”,每个节点代表一个频繁项,父节点代表 “前缀项”,节点的 “计数” 代表 “该前缀路径出现的次数”。构建过程是 “逐条插入排序后的事务”:

    • 插入第一条事务 [面包、牛奶]:树的根节点→面包(计数 1)→牛奶(计数 1);
    • 插入第二条事务 [面包、尿布、啤酒]:根节点→面包(计数 2)→尿布(计数 1)→啤酒(计数 1);
    • 后续事务依次插入,重复的前缀路径会累加计数(比如第三条事务 [牛奶、尿布、啤酒、可乐],根节点→牛奶(计数 1)→尿布(计数 1)→啤酒(计数 1)→可乐(计数 1));
    • 最终的 FP 树会压缩所有事务的频繁项信息,每个节点的计数反映 “该项在特定前缀下的出现次数”。
  2. 挖掘频繁项集: 从 “项头表的最后一项(项频最低的项)” 开始,通过 “项头表的指针找到该项目在 FP 树中的所有节点”,再构建 “条件 FP 树”,递归挖掘频繁项集:

    • 比如从 “可乐” 开始:找到可乐在树中的节点(计数 2),其前缀路径是 [牛奶、尿布](计数 1)和 [面包、牛奶、尿布](计数 1),构建 “可乐的条件 FP 树”,再从条件树中挖掘包含 “可乐” 的频繁项集(如 [尿布、可乐]、[牛奶、尿布、可乐]);
    • 按项头表逆序(可乐→啤酒→尿布→牛奶→面包)依次挖掘,最终得到所有满足最小支持度的频繁项集。

4.3 FP 算法的应用场景

FP 算法因为 “高效处理海量数据”,主要用于 “大规模事务数据的关联挖掘”:

  • 电商平台:分析千万级用户的购物记录,挖掘 “高频商品组合”,用于推荐或促销;
  • 零售行业:分析连锁超市的交易数据,优化商品摆放(如把频繁一起购买的商品放在相邻货架);
  • 日志分析:分析服务器的访问日志,挖掘 “用户频繁访问的页面组合”,优化网站结构。

五、总结:关联分析的 “核心逻辑链”

看到这里,你已经掌握了关联分析的核心内容,我们用一条逻辑链串起来,帮你形成体系:

  1. 关联分析的目标:从数据中挖 “频繁且可信的关联规则”,用于指导决策或推荐;
  2. 核心概念:关联规则(X→Y)、支持度(频繁程度)、置信度(可信程度);
  3. 核心策略:先找频繁项集(按最小支持度),再生成强规则(按最小置信度);
  4. 落地应用:关联规则用于 “基于内容的推荐”,ALS 算法用于 “基于协同的推荐”,FP 算法用于 “海量数据的频繁项集挖掘”。

对于入门学生,不需要一开始就实现 ALS 或 FP 算法的代码,重点是理解 “关联分析如何从数据挖规律”,以及 “不同算法的适用场景”—— 比如看到 “购物篮推荐” 就想到关联规则,看到 “电影评分预测” 就想到 ALS,看到 “海量交易数据挖频繁项集” 就想到 FP 算法。

下一章我们会进入 “分类算法” 的学习(如决策树、逻辑回归),而关联分析的 “挖掘数据内在联系” 的思想,会为后续学习打下基础。如果这篇文章里有哪个概念没搞懂,欢迎在评论区留言,我们一起拆解!

http://www.xdnf.cn/news/19008.html

相关文章:

  • 【CanRun】Python终端[颜色文字]输出
  • 代理IP服务器平台推荐,企业级动态住宅IP资源哪里找?
  • 每周AI看 | 微软开源VibeVoice-1.5B、OpenAI历史性交棒、网易云商出席AICon全球人工智能开发与应用大会
  • windows下安装kafka
  • LoRA三种不同训练流程在配置和保存权重的差异(64)
  • Ubuntu 服务器 KERNEL PANIC 修复实录
  • 开源vs商用美颜sdk:美白滤镜功能在直播中的优劣对比
  • gdb打印长字符产变量信息
  • CST混合求解任务的场路联合仿真(下)
  • ACID分别如何实现
  • 【C/C++】柔性数组
  • 科学融智学引领人机协同教育新范式
  • C# 生成器模式(一个投资跟踪程序)
  • 高效接入:Suno API 与主流编程语言的结合
  • html入门教程
  • Matlab函数转C语言供Keil使用
  • 【论文阅读】Sparse4D v2:Recurrent Temporal Fusion with Sparse Model
  • PDF,HTML,md格式文件在线查看工具
  • TensorFlow 深度学习 | 使用子类 API 实现 Wide Deep 模型
  • 动态规划01背包
  • 当不想安装telnet或nc时,可使用 Linux 系统默认自带的bash原生网络功能或ping(辅助判断)测试连通性
  • 法律审查prompt收集
  • java19学习笔记
  • 【机器学习入门】3.2 ALS算法——从评分矩阵到精准推荐的核心技术
  • Java泛型使用常见报错
  • hive udf函数实现在sql查询网站价格
  • 网站加载慢,linux服务器接口请求响应变慢,怎么排查,一般是什么原因
  • 工业相机的类型及不同类型的应用
  • 一文说清楚ABAP中的‘显示提交(Explicit Commit)’和‘隐式提交(Implicit Commit)’
  • word去空格去空行_word辅助工具 word批量处理