购物篮分析与产品定位分析

article/2025/1/12 20:54:35

什么是产品关联度分析

关联分析是发现交易数据库中不同商品(项)之间的联系,主要应用于电商网站 推荐、线下零售门店商品摆放等场景中。
关联规则:

  • 支持度(support):数据集中包含某几个特定项的概率。比如在1000次的 商品交易中同时出现了A和B的次数是50次,那么此关联的支持度为5%。
  • 置信度(Confidence):在数据集中已经出现A时,B发生的概率,置信度 的计算公式是 :A与B同时出现的概率/A出现的概率。
  • 提升度就是在购买A产品这个条件下购买B产品的可能性与没有这个条件下购买B 产品的可能性之比(置信度/无条件概率)。 一般而言,提升度如果小于1,则该推荐规则不应该被使用。

举个例子,有如下购物车,ABCDE分别代表不同商品
在这里插入图片描述

规则支持度置信度提升度
A–D0.40.671.12
C–A0.40.50.83
A–C0.40.670.83
B&C–D0.20.330.55

如何计算的呢?
支持度:商品A和D中,他们在购物篮上同时出现的次数2次,占总购物篮的百分之40%
置信度:A出现的概率是0.6,按照公式A与D同时出现的概率/A出现的概率,0.4÷0.6=0.67
提升度:置信度/无条件概率,0.67÷(D的无条件概率:3÷5=0.6) = 1.12

什么是购物篮分析

业界一般将单个客户一次购买商品的总和称为一个购物篮,购物篮分析就是针对商品的相关性分析。 因为最初这种关联分析主要是在超市应用广泛,所以也称为“购物篮分析”。购物篮分析有个Apriori算法(先验算法)
购物篮分析要点:

  • 找到正确的物品组合
  • 找到用户对应不同组合的购买时间
  • 找到用户对应不同组合的购买顺序

举个例子
有如下多个交易单
在这里插入图片描述
步骤一:计算不同商品的交易频次
在这里插入图片描述
步骤二:根据最低支持度筛选商品(假定最低支持度为百分之50)
在这里插入图片描述
计算不同组合的交易频次
组合计算公式:
n表示商品数量,r表示一个组合的商品数量
n表示商品数量,r表示一个组合的商品数量

在这里插入图片描述
步骤四: 根据最低支持度筛选组合 (最低支持度为50%)

在这里插入图片描述
步骤五: 计算不同组合的交易频次 (三种商品)
在这里插入图片描述
步骤六: 根据最低支持度筛选组合 (最低支持度为50%)
在这里插入图片描述

购物篮分析的应用

假设有如下订单:购物篮id与售出商品
在这里插入图片描述
热销产品的情况如下
在这里插入图片描述
我们对数据使用Apriori算法,首先得将数据预处理一下,将同一订单(id)下的商品整合到一起

import pandas as pd
inputfile='/content/GoodsOrder.csv'
data = pd.read_csv(inputfile,encoding = 'gbk')# 根据id对“Goods”列合并,并使用“,”将各商品隔开
data['Goods'] = data['Goods'].apply(lambda x:','+x)
data = data.groupby('id').sum().reset_index()# 对合并的商品列转换数据格式
data['Goods'] = data['Goods'].apply(lambda x :[x[1:]])
data_list = list(data['Goods'])# 分割商品名为每个元素
data_translation = []
for i in data_list:p = i[0].split(',')data_translation.append(p)

得到如下格式就可以了
在这里插入图片描述

