Apriori 关联规则算法

通过Apriori算法,我们可以对数据进行关联分析,能够在大量的数据中找出数据间有趣的关系。那这个关系怎么找呢。一是根据支持度找出频繁项集,二是根据置信度产生关联规则。频繁项集指在物品经常一起出现的。关联规则表示两个物品间有很强的关系

首来理解一下关联规则中两个基本概念:支持度与置信度。

举一个购物清单的例子

Apriori 关联规则算法_第1张图片

对于Bread->milk这个事件中:

1、支持度:P(Bread ∩ milk), 即出现过Bread也出现过Milk的概率,这里一个有8条记录, 即出现过Bread也出现过Milk的记录数为2 条,所以Bread->milk支持度为2/8.。意义为:1/4的顾客同时购买Bread和milk

2、置信度:P(Bread ∩ milk)/P(Bread),即在Bread出现过的条件下,milk出现过的概率。这里Bread->milk置信度为2/6.。意义为:购买Bread的顾客1/3也购买了milk。

一般我们会设置个最小支持度与最小置信度,如果事件的支持度大于最小支持度,那么称这个事件为频繁项集。如果事件的支持度大于最小支持度同时置信度也大于最小支持度,那么我们称这个事件具有强规则。

下面介绍下apriori算法如何筛选出强 规则事件。

首先介绍一下Apriori的两个 核心思想:

1、频繁项集的所有非空子集都为都为频繁项集。

2、如果一个项集不为 频繁项集,那么其所有超集都不为频繁项集

例如{1}、{2}、{3}项集中{2}为非频繁项集,那么其超集{1,2}、{2,3}都为非频繁项集。

频繁项集的产生流程为:

Apriori为逐层搜索的迭代方法,从1-项集开始搜索,将1-项集的搜索结果来搜索2-项集。。。。 

1、生成单个物品的项集列表,即1-项集。

2、扫描1-项集,判断其支持度是否大于最小支持度,大于就标记为频繁项集,最后得到1-项集的频繁项集L1.

3、利用L1频繁项集找出2-频繁项集L2,以此类推,直到不能找到更大的项集。

关联规则的产生规则:

1、 对于频繁项集L产生其非空子集S

2、对于L的每个非空子集S,如果 P(L)/P(S)≧min_conf,集在S发生的条件下L发生的概率大于最小支持度,则称S与L具有强关联。

接下来讲一些情况:满足频繁项集或者强规则,但是却没有意义的事件。

1、我们可以看到Tape->DVD的支持度置信度都高于最小支持度与最小置信度。所以我们就得出结论,给买录像带的人推荐去买DVD,但是买DVD的概率为75%,大于Tape->DVD的支持度66%,所以说这个推荐是没意义的。

Apriori 关联规则算法_第2张图片

2、推荐的产品一般不为耐用品,比如买了电脑,你给他推荐电脑不合适,因为电脑为耐用品。

3、给购买红楼梦上集的人推荐红楼梦下集。

在满足结果的基础上要结合事实去做推荐,推荐一些潜在的关系的物品我觉得才是关联规则的主要目标。

你可能感兴趣的:(机器学习)