RFM模型


在众多的客户价值分析模型中,RFM模型是被广泛应用的,尤其在零售和企业服务领域堪称经典的分类手段。它的核心定义从基本的交易数据中来,借助恰当的聚类算法,反映出对客户较为直观的分类指示,对于没有数据分析和机器学习技术支撑的初创企业,它是简单易上手的客户分析途径之一。

RFM模型主要有三项指标:

Recency:最近消费时间间隔

Frequency:消费频率

Monetary:消费金额

我们为客户在这三项指标上进行打分,那么总共会有27种组合的可能,使用K-Means算法,能够缩减到指定的有限数量的分箱(一般会为5类),计算出每个客户在分箱的位置即客户的价值。

当然RFM模型还有更多衍生版本,可以参考WiKi:RFM (customer value)。

ML.NET和K-Means


ML.NET自v0.2版本就提供了K-Means++ clustering的实现,也是非监督学习最常见的训练,正好适用于为RFM模型的分类执行机器学习。

动手实践


基本要求

  • Visual Studio 2017 或者 Visual Studio Code

  • DotNet Core 2.0+

  • ML.NET v0.3

数据来源

本案例数据来自UCI:Online Retail,这是一个跨国数据集,其中包含2010年12月1日至2011年12月9日期间在英国注册的非商店在线零售业务中发生的所有交易。该公司主要销售独特的全场礼品。该公司的许多客户都是批发商。

属性信息:

InvoiceNo:发票编号。标称值,为每个事务唯一分配的6位整数。如果此代码以字母'c'开头,则表示取消。

StockCode:产品(项目)代码。标称值,为每个不同的产品唯一分配的5位整数。

Description:产品(项目)名称。标称。

Quantity:每笔交易的每件产品(项目)的数量。数字。

InvoiceDate:发票日期和时间。数字,生成每个事务的日期和时间。

UnitPrice:单价。数字,英镑单位产品价格。

CustomerID:客户编号。标称值,为每个客户唯一分配的5位整数。

Country:国家名称。每个客户所在国家/地区的名称。

数据处理

  1. 使用Excel,对原始数据增加4个字段,分别是Amount(金额,单价与数量相乘的结果)、Date(InvoiceDate的整数值)、Today(当天日期的整数值)、DateDiff(当天与Date的差值)。

  1. 建立透视图,获取每个客户在Amount上的总和,DateDiff的最大和最小值,并且通过计算公式Amount/(DateDiff最大值-DateDiff最小值+1)算出频率值。

  1. 按照以下规则计算RFM的评分

  • R:(DateDiff最大值- DateDiff最小值-2000)的差值,小于480计3分,480-570之间计2分,570-750之间计1分,大于750计0分。

  • F:频率值,大于1000计5分,500-1000之间计4分,100-500之间计3分,50-100之间计2分,0-50之间计1分,小于0计0分。

  • M:Amount总和值,大于10000计5分,5000-10000之间计4分,2000-5000之间计3分,1000-2000之间计2分,0-1000之间计1分,小于0计0分。

有小伙伴可能存在疑问,为什么要这么划分,其实这就是对数据分布合理分段的一种思想,为了减小数据源的不平衡性对机器学习的影响,我们尽量使得数据的分布是自然的。

编码部分

还是熟悉的味道,创建DotNet Core控制台应用程序,通过Nuget添加对ML.NET的引用。

  • 创建用于学习的数据结构

训练部分

评估部分

预测部分

调用部分

运行结果

可以看到,我用于测试的客户,被分到了第2类上面。

尽管完成了聚类的工作,对于学习出来的这5个类别,仍然需要按原始数据集全部遍历预测出对应的分类,根据客户的RFM评分与分类的对应关系,才能够对每个类别的意义进行有效地解释。

结尾


这个简单的案例为大家展示了使用ML.NET完成聚类的机器学习。对于想要上手针对自己公司的业务,进行一些门槛较低的客户分析,使用ML.NET将是一个不错的选择。当然ML.NET还在不断迭代中,希望大家持续关注新的特性功能发布。

原文地址:https://www.cnblogs.com/BeanHsiang/p/9438581.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

