人工智能之Apriori算法

AI优化生活

    人工智能机器学习有关算法内容,请参见公众号“科技优化生活”之前相关文章。人工智能之机器学习主要有三大类:1)分类;2)回归;3)聚类。今天我们重点探讨一下Apriori算法。 ^_^ 
    Apriori算法是经典的挖掘频繁项集关联规则的数据挖掘算法,也是十大经典机器学习算法之一。
    
    Agrawal和Srikant两位博士在1994年提出了Apriori算法,主要用于做快速的关联规则分析。
    
    A priori在拉丁语中指"来自以前"。当定义问题时,通常会使用先验知识或者假设,这被称作"一个先验"(a priori)。Apriori算法正是基于这样的事实:算法使用频繁项集性质的先验性质,即频繁项集的所有非空子集也一定是频繁的。
    Apriori算法概念:
    Apriori算法使用一种称为逐层搜索的迭代方法,其中k项集用于探索(k+1)项集。首先,通过扫描数据库,累计每个项的计数,并收集满足最小支持度的项,找出频繁1项集的集合。该集合记为L1。然后,使用L1找出频繁2项集的集合L2,使用L2找出L3,如此下去,直到不能再找到频繁k项集。每找出一个Lk需要一次数据库的完整扫描。Apriori算法使用频繁项集的先验性质来压缩搜索空间。
    注:数据库中的数据可以是结构化的,也可以是半结构化的,甚至还可以是分布在网络上的异构型数据。
    
    Apriori算法是一种最有影响掘布尔关联规则频繁项集的算法。其核心是基于两阶段频集思想的递推算法。该关联规则在分类上属于单维、单层、布尔关联规则。在这里,所有支持度大于最小支持度的项集称为频繁项集,简称频集。
    
    Apriori算法中术语
    1、项集和K-项集
    令I={i1,i2,i3……id}是数据中所有项的集合,而T={t1,t2,t3….tN}是所有事务的集合,每个事务ti包含的项集都是I的子集。在关联分析中,包含0个或多个项的集合称为项集。如果一个项集包含K个项,则称它为K-项集。空集是指不包含任何项的项集。
    2、支持度计数
    项集的一个重要性质是它的支持度计数,即包含特定项集的事务个数,数学上,项集X的支持度计数σ(X)可以表示为 :
    σ(X)=|{ti|X?ti,ti∈T}|
    其中,符号|*|表示集合中元素的个数。
    3、关联规则
    关联规则是形如X→Y的蕴含表达式,其中X和Y是不相交的项集,即X∩Y=空。
    关联规则的强度可以用它的支持度(support)和置信度(confidence)来度量。
    支持度确定规则可以用于给定数据集的频繁程度,而置信度确定Y在包含X的事务中出现的频繁程度。 
    支持度(s)和置信度(c)这两种度量的形式定义如下: 
    s(X→Y)=σ(X∪Y)/N 
    c(X→Y)=σ(X∪Y)/σ(X) 
    其中, σ(X∪Y)是(X∪Y)的支持度计数,N为事务总数,σ(X)是X的支持度计数。
    对于靠谱的关联规则,其支持度与置信度均应大于设定的阈值。那么,关联分析问题即等价于:对给定的支持度阈值min_sup、置信度阈值min_conf,找出所有的满足下列条件的关联规则:
    支持度>=min_sup
    置信度>=min_conf
    把支持度大于阈值的项集称为频繁项集(frequent itemset)。因此,关联规则分析可分为下列两个步骤:
    1)生成频繁项集F=X∪Y;
    2)在频繁项集F中,找出所有置信度大于最小置信度的关联规则X->Y
    Apriori算法思想
    1)找出所有的频集,这些项集出现的频繁性至少和预定义的最小支持度一样。
    2)由频集产生强关联规则,这些规则必须满足最小支持度和最小可信度。
    3)使用第1)步找到的频集产生期望的规则,产生只包含集合的项的所有规则,其中每一条规则的右部只有一项,这里采用的是中规则的定义。
    4)一旦这些规则被生成,那么只有那些大于用户给定的最小可信度的规则才被留下来。为了生成所有频集,使用了递归的方法。
    Aprior算法程序如下:
    
    Apriori算法优点:
    1)使用先验性质,大大提高了频繁项集逐层产生的效率
    2)简单易理解
    3)数据集要求低
    4)扩展性较好,可以并行计算。
    Apriori算法缺点:
    1)    可能产生大量的候选集;
    2)    可能需要重复扫描整个数据库,非常耗时
    Apriori算法改进:
    定理:如果规则X->Y?X 不满足置信度阈值, 则对于X的子集X′->Y?X′也不满足置信度阈值。
    根据此定理,可对规则树进行剪枝,其具体改进的算法如下:
    
    Apriori算法应用:
    通过对数据的关联性进行了分析和挖掘,挖掘出的这些信息在决策制定过程中具有重要的参考价值。Apriori 算法被广泛应用于各种领域:
    1)应用于商业活动领域,应用于消费市场价格分析中,它能够很快的求出各种产品之间的价格关系和它们之间的影响。
    2)应用于网络安全领域,通过模式的学习和训练可以发现网络用户的异常行为模式,能够快速的锁定攻击者,提高了基于关联规则的入侵检测系统的检测性。
    3)应用于高校管理中。随着高校贫困生人数的不断增加,学校管理部门资助工作难度也越加增大。针对这一现象,将关联规则的Apriori算法应用到贫困助学体系中,挖掘出的规则也可以有效地辅助学校管理部门有针对性的开展贫困助学工作。
    4)应用于移动通信领域。基于移动通信运营商正在建设的增值业务Web数据仓库平台,对来自移动增值业务方面的调查数据进行了相关的挖掘处理,从而获得了关于用户行为特征和需求的间接反映市场动态的有用信息,这些信息在指导运营商的业务运营和辅助业务提供商的决策制定等方面具有十分重要的参考价值。
    结语:
    Apriori算法是一种挖掘关联规则的频繁项集算法,其核心思想是通过候选集生成和情节的向下封闭检测两个阶段来挖掘频繁项集。主要用于做快速的关联规则分析。Apriori算法在世界上广为流传,得到极大的关注。Apriori算法已经被广泛的应用到商业、网络安全、高校管理和移动通信等领域。
                                     ------以往文章推荐------                                   
    机器学习
    深度学习
    人工神经网络
    决策树
    随机森林
    强化学习
    迁移学习
    遗传算法
    朴素贝叶斯
    支持向量机
    蒙特卡罗方法
    马尔科夫模型
    Hopfield神经网络
    回归模型
    K邻近算法
    卷积神经网络
    受限玻尔兹曼机
    循环神经网络
    长短时记忆神经网络
    Adaboost算法
    ID3算法
    C4.5算法
    CART算法
    K-Means算法