更懂你的客戶,使用機器學習進行客戶細分
1
關於用戶細分
用戶細分是客戶關係管理(CRM)中很重要的一個組成部分。無論是傳統企業,還是新興的互聯網企業;不管是面向企業的業務還是面向於個人的業務;在全行業中,對用戶群體進行劃分類型,都可以更好的抓住用戶的訴求,以進行更加精準的營銷。
在傳統的營銷方案中,手段簡單且粗暴,對所有的用戶都是千篇一律的信息推送、廣告宣傳和優惠宣傳。這樣的營銷手段,不僅會效果極差,而且因為騷擾用戶而導致用戶的厭煩。
在了解了用戶的特點和需求後,我們才能進行有針對性的營銷和推廣,這樣不僅使營銷的資源得到最大化的利用和不浪費,用戶也樂於接受我們的營銷信息。
在用戶細分領域,有一個經典的模型——RFM模型,是傳統的用于衡量客戶價值和客戶創收能力的一個重要模型。其主要有三個指標組成:
雖然這個模型到如今面對層出不窮的消費形式,已經稍顯力不從心。但從研究角度看,還是值得使用的。接下來,我們就使用scikit-learn模型的K均值聚類演算法,構造RFM數據集來進行用戶細分。
2
下載使用數據集
在此,我們使用加州大學歐文分校用於機器學習的資料庫中的數據集——Online Retail Data Set ,這是一個跨國數據集,其中包含所有在2010年12月1日至2011年12月09日期間在英國註冊的非在線零售網上零售業務的交易。
這個數據集中一個有8個屬性,分別為:
3
初覽數據
首先,引入相關模塊:
使用pandas從數據集中導入數據:
使用shape屬性查看一下數據集的形狀,一共有541909行、8列:
接著使用columns屬性查看一下數據集的列名,是否和網頁描述上的一致:
確實是一致的,我們來看看數據集的部分數據,使用head()方法:
英文的列名操作起來不方便,我們將其重命名為中文:
這樣看上去,就舒服多了:
再來看看這些訂單中包含了多少個客戶:
嗯,四千餘個客戶產生了五十四萬個訂單。看看哪些國家的訂單量居多:
英國客戶的訂單量一騎絕塵哈。
4
用戶細分
數據清理和構造
首先我們清理一下數據,只選取客戶為英國的訂單,然後添加一個交易總額的列:
再將客戶ID為空值的列,總額為小於0的列剔除:
接著,創建一個變數refrence_date,其為訂單中發票開票日期最大值加一天的日期,作為判斷距今購買時間間隔的標準:
根據refrence_date變數,新增兩個列,為最後一次購買距今日期和最後一次購買距今日期數:
根據客戶ID進行分組,新生成一個DataFrame——customer_history_df:
根據客戶ID進行分組,對交易總額進行匯總求和得到客戶的總交易金額:
接著將客戶總交易金額合併到customer_history_df中:
根據客戶ID進行分組,對交易總額進行計數求和獲得交易頻率值:
接著合併交易頻率到customer_history_df中:
現在的數據集構造好了。
數據預處理
構造後的數據集特徵之間數值差異較大,我們需要先對其進行數據預處理。
首先對數據特徵進行對數轉換:
接著對對數轉換後的數據進行標準化處理:
這樣我們就可以進行聚類建模了。
K均值聚類
在此,我們選擇K均值聚類演算法進行演示,同時使用平均輪廓係數進行聚類的評估。因為對數據中的用戶類型並不明確,所以我們通過一個循環遍歷來創建不同聚類數量的模型,同時進行可視化顯示:
先引入K均值演算法和評估演算法:
接著遍歷從2到4的列表,作為聚類數量分別進行聚類:
首先,我們得到了聚類的平均輪廓係數:
然後是三個聚類的實際分布圖:
我們將對數轉換和標準化處理的數據進行還原,查看原始的聚類中數據:
得到的結果為:


TAG:機器學習 |