from numpy import *def loadDataSet():return [['a', 'c', 'e'], ['b', 'd'], ['b', 'c'], ['a', 'b', 'c', 'd'], ['a', 'b'], ['b', 'c'], ['a', 'b'],['a', 'b', 'c', 'e'], ['a', 'b', 'c'], ['a', 'c', 'e']]def createC1(dataSet):C1 = []for transaction in dataSet:for item in transaction:if not [item] in C1:C1.append([item])C1.sort()# 映射为frozenset唯一性的,可使用其构造字典return list(map(frozenset, C1))     # 从候选K项集到频繁K项集(支持度计算)
def scanD(D, Ck, minSupport):ssCnt = {}for tid in D:   # 遍历数据集for can in Ck:  # 遍历候选项if can.issubset(tid):  # 判断候选项中是否含数据集的各项if not can in ssCnt:ssCnt[can] = 1  # 不含设为1else:ssCnt[can] += 1  # 有则计数加1numItems = float(len(D))  # 数据集大小retList = []  # L1初始化supportData = {}  # 记录候选项中各个数据的支持度for key in ssCnt:support = ssCnt[key] / numItems  # 计算支持度if support >= minSupport:retList.insert(0, key)  # 满足条件加入L1中supportData[key] = support  return retList, supportDatadef calSupport(D, Ck, min_support):dict_sup = {}for i in D:for j in Ck:if j.issubset(i):if not j in dict_sup:dict_sup[j] = 1else:dict_sup[j] += 1sumCount = float(len(D))supportData = {}relist = []for i in dict_sup:temp_sup = dict_sup[i] / sumCountif temp_sup >= min_support:relist.append(i)
# 此处可设置返回全部的支持度数据(或者频繁项集的支持度数据)supportData[i] = temp_supreturn relist, supportData# 改进剪枝算法
def aprioriGen(Lk, k):retList = []lenLk = len(Lk)for i in range(lenLk):for j in range(i + 1, lenLk):  # 两两组合遍历L1 = list(Lk[i])[:k - 2]L2 = list(Lk[j])[:k - 2]L1.sort()L2.sort()if L1 == L2:  # 前k-1项相等,则可相乘,这样可防止重复项出现# 进行剪枝(a1为k项集中的一个元素,b为它的所有k-1项子集)a = Lk[i] | Lk[j]  # a为frozenset()集合a1 = list(a)b = []# 遍历取出每一个元素,转换为set,依次从a1中剔除该元素,并加入到b中for q in range(len(a1)):t = [a1[q]]tt = frozenset(set(a1) - set(t))b.append(tt)t = 0for w in b:# 当b(即所有k-1项子集)都是Lk(频繁的)的子集,则保留,否则删除。if w in Lk:t += 1if t == len(b):retList.append(b[0] | b[1])return retListdef apriori(dataSet, minSupport=0.2):
# 前3条语句是对计算查找单个元素中的频繁项集C1 = createC1(dataSet)D = list(map(set, dataSet))  # 使用list()转换为列表L1, supportData = calSupport(D, C1, minSupport)L = [L1]  # 加列表框,使得1项集为一个单独元素k = 2while (len(L[k - 2]) > 0):  # 是否还有候选集Ck = aprioriGen(L[k - 2], k)Lk, supK = scanD(D, Ck, minSupport)  # scan DB to get LksupportData.update(supK)  # 把supk的键值对添加到supportData里L.append(Lk)  # L最后一个值为空集k += 1del L[-1]  # 删除最后一个空集return L, supportData  # L为频繁项集,为一个列表,1,2,3项集分别为一个元素# 生成集合的所有子集
def getSubset(fromList, toList):for i in range(len(fromList)):t = [fromList[i]]tt = frozenset(set(fromList) - set(t))if not tt in toList:toList.append(tt)tt = list(tt)if len(tt) > 1:getSubset(tt, toList)def calcConf(freqSet, H, supportData, ruleList, minConf=0.7):for conseq in H:  #遍历H中的所有项集并计算它们的可信度值conf = supportData[freqSet] / supportData[freqSet - conseq]  # 可信度计算,结合支持度数据# 提升度lift计算lift = p(a & b) / p(a)*p(b)lift = supportData[freqSet] / (supportData[conseq] * supportData[freqSet - conseq])if conf >= minConf and lift > 1:print(freqSet - conseq, '-->', conseq, '支持度', round(supportData[freqSet], 6), '置信度:', round(conf, 6),'lift值为:', round(lift, 6))ruleList.append((freqSet - conseq, conseq, conf))# 生成规则
def gen_rule(L, supportData, minConf = 0.7):bigRuleList = []for i in range(1, len(L)):  # 从二项集开始计算for freqSet in L[i]:  # freqSet为所有的k项集# 求该三项集的所有非空子集,1项集,2项集,直到k-1项集,用H1表示,为list类型,里面为frozenset类型,H1 = list(freqSet)all_subset = []getSubset(H1, all_subset)  # 生成所有的子集calcConf(freqSet, all_subset, supportData, bigRuleList, minConf)return bigRuleListif __name__ == '__main__':dataSet = data_translationL, supportData = apriori(dataSet, minSupport = 0.02)rule = gen_rule(L, supportData, minConf = 0.35)

