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

二、挖掘步骤:

1.依据支持度找出所有频繁项集(频度)

2.依据置信度产生关联规则(强度)

三、基本概念

对于A->B

①支持度:P(A ∩ B),既有A又有B的概率

②置信度:

P(B|A),在A发生的事件中同时发生B的概率 p(AB)/P(A)     例如购物篮分析:牛奶 ⇒ 面包

例子:[支持度:3%,置信度:40%]

支持度3%:意味着3%顾客同时购买牛奶和面包

置信度40%:意味着购买牛奶的顾客40%也购买面包

③如果事件A中包含k个元素,那么称这个事件A为k项集事件A满足最小支持度阈值的事件称为频繁k项集。

④同时满足最小支持度阈值和最小置信度阈值的规则称为强规则

四、实现步骤

Apriori算法是一种最有影响的挖掘布尔关联规则频繁项集的算法Apriori使用一种称作逐层搜索的迭代方法,“K-1项集”用于搜索“K项集”。

首先,找出频繁“1项集”的集合,该集合记作L1。L1用于找频繁“2项集”的集合L2,而L2用于找L3。如此下去,直到不能找到“K项集”。找每个Lk都需要一次数据库扫描。

核心思想是:连接步和剪枝步。连接步是自连接,原则是保证前k-2项相同,并按照字典顺序连接。剪枝步,是使任一频繁项集的所有非空子集也必须是频繁的。反之,如果某

个候选的非空子集不是频繁的,那么该候选肯定不是频繁的,从而可以将其从CK中删除。

简单的讲,1、发现频繁项集,过程为(1)扫描(2)计数(3)比较(4)产生频繁项集(5)连接、剪枝,产生候选项集   重复步骤(1)~(5)直到不能发现更大的频集

2、产生关联规则,过程为:根据前面提到的置信度的定义,关联规则的产生如下:

(1)对于每个频繁项集L,产生L的所有非空子集;

(2)对于L的每个非空子集S,如果

P(L)/P(S)≧min_conf

则输出规则“SàL-S”

注:L-S表示在项集L中除去S子集的项集

三、总结:

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

②网上提到的频集算法的几种优化方法:1. 基于划分的方法。2. 基于hash的方法。3. 基于采样的方法。4. 减少交易的个数。

我重点看了“基于划分的方法”改进算法,现在简单介绍一下实现思想:

基于划分(partition)的算法,这个算法先把数据库从逻辑上分成几个互不相交的块,每次单独考虑一个分块并 对它生成所有的频集,然后把产生的频集合并,用来生成所有可能的频集,最后计算这些项集的支持度。

其中,partition算法要注意的是分片的大小选取,要保证每个分片可以被放入到内存。当每个分片产生频集后,再合并产生产生全局的候选k-项集。若在多个处理器分片,可以通过处理器之间共享一个杂凑树来产生频集。

Apriori算法详解之【一、相关概念和核心步骤】

2013年06月09日 10:39:06

阅读数:132725

感谢红兰整理的PPT,简单易懂,现在将其中精彩之处整理,与大家分享。

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

二、挖掘步骤:

1.依据支持度找出所有频繁项集(频度)

2.依据置信度产生关联规则(强度)

三、基本概念

对于A->B

①支持度:P(A ∩ B),既有A又有B的概率

②置信度:

P(B|A),在A发生的事件中同时发生B的概率 p(AB)/P(A)     例如购物篮分析:牛奶 ⇒ 面包

例子:[支持度:3%,置信度:40%]

支持度3%:意味着3%顾客同时购买牛奶和面包

置信度40%:意味着购买牛奶的顾客40%也购买面包

③如果事件A中包含k个元素,那么称这个事件A为k项集事件A满足最小支持度阈值的事件称为频繁k项集。

④同时满足最小支持度阈值和最小置信度阈值的规则称为强规则

四、实现步骤

Apriori算法是一种最有影响的挖掘布尔关联规则频繁项集的算法Apriori使用一种称作逐层搜索的迭代方法,“K-1项集”用于搜索“K项集”。

首先,找出频繁“1项集”的集合,该集合记作L1。L1用于找频繁“2项集”的集合L2,而L2用于找L3。如此下去,直到不能找到“K项集”。找每个Lk都需要一次数据库扫描。

核心思想是:连接步和剪枝步。连接步是自连接,原则是保证前k-2项相同,并按照字典顺序连接。剪枝步,是使任一频繁项集的所有非空子集也必须是频繁的。反之,如果某

个候选的非空子集不是频繁的,那么该候选肯定不是频繁的,从而可以将其从CK中删除。

简单的讲,1、发现频繁项集,过程为(1)扫描(2)计数(3)比较(4)产生频繁项集(5)连接、剪枝,产生候选项集   重复步骤(1)~(5)直到不能发现更大的频集

2、产生关联规则,过程为:根据前面提到的置信度的定义,关联规则的产生如下:

(1)对于每个频繁项集L,产生L的所有非空子集;

(2)对于L的每个非空子集S,如果

P(L)/P(S)≧min_conf

则输出规则“SàL-S”

注:L-S表示在项集L中除去S子集的项集

