商品关联度分析(关联三度,附Python实战) 我的钱就是这么没的,不只有皮尔森系数的相关分析

2023-11-15

在这里插入图片描述

引言

   上一年组织烧烤活动买食材时,我在超市的货架29买了一个烧烤架,然后到货架27买了瓶1.5L的可乐,最后在货架25找到了我需要的塑料小碗。今年再去那家超市的时候,特地再去烧烤架所在的货架查看了一下,看看有没有什么值得记录的灵感。果不其然,摆放在货架29的烧烤架的边上就陈列着塑料小碗和大瓶可乐(虽然数量不是很多,但不用再劳烦我奔波于几个货架之间了,真聪明!)

   这个线下商店的管理员是怎么知道应该这样改进的呢?为什么卖烧烤架的货架旁边放塑料小碗和大瓶可乐就能够在整体上促进销量,而在卖大瓶可乐的货架旁放置烧烤架反倒对提升销售额没有帮助?

   任何一个零售业态,线上线下都好,如果不去分析商品间的关联分析,则很难发现商品间的隐形密码,并且也很难做到精细化管理。商品的关联度分析对于提高商品的活力、挖掘消费者的购买力、促进最大化销售有很大帮助。事不宜迟,赶快开始!(本文专注于商品间的关联度分析,商品&价格/天气/商圈/顾客 之类的广义上的关联先不探究)

  读者萝卜: ok,我觉得不用继续下去了, Person 和 Spearman 系数我已经很熟了,公式原理倒背入流,Python 实现也非常简单。 df.corr(); df.corr(method=‘spearman’) 而已。

   经营主管:从题目就已经可以看出事情远没有那么简单,这两个系数的结果会存在很大的偶然性:数据中显示吃雪糕的人数和被鲨鱼咬伤的人数之间的Person系数为0.68,快到0.7了,应该属于强相关了吧?其实是因为现在是夏天,吃雪糕的人当然会变多,到海湾游泳解暑的人也会增多,被鲨鱼咬伤的几率就自然而然的增多了;还有,我之前发现小面包干和可乐摆在一起卖能促进销售额最大化,结果因为地点问题再次滑铁卢…

   萝卜:怎么回事呢主管?这两个系数明明很经典啊,而且你那个面包可乐不是已经经过实践检验了嘛,怎么还会失误?

   经营主管:一句话,分析不到位,不严谨,不全面,乱套因果

在这里插入图片描述

现在来正式看一下商品关联度销售分析是怎么回事吧。


商品间的三种关系

eg:购买烧烤架的客户中有55%的顾客会购买可乐,则烧烤架对可乐之间就有了关联,请注意这是烧烤架对可乐。反过来不一定具有很强的关联度,毕竟买烧烤架证明你很大可能是将它用到烧烤活动上,有烧烤就要有饮料;但反过来看,我买可乐的原因有很多,烧烤活动只是一个非常非常小的分支。

在这里插入图片描述

   萝卜:嗯嗯,感觉跟Person相关系数之类的定义会有点像,那该如何判断呢?有没有公式什么的??


商品关联度分析三度&业务案例

   经营主管:别急,肯定是有的,系统的商品关联分析必须有三度的概念:支持度、可信度和提升度,具体公式如下图。

在这里插入图片描述

   萝卜:真是高大上呀,公式简单但听起来有点晦涩,主管你能举个案例再给我普及一下吗?

   经营主管:看一个实际业务案例吧。经过数据清洗,发现华润万家超市2019年12月总交易次数为2000次,其中包含烧烤架的交易为100次,包含啤酒的交易为200次,同时包含烧烤架和啤酒的交易为50次,你能根据这些数据计算出这三度的值吗?

