http://www.cnblogs.com/jingwhale/p/4618351.html

Apriori algorithm是关联规则里一项基本算法。是由Rakesh Agrawal和Ramakrishnan Srikant两位博士在1994年提出的关联规则挖掘算法。关联规则的目的就是在一个数据集中找出项与项之间的关系,也被称为购物蓝分析 (Market Basket analysis),因为“购物蓝分析”很贴切的表达了适用该算法情景中的一个子集。
  关于这个算法有一个非常有名的故事:"尿布和啤酒"。故事是这样的:美国的妇女们经常会嘱咐她们的丈夫下班后为孩子买尿布,而丈夫在买完尿布后又要顺 手买回自己爱喝的啤酒,因此啤酒和尿布在一起被购买的机会很多。这个举措使尿布和啤酒的销量双双增加,并一直为众商家所津津乐道。

一.一些概念和定义

1.定义1 项目与项集

设I={i1,i2,…,im}是m个不同项目的集合,每个ik(k=1,2,……,m)称为一个项目(Item)。
项目的集合 I 称为项目集合(Itemset),简称为项集。其元素个数称为项集的长度,长度为k的项集称为k-项集(k-Itemset)。

2.定义2 交易

每笔交易T(Transaction)是项集I上的一个子集,即TI,但通常TI。
对应每一个交易有一个唯一的标识——交易号,记作TID
交易的全体构成了交易数据库D,或称交易记录集D,简称交易集D。
交易集D中包含交易的个数记为|D|。

3.定义3 项集的支持度

对于项集X,XI,设定count(XT)为交易集D中包含X的交易的数量


项集X的支持度support(X)就是项集X出现的概率,从而描述了X的重要性。

4.定义4 项集的最小支持度与频繁集

发现关联规则要求项集必须满足的最小支持阈值,称为项集的最小支持度(Minimum Support),记为supmin。
支持度大于或等于supmin的项集称为频繁项集,简称频繁集,反之则称为非频繁集。
通常k-项集如果满足supmin,称为k-频繁集,记作Lk 。

5.定义5 关联规则

关联规则(Association Rule)可以表示为一个蕴含式:
                        
其中:
例如:R:牛奶→面包

6.定义6 关联规则的支持度


规则R的的支持度(Support)是交易集中同时包含X和Y的交易数与所有交易数之比。

例如:在5条记录中,既有橙汁又有可乐的记录有2条。则此条规则的支持度为 2/5=0.4,即Support(A-〉B)=P(AB)。

7.定义7 关联规则的置信度


规则R的置信度(Confidence)是指包含X和Y的交易数与包含X的交易数之比

例如:计算“如果Orange则Coke”的置信度。由于在含有“橙汁”的4条交易中,仅有2条交易含有“可乐”。其置信度为0.5。

8.定义8 关联规则的最小支持度和最小置信度

关联规则的最小支持度也就是衡量频繁集的最小支持度(Minimum Support),记为supmin,它用于衡量规则需要满足的最低重要性。
关联规则的最小置信度(Minimum Confidence)记为confmin,它表示关联规则需要满足的最低可靠性。

9.定义9 强关联规则

,称关联规则X=》Y为强关联规则,否则称关联规则X=》Y为弱关联规则。

在挖掘关联规则时,产生的关联规则要经过supmin和confmin的衡量,筛选出来的强关联规则才能用于指导商家的决策。

10.候选集(Candidate itemset):通过向下合并得出的项集。定义为C[k]。
11.频繁集(Frequent itemset):支持度大于等于特定的最小支持度(Minimum Support/minsup)的项集。表示为L[k]。注意,频繁集的子集一定是频繁集。
12.提升比率(提升度Lift):lift(X -> Y) = lift(Y -> X) = conf(X -> Y)/supp(Y) = conf(Y -> X)/supp(X) = P(X and Y)/(P(X)P(Y))
经过关联规则分析后,针对某些人推销(根据某规则)比盲目推销(一般来说是整个数据)的比率,这个比率越高越好,我们称这个规则为强规则;

13.剪枝步:只有当子集都是频繁集的候选集才是频繁集,这个筛选的过程就是剪枝步。

二.Apriori Algorithm(关联规则)算法动态演示(点击下载ppt观看

三.Apriori Algorithm(关联规则)算法描述

Apriori 算法采用的方法为:首先产生频繁 1-项集 L1,然后用 L1经过自连接、剪枝生成 L2,频繁 2-项集 L2又用来生成 L3,以此类推,逐层迭代,直到无法产生新的频繁项集为止。然后根据给定的最小可信度,利用生成的频繁项集产生关联规则。

1.产生频繁项集 该过程可以通过以下步骤实现:

1)  第一阶段,所有单独的项都是候选项集 C1。任何支持度值比给定的最小支持度值小的项都将从候选项集 C1中剔除,形成频繁 1-项集 L1。 
2)  两个 L1通过自连接形成具有 2 个项的候选项集 C2。通过再次扫描数据库决定这些候选项的支持度。保留比预先给定的最小支持度大的候选项,形成频繁 2-项集L2。 
3)  下一步形成含有 3 个项的候选项集 C3,重复上述步骤,直到找到所有的频繁项集为止。

Apriori 算法的伪码描述如下所示:

输入:数据集 D,min_sup 
输出:D 中的频繁项集 L

2.产生关联规则