使用ML.NET实现基于RFM模型的客户价值分析相关推荐

  1. 基于RFM模型的客户价值分析

    数据:air_data 模型:LRFMC 算法:K-Means 借助航空公司客户数据,对客户进行分类. https://nbviewer.jupyter.org/github/wfshhebau/LR ...

  2. 基于RFM模型的用户价值分析——PythonTableau

    一.模型介绍 RFM模型是衡量客户价值和客户创利能力的重要工具和手段. R(Recency)--最近日期或最新日期:即客户最近一次消费日期距分析日的时间间隔.最近一次消费的时间间隔是维系顾客的一个重要 ...

  3. 电商用户价值分析——基于RFM模型、KMeans聚类

    电商用户价值分析--基于RFM模型.KMeans聚类 一.背景 二.RFM模型.KMeans聚类 三.分析框架 四.具体分析 1. 导入所需的库 2. 导入数据 3. 数据清洗 4. 数据分析 4.1 ...

  4. 基于RFM模型的电商零售数据分析

    数据集介绍 E-Commerce Data Actual transactions from UK retailer 数据集地址(kaggle) https://download.csdn.net/d ...

  5. rfm模型python_数据分析实战——用RFM模型分析客户价值

    数据分析实战--用RFM模型分析客户价值 阿雷边学边教python数据分析第4期--数据可视化 一.介绍什么是RFM模型和作用 1.什么是RFM模型 RFM模型是衡量客户价值的一种工具,该模型通过客户 ...

  6. 26个数据分析案例——第二站:基于Hive的民航客户价值分析

    26个数据分析案例--第二站:基于Hive的民航客户价值分析 实验所需环境 • Python: Python 3.x: • Hadoop2.7.2环境: • Hive2.2.0 数据说明 资料包 链接 ...

  7. 基于RFM模型实现的零售精准营销响应预测系统

    从交易数据中提取RFM特征,代码: ◆ 1 导入数据 # Retail_Data_Transction.csv #交易行为数据:customer_id,trans_date,tran_amount # ...

  8. 基于RFM模型对借贷App用户分层分析案例

    一.目的 1.根据还款未复贷老户的借贷数据,对老户进行群体分类: 2.对不同的客户群体进行特征分析,以便于定向营销. 二.分析过程 1.分析思路 数据包含了2018年4月13日至2020年4月9日期间 ...

  9. 案例(一) 利用RFM模型做用户价值分析

    同步更新在个人网站:http://www.wangpengcufe.com/machinelearning/python-python1/ 一.案例背景 在产品迭代过程中,通常需要根据用户的属性进行归 ...

最新文章

  1. CodeChef--EQUAKE
  2. 计算字符串相似度算法—Levenshtein
  3. SAP C4C - Field creation not permitted in partner devel
  4. python工程技巧_重点来了!掌握这些Python技巧,将给你节省大量时间
  5. .Net Core中使用ref和Spanamp;lt;Tamp;gt;提高程序性能
  6. u盘装xp/win7/ubuntu/fedora总结
  7. 蓝桥杯 ALGO-67 算法训练 最大值与最小值的计算
  8. opencv2+ glob循环读入图片,将文件夹中的图片统一格式
  9. 凸优化第五章对偶 5.2Lagrange对偶问题
  10. Python 从入门到精通 全程最佳实现梳理
  11. mcafee 8.5i 企业版状态代码解释
  12. java走梅花桩_PGIS周中赛:梅花桩4队混战 PERO17杀饮恨 STK拿下本局
  13. linux电视第三方软件安装,三星TV只需几个简单的步骤即可安装第三方TV软件教程!...
  14. Android 10 电池图标修改
  15. 如何实现转圈圈动画效果
  16. python爬取微信小程序源代码_【实战】CrawlSpider实现微信小程序社区爬虫
  17. 德尔玛递交注册:半年营收15亿 小米与欧派是股东
  18. 基于Visual C++2010 与office2010开发办公自动化(2)-自动生成excel与word并打开
  19. Abp 项目生成数据到数据库
  20. 探析初代虚拟人Lil Miquela的陨落

热门文章

  1. 898A. Rounding#数的舍入
  2. HTML meta refresh 刷新与跳转(重定向)页面
  3. MySQL IFNull 详解
  4. Windows2008应用之配置客户端自动添加打印机
  5. C# 如何判断某个 tcp 端口是否被占用?
  6. Envoy实现.NET架构的网关(三)代理GRPC
  7. Http Only Cookie保护AccessToken
  8. NET问答: 为什么 null + true = string 呢?
  9. BCVP第2期:项目已完成升级.NET5.0
  10. .NET Core 取消令牌:CancellationToken