当前位置: 首页 > news >正文

【SPSS】基于RFM+Kmeans的电商客户价值聚类分析

🤵‍♂️ 个人主页:@艾派森的个人主页

✍🏻作者简介:Python学习者
🐋 希望大家多多支持,我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注+


目录

1.项目背景

2.项目简介

2.1分析目标

2.2数据说明

3.算法理论

4.实验步骤

4.1数据探索

4.2构建RFM模型

4.3聚类分群

5.总结


摘要

电子商务服务业属于电子商务生态系统中的重要组成部分,经过近十年的迅猛发展,在物流快递、在线支付和电子认证等服务业发展推动下,电子商务服务业快速发展。2020年中国电子商务服务业营业收入达5.45万亿元,较2019年增加了0.98万亿元,同比增长21.9%。2020年受新冠肺炎疫情冲击,线下遭遇关店潮,线上服务需求迅速增长。直播购物、网上支付、无接触式配送、上门退货等成为疫情下消费者网购的“新常态”,商家对于IT解决方案、新型营销服务、专业运营服务、物流服务的需求直线上升。随着电商的快速发展,行业竞争也越来越激烈,客户就是上帝,商家只有牢牢抓住客户,才能在行业中站住立脚,对客户进行分群,针对不同的客户群体特征制定不同的营销策略,实现收益最大化。本次实验使用聚类分析对电商客户价值进行分析。

1.项目背景

随着电商的不断发展,网上购物变得越来越流行。更多电商平台崛起,对于电商卖家来说增加的不只是人们越来越高的需求,还要面对更多强大的竞争对手。面对这些挑战,就需要能够及时发现店铺经营中的问题,并且能够有效解决这些实际的问题,从而提升自身的竞争力。

根据已有数据对店铺整体运营情况进行分析,了解运营状况,对未来进行预测,已经成为电商运营必不可少的技能。

2.项目简介

2.1分析目标

使用RFM模型+聚类算法对电商客户进行分群,进行精准营销。

2.2数据说明

数据来源于数据科学竞赛平台Kaggle总共1591条数据,4个字段。详情见下表。

字段名

字段描述

Customer ID

客户的ID

消费频率

客户在本超市累计消费的次数

最近消费时间间隔

上一次消费距今的时间差

消费金额

客户累计的消费金额

3.算法理论

聚类,即将物理或抽象对象的集合分成由类似的对象组成的多个类的过程。由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异。聚类分析又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法。聚类分析起源于分类学,但是聚类不等于分类。聚类与分类的不同在于,聚类所要求划分的类是未知的。聚类分析内容非常丰富,有系统聚类法、有序样品聚类法、动态聚类法、模糊聚类法、图论聚类法、聚类预报法等。在数据挖掘中,聚类也是很重要的一个概念。传统的聚类分析计算方法主要有划分方法、层次方法、基于密度的方法、基于网格的方法、基于模型的方法五种。

聚类的目的是把数据分类,但是事先我们不知道如何去分,完全是靠算法判断数据之间的相似性,相似的就放在一起。

K-means算法原理
k-means算法是一种简单的迭代型聚类算法,采用距离作为相似性指标,从而发现给定数据集中的K个类,且每个类的中心是根据类中所有值的均值得到,每个类用聚类中心来描述。对于给定的一个包含n个d维数据点的数据集X以及要分得的类别K,选取欧式距离作为相似度指标,聚类目标是使得各类的聚类平方和最小,即最小化:

结合最小二乘法和拉格朗日原理,聚类中心为对应类别中各数据点的平均值,同时为了使得算法收敛,在迭代过程中,应使最终的聚类中心尽可能的不变。

K-means是一个反复迭代的过程,算法分为四个步骤:

1)选取数据空间中的K个对象作为初始中心,每个对象代表一个聚类中心;

2)对于样本中的数据对象,根据它们与这些聚类中心的欧氏距离,按距离最近的准则将它们分到距离它们最近的聚类中心(最相似)所对应的类;

3)更新聚类中心:将每个类别中所有对象所对应的均值作为该类别的聚类中心,计算目标函数的值;

4)判断聚类中心和目标函数的值是否发生改变,若不变,则输出结果,若改变,则返回2)。

传统的聚类分析计算方法主要有如下几种:

 1、划分方法(partitioning methods)

给定一个有N个元组或者纪录的数据集,分裂法将构造K个分组,每一个分组就代表一个聚类,K聚类算法中可以放宽);对于给定的K,算法首先给出一个初始的分组方法,以后通过反复迭代的方法改变分组,使得每一次改进之后的分组方案都较前一次好,而所谓好的标准就是:同一分组中的记录越近越好,而不同分组中的纪录越远越好。使用这个基本思想的算法有:K-MEANS算法、K-MEDOIDS算法、CLARANS算法;

 2、层次方法(hierarchical methods)

