使用ML.NET实现基于RFM模型的客户价值分析
RFM模型
在眾多的客戶價(jià)值分析模型中,RFM模型是被廣泛應(yīng)用的,尤其在零售和企業(yè)服務(wù)領(lǐng)域堪稱經(jīng)典的分類手段。它的核心定義從基本的交易數(shù)據(jù)中來(lái),借助恰當(dāng)?shù)木垲愃惴?#xff0c;反映出對(duì)客戶較為直觀的分類指示,對(duì)于沒(méi)有數(shù)據(jù)分析和機(jī)器學(xué)習(xí)技術(shù)支撐的初創(chuàng)企業(yè),它是簡(jiǎn)單易上手的客戶分析途徑之一。
RFM模型主要有三項(xiàng)指標(biāo):
Recency:最近消費(fèi)時(shí)間間隔
Frequency:消費(fèi)頻率
Monetary:消費(fèi)金額
我們?yōu)榭蛻粼谶@三項(xiàng)指標(biāo)上進(jìn)行打分,那么總共會(huì)有27種組合的可能,使用K-Means算法,能夠縮減到指定的有限數(shù)量的分箱(一般會(huì)為5類),計(jì)算出每個(gè)客戶在分箱的位置即客戶的價(jià)值。
當(dāng)然RFM模型還有更多衍生版本,可以參考WiKi:RFM (customer value)。
ML.NET和K-Means
ML.NET自v0.2版本就提供了K-Means++ clustering的實(shí)現(xiàn),也是非監(jiān)督學(xué)習(xí)最常見(jiàn)的訓(xùn)練,正好適用于為RFM模型的分類執(zhí)行機(jī)器學(xué)習(xí)。
動(dòng)手實(shí)踐
基本要求
Visual Studio 2017 或者 Visual Studio Code
DotNet Core 2.0+
ML.NET v0.3
數(shù)據(jù)來(lái)源
本案例數(shù)據(jù)來(lái)自UCI:Online Retail,這是一個(gè)跨國(guó)數(shù)據(jù)集,其中包含2010年12月1日至2011年12月9日期間在英國(guó)注冊(cè)的非商店在線零售業(yè)務(wù)中發(fā)生的所有交易。該公司主要銷售獨(dú)特的全場(chǎng)禮品。該公司的許多客戶都是批發(fā)商。
屬性信息:
InvoiceNo:發(fā)票編號(hào)。標(biāo)稱值,為每個(gè)事務(wù)唯一分配的6位整數(shù)。如果此代碼以字母'c'開頭,則表示取消。
StockCode:產(chǎn)品(項(xiàng)目)代碼。標(biāo)稱值,為每個(gè)不同的產(chǎn)品唯一分配的5位整數(shù)。
Description:產(chǎn)品(項(xiàng)目)名稱。標(biāo)稱。
Quantity:每筆交易的每件產(chǎn)品(項(xiàng)目)的數(shù)量。數(shù)字。
InvoiceDate:發(fā)票日期和時(shí)間。數(shù)字,生成每個(gè)事務(wù)的日期和時(shí)間。
UnitPrice:單價(jià)。數(shù)字,英鎊單位產(chǎn)品價(jià)格。
CustomerID:客戶編號(hào)。標(biāo)稱值,為每個(gè)客戶唯一分配的5位整數(shù)。
Country:國(guó)家名稱。每個(gè)客戶所在國(guó)家/地區(qū)的名稱。
數(shù)據(jù)處理
使用Excel,對(duì)原始數(shù)據(jù)增加4個(gè)字段,分別是Amount(金額,單價(jià)與數(shù)量相乘的結(jié)果)、Date(InvoiceDate的整數(shù)值)、Today(當(dāng)天日期的整數(shù)值)、DateDiff(當(dāng)天與Date的差值)。
建立透視圖,獲取每個(gè)客戶在Amount上的總和,DateDiff的最大和最小值,并且通過(guò)計(jì)算公式Amount/(DateDiff最大值-DateDiff最小值+1)算出頻率值。
按照以下規(guī)則計(jì)算RFM的評(píng)分
R:(DateDiff最大值- DateDiff最小值-2000)的差值,小于480計(jì)3分,480-570之間計(jì)2分,570-750之間計(jì)1分,大于750計(jì)0分。
F:頻率值,大于1000計(jì)5分,500-1000之間計(jì)4分,100-500之間計(jì)3分,50-100之間計(jì)2分,0-50之間計(jì)1分,小于0計(jì)0分。
M:Amount總和值,大于10000計(jì)5分,5000-10000之間計(jì)4分,2000-5000之間計(jì)3分,1000-2000之間計(jì)2分,0-1000之間計(jì)1分,小于0計(jì)0分。
編碼部分
還是熟悉的味道,創(chuàng)建DotNet Core控制臺(tái)應(yīng)用程序,通過(guò)Nuget添加對(duì)ML.NET的引用。
創(chuàng)建用于學(xué)習(xí)的數(shù)據(jù)結(jié)構(gòu)
訓(xùn)練部分
評(píng)估部分
預(yù)測(cè)部分
調(diào)用部分
運(yùn)行結(jié)果
可以看到,我用于測(cè)試的客戶,被分到了第2類上面。
盡管完成了聚類的工作,對(duì)于學(xué)習(xí)出來(lái)的這5個(gè)類別,仍然需要按原始數(shù)據(jù)集全部遍歷預(yù)測(cè)出對(duì)應(yīng)的分類,根據(jù)客戶的RFM評(píng)分與分類的對(duì)應(yīng)關(guān)系,才能夠?qū)γ總€(gè)類別的意義進(jìn)行有效地解釋。結(jié)尾
這個(gè)簡(jiǎn)單的案例為大家展示了使用ML.NET完成聚類的機(jī)器學(xué)習(xí)。對(duì)于想要上手針對(duì)自己公司的業(yè)務(wù),進(jìn)行一些門檻較低的客戶分析,使用ML.NET將是一個(gè)不錯(cuò)的選擇。當(dāng)然ML.NET還在不斷迭代中,希望大家持續(xù)關(guān)注新的特性功能發(fā)布。
原文地址:https://www.cnblogs.com/BeanHsiang/p/9438581.html
.NET社區(qū)新聞,深度好文,歡迎訪問(wèn)公眾號(hào)文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的使用ML.NET实现基于RFM模型的客户价值分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 解决C# 7.2中的结构体性能问题
- 下一篇: 回顾4180天在腾讯使用C#的历程,开启