天天看點

數智洞見 | 你的雙11優惠券領了嗎?基于算法的優惠券發放

又到躁動的雙十一了

準備好買買買了嗎

數智洞見 | 你的雙11優惠券領了嗎?基于算法的優惠券發放

算出省錢小妙招了嗎

優惠券有沒有用起來呢

平常購物中,“雙11”、“618”購物節、外賣的滿減、商家會員等都會給消費者發放優惠券。當消費者有優惠券可用時,購買東西的沖動會增大很多。許多商家基于使用者這種心理,會發放優惠券來進行促銷。那商家的優惠券的發放機制是怎樣的呢?

有的是普惠性質,到達一定金額後可用;有的優惠券靠搶;還有的是定向發放。最後一種方式一般來說既可以節省成本,也可以達到比較好的促銷效果,提升使用者活躍度。

今天我們來看下基于算法怎麼進行定向優惠券發放。

通過算法模型,提升營銷準确率

        ——以某個面包店為例

1.業務目标

根據某面包店曆史6個月的使用者交易記錄,通過RFM模型對使用者分群,并建立模型預測使用者的購買機率,實作對不同使用者群不同購買機率的使用者實行不同的發券政策,以此提升營銷的準确率,實作ROI(收益與成本控制)的最大化。

知識點1:RFM模型

RMF模型是衡量客戶價值和創新能力的一個重要工具和手段,通過使用者的最近一次消費時間(Recency)、消費頻率(Frequency)、消費金額(Monetary)三項名額将客戶劃分為重要價值客戶、重要發展客戶、重要保持客戶、重要挽留客戶、一般價值客戶、一般發展客戶、一般保持客戶、一般挽留客戶等八個象限,針對不同群組的客戶采取不同的營運政策,該模型常用于企業商品單價不高、交易頻次高的業務中。

2.資料準備

擷取面包店6個月的使用者曆史交易表,表資訊如下:

數智洞見 | 你的雙11優惠券領了嗎?基于算法的優惠券發放

 該表中共包含21293條資料,共960個使用者的交易記錄。真實業務場景中,資料特征會比這個舉例多很多,今天我們通過删減後的資料來看一下整個過程。

3.算法模型搭建

我們采用數棧的算法開發(AIWorks)平台進行算法模型的搭建:

1)資料分析

首先從Hive庫中讀取到原始資料(即上面提到的表),算法工程師需要對資料品質進行評估,分析每個特征的資料缺失情況、分布情況、異常值校驗、列與列之間的相關性等,如某些列的資料缺失較大,需要進行缺失值填充或删除;标簽列分布不均勻,需要通過采樣方法進行資料采用;若兩個特征之間的相關性過大則不适合作為模型的輸入。

我們以“user_id(使用者id)”這個特征列來看一下資料分布情況:

資料基本特征 

數智洞見 | 你的雙11優惠券領了嗎?基于算法的優惠券發放

可看到使用者id列的ID-ness(資料差異性:字段中不同取值的數量/總行數)、Stability(資料穩定性:字段中出現頻率最高且非空值的單元格數/總行數)、Missing(資料缺失率:該段中缺失的單元格數/總行數)名額都比較正常,反映出此分資料集使用者數量足夠、沒有同一個使用者的大量交易記錄、資料分析均勻、無缺失資料,符合我們的期望。

資料分布情況

數智洞見 | 你的雙11優惠券領了嗎?基于算法的優惠券發放

資料分布均勻,資料品質較好。

資料相關性

數智洞見 | 你的雙11優惠券領了嗎?基于算法的優惠券發放

可分析列與列之間的相關性,作為模型特征選擇的參考。

其他特征的資料與使用者id同理,此處不再贅述。接下來進行特征處理。

2)資料處理

a.RFM使用者分群

利用AIWorks封裝好的資料處理元件搭建RFM分層模型,計算每個使用者的RFM參數,如下圖左側分支:

數智洞見 | 你的雙11優惠券領了嗎?基于算法的優惠券發放

· 聚合函數_F:基于6個月交易資料,對user_id(使用者id)進行groupby,并對transcation(訂單号)求nunique,得到每個使用者的曆史交易次數;

· 聚合函數_M:基于6個月交易資料,對user_id(使用者id )進行groupby,并對price(商品價格)求sum,得到每個使用者的曆史交易總金額

· 聚合函數_R:基于6個月交易資料,對user_id(使用者id )進行groupby,并對date(交易日期)取最大值,取得每個使用者最後一次交易時間

· Python腳本:将上述元件計算的R、F、M值通過Python元件合并到一張表中,輸出結果如下圖所示:

數智洞見 | 你的雙11優惠券領了嗎?基于算法的優惠券發放

b.使用者購買情況計算

右側分支中,利用Python腳本進行資料處理:

數智洞見 | 你的雙11優惠券領了嗎?基于算法的優惠券發放

· Python腳本_标簽列:求每個使用者每天的交易金額、以及是否進行消費、R、F、M值。是否進行消費作為這份資料集的标簽列,用lable辨別,當每天交易金額為0時,則label=0;當每天交易金額為>0時,label=1。

3)特征處理

一般算法模組化中,特征處理包含:

(1)通用特征處理:如資料缺失值填充、資料采樣、類型轉化等;

(2)數值型特征處理:如歸一化、标準化等;

(3)字元型特征處理:字元類型的字段不能作為模型的輸入,需要将這類特征先數值化,如one-hot編碼、label編碼等。

在目前算法場景中的RFM分層模型、使用者購買率預測模型中,我們采用的模型特征都是R(最近一次消費時間)、F(消費頻率)、M(消費金額)3個字段,無缺失值,都是數值類型字段,暫無需做其他特征處理。