这种方法对给定的数据集进行层次似的分解,直到某种条件满足为止。具体又可分为“自底向上”和“自顶向下”两种方案。例如在“自底向上”方案中,初始时每一个数据纪录都组成一个单独的组,在接下来的迭代中,它把那些相互邻近的组合并成一个组,直到所有的记录组成一个分组或者某个条件满足为止。代表算法有:BIRCH算法、CURE算法、CHAMELEON算法等;

 3、基于密度的方法(density-based methods)

基于密度的方法与其它方法的一个根本区别是:它不是基于各种各样的距离的,而是基于密度的。这样就能克服基于距离的算法只能发现“类圆形”的聚类的缺点。这个方法的指导思想就是,只要一个区域中的点的密度大过某个阈值,就把它加到与之相近的聚类中去。代表算法有:DBSCAN算法、OPTICS算法、DENCLUE算法等;

 4、基于网格的方法(grid-based methods)

这种方法首先将数据空间划分成为有限个单元(cell)的网格结构,所有的处理都是以单个的单元为对象的。这么处理的一个突出的优点就是处理速度很快,通常这是与目标数据库中记录的个数无关的,它只与把数据空间分为多少个单元有关。代表算法有:STING算法、CLIQUE算法、WAVE-CLUSTER算法;

 5、基于模型的方法(model-based methods)

基于模型的方法给每一个聚类假定一个模型,然后去寻找能够很好的满足这个模型的数据集。这样一个模型可能是数据点在空间中的密度分布函数或者其它。它的一个潜在的假定就是:目标数据集是由一系列的概率分布所决定的。通常有两种尝试方向:统计的方案和神经网络的方案。

当然聚类方法还有:传递闭包法,布尔矩阵法,直接聚类法,相关性分析聚类,基于统计的聚类方法等。

可伸缩性:许多聚类算法在小于 200 个数据对象的小数据集合上工作得很好;但是,一个大规模数据库可能包含几百万个对象,在这样的大数据集合样本上进行聚类可能会导致有偏的结果。我们需要具有高度可伸缩性的聚类算法。

处理不同类型属性的能力:许多算法被设计用来聚类数值类型的数据。但是,应用可能要求聚类其他类型的数据,如二元类型(binary),分类/标称类型(categorical/nominal),序数型(ordinal)数据,或者这些数据类型的混合。

发现任意形状的聚类:许多聚类算法基于欧几里得或者曼哈顿距离度量来决定聚类。基于这样的距离度量的算法趋向于发现具有相近尺度和密度的球状簇。但是,一个簇可能是任意形状的。提出能发现任意形状簇的算法是很重要的。

用于决定输入参数的领域知识最小化:许多聚类算法在聚类分析中要求用户输入一定的参数,例如希望产生的簇的数目。聚类结果对于输入参数十分敏感。参数通常很难确定,特别是对于包含高维对象的数据集来说。这样不仅加重了用户的负担,也使得聚类的质量难以控制。

处理“噪声”数据的能力:绝大多数现实中的数据库都包含了孤立点,缺失,或者错误的数据。一些聚类算法对于这样的数据敏感,可能导致低质量的聚类结果。

对于输入记录的顺序不敏感:一些聚类算法对于输入数据的顺序是敏感的。例如,同一个数据集合,当以不同的顺序交给同一个算法时,可能生成差别很大的聚类结果。开发对数据输入顺序不敏感的算法具有重要的意义。

高维度(high dimensionality):一个数据库或者数据仓库可能包含若干维或者属性。许多聚类算法擅长处理低维的数据,可能只涉及两到三维。人类的眼睛在最多三维的情况下能够很好地判断聚类的质量。在高维空间中聚类数据对象是非常有挑战性的,特别是考虑到这样的数据可能分布非常稀疏,而且高度偏斜。

基于约束的聚类:现实世界的应用可能需要在各种约束条件下进行聚类。假设你的工作是在一个城市中为给定数目的自动提款机选择安放位置,为了作出决定,你可以对住宅区进行聚类,同时考虑如城市的河流和公路网,每个地区的客户要求等情况。要找到既满足特定的约束,又具有良好聚类特性的数据分组是一项具有挑战性的任务。

可解释性和可用性:用户希望聚类结果是可解释的,可理解的,和可用的。也就是说,聚类可能需要和特定的语义解释和应用相联系。应用目标如何影响聚类方法的选择也是一个重要的研究课题。

4.实验步骤

4.1数据探索

首先使用SPSS导入本次实验的数据集

查看各变量的基本情况

查看数据描述性统计

从数据描述性统计结果中可以看出变量个案总数、最大最小值、个案总和、均值、标准差、方差、偏度、峰度等信息。

