大家一定听过啤酒和尿布的故事。这是一个非常典型的篮子分析。通过分析客户的购买习惯,制定相应的营销策略,增加收入。零售超市关联分析的具体分析场景。今天就来总结一下关联分析的基本概念,以及如何使用Apriori算法来实现关联分析。1、什么是关联分析?一、关联分析的定义关联分析是数据挖掘中一项简单实用的技术。通过对数据集的深入分析,发现事物之间的关联,挖掘频繁出现的组合,描述组合对象同时出现的模式和规律。.关联分析技术不仅可以用来分析用户购买行为之间的相关性,从而制定营销策略,还可以应用于智能推荐系统、医疗、保险等领域。2、关联分析的基本概念交易库:记录用户行为的数据,在购物车分析中,就是用户的订单交易信息和商品数据。事务:事务数据库中的每一行记录都是一个事务。在篮子分析方面,订单就是交易。商品和商品集:在购物篮交易库中,订单中的每一个商品都是一个商品,商品的集合称为商品集。关联规则:由“pre-part”和“post-part”组成,A->B,{A,B}->C,分别表示如果用户购买了A,他也会购买B,如果一个用户购买了A和B,也会购买C。Support:包含该商品集合的交易占整体所有交易的比例。例如,商品集{A,B}在购物篮中出现了3次,共有5个订单,则商品集{A,B}的支持度为3/5。频繁项集:支持度大于人为设定阈值的项集成为频繁项集。置信度:置信度是指项目集Y出现在包含项目集X的交易中的频率。在购物篮交易中,关联规则X->Y的置信度=P(Y|X)=P(XY)/P(X)=support(X,Y)/support(X)strongassociationrule:强关联规则是满足频繁项集最小置信度的关联规则,即项集必须首先满足最小支持度。2、什么是Apriori算法?Apriori算法是著名的关联规则挖掘算法之一。核心是递归算法。步骤如下:设置最小支持度和最小置信度,根据最小支持度寻找频繁项集,根据最小置信度寻找强关联规则。,Python中的Apriori算法Python可以使用apyori库和mlxtend库快速推向强关联规则。apyori库使用方便,但有时会遗漏一些强关联规则;mlxtend库有点麻烦,但更严谨。1.案例一——使用apyori库实现疾病关联分析importpandasaspddf=pd.read_excel('ChineseMedicineSyndrome.xlsx')print(df.head())excel数据存储患者编号和患者疾病,共1000项:symptoms=[]foriindf['patientsymptoms'].tolist():symptoms.append(i.split(','))print(symptoms)去掉逗号后的列表:symptomsfromapyoriimportapriori#Setsupportandconfidencerules=apriori(symptoms,min_support=0.1,min_confidence=0.7)results=list(rules)foriinresults:forjini.ordered_statistics:#获取频繁项集中的强关联规则#前面itemX=j.items_base#后续Y=j.items_addx=','.join([itemforiteminX])#连接前面的元素y=','.join([itemforiteminY])ifx!='':#防止前面的项为空。print(x+'→'+y)最终结果如下:2.案例1——使用mlxtend库实现亚马逊购物篮分析数据集在kaggle中上传下载的数据集为1000行的数据集.mlxtend的数据要求不能有id列,但必须有header,value必须是True或False的字符串importpandasaspddf=pd.read_csv('basket_analysis.csv')print(df.head())frommlxtend.frequent_patternsimportaprioriitems=apriori(df,min_support=0.1,use_colnames=True)print(items)项是置信度大于等于0.1的频繁项Itemsetfrommlxtend.frequent_patternsimportassociation_rulesrules=association_rules(items,min_threshold=0.4)rules就是如上最后得到的结果集的header列,其中antecedents列代表关联规则中的前因,如associationrule{A}→{{A}在B}中;consequents列表示关联规则中的后件,如关联规则{A}→{B}中的{B};前件支持度列表示对前件的支持度,后件支持度列表示后件对关联规则的支持度,支持度列表示对关联规则的支持度,置信度列表示对关联规则的置信度。输出结果中的lift、leverage和conviction这三列用来衡量关联的强度:lift列表示关联规则。关联规则的提升度,其计算公式为“关联规则支持度/(前置条件支持度×后续度支持度)”,值越大,X与Y的关联度越强;杠杆一栏表示关联规则的程度杠杆率,其计算公式为“关联规则支持度-前因支持度×后因支持度”,值越大,X与Y之间的相关性越强;信念栏表示关联规则的确定性,其计算公式为“(1-后因支持)/(1-关联规则置信度)”,值越大,表示X和Y的相关性越强。对于i,jinrules.iterrows():X=j['antecedents']Y=j['consequents']x=','.join([itemforiteminX])y=','.join([itemforiteminY])print(x+'→'+y)这是最后一个部分关联规则,其中置信度参数可以灵活调整。我一开始设置为0.7,但是没有结果。说明这个数据集中产品购买的相关性没有达到70%的比例。实际应用可以根据实际场景,针对不同置信度的相关产品进行阶段性的产品营销策略。
