十大机器学习算法之Apriori

一、算法简介

Apriori算法是一种挖掘关联规则的频繁项集算法,其核心思想是通过候选集生成和清洁的向下封闭检测两个阶段来挖掘频繁项集。
Apriori算法(先验的、推测的)应用广泛,可用于消费市场价格分析,猜测顾客的消费习惯;网络安全领域中的入侵检测技术;可用于高校管理中,根据挖掘规则可以有效地辅助学校管理部门有针对性地开展贫困助学工作;也可以用在移动通信领域中,知道运营商的业务运营和辅助业务提供商的决策制定。

二、基本概念

对于A——>B
①支持度P(A∩B)
②置信度P(B|A)在A发生的同时B发生的概率
P(B|A)=P(AB)/P(A)
例如:购物车分析 牛奶——>面包
支持度:
P(牛奶∩面包)=3%
支持度3%意味着3%的顾客同时购买了牛奶和面包。
置信度:
P(牛奶|面包)=40%
置信度40%意味着有40%的顾客买了牛奶的同时买了面包。
③如果事件A中包含K个元素,那么称这个事件A为K项事件,A满足最小支持度发值得时间称为频繁K项集。
④同时满足最小支持度阈值和最小置信度阈值的规则成为强规则。

三、挖掘步骤

1、依据支持度找出所有的频繁项集(依据频度)
2、依据置信度产生关联规则(强度)

四、算法实现步骤

1、Apriori算法是一种最有影响的挖掘布尔关联规则频繁项集的算法。Apriori使用一种叫做逐层搜索的迭代方法,“K-1项集”用于搜索“K项集”。首先找出频繁“1项集”的集合,该集合记为L1,L1用于找到频繁“2项集”的集合L2,…,如此下去,知道找到每个Lk都需要一次数据库扫描。(就是知道所有的数据都被用到时候就结束。)

核心思想:

连接步和剪枝步。
连接步是自然连接,原则是保证前k-2项相同,并按照字典顺序连接。
剪枝步是使任一频繁项集的所有非空子集也必须是频繁的。反之,如果某个候选的非空子集不是频繁的,那么该候选项集肯定不是频繁的,从而可以将其从Ck中删除。

简单来说就是 :
1、发现频繁项集过程为①扫描(扫描所有数据)②计数(计算各个候选集的支持度)③比较(选出适合条件的频繁项集)④产生频繁集⑤连接、再剪枝产生候选集
2、产生关联规则。过程:根据前面提到的置信度的定义,关联规则的产生如下:
①对于每个频繁项集L,产生L的所有非空子集。
②对于L的每个非空子集S,如果P(L)/P(S)>=min_conf,则输出规则“Sa L-S”。(L-S表示在项集中除去S子集的项集。)

五、Apriori缺点:

①由频繁k-1项集进行自连接生成的候选频繁k项集数量巨大
②在验证候选频繁k项集的时候需要对整个数据库进行扫描,非常耗时。

例子:

(博主很懒,懒得去做表格了,看图片,手写)

这里写图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章