数据挖掘之---Apriori算法

Apriori算法总结
使用场景:
关联分析,是一种挖掘数据集中关联关系的方法。比如 购物时,购买 尿不湿,和买啤酒的关联关系。购买粉底和眼霜 的关联关系等等。为了挖掘出一些,肉眼不易看出的 数据集之间的关系,并加以解读。统计数据集中出现某项数据的出现频率,来确定该行为的可信度。这是使用场景。

原理:
该算法会统计一阶项、二阶项,以此类推多阶项,在数据集中出现的频度。并通过支持度来设置阈值,低于阈值频度的将会被筛选掉。并计算出每个关联关系的置信度。置信度越高,说明关联关系越强。支持度越高,说明出现频率越高,越是可信的。

支持度和可信度。

1、一个项集的支持度(support)

表示同时购买X、Y的订单数占总订单数(研究关联规则的“长表”中的所有购买的产品的订单数)的比例。如果用P(X)表示购买X的订单比例,其他产品类推,那么

支持度

2、可信度或置信度(confidence)

表示购买X的订单中同时购买Y的比例,即同时购买X和Y的订单数占购买X的订单的比例。公式表达:

可信度

3、提升度
提升度反映了关联规则中的X重点内容与Y的相关性:提升度 >1 且越高表明正相关性越高;提升度 <1 且越低表明负相关性越高;提升度 =1 表明没有相关性。

提升度

算法流程:


Apriori算法流程图

Apriori算法伪代码:

Procedure apriori(D,min_sup)
     L1 =find_frequent_1-itemsets(D); // 找出频繁 1 项集   
     for(k=2;Lk-1 !=null;k++)
     {  
        Ck =apriori_gen(Lk-1 );  // 产生候选,并剪枝  
        
        // 扫描 D 进行候选计数 
        for each 事务t  in D{      
            Ct =subset(Ck,t);    // 得到 t 的子集  
            for each 候选 c 属于 Ct  
                c.count++;  
    
        Lk ={c 属于 Ck|c.count>=min_sup} //返回候选项集中不小于最小支持度的项集   
     }  
     return L= 所有的频繁集;  
第一步:连接(join)  
Procedure apriori_gen (Lk-1:frequent(k-1)-itemsets)  
      for each 项集 l1 属于 Lk-1  
         for each 项集 l2 属于 Lk-1  
            if((l1[1]=l2[1])&(l1[2]=l2[2])&…&(l1[k-2]=l2[k-2])&(l1[k-1]

如需源码,请私信我。

参考资料1:https://blog.csdn.net/weixin_39220714/article/details/83595519
参考资料2:https://www.csdn.net/tags/MtTaEg5sOTQ5NjUtYmxvZwO0O0OO0O0O.html

你可能感兴趣的:(数据挖掘之---Apriori算法)