在下一篇文章中将有伪代码实现和例子(Apriori算法详解之【二、伪代码和例子】http://blog.csdn.net/lizhengnanhua/article/details/9061887)

关联——Apriori算法详解相关推荐

  1. Apriori算法详解与实现

    Apriori算法详解与实现 一.摘要 二.绪论 三.算法介绍 1.项目 2.项集 3.项集的支持度 4.关联规则 5.关联规则的置信度 6.频繁k项集 7.算法流程 四.代码实现 五.引用 一.摘要 ...

  2. Apriori算法详解之【一、相关概念和核心步骤】

    感谢红兰整理的PPT,简单易懂,现在将其中精彩之处整理,与大家分享. 一.Apriori算法简介:  Apriori算法是一种挖掘关联规则的频繁项集算法,其核心思想是通过候选集生成和情节的向下封闭检测 ...

  3. 【机器学习】关联分析Apriori算法详解以及代码实现

    Apriori算法以及统计学基础 什么是关联分析 简单的统计学基础 Apriori输出频繁集 从频繁项集中挖掘关联规则 什么是关联分析 从大规模数据集中寻找物品间的隐含关系被称作关联分析.而寻找物品的 ...

  4. 关联性挖掘--Apriori算法详解

      首先,要感谢谭武和张朋博同学的PPT,怀念以前一起学习数据挖掘十大算法的时光! 1.关联挖掘例子 啤酒和尿布的故事:   在一家超市中,人们发现了一个特别有趣的现象:尿布与啤酒这两种风马牛不相及的 ...

  5. 【大数据算法】:apriori算法详解,非常清晰

    如果看懂了apriori算法的直接看下面的过程, 从第k-1层推到第k层的时候的过程就是扩大-连接-剪支的过程,明白了这个了就好写了 1. 扫描数据库,生成候选1项集和频繁1项集. 2. 从2项集开始 ...

  6. Apriori算法详解及手写案例

    大家好,我是W 在数据挖掘中有一种关联分析算法叫做Apriori算法,大家可能都听说过啤酒尿布的故事,购买尿布的爸爸很可能会再去购买一份啤酒来犒劳自己,在大数据的背景下已经无法使用人工的方法去发现海量 ...

  7. ipriori weka java_weka apriori算法详解以及参数详解

    一.Apriori算法参数含义 本次共进行了9组实验,使用了weka安装目录data文件夹下的contact-lenses.arff数据. ToolsàArffViewer,打开contact-len ...

  8. 数据挖掘|关联规则Apriori算法详解及其在中医医案中的应用

    本文简单介绍传统数据挖掘关联规则算法中的Apriori算法,以及在挖掘中医医案辨证规律中的应用.并简单分析传统算法缺点,提出简要的改进思路. 文章目录 一.关联规则简介 二.Apriori算法简介 三 ...

  9. Apriori算法详解

    1.相关概念 支持率: 一个项集III在事务集合Γ={T1,T2,-,Tn}\Gamma=\begin{Bmatrix}T_1,T_2,\ldots,T_n\end{Bmatrix}Γ={T1​,T2 ...

  10. 【数据挖掘】:FP增长算法详解

    FP-growth算法,fpgrowth算法详解 使用FP-growth算法来高效发现频繁项集 前言 你用过搜索引擎挥发现这样一个功能:输入一个单词或者单词的一部分,搜索引擎酒会自动补全查询词项,用户 ...

最新文章

  1. Activity的使用(四):两个activity的交互
  2. catch and batch
  3. $(function(){})和$(document).ready(function(){})
  4. 什么叫优雅降级和渐进增强
  5. linux cache 内核参数,Linux内核中drop_caches参数
  6. ubuntu tail、history|grep 、alias命令
  7. word List 46
  8. 爬虫demo_全自动爬虫,你爱了么!解放双手的时刻
  9. socket:通常每个套接字地址(协议/网络地址/端口)只允许使用一次
  10. 这些神经网络调参细节,你都了解了吗
  11. Oracle 10g 手工创建一个最简单的数据库
  12. 智慧体检中心管理系统方案/APP/小程序/公众号/网站
  13. 网易的又一款榜首之作,《倩女幽魂》营销负责人解析
  14. java人学生大学生类的继承,java实验报告7.doc
  15. java 设计模式 常用21种
  16. word插入标题之后自动跳到下一页怎么解决?
  17. B.FRIENDit壁虎忍者GC03电竞椅,坐的舒服才能心无旁骛!
  18. 消息 ByteBuf 详解
  19. opencv曝光过度_使用 OpenCV 进行曝光融合(Exposure Fusion)成像
  20. 漂亮的html静态页面demo,web前端里见过最惊艳的HTML5的demo

热门文章

  1. 介绍一下python getopt 模块
  2. Swift 面向协议编程入门
  3. python开发环境规范——pycharm
  4. 解决SQL Server 连接时的一些基本问题后的若干初浅心得
  5. 【转】关于动态库和静态库
  6. 利用破解dll来获取到一个软件的注册码
  7. 熟悉常规B/S、C/S系统开发实现原理
  8. UVA 10246 Asterix and Obelix
  9. win2K/win2003终端服务器超出最大允许连接数解决之道全攻略
  10. sql 取一个月日期去掉周末的所有日期_LeetCode:SQL