4)特征選擇

特征選擇一般需要根據具體的業務場景和專家經驗,選擇模型的特征列,且需計算特征與特征之間的相關性(高相關性的特征選擇其中一個便好,否則不容易判斷該模型的特征重要性),及特征與标簽列之間的相關性(選擇影響标簽的特征,若特征對标簽無顯著影響,則無需選擇)。

該算法場景中,将使用者的原始屬性轉化成R、F、M值作為模型的特征輸入。可分析一下特征之間的相關性:

數智洞見 | 你的雙11優惠券領了嗎?基于算法的優惠券發放

特征間相關性較低,可作為模型輸入。

知識點2:特征與标簽

算法模型一般表達的是一個數學關系,即y(标簽列)和x(特征列)的關系,y是模型的輸出結果,x是影響模型的因素。如下圖所示:

數智洞見 | 你的雙11優惠券領了嗎?基于算法的優惠券發放

5)模型選擇與訓練

由于在RFM分群模型的搭建中,曆史資料沒有标簽列,即沒有一個業務字段來表示該使用者屬于哪個群體,是以該算法問題是一個聚類問題,我們采用機器學習聚類算法中的KMeans聚類模型進行分群。

KMeans聚類模型以樣本間距離為基礎,将n個對象分為k個簇,使群體與群體之間的距離盡量大,而簇内具有較高的相似度。

數智洞見 | 你的雙11優惠券領了嗎?基于算法的優惠券發放

· KMeans聚類:模型進行資料處理,将使用者分成3類,輸出如下:

數智洞見 | 你的雙11優惠券領了嗎?基于算法的優惠券發放

b.使用者購買機率預測

使用者購買預測需要預測出未來使用者是否會購買以及購買的機率,屬于一個二分類問題,此處采用機器學習分類模型中的XGB分類模型進行使用者分類。

XGBoost是經過優化的分布式梯度提升庫,計算非常高效、且靈活與可移植性高。

數智洞見 | 你的雙11優惠券領了嗎?基于算法的優惠券發放

· Python腳本_訓練集:将曆史月的使用者資料作為訓練集

· Python腳本_測試集:将當月的使用者資料作為測試集;

· XGB分類:用訓練集進行模型訓練;

· 預測:用訓練好的XGB模型預測今天的使用者是否會購買,以及購買的機率,模型運作結果如下:

數智洞見 | 你的雙11優惠券領了嗎?基于算法的優惠券發放

6)模型評估

采用模型評估元件評估模型的好壞。

數智洞見 | 你的雙11優惠券領了嗎?基于算法的優惠券發放

針對XGB分類模型,我們采用混淆矩陣和二分類模型評估元件進行模型評估,可檢視模型的性能名額,如下圖:

數智洞見 | 你的雙11優惠券領了嗎?基于算法的優惠券發放
數智洞見 | 你的雙11優惠券領了嗎?基于算法的優惠券發放
數智洞見 | 你的雙11優惠券領了嗎?基于算法的優惠券發放

模型評估結果:

· 準确率:模型預測正确的結果,占所有樣本的比例;

· 精确率:模型預測出正确的會購買使用者/預測出的會購買使用者(無論是否正确),來表示是否篩選出正确的結果,甯可沒有預測出來,但不能預測錯誤。

· 召回率:模型預測出正确的會購買使用者/真實的會購買使用者,來表示模型識别的廣度。

· F1值:綜合反映精确率與召回率,F1越高,在精确率與綜合率的表現越好。

· AUC值:AUC是ROC曲線的面積,AUC越高代表模型的區分能力越好

該模型的各項評估名額符合期望,可對外使用。

7)輸出發券使用者清單

數智洞見 | 你的雙11優惠券領了嗎?基于算法的優惠券發放

· Python腳本_目标使用者:将KMeans聚類模型劃分出屬于“1”類别(重要價值客戶:購買金額高、購買頻率高、購買時間近),且XGB分類模型預測出來的今天不會購買的使用者篩選出來,針對這部分人群發放優惠券,進行定向營銷,該元件輸出的使用者清單如下,共238個使用者。

數智洞見 | 你的雙11優惠券領了嗎?基于算法的優惠券發放
數智洞見 | 你的雙11優惠券領了嗎?基于算法的優惠券發放

由此,便得出一個可定向精準營銷的使用者清單,可進行後續的營銷活動,以此提升營銷的準确率,實作ROI的最大化。

8)模型周期性運作

若該模型正式投入線上使用,可每天定時跑批,輸出最新的RFM分群使用者,以及該使用者在明天是否會購買的資訊,進而提供給業務人員進行差異化的營銷。

9)模型線上預測

除模型周期性跑批之外,也可以把該算法模型進行pipeline部署,以資料API的方式對外提供服務。外部業務系統線上調用模型,模型預測出結果,實時傳回給業務系統該使用者是否會購買的結果。

數智洞見 | 你的雙11優惠券領了嗎?基于算法的優惠券發放

AIWorks-企業級算法開發平台

AIWorks是集可視化模組化與交式代碼編寫于一體的企業級算法開發平台,支援從資料接入、算法模組化、模型訓練、任務運維到模型部署全鍊路流程,幫助企業快速建構高效、安全、穩定的分布式算法運作環境,提升算法服務能力。

數智洞見 | 你的雙11優惠券領了嗎?基于算法的優惠券發放

算法挖掘項目持續深耕資料智能化應用領域,目前已傳遞金融、政府、制造、地産等多個行業,感興趣的小夥伴歡迎聯系。

繼續閱讀