查看消费频率、最近消费时间间隔、消费金额分布情况                   

从上面三个分布直方图可以看出数据都是近似服从正态分布的。

查看消费频率和消费金额的相关性

从肯德尔和斯皮尔曼的相关系数和概率P值可以看出消费频率和消费金额具有正向相关关系且相关关系很显著。

4.2构建RFM模型

      目前几乎所有企业业务都是以客户的需求为主导,都希望服务好客户,促进销售转化,最好能让客户对产品和品牌产生黏性,长期购买。于是市场和运营人员都会绞尽脑汁的做活动、上新品、蹭热点、做营销,不断地拓展客户和回访以维系客户感情。但是,这些工作除了少数运气好的之外,大部分效果都不是很好,真正有价值的客户没有几个。不同阶段、不同类型的客户需求点不同,有的客户图便宜,有的客户看新品,有的客户重服务,粗狂式的营销运营方法最后的结果往往都是事与愿违,企业的资源利润无法发挥其最大效用去创造最大化的利润。

     那么如何进行客户价值分析,甄选出有价值的客户,让企业精力集中在这些客户上,有效地提升企业竞争力使企业获得更大的发展呢?解决的方法很简单,就是客户精细化运营。通过各类运营手段提高不同类型的客户在产品中的活跃度、留存率和付费率。而如何将客户从一个整体拆分成特征明显的群体决定了运营的成败。在客户价值领域,最具有影响力并得到实证验证的理论与模型有: 客户终生价值理论、客户价值金字塔模型、策论评估矩阵分析法和RFM客户价值分析模型等。这里介绍一个最经典的客户分群模型,即RFM模型。

RFM的含义如下:

1)R(Recency):客户最近一次交易时间的间隔。R值越大,表示客户交易发生的日期越久,反之则表示客户交易发生的日期越近。

2)F(Frequency):值越大,表示客户交易越频繁,反之则表示客户交易不够活跃。

3)M(Monetary):客户在最近一段时间内交易的金额。M值越大,表示客户价值越高,反之则表示客户价值越低。

RFM模型是衡量客户价值和用户创利能力的经典工具,依托于客户最近一次购买时间、消费频次及消费金额。在应用RFM模型时,要有客户最基础的交易数据,至少包含客户ID、交易金额和交易时间3个字段。

这里我们的数据中符合RFM模型的要求,所以使用SPSS进行变量名更换即可

4.3聚类分群

这里我们使用KMeans算法进行聚类分群

根据RFM3个维度,可以将客户分为以下8种类型,如图所示。

在这个表中将每个维度都分为高和低两种情况,进而将客户群体划分为8种类型,而这8种类型又可以划分成ABC3个等级。例如,某个客户最近一次消费时间与分析时间的间隔比较大,但是该客户在一段时间内的消费频次和累计消费总金额都很高,这就说明这个客户就是RFM模型中的重要保持客户,为了避免该客户的流失,企业的运营人员就要专门针对这种类型的客户设计特定的运营策略,这也就是RFM模型的核心价值。

所以这里聚类的时候,我们需要将数据聚成8类。 

从结果中可以看出8个类别的初始聚类中心,以及10此的更新迭代记录。

从结果中可以看出,最终的八个类别聚类中心以及每个类别中的个案数。最后在元数据中可以发现新增了一列聚类的类别值。

