关于支持度、置信度、提升度以及apriori算法的理解(简单版)

理解支持度

所谓支持度,就是比如说10个用户购买商品,有8个用户购买商品A,那么商品A的支持度就是80%。支持度越大,关联规则越重要,因为支持度大代表买的人多呀。 这里的商品A可以是一件商品,也可以是几个商品组成的集合。小于最小支持度的A会在算法过程中被淘汰掉。

理解置信度

这个概念学过概率论就比较好理解,简单地说是购买商品A的人,会有多大概率去购买商品B,即p(B|A) =p(AB)/p(A)

理解提升度

即商品A的出现对商品B的出现概率提升的程度,这里有个公式计算,提升度(A->B)= 置信度(A->B)/支持度(B),用概率论表示即是提升度=(p(AB)/p(A)) / p(B),提升度大于1时,则推荐,小于1时,则不推荐

理解APRIORI算法

首先说一说项,项集,事务

项:数据库中不可分割的最小单位信息

项集:项的集合,集合I={i1, i2, …, ik}是项集,I中项目的个数为k,则集合I称为k项集。支持度大于最小支持度的项集即为频繁项集,否则为非频繁项集。

事务:设I={i1, i2, …, ik}是由数据库中所有项目构成的集合,一次处理所含项目的集合用T表示,T={t1, t2, …, tn}。每一个包含ti子项的项集都是I子集。
例如,顾客一次购买多种商品,这些购物信息在数据库中有唯一标识,用来标识这些商品是同一顾客同一次购买的,称
该用户的本次购物活动对应一个事务。

然后来说APRIORI算法

apriori算法有两个重要性质
1.频繁项集的所有非空子集必为频繁项集。 如项集{1,2,3}是频繁的 则项集{1,2}肯定是频繁的

2.非频繁项集的超集⼀定是⾮频繁的。 如项集{2,3,4}是非频繁的 则项集{1,2,3,4}肯定是非频繁的

然后是apriori算发的实现逻辑:其中C表是扫描出来的候选表,L是经过最小支持度过滤后的频繁集表。这里最小支持度设置为0.2.

提升度python 提升度的计算_数据库

提升度python 提升度的计算_数据库_02


这里有一个小细节,就是比如说如何从L2到C3。

l2中是二项集,在合并成三项集时,会将二项集中每个第一个元素相同的集合进行合并,比如{a,b}与{a,c},他们第一个元素都是a,则他们可以合并成一个三项集 => {a,b,c}。

且合成的三项集其中的每两个元素一定会能在l2中找到。

这也是为什么不会合成{a,b,e}的原因,因为这个三项集中的{b,e}在l2中时找不到的,{b,e}是非频繁项集,所以它的超集也都是非频繁项集。

同理 三项集合并成四项集时,会将三项集中前两个元素相同的集合进行匹配。