在这里插入图片描述

产品定位分析

在这里插入图片描述
在这里插入图片描述


http://chatgpt.dhexx.cn/article/mlUw8748.shtml

相关文章

从购物篮分析到关联规则挖掘 Apriori算法

从购物篮分析到关联规则挖掘 Apriori算法 ​ 随着大量数据不断的收集和存储,许多业界人士对于从他们的数据库中挖掘知识越来越感兴趣。对于商场而言,从大量的商务事务记录中发现有价值的的关联关系,可以为货物摆放和分析顾客购物习惯等许多商…

Mapreduce之购物篮分析

Mapreduce之购物篮分析 购物篮分析是一个流行的数据挖掘技术,在市场营销中这个技术可以揭示不同商品或商品组之间的相似度 MBA原理 通过MapReduce框架,设计相关的解决方案生成交易的关联规则,从而查找最常见的商品对 应用领域 信用卡交易…

【项目实战】Python基于Apriori关联规则算法实现商品零售购物篮分析

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 购物篮分析是商业领域最前沿、最具挑战性的问题之一,也是许多企业重点研究的问题。购物篮分…

数据挖据——如何利用SQL语句实现购物篮分析?

提到购物篮分析,就不得不说到一个无数次被提及的故事——啤酒与尿不湿的故事,这个经典案例常被拿到各种会场、餐桌和文章中,以至于听到耳朵都要磨成茧。购物篮分析,就是分析一段时间内客户购物篮中商品的规律,通过数据…

Apriori算法:购物篮分析

一、作业要求 编写Apriori算法程序,平台自选。用Apriori 算法找出频繁项集,支持度和置信度根据情况自行设定。找出强关联规则以及相应的支持度和置信度完成挖掘报告数据部分: 数据已上传网盘: 链接:https://wwn.lanzo…

【数据分析】产品关联度分析和购物篮分析(1)

产品关联度分析 关联分析是发现交易数据库中不同商品(项)之间的联系,主要应用于电商网站 推荐、线下零售门店商品摆放等场景中。 关联规则: 1.支持度(support):数据集中包含某几个特定项的概率…

【Clemetine】市场购物篮分析

