您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何使用ML.NET實現基于RFM模型的客戶價值分析,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
在眾多的客戶價值分析模型中,RFM模型是被廣泛應用的,尤其在零售和企業服務領域堪稱經典的分類手段。它的核心定義從基本的交易數據中來,借助恰當的聚類算法,反映出對客戶較為直觀的分類指示,對于沒有數據分析和機器學習技術支撐的初創企業,它是簡單易上手的客戶分析途徑之一。
RFM模型主要有三項指標:
Recency:最近消費時間間隔
Frequency:消費頻率
Monetary:消費金額
我們為客戶在這三項指標上進行打分,那么總共會有27種組合的可能,使用K-Means算法,能夠縮減到指定的有限數量的分箱(一般會為5類),計算出每個客戶在分箱的位置即客戶的價值。
當然RFM模型還有更多衍生版本,可以參考WiKi:RFM (customer value)。
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:國家名稱。每個客戶所在國家/地區的名稱。
使用Excel,對原始數據增加4個字段,分別是Amount(金額,單價與數量相乘的結果)、Date(InvoiceDate的整數值)、Today(當天日期的整數值)、DateDiff(當天與Date的差值)。
建立透視圖,獲取每個客戶在Amount上的總和,DateDiff的最大和最小值,并且通過計算公式Amount/(DateDiff最大值-DateDiff最小值+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還在不斷迭代中,希望大家持續關注新的特性功能發布。
上述內容就是如何使用ML.NET實現基于RFM模型的客戶價值分析,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。