在这里插入图片描述

   萝卜:支持度=50/2000 * 100%=2.5%;可信度=50/100 * 100% =50%(注意除数与被除数的顺序,这里我把啤酒放在前,即啤酒交易出现在烧烤架中的概率);提升度=50%/(200/2000 * 100%)=5.0(公式的商品B便对应了求解可信度时用到的商品的另一种,这里便是烧烤架,理解起来就是啤酒在总交易的占比与啤酒在烧烤架中的占比的商),ok 主管我求完了,但这些数字又有什么用呢?

   经营主管:如果把案例中的50改为10,重新计算后可信度就变成了10%,啤酒在烧烤架一种出现的概率变为10%,一下子就降低了很多,提升度也降到1.0。也就是说:啤酒在总交易中啤酒在有烧烤架的交易中 出现的概率是一样的,1.0的提升度可以作为一个指标的分界值。换言之,啤酒并没有因为在和烧烤架的关联中而得到好处。,在实际业务中,我们可以这样来理解关联三度,支持度代表这组关联商品的份额是否够大(公式:这一关联/总交易),可信度代表关联度的强弱,二提升都则表示该关联是否有利用价值(即对整体销售提升的帮助也不会大)。

   萝卜:我把主管您的话改一下看看,这两个商品的关联性如何,看可信度,这个关联性是否有意义需要看支持度(你有意义我才支持你),这个关联规则如华润万家的 烧烤架+可乐 这个组合是否值得推广到其他华润分店还必须要看提升度。

  • 关联性:可信度
  • 这个关联性是否有意义:支持度,你这个关联度很高如90%,但只是占总交易的相当小部分,那就没啥大意义,这种情况完全有可能出现,如巧克力和玫瑰花,在特定的时间和地点关联度很高,平时不一定有意义
  • 这个关联规则是否值得推广:提升度(提升提升,提升销售额的“提升”)

   经营主管:ok你还挺开窍的,可以这样理解。通常只看前两个而不看提升度是比较不全面的。在实际业务中,我们需要对支持度和可信度设定准入贵则,如支持度>=3%, 可信度>=60%,满足最低准入值则可以视为商品见的关联关系有价值。

   萝卜:谢谢主管,还想问一下咱们公司有没有历史数据给我来练练手,我想用程序探索一下实现流程。

   经营主管:好学精神值得肯定,我回头发到你邮箱吧,我先去开会了。


Python实现

   Person 或者 Spearman 系数可以帮助我们先去大概看一下商品之间的相关性,选择一下相关性高的,然后用商品关联三度去分析一下是否存在偶然性,还是说是真的高。

在这里插入图片描述
在这里插入图片描述
至于是怎么快速实现一行代码画出热力图的,可参考这篇文章
Python 数据可视化:Matplotlib Heatmap 热力图,相关系数矩阵图(放入自写库,一行代码搞定复杂细节绘图)
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

结果出来后,我第一时间 Email 给了主管

   **萝卜:**从上述分析结果上看,谁对谁的提升度似乎都好高,那就赶紧把他们放在一起吧?

   主管: 万万不可,你没看到支持度非常低吗,只有百分之 0.3 几,也就是说这两样东西提升来提升去可能也就最多提升到百分之几而已,贡献不一定大,除非这两个商品是属于贵重物品或奢侈品。一言以蔽之,得出了结果,还要进行实地调研和用业务头脑分析,记得之前跟你提到的面包可乐组合明明很ok,但是推广到了另外几家小卖部后惨遭滑铁卢了吗?

   萝卜: 嗯嗯,您还没有告诉我。

   主管: 你先来看看这几家小卖部的分布图吧,看有没有什么想法?

在这里插入图片描述

   萝卜: 噢我知道了,我看了一下数据,是夏季,然后公园里面散步的人口渴,老外喜欢把可口可乐当水喝,所以可乐销量好是正常的,但因为 Store1 紧挨着鱼池,所以人们会买面包然后撕成屑去喂鱼喂鸽子,而一条大河之隔的另外两个 Store 则没鱼可喂。

   主管: 挺聪明的嘛,总之显示情况错综复杂,你只是学了点皮毛,还需要不断精进头脑,才能实现多维度看问题,今天就先到这里,下次带你去了解一下库存方面的知识吧,实际考察一下。

   萝卜: 谢谢主管!

PS:笔者业务思维专栏还有寻找零售密码的几种方法,后续将不断更新

