十 机器学习之Apriori 一

286 阅读5分钟

本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

一、关联分析概述

大型超市有海量的交易数据,作为精明的商家肯定不会放弃对这些海量数据的应用,他们希望通过对这些交易数据的 分析,了解顾客的购买行为。我们可以通过聚类算法寻找购买相似物品的人群,从而为特定人群提供更具个性化的服 务。但是对于超市来讲,更有价值的是找出商品之间的隐藏关联,从而可以用于商品定价、市场促销、存货管理等一 系列环节,来增加营业收入。那如何从这种海量而又繁杂的交易数据中找出商品之间的关联呢?当然,你可以使用穷 举法,但是这是一种十分耗时且计算代价高的笨方法,所以需要用更智能的方法在合理的时间范围内找到答案。因 此,关联分析就此诞生了~

二. 关联分析

关联分析(association analysis)是一种在大规模数据集中寻找有趣关系的非监督学习算法。这种关系可以有两种 形式:频繁项集或者关联规则。频繁项集(frequent item sets)是经常出现在一块的物品的集合,关联规则 (association rules)暗示两种物品之间可能存在很强的关系。

三. 频繁项集的评估标准

频繁项集是经常出现在一块的物品的集合,那么问题就来了:第一,当数据量非常大的时候,我们无法凭肉眼找出经 常出现在一起的物品,这就催生了关联规则挖掘算法,比如 Apriori、PrefixSpan、CBA 等。第二是我们缺乏一个频 繁项集的标准。比如10条记录,里面A和B同时出现了三次,那么我们能不能说A和B一起构成频繁项集呢?因此我们 需要一个评估频繁项集的标准。 常用的频繁项集的评估标准有支持度,置信度和提升度三个

3.1 支持度

支持度就是几个关联的数据在数据集中出现的次数占总数据集的比重。 一般来说,支持度高的数据不一定构成频繁项集,但是支持度太低的数据肯定不构成频繁项集。 另外,支持度是针 对项集来说的,因此,可以定义一个最小支持度,而只保留满足最小支持度的项集,起到一个项集过滤的作用。

3.2 置信度

置信度体现了一个数据出现后,另一个数据出现的概率,或者说数据的条件概率 为什么使用支持度和置信度?支持度是一种重要度量,因为支持度很低的规则可能只是偶然出现。从商务角度来看, 低支持度的规则多半也是无意义的,因为对顾客很少同时购买的商品进行促销可能并无益处。因此,支持度通常用来 删去那些无意义的规则。此外,支持度还具有一种期望的性质,可以用于关联规则的有效发现。 另一方面,置信度度量通过规则进行推理具有可靠性。对于给定的规则X→Y,置信度越高,Y在包含X的事务中出现的 可能性就越大。置信度也可以估计Y在给定X下的条件概率。 同时,应当小心解释关联分析的结果。由关联规则作出的推论并不必然蕴涵因果关系。它只表示规则前件和后件同时 出现的一种概率。

3.3 提升度

接下来我们来讨论⽀持度置信度框架的局限性,现有的关联规则的挖掘算法需要使⽤⽀持度和置信度来除去没有意义 的模式。⽀持度的缺点在于许多潜在的有意义的模式由于包含⽀持度小的项而被删去,置信度的缺点更加微妙,用下 面的例子最适于说明。

四 Apriori算法原理

先验原理 如果一个项集是频繁的,则它的所有子集一定也是频繁的。 假设我们在经营一家商品种类并不多的杂货店,我们对那些经常在一起被购买的商品非常感兴趣。我们只有4种商 品:商品0,商品1,商品2和商品3。那么所有可能被一起购买的商品组合都有哪些?这些商品组合可能只有一种商 品,比如商品0,也可能包括两种、三种或者所有四种商品。我们并不关心某人买了两件商品0以及四件商品2的情 况,我们只关心他购买了一种或多种商品。 下图显示了物品之间所有可能的组合。为了让该图更容易懂,图中使用物品的编号0来取代物品0本身。另外,图中从 上往下的第一个集合是Ф,表示空集或不包含任何物品的集合。物品集合之间的连线表明两个或者更多集合可以组合 形成一个更大的集合。 根据先验原理,假如 {1,2,3} 是频繁项集,那么它的所有子集(下图中橘色项集)一定也是频繁的。

image.png