从事务数据库 D 中挖掘出频繁所有的频繁项集后,就可以比较容易的获得相应的关联规则,即满足可信度min_conf 的频繁项集产生强关联规则。由于规则是由频繁项集产生,所以每个规则自动满足 min_sup。

在用频繁项 X 生成关联的伪码如下:

输入:Yk,Lk,min_conf 
输出:形如 X=》Y 的关联规则

数据挖掘算法-Apriori Algorithm(关联规则)的更多相关文章

  1. 先验算法(Apriori algorithm) - 机器学习算法

    Apriori is an algorithm for frequent item set mining and association rule learning over transactiona ...

  2. 数据挖掘算法——Apriori

    在上一篇数据挖掘入门算法整理中提到,Apriori算法是关联规则算法中使用最为广泛的算法,这次我们就来学习下该算法的基本知识. 一.算法概述 Apriori 算法是一种最有影响力的挖掘布尔关联规则的频 ...

  3. 数据挖掘算法——Apriori算法

    Apriori算法  首先,Apriori算法是关联规则挖掘中很基础也很经典的一个算法. 转载来自:链接:https://www.jianshu.com/p/26d61b83492e 所以做如下补充: ...

  4. 数据挖掘算法之-关联规则挖掘(Association Rule)(购物篮分析)

    在各种数据挖掘算法中,关联规则挖掘算是比較重要的一种,尤其是受购物篮分析的影响,关联规则被应用到非常多实际业务中,本文对关联规则挖掘做一个小的总结. 首先,和聚类算法一样,关联规则挖掘属于无监督学习方 ...

  5. 关联规则算法(The Apriori algorithm)详解

    一.前言 在学习The Apriori algorithm算法时,参考了多篇博客和一篇论文,尽管这些都是很优秀的文章,但是并没有一篇文章详解了算法的整个流程,故整理多篇文章,并加入自己的一些注解,有了 ...

  6. 数据挖掘算法之关联规则挖掘(一)apriori算法

    关联规则挖掘算法在生活中的应用处处可见,几乎在各个电子商务网站上都可以看到其应用 举个简单的例子 如当当网,在你浏览一本书的时候,可以在页面中看到一些套餐推荐,本书+有关系的书1+有关系的书2+... ...

  7. 【十大经典数据挖掘算法】Apriori

    [十大经典数据挖掘算法]系列 C4.5 K-Means SVM Apriori EM PageRank AdaBoost kNN Naïve Bayes CART 1. 关联分析 关联分析是一类非常有 ...

  8. 数据挖掘算法之-关联规则挖掘(Association Rule)

    在数据挖掘的知识模式中,关联规则模式是比较重要的一种.关联规则的概念由Agrawal.Imielinski.Swami 提出,是数据中一种简单但很实用的规则.关联规则模式属于描述型模式,发现关联规则的 ...

  9. 详解十大经典数据挖掘算法之——Apriori

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第19篇文章,我们来看经典的Apriori算法. Apriori算法号称是十大数据挖掘算法之一,在大数据时代威风无两,哪 ...

随机推荐

  1. Yii 1.1 URL两个笔记 同时支持PATH于GET路由和隐藏index.php

    同时支持PATH于GET格式路由(修改框架文件 简直坑) framework/web/CUrlManager.php parseUrl方法 第一行判断修改成 if($this->getUrlFo ...

  2. linux命令 screen的简单使用

    在远程命令行下某些长时间的操作,一旦网络出现故障,后果可能会很严重,在这种情况下可以使用screen命令来解决.screen可以创建一个session,在不小心断开以后还可以继续恢复session保存 ...

  3. C#获取ftp文件最后修改时间

    public static DateTime GetFileModifyDateTime(string ftpServerIP,string ftpFolder,string ftpUserID,st ...

  4. cocos中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)

    CCLabelTTF CCLabelTTF 每次调用 setString (即改变文字)的时候,一个新的OPENGL 纹理将会被创建..这意味着setString 和创建一个新的标签一样慢. 这个类使 ...

  5. this compilation unit is not on the build of a java project

    this compilation unit is not on the build of a java project java里输入代码就出这个提示,无法写代码了. 找到觉得路径打开文件编辑就好了, ...

  6. 60分钟内从零起步驾驭Hive实战学习笔记

    本博文的主要内容是: 1. Hive本质解析 2. Hive安装实战 3. 使用Hive操作搜索引擎数据实战 SparkSQL前身是Shark,Shark强烈依赖于Hive.Spark原来没有做SQL ...

  7. Hadoop MapReduce概念学习系列之map并发任务数和reduce并发任务数的原理和代码实现(十八)

    首先,来说的是,reduce并发任务数,默认是1. 即,在jps后,出现一个yarnchild.之后又消失. 这里,我控制reduce并发任务数6 有多少个reduce的并发任务数可以控制,但有多少个 ...

  8. ilog

    PCISV7-VHL [2015-11-13 13:51:36,038]>>>INFO>>>[ com.isoftstone.pcis.policy.app.pla ...

  9. java 常用concurrent类

    1.CountDownLatch 它的作用主要是当多个(数量等于初始化CountDownLatch时count参数的值)线程到达了预期状态或完成预期工作时触发事件,其他线程可以等待这个事件来触发自己后 ...

  10. How Tomcat Works(二)

    我们这些可怜虫,只有沿着大神的思路,这样我们才能进步得更快:因为我们不是跟大神处于同一级别上.所以我这里是参考<How Tomcat Works>这本英文版的大作来理解tomcat的工作原 ...