大数据分析案例-用RFM模型对客户价值分析(聚类)
目录
1.项目背景
2.项目准备
2.1 项目内容
2.2 数据说明
2.3 技术工具
3.分析方法
3.1 RFM模型
3.2 聚类
4.项目实施步骤
4.1 读取数据
4.2 探索性数据分析
4.3计算RFM值
4.4数据预处理
4.4.1 数据类型转换
4.4.2 客户聚类
4.4.3标记客户类别
5.实验总结
5.1 结果分析
5.2 实验心得
1.项目背景
随着行业竞争越来越激烈,商家将更多的运营思路转向客户。例如,购物时,常常被商家推荐扫码注册会员;各种电商平台也推出注册会员领优惠券等推销政策,而这些做法都是为了积累客户,以便对客户进行分析。
那么,在商家积累的大量的客户交易数据中,如何根据客户历史消费记录分析不同客户群体的特征和价值呢?例如,了解哪些是重要保持客户、哪些是发展客户、哪些是潜在客户,从而针对不同客户群体定制不同的营销策略,实现精准营销、降低营销成本,提高销售业绩,使企业利润最大化。例如,淘宝电商客户繁多,消费行为复杂,客户价值很难人工评估,并对客户进行分类,这就霸要通过科学的分析方法评估客户价值,实现智能客户分类,快速定位客户、当然,也要清醒地认识到,即便是预测的客户价值较高,也只能说明其购买潜力较高,同时必须结合实际与客户互动,推动客户追加购买、交叉购买才是电商努力的方向。
顾客价值的概念及分类
早在1954年,Drucker就指出顾客购买和消费的决不是产品而是价值。尽管学者们都使用了顾客价值这一概念却没有对其进行详细的描述与解释。
Zeithaml在1988年首先从顾客角度提出了顾客感知价值理论。她将顾客感知价值定义为:顾客所能感知到的利得与其在获取产品或服务中所付出的成木述行权衡后对产品或服务效川的整体评价。
在此后的顾客价值研究中不同的学者从不同的角度对顾客价值进行了定义
(1)从单个情景的角度,AndersonJain、Chintagunta 、Monroe都认为顾客价值是基于感知利得与感知利失的权衡或对产品效用的综合评价;
(2)从关系角度出发,Ravald、Gronroos重点强调关系对顾客价值的影响将顾客价值定义为:整个过程的价值二(单个情景的利得+关系的利得)/(单个情景的利失+关系的利失),认为利得和利失Z间的权衡不能仅仅局限在单个情(episode)上,而应该扩展到对整个关系持续过程的价值(totalepisode,value)衡量。此外,Butz、Good2stein也强调顾客价值的产生来源于购买和使用产品后发现产品的额外价值从而与供应商之间建立起感情纽带。
在众多的顾客价值定义中大多数学者都比较认同Woodruff对顾客价值的定义并在其定义基础上进行了很多相关研究。Woodruff通过对顾客如何看待价值的实证研究提出顾客价值是顾客对特定使用情景下有助于(有碍于)实现自己的目标和目的的产品属性、这些展性的实效以及使用的结杲所感知的偏好与评价。该定义强调顾客价值來源于顾客通过学习得到的感知、偏好和评价并将产品、使用情景和目标导向的顾客所经历的相关结果相联系。
同时,很多学者都从不同角度对顾客价值进行了分类。Sheth等人把客八价值分为五类:功能性价值、社会性价值、情感性价值、认知价值(epistemic)和条件价值。Burns结合客户评价过程把'客户价值分为产品价值、使川价值、山有价值和全部价值。Woodruff、Flint则将其分为实受价值和期望价值。通过以上分析不难看此虽然学者们对顾客价值的理解有很多,但都是从交换的角度來看待价值,并认同感知价值的核心是感知利得与感知利失之间的权衡。
从顾客价值的概念中我们不难总结出顾客价值的几个基木特征
(1)顾客价值是顾客对产品或服务的一种感知是与产品和服务相挂钩的它妹于顾客的个人主观判断
(2)顾客感知价值的核心是顾客所获得的感知利益Q因获得和享用该产品或服务而付出的感知代价之间的权衡(trade・off),即利得与利失之间的权衡;
(3)顾客价值是从产品属性、属性效用到期望的结果再到客八所期望的目标具有层次性。
顾客价值的理论模型
科特勒的可让渡价值理论
菲利普•科特勒是从顾客让渡价值和顾客满意的角度來阐述顾客价值的。其研究的前捉是:顾客将从那些他们认为捉供最高认知价值的公司购买产品。所谓顾客止渡价值,是指总顾客价值与总顾客成本Z差。
总顾客价值就是顾客从某一特定产品或服务中获得的一系列利益,它包括产品价值、服务价值、人员价值和形象价值筹。顾客总成本是指顾客为了购买产品或服务而付出的一系列成本,包括货币成本、时间成本、和体力成本。顾客是价值最人化的追求者,在购买产品时总希望用最低的成木获得最大的收益,以使口己的盂耍得到最大限度的满足。
Jeanke、Ron 、Onno的顾客价值模型
Jeankex Ron、Onno的模型从供应商和顾客两个角度,描述了随着业务发展价值从一个模糊的概念到市场上的具体产品的整个过程。对供应商而言,供应商的依据的是他所感觉到的顾客需求以及企业本身的战略、能力和资源,形成“想提供的价值”的概念。由于企业条件或产品开发与市场脱节等原因,企业以“想提供的价值”为基础设计出以具体产品或服务为载体的“设计价值”,两者之间存在“设计差距”。对顾客而言顾客从自身角度出发希望获得的是“想要得到的价值”。于社会环境、科技的发展程度筹客观因素的限制市场上提供的产品不可能与顾客想得到的价值完全吻合,因此存在“折衷差距”和顾客的“期望价值”。由于供应商与顾间存在对顾客需求的不对称信息或是企业在顾客需求调查过程中过多地掺杂了企业自身的思想对顾客需求的分析未必客观准确,所以“想提供的价值”与顾客“想得到的价值”之间存在“信息差距”。顾客的主观性价值感知使“期累价值”与设计价值间出现“感知差距”。当顾客使用产品后,所“得到的价值”与期望价值之间的差距为“满意差距”。通过缩小各个差距,企业就可以提供真正为顾客所需的价值。
Woodruff顾客价值层次模型对顾客如何感知企业所提供的价值问题进行了回答。该模熨提;比顾客以途径一目标的方式形成期望价值。在授底层往上看,在购买和使用某一具体产品的时候,顾客将会考虑产品的具体属性和屈性效能以及这些属性对实现预期结果的能力。顾客还会根据这些结杲对顾客ri标的实现能力形成期架。从最高层向下看,顾客会根据自己的目标来确定产品在使用情景下各结果的权重。同样结果确定属性和属性实效的相对重要性。同时该模型强调了使用情景在顾客价值评价屮的关键作用。当使川情景发生变化时产品属性、结果和目标间的联系都会发生变化。该层次模型还提出顾客通过对每一层次上产品使川前的期望价值和使用后的实受价值的对比,会导致每一个层面上的满意感觉。因此顾客对于产品属性、属性效能、使用结果和目标意图的达成度都会感到满意或
顾客期望的价值。
因此,客户价值分析至关重要。
2.项目准备
2.1 项目内容
随着行业竞争越来越激烈,商家将更多的运营思路转向客户,客户是企业生存的关键,能够把握住客户就能够掌控企业的未来。客户的需求是客户消费的最直接原因,因此我们主要研究以下问题:
2.2 数据说明
2.3 技术工具
客户价值分析主要使用的是聚类分析方法,在对客户进行聚类前,首先要使用RFM模型分析客户价值。
3.分析方法
3.1 RFM模型
R:最近消费时间间隔,表示客户最近一次消费时间与之前消费时间的距离。
R越大,表示客户越久未发生交易,R越小,表示客户最近有交易发生。R越大,则客户越可能会“沉睡”,流失的可能性越大。在这部分客户中,可能有些优质客户,值得通过一些营销手段进行激活。
M:消费金额,表示客户每次消费金额,可以用最近-次消费金额,也可以用过去的平均消费金额,根据分析的目的不同,可以有不同的标识方法。
3.2 聚类
3、基于密度的方法(density-based methods)
5、基于模型的方法(model-based methods)
当然聚类方法还有:传递闭包法,布尔矩阵法,直接聚类法,相关性分析聚类,基于统计的聚类方法等。
处理“噪声”数据的能力:绝大多数现实中的数据库都包含了孤立点,缺失,或者错误的数据。一些聚类算法对于这样的数据敏感,可能导致低质量的聚类结果。
对于输入记录的顺序不敏感:一些聚类算法对于输入数据的顺序是敏感的。例如,同一个数据集合,当以不同的顺序交给同一个算法时,可能生成差别很大的聚类结果。开发对数据输入顺序不敏感的算法具有重要的意义。
可解释性和可用性:用户希望聚类结果是可解释的,可理解的,和可用的。也就是说,聚类可能需要和特定的语义解释和应用相联系。应用目标如何影响聚类方法的选择也是一个重要的研究课题。
4.项目实施步骤
4.1 读取数据
由于两年的数据分别放在不同excel表中,在读取数据之前先对数据进行合并,然后从数据中抽取与客户价值分析相关的数据,即“买家会员名”“订单付款日期”“买家实际支付金额”。程序代码如下:
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
#读取excel表格
df_2018=pd.read_excel('2018.xlsx')
df_2019=pd.read_excel('2019.xlsx')
#抽取指定列数据
df_2018=df_2018[['买家会员名','买家实际支付金额','订单付款时间']]
df_2019=df_2019[['买家会员名','买家实际支付金额','订单付款时间']]
#数据合并导入
dfs=pd.concat([df_2018,df_2019])
dfs.head()#head展示前五行
4.2 探索性数据分析
view=dfs.describe(percentiles=[],include='all').T
view['null']=len(dfs)-view['count']
view=view[['null','max','min']]
view.columns=[u'空值数',u'最大值',u'最小值']#重命名
print(view)
4.3计算RFM值
计算RFM值,需要对数据进行简单处理,去除“订单付款时间”的空值,去除“买家实际支付金额”为0的数据。
data=dfs[dfs['订单付款时间'].notnull()&dfs['买家实际支付金额']!=0]
最近消费时间间隔(R值):最近一次消费时间与某时刻的时间间隔。计算公式:某时刻的时间-最近一次消费时间。
data=data.copy()
data['最近消费时间间隔']=(pd.to_datetime('2019-12-31')-pd.to_datetime(data['订单付款时间'])).values/np.timedelta64(1,'D')
df=data[['订单付款时间','买家会员名','买家实际支付金额','最近消费时间间隔']]
df1=df.groupby('买家会员名').agg({'买家会员名':'size','最近消费时间间隔':'min','买家实际支付金额':'sum'})
df2=df1.rename(columns={'买家会员名':'消费频率','买家实际支付金额':'消费金额'})
4.4数据预处理
2)全面性:观察某一列的全部数值,通过常识来判断该列是否有问题,比如:数据定义、单位标识、数据本身。
3)合法性:数据的类型、内容、大小的合法性。比如数据中是否存在非ASCII字符,性别存在了未知,年龄超过了150等。
4)唯一性:数据是否存在重复记录,因为数据通常来自不同渠道的汇总,重复的情况是常见的。行数据、列数据都需要是唯一的。
本项目对数据进行数据类型转换和缺失值处理两种预处理方法,以确保其完整性、全面性与合法性。
4.4.1 数据类型转换
数据类型转换是将数据转换成“适当的”格式,以适应数据分析和数据挖掘算法的需要。下面将RFM模型的数据进行标准化处理,程序代码如下:
data=df2[['最近消费时间间隔','消费频率','消费金额']]#提取指定列数据
data=(data-data.mean(axis=0))/(data.std(axis=0))#标准化处理
data.columns=['R','F','M']#重命名
data.index
print(data.head())
4.4.2 客户聚类
下面使用Scikit-Learn中的cluster模块的Kmeans方法实现客户聚类分析,聚类结果通过密度图显示,程序代码如下:
k=4
kmodel=KMeans(n_clusters=k)#创建聚类模型
kmodel.fit(data)#训练模型
r1=pd.Series(kmodel.labels_).value_counts()
r2=pd.DataFrame(kmodel.cluster_centers_)
r=pd.concat([r2,r1],axis=1)
r.columns=list(data.columns)+[u'聚类数量']
r3=pd.Series(kmodel.labels_,index=data.index)#类别标记
r=pd.concat([data,r3],axis=1)#数据合并
r.columns=list(data.columns)+[u'聚类类别']plt.rcParams['font.sans-serif']=['SimHei']#解决中文乱码
plt.rcParams['axes.unicode_minus']=False#解决负号不显示
for i in range(k):cls=data[r[u'聚类类别']==i]cls.plot(kind='kde',linewidth=2,subplots=True,sharex=False)plt.suptitle('客户群=%d;聚类数量=%d'%(i,r1[i]))
plt.show()
4.4.3标记客户类别
为了清晰的分析客户,通过聚类模型标记客户类别,同时根据类别统计客户RFM值的特征。
cdata.columns=['R-最近消费时间间隔','F-消费频率','M-消费金额','类别']#重命名最后一列为类别
df = pd.concat([df2[['最近消费时间间隔','消费频率','消费金额']],r3],axis=1)#数据合并
df.columns=['R-最近消费时间间隔','F-消费频率','M-消费金额',u'聚类类别']
data_mean = df.groupby('聚类类别').mean()
new = data_mean.mean()
df = data_mean.append(new,ignore_index=True)
data_mean=cdata.groupby(['类别']).mean()
print(data_mean)
5.实验总结
5.1 结果分析
比较后,我们将客户群按价值高低进行分类和排名,客户群0是潜在客户;客户群1是一般发展客户,客户群2是一般保持客户,客户群3是重要保持客户。
R |
F |
M |
聚类类别 |
客户类别 |
客户数 |
排名 |
低 |
低 |
低 |
0 |
潜在客户 |
1316 |
4 |
高 |
低 |
低 |
1 |
一般发展客户 |
978 |
3 |
低 |
高 |
低 |
2 |
一般保持客户 |
120 |
2 |
高 |
高 |
高 |
3 |
重要保持客户 |
3 |
1 |
(2)一般保持客户: F高,这类客户消费次数多,是忠实的客户。针对这类客户应多传递促销活动、品牌信息、新品或活动信息等。
5.2 实验心得
通过这次Python项目实战,我学到了许多新的知识,这是一个让我把书本上的理论知识运用于实践中的好机会。原先,学的时候感叹学的资料太难懂,此刻想来,有些其实并不难,关键在于理解。
在这次实战中还锻炼了我其他方面的潜力,提高了我的综合素质。首先,它锻炼了我做项目的潜力,提高了独立思考问题、自我动手操作的潜力,在工作的过程中,复习了以前学习过的知识,并掌握了一些应用知识的技巧等。
这次Python实战不仅仅使我学到了知识,丰富了经验。也帮忙我缩小了实践和理论的差距。在未来的工作中我会把学到的理论知识和实践经验不断的应用到实际工作中,为实现理想而努力。
大数据分析案例-用RFM模型对客户价值分析(聚类)相关推荐
- rfm模型python_数据分析实战——用RFM模型分析客户价值
数据分析实战--用RFM模型分析客户价值 阿雷边学边教python数据分析第4期--数据可视化 一.介绍什么是RFM模型和作用 1.什么是RFM模型 RFM模型是衡量客户价值的一种工具,该模型通过客户 ...
- 使用ML.NET实现基于RFM模型的客户价值分析
RFM模型 在众多的客户价值分析模型中,RFM模型是被广泛应用的,尤其在零售和企业服务领域堪称经典的分类手段.它的核心定义从基本的交易数据中来,借助恰当的聚类算法,反映出对客户较为直观的分类指示,对于 ...
- 基于RFM模型的客户价值分析
数据:air_data 模型:LRFMC 算法:K-Means 借助航空公司客户数据,对客户进行分类. https://nbviewer.jupyter.org/github/wfshhebau/LR ...
- 冲着这份大数据分析案例,我立马下载该分析软件!
当前,全球大数据产业正值活跃发展期,技术演进和应用创新并行加速推进,非关系型数据库.分布式并行计算以及机器学习.深度挖掘等新型数据存储.计算和分析关键技术应运而生并快速演进,大数据挖掘分析在电信.互联 ...
- 数据挖掘应用案例:RFM模型分析与客户细分(转)
正好刚帮某电信行业完成一个数据挖掘工作,其中的RFM模型还是有一定代表性,就再把数据挖掘RFM模型的建模思路细节与大家分享一下吧!手机充值业务是一项主要电信业务形式,客户的充值行为记录正好满足RFM模 ...
- 案例(一) 利用RFM模型做用户价值分析
同步更新在个人网站:http://www.wangpengcufe.com/machinelearning/python-python1/ 一.案例背景 在产品迭代过程中,通常需要根据用户的属性进行归 ...
- 电商用户行为分析与挖掘(MYSQL数据分析+SPSS构建RFM模型)
前言 毫不夸张的说在中国除了婴幼儿及七八十以上的老年人,都有过网购经历.电商公司就如雨后春笋般迅速发展.了解用户的网购行为,有助于商家定品类,定营销方案等.利用数据分析与挖掘,争取做到比顾客自己还了解 ...
- Spark大数据分析案例之平均心率检测[2021]
本文是基于林子雨老师的博客完成的一次课程设计,侧重于关注在实际操作中的一些问题的解决和各种系统软件的使用安装. 整体流程是模拟平均心率信息,然后发送给Kafka,接下来Spark Str ...
- Python 某电子产品销售数据分析报告及RFM模型(一)
关注微信公共号:小程在线 关注CSDN博客:程志伟的博客 Python 3.7.6 (default, Jan 8 2020, 20:23:39) [MSC v.1916 64 bit (AMD64 ...
- 基于RFM模型的用户价值分析——PythonTableau
一.模型介绍 RFM模型是衡量客户价值和客户创利能力的重要工具和手段. R(Recency)--最近日期或最新日期:即客户最近一次消费日期距分析日的时间间隔.最近一次消费的时间间隔是维系顾客的一个重要 ...
最新文章
- java中getter_Java中的Getter和Setters解释了
- map平均准确率_MAP(Mean Average Precision)
- jsp 调用java_jsp中调用java代码小结
- 批量部署OFFICE2013
- java枚举来实现单例_枚举实现单例模式
- win10+Vmware14+Centeros7.6 mini网络设置
- “box-shadow”属性(转)
- CetnOS 6.7安装Hive 1.2.1
- java的基本数据类型有什么特点_【Java】常用数据类型及其特点(万物都是变量)...
- 领航机器人广告段子_医院机器人物流广告词
- coco人体姿态估计标注软件
- Django的Forms.py
- linux 声卡设备文件夹,Linux ALSA声卡驱动之三:PCM设备的创建
- 《图像处理实例》 之 二值图像分割
- shell md5sum命令
- mysql产生随机数
- 网站关键词优化应该先优化首页还是优化内页?
- 牛逼!Unix之父密码耗时4天终于破解了
- ObjectARX开发各版本与VS各版本对照表
- python info函数的作用是_Python函数__new__及__init__作用及区别解析