一、实验目的及要求 通过项目的训练学习,了解数据挖掘在零售业中应用状况,掌握数据挖掘在零售业中分析方法及过程。 二、实验仪器设备 系统环境:Windows10 软件环境:SPSS Clementine11.1 三、实验内容 (一&#x…

购物篮分析模型实例——数据分析必备模型

要想做好数据分析必定要理解和熟悉掌握各类数据分析模型,但大部分文章只是给你罗列出了有哪几种数据分析模型及对应理论,并未用实例来辅助说明。 很多时候这些模型都进了收藏夹吃灰,大家也没有深刻理解这种分析模型,等到下次要开始…

商品零售购物篮分析——关联挖掘

一、实验目的 掌握对数据进行预处理和探索性分析的方法;掌握如何利用Apriori关联规则算法进行购物篮分析。 二实验内容 构建零售商品的Apriori关联规则模型,分析商品之间的关联性;根据模型结果给出销售策略。 三、实验操作步骤和结果分析…

使用Apriori关联规则算法实现购物篮分析

Apriori算法是一种挖掘关联规则的频繁项集算法,其核心思想是通过候选集生成和情节的向下封闭检测两个阶段来挖掘频繁项集,而且算法已经被广泛的应用到商业,网络安全等各个领域。 购物篮分析是通过发视频顾客再一次购物行为中放入购物篮中不同…

r语言商品购物篮分析

商品购物篮分析 现代商品种类繁多,顾客往往会由于需要购买的商品众多而变得疲于选择,且顾客并不会因为商品选择丰富而选择购买更多的商品。 对于某些商品,顾客会选择同时购买,如面包与牛奶、薯片与可乐等,当面包与牛…

销售需求丨购物篮分析

​ BOSS:那个谁,对,就是你,你给我研究研究咱商场物品摆放是否合理?! 白茶:(Excuse me?)…BOSS,那个我就是个码字的! BOSS:…

[Python] 电商平台用户的购物篮分析

目录 一、背景1. 项目描述2. 数据描述 二、相关模块1. 相关模块2. 数据导入3. 数据处理 三、商品销售分析1. 日销售情况2. 月销售情况3. 观察畅销品 四、 购物篮分析1. 购物篮系数2. 指定商品的购物篮系数3. 指定商品的人气指数 五、用户行为分析1. 用户的消费情况2. 用户初次购…

【Python数据挖掘】购物篮分析

购物篮分析 变量解释 变量含义说明ReceiptID收据单号Value支付金额pmethod支付渠道1现金,2信用卡,3电子支付,4其他sex性别1男性,2女性homeown是否有住宅1有,2无,3未知income收入age年龄其他其他购买的各种…

python数据分析与挖掘实战(商品零售购物篮分析)

一、引言 购物篮分析是商业领域最前沿、最具挑战性的问题之一,也是许多企业重点研究的问题。购物篮分析是通过发现顾客在一次购买行为中放入购物篮中不同商品之间的关联,研究顾客的购买行为,从而辅助零售企业制定营销策略的一种数据分析方法。…

数据挖掘实战—商品零售购物篮分析

文章目录 引言一、数据探索性分析1.数据质量分析1.1 缺失值分析1.2 异常值分析1.3 重复数据分析 2.数据特征分析2.1 描述性统计分析2.2 分布分析2.2.1 商品热销情况分布分析2.2.2 按类别划分商品销量分布分析2.2.3 商品内部结构分布分析 二、数据预处理三、模型构建 案例数据百…

购物篮分析( Apriori算法)—零售数据实战

购物篮分析( Apriori算法)—零售数据实战 【开题】在我从事零售行业的期间,曾拜读过"啤酒与尿布"一书,对于沃尔玛的购物篮分析模型产生极大的兴趣。由于网上对Aprioro算法介绍的内容较少,故而本人不得已回去…

商品零售购物篮分析

1 案例背景 购物篮分析是通过发现顾客在一次购买行为中放入购物篮中不同商品之间的关联,研究顾客的购买行为,从而辅助零售企业制定营销策略的一种数据分析方法。 通过对商场销售数据进行分析,得到顾客的购买行为特征,并根据发现的…

数据分析一定要懂的模型——购物篮模型

要想做好数据分析必定要理解和熟悉掌握各类数据分析模型,但网络上的大部分文章只是给你罗列出了有哪几种数据分析模型及对应理论,并未用实例来辅助说明。 很多时候,看完就只是看完,并没有深刻理解这种分析模型,等到下…

购物篮分析的基本概念、商业价值与算法介绍

作者 | gongyouliu 编辑 | auroral-L 全文共4915字,预计阅读时间45分钟。 购物篮分析的基本概念、商业价值与算法介绍 1. 什么是购物篮分析 2. 购物篮分析的商业价值 2.1 指导线下门店商品排列、摆放 2.2 优化线下采购、供应链与库存 2.3 为活动营销提供数据支…