https://zhuanlan.zhihu.com/p/64510355

逛超市的时候,面对货架上琳琅满目的商品,你会觉得这些商品的摆放,或者不同品类的货架分布是随机排列的吗,当然不是。

应该都听说过啤酒与尿布的故事,这两个表面上毫不相关的商品,在超市中摆放在一起时二者的销量都大幅度提升。这里不论这个案例的真实性如何,但它对理解产品之间的关联十分形象,好的故事总是更有传播度。

购买某种商品的客户,对另一种商品,相对于其他商品,有更大的购买概率,这两种商品就具有更高的关联度,为了提高销售额,应尽可能将二者摆放到一起;网店也可以将一种产品放在另一种产品的推荐页中。

而要实现这个目的,首先就要挖掘出哪些商品之间存在更大的关联度。

下面用PowerBI来进行关联度分析。


假设一家超市的十几个产品的销售数据,我们要计算出购买产品A的客户中,有多少客户也同时购买了产品B?这些客户购买了产品B的金额有多大?

客户关联度

由于要分析的产品A和产品B都在产品表中,为了分别计算相互不影响,复制一个产品表,这里命名为'关联产品表',与订单表建立虚线关系,数据模型如下图,

将产品表中的产品名称拖入到表格中,作为产品A,然后利用下面这个度量值计算产品A的客户数量,

[客户数]=COUNTROWS(VALUES('订单表'[客户ID]))

然后利用关联产品表中的产品名称,生成一个切片器,以便选择不同的产品,关联产品假设为产品B。

下面这个是计算关联分析的重点,购买了A的客户中,有多少客户也购买了产品B?

也就是同时购买A和B的客户数,度量值如下:

同时购买A和B的客户数 =
VAR Bcustomer=
CALCULATETABLE(
VALUES('订单表'[客户ID]),
USERELATIONSHIP('关联产品表'[产品ID],'订单表'[产品ID]),
ALL('产品表')
)
RETURN CALCULATE([客户数],Bcustomer)

通过以上两个度量值相除,就可以计算出关联产品的客户占比,

关联客户占比 = DIVIDE([同时购买A和B的客户数],[客户数])

把上面这几个度量值放入表格中,通过点击不同的关联产品,就可以自动计算出产品A和产品B之间的重复客户占比,

但是两个产品的客户的重合度高,不代表带来的销售额就更高,所以还要分析一下,购买A的客户中,同时购买的产品B销售额有多少?通过金额这个维度来分析一下关联性。

销售金额关联性

先来写两个简单的度量值,产品A的销售额和产品B的销售额:

产品A的销售额:

销售额=SUM('订单表'[销售金额])

产品B的销售额,

关联产品B的销售额 =
CALCULATE([销售额],
USERELATIONSHIP('关联产品表'[产品ID],'订单表'[产品ID]),
ALL('产品表') )

由于产品B来自于关联客户表,而关联客户表与订单表是虚线关系,所以用 USERELATIONSHIP来激活关系。它主要是为了计算购买产品A的客户中,购买了产品B的金额有多少?

然后就可以计算同时购买A和B的客户中,购买产品B的金额。

A客户购买B的金额 =
VAR Acustomer=
CALCULATETABLE(VALUES('订单表'[客户ID]))
VAR Bcustomer=
CALCULATETABLE(
VALUES('订单表'[客户ID]),
USERELATIONSHIP('关联产品表'[产品ID],'订单表'[产品ID]),
ALL('产品表'))
RETURN
CALCULATE([关联产品B的销售额],
NATURALINNERJOIN(Acustomer,Bcustomer)))

这个度量值的含义是,先找出产品A和产品B的客户列表,然后通过 NATURALINNERJOIN函数找出这两个客户列表的交集,也就是同时购买了这两种产品的客户,然后计算这些客户的产品B销售额就可以了。

同样把这个度量值放到表格中,可以看出关联销售额,

通过这个表格也可以看出,客户重合比例高的两个产品,带来的关联产品的销售额并不一定高,这个跟产品价格、购买数量都有关系。

关联度四象限分析

通过上面的几个度量值,获得了相关分析的数据,为了更直观的展示出产品之间的关联度,这里使用四象限分析法来展示。

其实就是制作一个散点图,将两个维度:客户占比作为Y轴,关联产品销售额作为X轴,并按客户占比、关联产品销售额的平均线作为恒线,切割出四个象限,并利用动态配色(请参考:利用这个新功能,轻松实现图表的动态配色)分别为每个象限的数据设置不同的颜色,显示效果如下:

出现在第一象限(右上角)的产品,就是与切片器选中的产品不仅客户重合度高,而且带来的销售额也更高,具有高相关性,应该特别关注。

该模型还可以接着分析某一段时间的关联性,比如促销期间、节假日期间,客户的购买特征很可能与平时是不同的。

至此,一个简单的关联分析模型建立完成,根据关联产品的不同,动态显示不同的高相关度产品,并且可以随着时间段的变化而变化,

如果有客户画像、销售地点等数据,还可以将这些数据作为外部筛选器,挖掘出不同客户、不同地域的关联产品组合。

当然,这个模型挖掘的关联产品只是初步结果,还应对这个结果进行进一步验证,避免因偶然或人为因素导致的关联性,比如是否有某两种商品的捆绑销售活动等。

关联分析是非常有用的数据挖掘方式,能够帮助企业进行精准产品营销、产品组合以及发现更多潜在客户,真正的利用数据,为企业创造价值。

