初识机器学习:关联规则
这是我参与「掘金日新计划 · 8 月更文挑战」的第4天,点击查看活动详情
关联规则,或者关联规则学习(Association Rule Learning)是一种在大量数据点中发现隐蔽的关联关系的方法。能够利用一些有趣的量度来识别数据点集中发现的强规则。
关联规则最常见的使用场景就是购物,不管是线上还是线下,上架都希望从顾客的购物记录中,寻找不同商品之间并非显而易见的关系,以此来推荐商品、优化商品陈列、推送广告等。
如何量化关联规则:支持度、置信度和提升度
我们以超市购物的订单数据为例,如下是一组示例数据
| 交易 | 商品 | | --- | ----------- | | 交易1 | 🍎 🍺 🍚 🍗 | | 交易2 | 🍎 🍺 🍚 | | 交易3 | 🍎 🍺 | | 交易4 | 🍎 🍺 🍐 | | 交易5 | 🍼 🍺 🍚 🍗 | | 交易6 | 🍼 🍺 🍚 | | 交易7 | 🍼 🍺 | | 交易8 | 🍼 🍺 🍐 |
支持度
支持度某个项集出现的频率,也就是包含这个项集的交易数占总交易数的比例。在上面的例子中,🍎 的支持度,可以表示为:支持度{🍎}=4/8
。
置信度
置信度是指当 X 项出现的时候,Y 项同时出现的概率,用 {X->Y}
表示,也就是同时包含 X 项和 Y 项的交易数占包含 X 项的交易数的比例。
在上面的例子中,置信度{🍎->🍺}
的置信度是:置信度{🍎->🍺}=支持度{🍎,🍺}/支持度{🍎}
。根据上面的交易数据可以得出,结果为3/4
。
不过,置信度这个指标存在一个缺陷,当购买 🍎 的顾客大概率也会购买 🍺 的时候,并不一定代表两者的关联度比较高,也有可能,🍎 和 🍺 之间其实并没有什么关联关系,只是,两者都属于非常畅销的单品,因此才同时出现在了很多顾客的订单中。
这种情况下,置信度其实给了我们错误的判断,「提升度」这个指标可以帮我们规避这个问题。
提升度
提升度指的是,X 项和 Y 项同时出现的频率,并且同时考虑了 X 项和 Y 项各自出现的频率。它的计算方式是这样:提升度{🍎->🍺}=支持度{🍎,🍺}/支持度{🍎}*支持度{🍺}
,结合前面的两个指标,不难看出,实际上,提升度{🍎->🍺}=置信度{🍎->🍺}/支持度{🍺}
,结果是 1。结果是 1 则代表,两者之间并无关联,如果这个结果比 1 大,则代表两者存在关联,结果越大,提升度越高,则代表两者关联度越大,反之,如果这个结果小于 1,则代表两者负相关的关系。
关联规则的特点
在数据规模特别大的时候,偶尔会出现假关联的情况,这个时候,为了确保关联规则的普适性,需要对结果进行验证。
关联规则的一个更大的问题是,需要非常大的计算量来完成,即使只有 10 种商品,也需要对上千种组合进行计算(2^10-1=1023
),而在真实的商场超市或者线上商城中的商品数量,能够组成的组合数会是一个天文数字。关于这个问题如何解决,我会在下一篇中介绍。
参考:《白话机器学习算法》
- Spring 源码阅读 42:AutowiredAnnotationBeanPostProcessor 分析(3)
- Spring 源码阅读 41:AutowiredAnnotationBeanPostProcessor 分析(2)
- Kafka 消费者组 Rebalance 详细过程
- Spring 源码阅读 01:Resource 资源抽象
- 初识机器学习:回归分析
- 初识机器学习:Louvain 社区发现算法
- 初识机器学习:关联规则
- 使用 Redis 实现分布式锁的方法
- Kafka 目录里的脚本那么多,它们都是用来干什么的?
- Kafka 消费者组位移重设的几种方式
- LeetCode - 84. 柱状图中最大的矩形
- LeetCode - 22. 括号生成