標籤:

通過客戶特徵進行客戶分群

通過客戶特徵進行客戶分群

來自專欄數據科學之路6 人贊了文章

本項目來自阿里雲。

1、 背景介紹

以客戶為中心目標是了解不同客戶群體的需求,並向他們提供滿足其個性化需求的服務——提供了更多附加值,與此同時也獲得高於平均的客戶價值。 隨著電信業產品同質化的趨勢越來越明顯,企業成功不能再單純依靠創新產品和產品價格取勝。傾聽客戶呼聲和需求、對不斷變化的客戶期望迅速作出反應的以客戶為中心運營能力——已經成為當今企業能否成功的關鍵。

某電信運營商上個月發展了19999個新用戶,在新用戶入網一個月後,打算做兩件事情。

1、希望通過提供一些優惠提高用戶的忠誠度

2、希望通過推薦一些產品提升客單價

為達到這一目的,運營商請數據分析師對新用戶進行分析,希望通過對新用戶的洞察,搞清楚以下幾個問題:

a、該給客戶提供什麼優惠?

我們的優惠能否給客戶帶來驚喜?

不同的客戶是否該根據他們的喜好提供不同的優惠?

b、客戶對我們的什麼產品感興趣?

不同的客戶是否應該推薦不同的產品?

2、 實驗思路

數據分析師接到任務後,開始對任務進行梳理,經過分解和排序,分析師給出的解決該問題的思路如下:

1、從19999個新用戶相關的數據中選取有效數據集

2、對19999個新用戶進行細分

3、對細分後的不同人群的特徵進行洞察

4、有針對性的提供優惠和產品推薦

分析師經過調研,最終選取了用戶的手機上網日誌數據作為分析的數據集。 該數據集對用戶一個月的手機上網日誌數據進行清洗處理後,跟據用戶ID和網站類型進行統計。 輸出的是用戶當月在每一類網站的訪問次數。

本實驗的數據集共由20列組成,一列為user_id,剩下的19列為19個網站分類對應的一個月的訪問次數,用戶數19999個。網站分類情況如下:

分類名稱 code對應欄位

遊戲/體育 1001 flag_01

遊戲/文字 1002 flag_02

閱讀/小說 1003 flag_03

閱讀/漫畫 1004 flag_04

網購/團購 1009 flag_05

網購/海外購物 1011 flag_06

網購/綜合電商 1012 flag_07

網購/垂直電商 1013 flag_08

商旅出行/旅遊咨訊 1026 flag_09

商旅出行/民宿 1029 flag_10

商旅出行/酒店門票 1030 flag_11

影音/電台 1035 flag_12

影音/音樂 1037 flag_13

影音/攝影 1038 flag_14

金融理財/金融咨訊 1054 flag_15

金融理財/P2P 1056 flag_16

金融理財/證券 1057 flag_17

教育/成人教育 1058 flag_18

教育/中小學教育 1059 flag_19

通過對該數據集進行預處理(過濾異常值、填充缺失值、歸一化),將該數據集輸入聚類模型,通過調整模型參數,迭代嘗試不同的聚類個數,選取最優的聚類,輸出結果。 對聚類結果進行業務解讀,執行後續的客戶經營策略。

3.實驗步驟

1)

在MYSQL下建表:

CREATE TABLE cluster_source_in 上傳數據或者直接在python里操作寫入數據

然後在Python里連接MYSQL再通過pands讀取數據

2)

數據預處理:

通過分析數據表統計匯總信息,發現flag01和flag02列有負數的情況,網站訪問次數不可能小於0,因此屬於異常值,我們處理為0。

def fax(ann): an = 0 for ax in df[ann]: if ax < 0: df[ann][an]=0 an=an+1fax(flag_01) fax(flag_02)

然後我們進行歸一化處理:

df_norm = (df - df.min()) / (df.max() - df.min())print(df_norm)

4.模型構建

選擇機器學習演算法,我們使用聚類演算法中的K均值聚類

import numpy as npfrom sklearn.cluster import KMeanskm = KMeans(n_clusters=3) #先定3個聚類中心label = km.fit_predict(df_norm) #計算簇中心以及為簇分配序號expenses = np.sum(km.cluster_centers_,axis=1) #聚類中心點的數值加和

此時我們進行模型評估,用Calinski-Harabasz Index進行評估

將K均值聚類組件的聚類數參數設定為2、3、4、5,分別跑出最終的Calinski Harabasz 指標,選取指標值最大的類別數,作為聚類的類別個數。

from sklearn import metricsmetrics.calinski_harabaz_score(df_norm, label)

輸出為17959

我們再試試4個中心

km1 = KMeans(n_clusters=4)label1 = km1.fit_predict(df_norm)expenses1 = np.sum(km1.cluster_centers_,axis=1)metrics.calinski_harabaz_score(df_norm, label1)

結果為

5個中心:

所以k=4比k=3和5的聚類分數都要高

聚類個數Calinski Harabasz 指標

3 17959

4 29014

5 24709

當聚類個數為4時,Calinski Harabasz 指標值最大,最終聚類個數設定為4。

5.結果解讀:

模型給出了四個中心點的值,通過對四個中心點的值進行對比解讀,提取各類的特徵

1)統計各個類別的數目:

r1 = pd.Series(km1.labels_).value_counts()

2)找出聚類中心:

r2 = pd.DataFrame(km1.cluster_centers_)

為4個19維向量

3)解讀

然後把r2導入到excel中,再複製,通過選擇性粘貼->轉置操作,將數據粘貼為豎列,每一列對應一個聚類,每一行對應一個網站分類,將每一行中的最大值底色標紅,就可以看出每個類別的顯著特徵。

得到這樣一個表,標上對應文字:

由於我們根據每一類人群在瀏覽網站的行為上是相似的這個特點用k-means進行分類後,將人群根據其特徵即不同網站瀏覽的次數分為4類,我們看以看到人群對應網站中心點的瀏覽特徵,不同人群對於不同類型的網站的瀏覽具有偏好,逛的次數越多證明偏好程度越高,而對於沒有偏好的網站的瀏覽次數就很小,所以每個聚類中心點的維度數值高的地方反映了其人群行為偏好。

通過對上表數據進行解讀,提取四類人群的特徵如下:

人群15999人

該人群偏好網購

人群24789人

該人群重視理財和教育

人群33879人

該人群偏好遊戲和閱讀

人群45336人

該人群偏好旅遊,喜歡音樂和攝影

4) 給出建議

結合公司及其合作夥伴的業務和產品,對四類人群進行有針對性的營銷推廣與關懷。

針對人群1,推薦理財優惠券,推薦理財和教育專用流量包

針對人群2,推薦旅遊優惠券,推薦音樂視頻專用流量包

針對人群3,推薦遊戲卡券優惠券,推薦閱讀流量包

針對人群4,推薦網購優惠券,推薦網購專用流量包


推薦閱讀:

0029數據展現:平均線圖製作
寫給初學者的數據科學 Pipeline 指南
《利用Python進行數據分析·第2版》第10章(中) 數據聚合與分組運算
數據告訴你,選一個好專業的重要性
雨沐田:數據分析之資料庫與Excel的區別

TAG:數據分析 |