数据可视化之分析篇(四)PowerBI分析模型:产品关联度分析的更多相关文章

  1. 数据可视化之PowerQuery篇(十四)产品关联度分析

    https://zhuanlan.zhihu.com/p/64510355 逛超市的时候,面对货架上琳琅满目的商品,你会觉得这些商品的摆放,或者不同品类的货架分布是随机排列的吗,当然不是. 应该都听说 ...

  2. 数据可视化之PowerQuery篇(四)二维表转一维表,看这篇文章就够了

    https://zhuanlan.zhihu.com/p/69187094 数据分析的源数据应该是规范的,而规范的其中一个标准就是数据源应该是一维表,它会让之后的数据分析工作变得简单高效. 在之前的文 ...

  3. 数据可视化之 图表篇(四) 那些精美的Power BI可视化图表

    之前使用自定义图表,每次新打开一个新文件时,都需要重新添加,无法保存,在PowerBI 6月更新中,这个功能得到了很大改善,可以将自定义的图表固定在内置图表面板上了. 添加自定义图表后,右键>固 ...

  4. 数据可视化之PowerQuery篇(十九)PowerBI数据分析实践第三弹 | 趋势分析法

    https://zhuanlan.zhihu.com/p/133484654 ​本文为星球嘉宾"海艳"的PowerBI数据分析工作实践系列分享之三,她深入浅出的介绍了PowerBI ...

  5. 数据可视化之PowerQuery篇(十七)Power BI数据分析应用:水平分析法

    https://zhuanlan.zhihu.com/p/103264851 ​本文为星球嘉宾"海艳"的PowerBI数据分析工作实践系列分享之一,她深入浅出的介绍了PowerBI ...

  6. 数据可视化之DAX篇(五) 使用PowerBI的这两个函数,灵活计算各种占比

    https://zhuanlan.zhihu.com/p/57861350 计算个体占总体的比例是一个很常见的分析方式,它很简单,就是两个数字相除,但是当需要计算的维度.总体的范围发生动态变化时,如何 ...

  7. 数据可视化之PowerQuery篇(十一)使用Power BI进行动态帕累托分析

    https://zhuanlan.zhihu.com/p/57763423 上篇文章介绍了帕累托图的用处以及如何制作一个简单的帕累托图,在 PowerBI 中可以很方便的生成,但若仅止于此,并不足以体 ...

  8. 数据可视化之 图表篇(二)如何用Power BI制作疫情地图?

    丁香园制作的这个地图可视化,相信大家每天都会看好几遍,这里不讨论具体数据,仅来探讨一下PowerBI地图技术. 这个地图很简洁,主要有三个特征: 1,使用着色地图,根据数据自动配色 2,只显示中国地图 ...

  9. 【WaaCaa】一款开源科学作图/数据可视化工具 —— 诞生篇

    作为一个理工男.用过了形形色色能够用于科学作图/数据可视化软件:从大学时做实验课推荐用于分析简单採集数据的 Origin; 毕业论文时用来呈现实验时序信号和离线分析脑电信号的 MATLAB.后面还发现 ...

随机推荐

  1. Java8新特性之函数式接口

    <Java 8 实战>学习笔记系列 定义 函数式接口只定义一个抽象方法,可以有多个默认方法 函数式接口的接口名上,会被@FunctionalInterface标注 作用 函数式接口的方法可 ...

  2. mingw32 exception在sjlj与dwarf差别-反汇编分析

    sjlj (setjump/longjump)与dwarf-2为mingw32两种异常处理模型的实现.sjlj有着开销,而随linux发行的mingw32开发库包都是用sjlj版编译的,而Qt却采用d ...

  3. visual studio 2005/2010/2013/2015/2017 vc++ c#代码编辑常用快捷键-代码编辑器的展开和折叠

    visual studio 2005/2010/2013/2015/2017 vc++ c#代码编辑快捷键-代码编辑器的展开和折叠 VS2015代码编辑器的展开和折叠代码确实很方便和实用.以下是展开代 ...

  4. Jmeter Response Data 乱码问题解决方法

    1. 进入jmeter\apache-jmeter-4.0\bin,打开jmeter.properties 2. 搜索“sampleresult.default.encoding” 设置sampler ...

  5. 安卓开发-Activity-多个Activity的开发方法。

    原文链接:https://blog.csdn.net/weixin_38420342/article/details/84344496 一.切换Activity的5种方式 Intent intent ...

  6. 最通俗易懂的RSA加密解密指导

    前言 RSA加密算法是一种非对称加密算法,简单来说,就是加密时使用一个钥匙,解密时使用另一个钥匙. 因为加密的钥匙是公开的,所又称公钥,解密的钥匙是不公开的,所以称为私钥. 密钥 关于RSA加密有很多 ...

  7. Linux下如何寻找相同文件?

    大家好,我是良许. 随着电脑的使用,系统里将产生很多垃圾,最典型的就是同一份文件被保存到了不同的位置,这样导致的结果就是磁盘空间被大量占用,系统运行越来越慢. 所以如果你的电脑空间告急的话,可以试着去 ...

  8. 深入浅出Transformer

    Transformer Transformer是NLP的颠覆者,它创造性地用非序列模型来处理序列化的数据,而且还获得了大成功.更重要的是,NLP真的可以"深度"学习了,各种基于tr ...

  9. Python3-gevent模块-单线程下的"并发"-协程

    博客转载 http://www.cnblogs.com/alex3714/articles/5248247.html http://www.cnblogs.com/tkqasn/p/5705338.h ...

  10. 深入理解RocketMQ(四)--消息存储

    一.MQ存储分类 MQ存储主要分为以下三类: 文件系统:RocketMQ/Kafka/RabbitMQ 关系型数据库DB:ActiveMQ(默认采用的KahaDB做消息存储)可选用JDBC的方式来做消 ...