美文网首页Python数据挖掘
Python数据挖掘012-关联规则

Python数据挖掘012-关联规则

作者: 科技老丁哥 | 来源:发表于2019-12-09 09:57 被阅读0次

关联规则挖掘是数据挖掘中第三个比较大的类别。

关联规则分析也称为购物篮分析,最早是为了发现超市销售数据库中不同的商品之间的关联关系。

关联规则挖掘的意义在于:比如如果发现超市中购买了面包的顾客也会极大概率的同时购买牛奶,那么就会有关联规则“面包==>牛奶”,所以超市就可以对面包降价促销,而提高牛奶的价格,这样可能增加超市整体的利润。

关联规则分析是数据挖掘中最活跃的研究方法之一,目的是在一个数据集中找出各项之间的关联关系。

常用的关联规则算法有:

image.png

1. Apriori算法

Apriori算法是最经典的挖掘频繁项集的算法,第一次实现了在大数据集上可行的关联规则提取,其核心思想是通过连接产生候选项与其支持度,然后通过剪枝生成频繁项集。

1.1 几个重要的概率:

支持度:项集A,B同时发生的概率。
置信度:项集A发生时,项集B发生的概率。
最小支持度:是用户或专家定义的衡量支持度的一个阈值,表示项目集在统计意义上的最低重要性。
最小置信度:是用户或专家定义的衡量置信度的一个阈值,表示关联规则的最低可靠性。
同时满足最小支持度阈值和最小置信度阈值的规则称为强规则。
项集:项的集合,比如集合{牛奶,麦片,糖}是一个3项集
频繁项集:如果项集I的相对支持度满足预定义的最小支持度阈值,则为频繁项集。
支持度计数:项集A的支持度计数是事务数据集中包含项集A的事务个数,将成为项集的频率或计数。

image.png

所以计算支持度和置信度,关键在于计算出所有事务个数,A,B,A∩B的支持度个数。

1.2 挖掘过程

Apriori挖掘主要分两个步骤:找出频繁项集,生成强关联规则。

基本原理:频繁项集的非空子集也一定是频繁项集,非频繁项集的超集也一定是非频繁项集。

有很多现成的挖掘库,也可以自己来手写挖掘库,实现起来也不是那么难。如下是使用pymining库来实现的挖掘过程,考察指标不仅仅考虑支持度,置信度,提升度,还会考虑kulc, IR等。

from pymining import itemmining
def mine_associate_rules(time_dicts_path,save_path,min_support_ratio=0.001):
    def load_baskets(dict_path): #OK
        with open(time_dicts_path,'r',encoding='utf-8') as file:
            result=eval(file.readline())
        return [item for item in result.values()]
    
    # 挖掘出频繁项集
    all_samples=load_baskets(time_dicts_path)
    baskets_len=len(all_samples) # 总个数N
    print('all samples len: ',baskets_len)
    relim_input=itemmining.get_relim_input(all_samples) 
    item_sets = itemmining.relim(relim_input, min_support=baskets_len*min_support_ratio ) # 获取频繁项集
    # return item_sets
    
    # 使用item_sets来计算各种指标:支持度,置信度,提升度,kulc, IR等
    sup_cnt={} # 首先将各种数量存放到dict中,此处只存放单个项和两个项的情况,不考虑多个项
    for item,num in item_sets.items():
        if len(item)==1:
            sup_cnt[str(list(item)[0])]=num
        elif len(item)==2:
            first,second=list(item)
            sup_cnt[str(first)+'_'+str(second)]=num
    
    # 使用sup_cnt来计算各种指标
    indicators=[]
    for key,value in sup_cnt.items():
        one_item=[]
        if '_' in key: # 两个项
            first,sec=key.split('_')
            one_item.append(key) # 第一列: 两个项
            one_item.append(sup_cnt[key]/baskets_len) # 支持度
#             if first in sup_cnt.keys(): first_in=True
#             if sec in sup_cnt.keys(): sec_in=True
            conf=sup_cnt[key]/sup_cnt[first] 
            one_item.append(conf) # 置信度
            lift=sup_cnt[key]*baskets_len/(sup_cnt[first]*sup_cnt[sec]) 
            one_item.append(lift)
            conf2=sup_cnt[key]/sup_cnt[sec] 
            kulc=(conf+conf2)/2 
            one_item.append(kulc)
            ir=abs(sup_cnt[first]-sup_cnt[sec])/(sup_cnt[first]+sup_cnt[sec]-sup_cnt[key])
            one_item.append(ir)
            indicators.append(one_item)
    # 转换为df,进行整理
    result_df=pd.DataFrame(indicators,columns=['items','support','conf','lift','kulc','IR'])
    result_df=np.round(result_df,4)
    result_df=result_df.sort_values(by = ['kulc'],axis = 0,ascending = False) # 按照kulc排序
    result_df.to_csv(save_path,index=False)
    print('finished...')
    return result_df

注意:挖掘出来的关联规则并不是都有实际意义,有的可能没有太多意义,仅仅是偶然而已,所以要根据实际应用场景来判断挖掘出来的关联规则的实际应用价值。

参考资料:

《Python数据分析和挖掘实战》张良均等

相关文章

  • Python数据挖掘012-关联规则

    关联规则挖掘是数据挖掘中第三个比较大的类别。 关联规则分析也称为购物篮分析,最早是为了发现超市销售数据库中不同的商...

  • [转]Spark购物篮分析:关联规则挖掘

    1、浅谈数据挖掘中的关联规则挖掘 2、Hadoop/MapReduce购物篮分析:关联规则挖掘 3、Spark购物...

  • 推荐系统第四周-基于频繁模式的推荐系统

    数据挖掘:关联规则挖掘 关联规则挖掘:Apriori算法 提高Apriori的效率 基于散列的算法基于FP tre...

  • R语言与关联规则挖掘—购物篮分析

    名词: 挖掘数据集:购物篮数据 挖掘目标:关联规则 关联规则:啤酒=>尿布(支持度0.02,置信度0.6) 支持度...

  • 数据挖掘-关联规则挖掘

    概念 基本概念 k-项集与MinS 关联规则、支持度、频繁 k- 项集 支持度:T中同时包含X和Y的事务在R中所占...

  • fp_growth频繁项集和关联规则Spark ML调用实现

    摘要:关联规则,置信度,支持度,提升度,规则集,数据挖掘,Spark 关联规则 关联规则是基于统计的无监督学习方法...

  • 数据挖掘知识

    关联 关联:是指一个事件和另一个事件之间的依赖关系,关联规则挖掘就是发掘数据库中的关联关系基本的关联规则挖掘算法:...

  • 数据挖掘之关联规则

    1. 关联规则概述 反映一个事物与其他事物之间的相互依存性和关联性。如果两个或者多个事物之间存在一定的关联关系,那...

  • 数据挖掘之关联规则

    关联规则 关联规则是数据挖掘研究里的重要内容,目的是为了找出不同东西之间的相关性。下面来介绍关联规则中一些重要的定...

  • 不会大数据,也能读懂关联分析

    关联分析(规则)即挖掘关联现象,从大量数据当中发现事物、特征或者数据之间的,频繁出现的相互依赖关系和关联关系。关联...

网友评论

    本文标题:Python数据挖掘012-关联规则

    本文链接:https://www.haomeiwen.com/subject/smtbgctx.html