5.总结

        无论在什么环境中,总会有二八法则的存在。例如,20%的客户为公司提供了80%的利润。前面RMF模型分类出了8种不同性质的客户,下面根据客户对平台的贡献度做了排序。一般挽留客户→一般发展客户→一般保持客户→一般价值客户→重要挽留客户→重要发展客户→重要保持客户→重要价值客户

        一个客户流入电商平台,客户行为转化大致和上面的顺序一样,从一开始注册到频繁浏览,再到习惯性在平台购买小件低额商品,客户通过多次消费行为对平台累积了信任后会开始购置大件大额商品,最终成为平台的重要价值客户。相反,如果平台哪里做得让客户体验差,重要价值客户也有可能降低购买量甚至流失。所以,无论对客户做出什么样的营销策略,目的都是加大客户不断地从一般挽留客户向重要价值客户转化,减小重要价值客户向一般挽留客户转化。从而实现平台客户的积累。那么处于不同阶段的客户,应该根据客户的阶段特性来制定不同的策略。下面分析一下每组客户的特性。

        一般挽留客户:这类客户RFM3个值都低,说明已经是流失的客户。针对这批客户召回的成本一般会比较高,因为客户长时间没在平台有任何行为,有可能app都已经卸载。所以一般针对这种客户只会在特定的大型活动才会采取全面的短信、广告和推送召回。比如在双十一、黑色星期五等大型购物狂欢节;或者说公司到了一个新阶段,大量资金投入客户新增,如“瓜分5个亿”“无上限砍价”等活动。

        一般发展客户:这类客户只是有近期购买行为但是购买商品利润低而且也不活跃。一般分两种类型,一种是刚注册的客户,另一种就是由于体验感一般接近流失的客户。针对刚注册的用户一般会采取“新人大礼包”等优惠,一般“新人大礼包”会尽量多的覆盖平台上的不同商品品类,提高新客户了解平台产品的动力。而针对接近流失的客户应该从客服、物流等多角度追溯客户过去不满的原因,对平台进一步完善

        一般保持客户:这类客户只是频繁浏览,但是很久没有成交了。针对这类客户,一般会结合客户最近浏览的商品进行相关优惠推送,促进客户的成交行为。

        一般价值客户:这类客户已经在平台上养成了自己的购买习惯,已经处于多次频繁购买的阶段,但是购买的商品价格都比较低,产生的利润也低。对这类客户应该进一步分析,是属于购买力低还是大额商品有其他习惯成交的平台。针对前者一般不需要采取特别的措施,而针对后者应该时刻注意用户的浏览商品动向,如果客户浏览远超过平时客单价的商品应该及时给予优惠政策。

        重要挽留客户:这类客户消费金额较高,消费频次偏低,而且已经很久没有消费行为了。这种客户曾经算是平台的忠实客户,而且能为平台提供比较大的利润。但是很有可能马上就要流失了,所以应该进行重点挽留,如给客户更多关怀,客服主动沟通,建立平台形象,针对客户有什么不满意的地方应当及时解决,并给予优惠补偿。

        重要发展客户:这类客户最近有消费,且整体消费金额高,但是购买不频繁。这种客户是有购买力的客户,应当重点维护,提升客户在消费中的体验感,比如加送“运费险”等附加增值服务。

        重要保持客户:最近一次消费时间较远,消费金额和消费频次比较高。这种客户一般有网购习惯,但是最近却很久没有来消费,说明很可能已经流向其他的平台。所以非常有潜力可挖,必须重点发展。要关注竞品的活动,做出合理的方案。

        重要价值客户:这类客户RFM 3个值都很高,是平台重点维护的客户,平台应保证服务质量,保持客户在平台每次购物体验。

资料获取,更多粉丝福利,关注下方公众号获取

在这里插入图片描述

相关文章:

  • 【Unity Shader】片段着色器(Fragment Shader)的概念及其使用方法
  • 【QT】实现无边框窗口+可拖动+可调整大小
  • TCP与UDP_三次握手_四次挥手
  • 最新解决docker镜像无法下载问题
  • Redis的哨兵模式是?功能?(通俗易懂版)
  • 用 PID 优化拥塞控制
  • 存储无界限:MK米客方德SD NAND系列,小容量到大容量的全方位覆盖
  • 天软特色因子看板(2024.06 第8期)
  • 展讯-QMI8658和气压传感器驱动调试
  • Maven和JAVA_HOME的关系
  • 【ajax核心04】利用async、await解决显式promise链问题
  • Java中的大数据处理与分析架构
  • 头歌——机器学习——支持向量机案例
  • 解决Windows下移动硬盘无法弹出的问题:\$Extend\$RmMetadata\$TxfLog\$TxfLog.blf
  • 红队内网攻防渗透:内网渗透之内网对抗:横向移动篇Kerberos委派安全非约束系约束系RBCD资源系Spooler利用
  • @angular/forms 源码解析之双向绑定
  • Apache Pulsar 2.1 重磅发布
  • jquery ajax学习笔记
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • PV统计优化设计
  • React as a UI Runtime(五、列表)
  • 关于Java中分层中遇到的一些问题
  • 机器学习 vs. 深度学习
  • 技术发展面试
  • 微服务框架lagom
  • 微信小程序开发问题汇总
  • 小程序开发之路(一)
  • 一、python与pycharm的安装
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #define,static,const,三种常量的区别
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (39)STM32——FLASH闪存
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (LeetCode) T14. Longest Common Prefix
  • (学习日记)2024.01.19
  • (转)fock函数详解
  • .net core Swagger 过滤部分Api
  • .net core开源商城系统源码,支持可视化布局小程序
  • .net framework4与其client profile版本的区别
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .NET/C# 使窗口永不获得焦点
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .net操作Excel出错解决
  • /bin、/sbin、/usr/bin、/usr/sbin
  • @angular/cli项目构建--http(2)
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • [04]Web前端进阶—JS伪数组
  • [20170705]lsnrctl status LISTENER_SCAN1
  • [Angular] 笔记 18:Angular Router
  • [BZOJ 3531][Sdoi2014]旅行(树链剖分+线段树)