关联规则分析案例,关联规则数据分析题,关联规则的实际案例数据
数据描述数据参数
订单编号:客户昵称
LineNumber的采购订单:显示同一客户购买的三种商品,如前三行所示。
型号:商品名称
注释
基于购物篮的关联规则智能算法推荐的应用。
三个基本问题:
1.为了达到最高的市场响应率,应该如何推广商品?
2.以整体销量最大化为目标,如何推荐产品?
3.用户没有消费。你推荐什么吗?
智能推荐算法有很多种,本文只对关联规则进行实践。
本文将重点讨论基于最容易理解和最经典的关联规则的购物篮建议。商品相关性分析有助于提高商品活力,激发消费者购买力,实现销售最大化。
它的建模思想是,同时购买商品的模式反映了顾客的需求模式。
应用场景:在不需要定制的场景中有销售记录的产品推荐给jaddd;课程设计和产品配置。
购物车介绍
问:什么是购物篮?主要运用在什么场景?
a)顾客一次购物的综合称为购物篮。也就是说这次是客户的消费票。常见场景:超市货架布局:互补产品和互斥产品;包装设计。
问:购物篮的常用算法?
答:常见的算法包括
不管购物顺序:关联规则。购物车分析其实就是因果分析。关联规则实际上是一种发现两种商品之间关系的简单算法。常见的上传关系显示两者正相关,也是豆沙、大葱等保健品卖得最好的。替代品的概念就是我买了这个就不需要再买别的了。
考虑购物订单:一致的模型。在电子商务中应用广泛。比如今天把这个商品放入购物车,几天后再把另一个商品放入购物车,按顺序。但是很多实体店没有实名认证,无法记录用户的消费顺序。
问:求互补产品和互斥产品之后,对于布局有什么用?
a)根据关联规则,找到商品之间的关联,你可能会发现商品之间有三种关系:强关联、弱关联、拒绝。每次觉醒都有自己的布局。
强关联
:关联度的数值需要根据实际情况有所不同,行业和业态不同。如果把高度相关的产品放在一起展示,双方的销量都会增加。如果展示位置允许,双向商品应联合展示。也就是说,产品A旁边有B,产品B的边缘也必然有A,比如常见的剃须膏和剃须刀、男性发油和造型梳;另一方面,对于单方面的关联商品,只要在关联商品旁边展示了关联商品,比如一大瓶可乐旁边放了一个纸杯,但是纸杯旁边没有放大瓶可乐,那么购买大瓶可乐的消费者最终需要纸杯的概率为
弱关联
:相关性低的产品,请尽量排列,分析相关性有无变化。如果关联度大大提高,原来的弱关联可能是显示的原因。33558www。Sina.com//:2:这意味着两种产品很难出现在同一个购物清单上。尽量不要安排这种商品。
根据购物车的信息,对商品相关性的分析不仅仅是以上三种关系,也不仅仅是商品相关性分析的一个方面(可靠性)。全面的商品相关性分析需要三个概念,支撑,可靠,推广。
直接基于三度关联定义的概念很难理解关联规则,尤其是可靠性提高中的“谁对谁”问题。其实你可以换个角度看:
X规则支持=事务数/规则X的事务总数.理解:支持表明规则X是否具有普适性。
规则X的可靠度(ab)=规则X的交易次数/规则X中商品B的交易次数理解:可靠度是一个条件概率,表示一个购买产品A的顾客会购买产品B的概率。
排斥关系
a)看一个情况。在食堂卖出的1000份饭菜的记录中,800人买了米饭,600人买了牛肉,400人一起买。规则(牛肉-大米)支持度=P(牛肉-大米)=400/1000=置信度=p(大米牛肉)=400/600=0.0。显然没有任何意义。用户无条件购买大米的概率为:P(大米(=800/1000=0.8,以购买牛肉为前提购买大米的概率超过0.67。毕竟大米比牛肉好卖。
这个案例引出了改善=可靠度/无条件概率=0.67/0.8的概念。当规则x(ab)的改善程度为N)时,如果向购买了A的客户推荐B,那么这个客户购买B的概率大约是t A自然购买B的100%理解(消费者很少单独购买桌子角落的防撞海绵,偶尔会想一想。当他们的孩子击中它时,他们可能会考虑购买它。在餐桌(餐桌)的成功点餐页面上,在餐桌一角加入防撞海绵的推荐,可以大大增加防撞海绵的销量。这也符合我们用最畅销的商品带动销量不太好的商品的宗旨。
问:仅看支持度和置信度是否靠谱?
答:可以这样理解:
支持度代表的是这组相关商品的份额是否足够大。
置信度(可信度)代表相关性的强弱。
提升程度取决于关联规则是否有用,是否值得推广,使用时(客户购买后推荐)比不使用时(客户自然购买)提升了多少。
所以1.0是提升度的一个边界值。以刚才买大米的情况来看,这种向买了牛肉的用户推荐大米的骚操作的推广度小于1就不难理解了。另外,两个置信度高的产品(假设达到100%,也就是说总是成对出现),但是如果支持度低(意味着份额低),对整体的销售提升帮助不大。
规则Python代码导入基本包导入panda as PD导入numpy as NP导入matplotlib.py plot as plt导入seaborn as SNS% matplotlib online #各种细节如图片大小、轴标签、比例尺、文字大小、图例文字等杂大=22;med=16small=12 params={ axes . titlesize :large, legend.fontsize: med, figure.figsize: (16,10), axes.labelsize: med, xtick.labelsize: med, ytick.labelsize: med, figure . titlesize :large } PLT . rcparams . update(params)PLT . style . use( Seaborn-white grid )SNS . set _ style( font ,* * {family 但会自动添加背景灰色网格PLT . RC params[ axes . unicode _ MINUS ]=false #解决保存的图像显示为带负号的正方形-数据概述#使用utf-8读取文件时会出现解码错误,需要改为gbk解码bike=PD . read _ CSV( C://Python//sharing materials 3//bike _ data . CSV ,编码= gbk )print(bike . head())print(bike . info())订单号:客户昵称
行号:购买顺序,例如前三行分别表示同一客户购买的三件商品。
型号:商品名称
探索性数据分析EDA #视图缺失值打印(bike.isnull()。sum())#查看重复值打印(bike.duplicated()。sum())
商品种类探索
模型=自行车[模型]。n唯一()车型名称=自行车[车型]。unique () print(有 str(model) products n)print(商品名为:n)# 5 for I in range (0,len
# 15畅销商品畅销书=bike . group by( model )[ model ]。计数()。sort _ values(升序=false)。reset _ index (name= count )畅销书排行榜
Top _ 15=Best seller . head(15)SNS . bar plot(x= count ,y= model ,data=top _ 15) PLT.title(前15名最畅销商品)plt.grid(True)
Top _ 15=top _ 15 [model]。to list () print(按销量排名,这家自行车店最畅销的15件商品是:)for I in range (0,15,5): print (top _ 15 [I: I 5])
用Apriori算法求解mlxtend中的关联规则。frequent _ patterns导入apriori作为apri #生成购物篮:将同一客户购买的所有商品放入同一购物篮baskets=bike . group by( order number )[ model ]。apply(lambda x:x . to list())baskets=list(baskets)# Package用于从mlxtend导入关联规则算法。正在预处理从mlxtend导入transactionencoder。frequent _ patterns从mlxtend导入apriori。frequent _ patterns导入associ Transformation _ rules #到算法可接受的模型(布尔值)te=transaction encoder()baskets _ TF=te . fit _ transform(baskets)df=PD . data frame(baskets _ TF,columns=te . columns _)print(df . head(5))
维数是(21255,37)。行表示共有21255个用户,列表示对应用户下的商品是否购买。如果是购买的,货下是真的;否则就是假的。当用户和商品数量非常大的时候,矩阵维数也会非常大。
#设置支持查找频繁项集,frequent _ itemsets=apriori (df,min _ support=0.01,use _ colnames=true) #查找关联规则,设置最小置信度为0.15 rules=association _ rules(frequent _ items ets,metric=confidence ,Min_threshold=0.1)#设置最小提升# rules=rules . drop(rules[rules . lift 1.0]。index) #设置标题索引并打印结果规则. rename(columns={ antecedents : lhs , consequents:rhs , support:sup , confidence:conf},in place=True)rules[[[ lhs , rhs , sup , conf , lift]]print(rules)
Lhs:被称为左手法则,通常理解为用户购买的产品——山地车内胎被称为右手法则,通常理解为根据用户购买某一产品而推荐的另一产品——ll山地车轮胎支持:支持,山地车内胎和ll山地车轮胎同时出现在一张购物小票中的概率。信心:信心,在购买山地车内胎的前提下,同时购买ll山地车轮胎的概率提升:如果将ll山地车轮胎推荐给购买过山地车内胎的客户,这个客户购买ll山地车轮胎的概率是这个客户自然购买ll山地车轮胎的概率的400%左右,即高出300%以上。通俗的理解:消费者平时很少单独购买桌角防撞海绵,可能只是偶尔或者孩子遇到时才会想到购买。如果我们在桌子(台球桌)的成功订购页面添加桌角防撞海绵。这也符合我们在探索性数据分析中寻找前15名畅销产品,希望通过畅销产品带动“相对非畅销产品”的目的。筛选互补产品和互斥产品#互补产品# lift。提升程度一开始要大于1,然后排序选择第n个互补=rules [rules [lift] 1]。sort _ values (by= lift ,Ascending=False)。head(20)# mutex #lift all一开始应该小于1,然后排序选择第n个exclusive=rules[rules[ lift ]1]。sort _ values (by= lift ,ascending=true)。头(20)
结合业务需求
获得最大的营销响应?-看信心水平。信心水平越高,越有利于销售最大化?——看推广程度。越高越好,用户不产生消费。我们向他们推荐产品?1.获得最高的营销回应率。如果一个客户刚刚下了这个产品的订单,他的成功支付页面应该推荐什么产品才能获得最高的营销回复率?
#使用左手规则:lhs(左手规则),表示购买的产品# #使用frozenset选择字典的键。purchase _ good=rules[rules[ lhs ]==冷冻集({ 山地英语骑 })]print(purchase _ good . sample(3)
#根据置信度排名打印(purchase _ good . sort _ values(by= conf ,ascending=false)) #根据下表,应该首先推荐山地车挡泥板。
1.最大化销售。如果新客户刚刚订购了该产品,
想让整体销量最大化,应该在他的成功页面上推荐什么产品?
打印(购买_商品。sort _ values (by= lift ,ascending=false)) #从下表可以看出,hl山地车的外胎应该是第一个。
推广程度是相对于自然购买的。a对B的提升程度4.0的理解如下
把B推荐给买了A的用户,那么这个用户买B的概率就是这个用户一个人。
(即自然购买)400%的概率购买b。
把B推荐给买了A的用户,那么这个用户买B的概率比这个用户更独立。
(即自然购买)购买B textbf{ high}的概率是300%
3.用户不产生消费,所以我们为他们推荐某个产品。#如果你想推荐山地自行车,你应该如何制定营销策略?这里要选择#右手法则,因为直接品是推荐品,#不产生消费,左手法则只有买的时候才使用。purchase _ good=rules[rules[ RHS ]==冻集({ 山地英语骑 })]。根据置信度或提升程度对_values(lift)#进行排序。因为##在按右手定则选取的数据框中,信心与升力成正比,你越高,你的打印就越高(purchase _ good) #,所以最好推荐山地车水壶架、山地车挡泥板、hl山地车轮胎一起的山地车英语骑。