关联性分析

​关联性分析又称关联挖掘,就是在交易数据、关系数据或其他信息载体中,查找存在于项目集合或对象集合之间的频繁模式、关联、相关性或因果结果。通俗地讲就是发现各种商品之间的关系,一种商品的售卖是否会影响另一种商品的售卖,这些数据可以用于用户推荐系统。
比较形象一点的案例就是商场里的货架物品摆放。在美国有这样一家奇怪的超市,它将啤酒与尿布这样两个奇怪的东西放在一起进行销售,并且最终让啤酒与尿布这两个看起来没有关联的东西的销量双双增加,这家超市的名字叫做沃尔玛,后来经过市场研究,发现美国的太太们常叮嘱她们的丈夫下班后为小孩买尿布,而丈夫们在买尿布后又随手带回了他们喜欢的啤酒(小栈内心表示是我的话会买包长寿烟)。
虽然这个故事是事后分析,但是如何找出物品之间的关联规则,是我们应该关注的,今天就介绍一下用Apriori算法来找到物品之间的关联规则。
一、Apriori知识点与原理
做 Apriori分析主要分为两步:
1、找出频繁一起出现的物品的集合,我们称之为频繁项集。比如一个超市的频繁项集可能有{{啤酒,尿布},{鸡蛋,牛奶},{香蕉,苹果}}等,
2、在频繁项集的基础上,使用关联规则算法找出其中物品的关联结果。
还有以下几个概念要明白,都是统计学的概率理论:
1、支持度(Support):可以理解为某物品出现的概率
支持度(A)= (包含A物品的记录数)/(总记录数)
2、置信度(Confidence):指在A出现的概率下有多大可能性出现B
置信度(A→B) = (包含A和B物品的记录数)/(A的记录数)
3、提升度(Lift):当销售一个物品时,另一个物品销售率会增加多少
提升度(A→B) = 置信度(A→B)/支持度(A)
二、Apriori分析
根据上面的步骤解析,小栈主要使用python里的mlxtend库。频繁项集的查找使用Apriori,关联规则的解释使用的是association_rules
1、数据导入与清洗
关联分析是一种机器学习的语言,所以数据要编码成机器可识别的语言,如下图所示,这里介绍两种编码方式:一种是label编码,另一种是独热编码
在这里插入图片描述

#label编码#
import pandas as pd
df  = pd.read_csv(r'C:\Users\didi\Desktop\apriori.csv')
print(df)#原数据#
for i in range(7,18):
    df.iloc[:,i] =df.iloc[:,i].apply(lambda x : True if x == 'T' else False)
df

在这里插入图片描述
小栈的数据是经过初步处理的数据,但是生活中拿到的数据应该是下面这样的,这种数据要怎么处理呢?使用mlxtend自带的独热编码
在这里插入图片描述

#独热编码#
import pandas as pd
from mlxtend.preprocessing import TransactionEncoder
dataset = [['牛奶','洋葱','肉豆蔻','芸豆','鸡蛋','酸奶'],
        ['莳萝','洋葱','肉豆蔻','芸豆','鸡蛋','酸奶'],
        ['牛奶','苹果','芸豆','鸡蛋'],
        ['牛奶','独角兽','玉米','芸豆','酸奶'],
        ['玉米','洋葱','洋葱','芸豆','冰淇淋','鸡蛋']]
te = TransactionEncoder()
te_df = te.fit_transform(dataset)
df = pd.DataFrame(te_df,columns=te.columns_)
df

在这里插入图片描述
2、找出频繁集

from mlxtend.frequent_patterns import apriori
df1 = df.iloc[:,7:]
freq = apriori(df1,min_support=0.1,use_colnames= True)
freq
#由于数据原因,小栈把支持度设置成0.1#

在这里插入图片描述
3、找出关联规则

from mlxtend.frequent_patterns import association_rules
result  = association_rules(freq,metric='confidence', min_threshold=0.8)
result

在这里插入图片描述
​小栈把置信度设置成0.8,算比较高的了,意思是买A项集的产品有80%以上的可能性买B项集的产品。从上面可以看到买(beer, cannedveg)的人有87.42%的可能性买frozenmeal,如果(beer, cannedveg)销售额提升,frozenmeal的销售额会提升289%
三、总结
对于关联性分析主要掌握两个步骤:找频繁项集和规则解析,就可以完全掌了,这种分析方法在用户商品推荐中非常实用,甚至可以用于商品的打包营销。如果能拿到用户信息数据,可以进行进一步的用户行为分析。

已开通微信账号,欢迎关注数据分析小栈交流:
在这里插入图片描述

  • 4
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值