初识机器学习:关联规则

语言: CN / TW / HK

这是我参与「掘金日新计划 · 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),而在真实的商场超市或者线上商城中的商品数量,能够组成的组合数会是一个天文数字。关于这个问题如何解决,我会在下一篇中介绍。


参考:《白话机器学习算法》