码迷,mamicode.com
首页 > 编程语言 > 详细

Apriori算法的初步分析

时间:2017-08-30 15:42:29      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:super   剪枝   ocr   gns   ntpd   acm   生成   abr   ctp   

一、简介
        Apriori算法是一种挖掘关联规则的频繁项集算法,其核心思想是通过候选集生成和情节的向下封闭检测两个阶段来挖掘频繁项集。而且算法已经被广泛的应用到商业、网络安全等各个领域。例如著名的购物篮问题。
二、结合应用分析
1、购物篮问题:顾客在买了某种商品时也会买另一种商品。例如下面这些关联:
TID
Iterms
1 {Bread, Milk}
2 {Bread, Diapers, Beer, Eggs}
3 {Milk, Diapers, Beer, Cola}
4 {Bread, Milk, Diapers, Beer}
5 {Bread, Milk, Beer, Cola}
      
    例如Diaper<->Beer,即顾客在买完尿布之后通常会买啤酒。后来通过调查分析,原来妻子嘱咐丈夫给孩子买尿布时,丈夫在买完尿布后通常会买自己喜欢的啤酒。
    但是这个关联是否可靠呢?需要有一个度量标准:支持度和置信度
    2、支持度和置信度
    关联规则描述为下面这样的映射:
    项集->项集
    项集X出现事务次数定义为:
        σ(X)=|ti|X?ti,ti∈T|ti表示某个事务,T为事务集合
    关联规则X->Y的支持度定义为:
        s(X?Y)=σ(X∪Y)/|T|,定义了X∪Y的出现频次
        置信度定义为:
                    s(X?Y)=σ(X∪Y)/σ(X),可见置信度可以理解为条件概率p(Y|X),表示X下Y的概率
        由此可见,一个关联规则是否合适,支持度和置信度应大于某个阈值,支持度大于阈值的项集称为频繁项集
        所以关联分析主要分两步:
        1. 生成频繁项集
        2. 在频繁项集F中,找出所有置信度大于最小置信度的关联规则X->Y
        
        3、Apriori算法
        定理1:如果一个项集是频繁的,那么其所有的子集(subsets)也一定是频繁的。这个比较容易证明,因为某项集的子集的支持度一定不小于该项集。
        定理2:如果一个项集是非频繁的,那么其所有的超集(supersets)也一定是非频繁的。定理2是上一条定理的逆反定理。根据定理2,可以对项集树进行如下剪枝:
        技术分享
 
        项集树共有子项:技术分享,由此可见穷举法的暴力破解复杂度会很高,Apriori算法基于上面两个定理给出了              两种策略:
        Fk=Fk?1×F1,如图频繁项集F1和F2生成候选集C3
技术分享
        Fk=Fk?1×Fk?1Fk=Fk?1×Fk?1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Apriori算法的初步分析

标签:super   剪枝   ocr   gns   ntpd   acm   生成   abr   ctp   

原文地址:http://www.cnblogs.com/mar-q/p/7452863.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!