zoukankan      html  css  js  c++  java
  • 什么是关联分析?

    引言:

    在认识什么是关联分析之前。先了解一下关联分析能用来干什么吧:

    演示样例1:例如以下是一个超市几名顾客的交易信息。

    TID Items
    001 Cola, Egg, Ham
    002 Cola, Diaper, Beer
    003 Cola, Diaper, Beer, Ham
    004 Diaper, Beer

    TID代表交易流水号。Items代表一次交易的商品。

    我们对这个数据集进行关联分析,能够找出关联规则{Diaper}→{Beer}。
    它代表的意义是:购买了Diaper的顾客会购买Beer。这个关系不是必定的。可是可能性非常大,这就已经足够用来辅助商家调整Diaper和Beer的摆放位置了,比如摆放在相近的位置,进行捆绑促销来提高销售量。

    所以。关联分析的任务就是从数据集中挖掘出频繁项集,然后从频繁项集中提取出事物之间的强关联规则。辅助决策。


    各种定义:

    1、:每一条交易称为一个事务。比如演示样例1中的数据集就包括四个事务。
    2、:交易的每个物品称为一个项,比如Cola、Egg等。
    3、:包括零个或多个项的集合叫做项集,比如{Cola, Egg, Ham}。
    4、k:包括k个项的项集叫做k-项集,比如{Cola}叫做1-项集,{Cola, Egg}叫做2-项集。
    5、:一个项集出如今几个事务其中,它的支持度计数就是几。

    比如{Diaper, Beer}出如今事务002、003和004中。所以它的支持度计数是3。


    6、:支持度计数除于总的事务数。比如上例中总的事务数为4,{Diaper, Beer}的支持度计数为3。所以它的支持度是3÷4=75%。说明有75%的人同一时候买了Diaper和Beer。
    7、:支持度大于或等于某个阈值的项集就叫做频繁项集。

    比如阈值设为50%时,由于{Diaper, Beer}的支持度是75%,所以它是频繁项集。


    8、:对于规则{Diaper}→{Beer},{Diaper}叫做前件。{Beer}叫做后件。
    9、:对于规则{Diaper}→{Beer},{Diaper, Beer}的支持度计数除于{Diaper}的支持度计数。为这个规则的置信度。比如规则{Diaper}→{Beer}的置信度为3÷3=100%。说明买了Diaper的人100%也买了Beer。
    10、:大于或等于最小支持度阈值和最小置信度阈值的规则叫做强关联规则。关联分析的终于目标就是要找出强关联规则。

    我们easy发现,假设一个项集是频繁项集。则它的子项集也都是频繁项集。假设一个项集是非频繁项集,则它的超集也一定是非频繁项集。(可用反证法证明,此处略)
    比如{Diaper, Beer}是频繁项集。则{Diaper}、{Beer}也都是频繁项集。
    比如{Egg}是非频繁项集。则{Cola, Egg}也是非频繁项集。


    关联分析:

    关联分析分为两个步骤:
    <1> 利用支持度找出数据集中的频繁项集。
    <2> 利用置信度从频繁项集中提取出强关联规则。

    频繁项集的挖掘:

    Apriori算法:

    Apriori算法的思路是先找出候选项集,然后依据最小支持度阈值筛选出频繁项集。


    比如先找出全部1-项集。然后筛选出里面的频繁1-项集; 依据频繁1-项集生成候选2-项集,然后筛选出里面的频繁2-项集; 再依据频繁2-项集生成候选3-项集。从里面筛选出频繁3-项集;·······

    Apriori算法的缺点是须要不断扫描数据集,不断地求候选项集的支持度从而推断它是否是频繁项集。当数据集非常大的时候。这样的算法的效率将会非常低。


    很多其它关于Apriori。请见Apriori算法的介绍

    FP-Growth算法:

    FP-Growth算法仅仅须要扫描两次数据集。它的思想是把构造一棵FP-Tree。把数据集中的数据映射到树上,再依据这棵FP-Tree找出全部频繁项集。
    很多其它关于FP-Growth,请见FP-Growth算法的介绍FP_Growth算法python实现


    关联规则的生成:

    从步骤一已经得到了频繁项集,而此时的任务就是在频繁项集里面挖掘出大于最小置信度阈值的关联规则。


    怎么挖呢?把频繁项集分成前件和后件两部分,然后求规则前件→后件的置信度。假设大于最小置信度阈值,则它就是一条强关联规则。
    可是把频繁项集分成前件和后件的情况有非常多,我们能够对其进行一些优化。


    附加:

    此处是针对购物篮演示样例来介绍关联分析,购物篮信息属于布尔型的,而现实生活中很多事物都是数值量化的,比如{购买1个时钟}→{购买2块电池}。
    另外。对于产生的强关联规则,并非全部都是有价值的,还须要对关联规则进行评价。
    很多其它内容兴许再补上。


    转载请注明出处。谢谢!(原文链接:http://blog.csdn.net/bone_ace/article/details/46648965
  • 相关阅读:
    SpringMVC-乱码问题
    SpringMVC-数据提交
    SpringMVC-结果跳转方式
    SpringMVC-Controller&RestFul
    SpringMVC-基础
    Spring-声明式事务
    Spring-整合MyBatis
    Spring-AOP
    android 入门-工序
    android 入门-android Studio 解决方案
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5354562.html
Copyright © 2011-2022 走看看