推荐阅读

  学会提问 | 个人爆发式成长 | Excel 大表格

  一句话成为心上人特别的存在

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

商品关联度分析(关联三度,附Python实战) 我的钱就是这么没的,不只有皮尔森系数的相关分析 的相关文章

  • 在 gtk.main() 执行时与 gtk.container 交互?

    目前在 Python 中使用电池监视器图标进行实验pygtk and egg trayicon创建一个图标来显示电池图标 工具提示 我似乎能够添加图标和工具提示文本 但是当它到达gtk main 阶段我需要一种方法来修改这些 以便它可以显示
  • 如何更改 Python 函数的表示形式?

    gt gt gt def hehe return spam gt gt gt repr hehe
  • Python矩阵问题[重复]

    这个问题在这里已经有答案了 这是从这个线程继续的 Python矩阵 有什么解决方案吗 https stackoverflow com questions 5835583 python matrix any solution Input fr
  • Python:当为变量分配新内容时,“旧”内存是否被释放?

    如果为变量分配了任何新内容 为 旧内容 分配的内存是否会 正确 释放 例如 在以下脚本中 在为 a 分配一些新内容后 变量 a 作为零数组的内存是否会被释放 import numpy a numpy zeros 1000 a a 1 我想象
  • 安装 Ta-lib 会产生 gcc 错误

    当我尝试在我的 mac 上将 Ta lib 作为全局包安装时 出现 gcc 错误 我收到以下错误 gcc Wno unused result Wsign compare Wunreachable code DNDEBUG g fwrapv
  • argparse - 禁用相同参数的出现

    我正在尝试使用 argparse 禁用一个命令行中出现相同的参数 python3 argument1 something argument2 argument1 something else 这意味着这应该会引发错误 因为 argument
  • ImportError:无法导入名称 GstRtspServer,未找到内省类型库

    我目前正在尝试让一个简单的 GstRtspServer 程序在外部亚马逊 Linux EC2 服务器上运行 但在让它实际运行时遇到了严重的问题 无论我做什么 当我尝试运行它时 即使程序仅减少到 import gi gi require ve
  • 使用 Pytest 捕获 SystemExit 消息

    我正在使用 pytest 编写测试 我遇到了一些函数抛出异常的情况SystemExit如果输入错误 终端上会显示一些错误消息 我想为以下情况编写测试SystemExit抛出并验证输出错误消息中是否有特定字符串 这是代码 def test v
  • argparse add_argument 别名

    有没有办法使用 argparse 创建别名 例如 我想做这样的事情 parser add argument foo parser add argument alias bar foo 也就是说 使用 bar应该相当于使用 foo 您可以简单
  • Python 调试器是否会介入生成器?

    我目前正在使用 NetBeans IDE 和 Jython 2 5 1 当逐步调试我的项目时 一旦遇到生成器的迭代 调试器就会直接转到代码末尾 输出工作正常 但是一旦满足第一个生成器就无法进行逐步调试 这是所有 Python IDE 中 P
  • sqlalchemy,使用反向包含(不在)子列值列表中进行选择

    我在flask sqlalchemy 中有一个典型的帖子 标签 与一篇帖子相关的许多标签 关系 并且我想选择我提供的列表中未标记任何标签的帖子 首先 我建立的模型 class Post db Model id db Column db In
  • PyGTK TreeView 中的自动换行

    如何在 PyGTK TreeView 中自动换行文本 gtk TreeView 中的文本是使用 gtk CellRendererText 渲染的 文本换行归结为在单元格渲染器上设置正确的属性 为了让文本换行 您需要设置wrap width单
  • iter(fp.readline, '') 中的行而不是 fp 中的行:

    我读了内置函数iter的例子在内置函数 Python 3 7 0 文档 https docs python org 3 library functions html iter with open mydata txt as fp for l
  • ModuleNotFoundError:没有名为“googleapiclient”的模块

    如果这是一个愚蠢的问题 我深表歉意 我在 stackoverflow 上搜索过 但没有找到解决办法 我正在致力于从 Python 2 7 迁移到 Python 3 8 我收到一个程序的以下错误 请帮我 Traceback most rece
  • 如何使用 BeautifulSoup 只抓取可见的网页文本?

    基本上 我想用BeautifulSoup严格抓住可见文字在网页上 例如 这个网页 http www nytimes com 2009 12 21 us 21storm html是我的测试用例 我主要想获取正文 文章 甚至可能到处都有一些选项
  • 如何更改Python中的全局变量[重复]

    这个问题在这里已经有答案了 我正在尝试更改程序中的变量 我在程序开始时声明了一个全局变量 我想在程序中的不同函数中更改该变量 我可以通过再次声明函数内的变量来做到这一点 但我想知道是否有更好的方法来做到这一点 下面是一些测试代码来解释我的意
  • 无法从 celery 信号连接到 celery 任务?

    我正在尝试连接task2 from task success signal from celery signals import task success from celery import Celery app Celery app t
  • 连接 Flask Socket.IO Server 和 Flutter

    基本上 我有一个套接字 io 烧瓶代码 import cv2 import numpy as np from flask import Flask render template from flask socketio import Soc
  • 为什么我只能在异步函数中使用await关键字?

    假设我有这样的代码 async def fetch text gt str return text async def show something something await fetch text print something 这很
  • 使用自定义层运行 Keras 模型时出现问题

    我目前正在攻读学士学位论文FIIT STU https www fiit stuba sk en html page id 749 其主要目标是尝试复制和验证以下结果study http arxiv org abs 2006 00885 这

随机推荐

  • 在Linux系统中部署zabbix监控服务

    今天学习安装zabbix 以下参考网上各种安装方法及自己做实验 一 zabbix简介 zabbix z biks 是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案 zabbix能监视各种网络参数 保证服务器系统
  • 查找---散列表查找定义

    当我们进行查找时 如果是顺序表查找 要找的关键字的记录 是从表头开始 挨个的比较记录a i 与key的值是等于还是不等于 有序表查找时 利用折半查询或者插值查询 直到相等时成功返回i 最终我们的目的都是为了找到那个i 其实也就是相对的下标
  • 使用TortoiseGit

    初衷 脱离命令行的方式 使用gui的界面化工具完成工作需要的版本控制操作 同时还对git运行机制有一定的了解 达到工作需要的基本 提高工作效率 准备工作 安装git 至于为什么 我就不废话了 点我下载git 安装TortoiseGit 理由
  • 【vue3引入高德地图】

    vue3引入高德地图 文章目录 vue3引入高德地图 前言 一 准备工作 1 开发文档 2 添加应用 二 使用步骤 1 npm 安装 2 地图容器创建 3 组件引入 4 js api 安全密钥 5 初始化地图 6 图层 6 1 添加 设置
  • 在 Windows 10 编译 Qt 5.15

    译好的下载链接 Qt5 15 8 Windows x86 VS2017 Qt5 15 8 Windows x86 64 VS2017 Qt5 15 8 Windows x86 VS2019 Qt5 15 8 Windows x86 64 V
  • 【Unity】通过代码控制编译器的暂停

    暂停编译器 EditorApplication isPaused true 结束编译器 EditorApplication isPlaying false
  • sklearn决策树之random_state & splitter

    在上一篇博文 决策树的sklearn实现 中 我们建立了一棵完整的决策树 但是如果在建立模型时不设置random state的数值 score会在某个值附近波动 引起画出来的每一棵树都 一样 它为什么会 稳定呢 如果使用其他数据集 它还会不
  • 互斥机制之自旋锁(spinlock)

    一 基础 自旋锁 如果测试结果表明锁仍被占用 程序将在一个小的循环内重复这个 测试并设置 操作 即进行所谓的 自旋 1 定义自旋锁 spinlock t spin 2 初始化自旋锁 spin lock init lock 该宏用于动态初始化
  • 【论文笔记】Masked Autoencoders Are Scalable Vision Learners

    论文 论文标题 Masked Autoencoders Are Scalable Vision Learners 发表于 CVPR2021 论文链接 https arxiv org pdf 2111 06377 pdf 论文代码 https
  • WebGL学习系列-片元着色器简介

    前言 到目前为止 我们绘制过点 三角形 矩形等 但使用的都是单色系 之前曾经说过着色器的概念 着色器分为顶点着色器和片元着色器 我们一直在使用顶点着色器 而对片元着色器基本没有提及过 本小节将展开对片元着色器的简单介绍 彩色的点 之前提到过
  • Sybase IQ常用函数大全--杂项函数

    Sybase IQ常用函数大全 杂项函数 查询索引 COALESCE 函数 返回列表中的第一个非 NULL 表达式 IFNULL 函数 返回第一个非空值表达式或 NULL ISNULL 函数 返回参数列表中的第一个非 NULL 表达式的值
  • 笔记~【软件测试基础知识】——黑盒测试和白盒测试

    这里写目录标题 一 黑盒测试 二 白盒测试 一 黑盒测试 黑盒测试概述 黑盒测试也称功能测试或数据驱动测试 它已知产品所应具有的功能 通过测试来检测每个功能是否能够正常使用 主要针对软件界面和软件功能 在测试时 把程序看作一个不能打开的黑盒
  • cv::Mat的翻转和转置

    cv Mat的本质是矩阵 openCV对Mat类型的处理 实际上也是矩阵操作 这里给个小例子 介绍转置操作和翻转操作 这段代码受了 http www tuicool com articles emIr2u 的启发 原图 Mat m1 imr
  • 【数据预处理】Pandas缺失的数据处理

    目录 缺少数据基础 何时 为何 数据丢失 被视为 缺失 的值 日期时间 插入缺失数据 缺少数据的计算 Sum Prod of Empties Nans GroupBy中的NA值 清理 填写缺失数据 填充缺失值 fillna 用PandasO
  • flutter -- 自定义音乐播放器/视频播放器

    写在前头 flutter 自定义实现音乐播放的文章挺多的 但是在开发中还是碰见了超级无语的情况 没想到需求竟然要音频的1倍到2倍的播放倍速 我一度质疑这个功能的实际用途 但是既然提出来了 开发就得撅屁股实现 这里采用了第三方的视频播放器来实
  • 如何使用BurpSuite(后续)

    前面那篇文章是我前几天写的 我发现我把简单的问题弄得复杂了 今天我给大家再写一篇关于BurpSuite的使用 1 下载安装免费版或者收费版 这里就不演示了 2 运行软件 一直NEXT就可以 3 打开工具 此时拦截状态显示OFF 4 在打开的
  • Python中类成员变量与实例成员变量相互影响的原因超详细解释

    今天在看python学习手册时看到了两句话 一 第26章中 类对象提供默认行为 二 第26章中 实例对象是具体的元素 书中给的例子是这样的 但上网查了一下好像第二句话不是非常准确 如下面的文章 原文 https www jb51 net a
  • 优化算法学习(LM算法)

    文章目录 推荐书籍 理论理解 程序实现 ceres安装 代码 推荐书籍 建议学习 METHODS FOR NON LINEAR LEAST SQUARES PROBLEMS http www2 imm dtu dk pubdb views
  • Eclipse导入Maven项目,实在算得上是历经千辛万苦

    私下接触了一个项目 架构师那边用的是idea 并且是一个Maven项目 架构师说他那边idea可以自动将Maven项目转换为Web项目 但我已经习惯用Eclipse了 所以还需要自己动手试一试 这一试 一上午的时间算是过去了 尤其是中间遇到
  • 商品关联度分析(关联三度,附Python实战) 我的钱就是这么没的,不只有皮尔森系数的相关分析

    引言 上一年组织烧烤活动买食材时 我在超市的货架29买了一个烧烤架 然后到货架27买了瓶1 5L的可乐 最后在货架25找到了我需要的塑料小碗 今年再去那家超市的时候 特地再去烧烤架所在的货架查看了一下 看看有没有什么值得记录的灵感 果不其然