根據用戶特徵進行聚類分析

根據用戶特徵進行聚類分析

本項目來自阿里雲學院

一、 背景介紹

移動互聯網發展到現在,產品同質化的趨勢已經越來越明顯了。當下是一個消費升級的社會,需要一個新的的商業模式來支撐。成功的企業不能再依靠產品價格優惠來取勝。如何了解用戶的需求,把握用戶的期望,對迅速對用戶作出精準的投放這些手段已經成為企業能否的關鍵了。

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

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

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

為達到這一目的,我們需要對新用戶進行洞察,弄清楚以下的問題:

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

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

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

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

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

二、分析思路

經過分解和排序,大概得出解決該問題的思路如下:

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

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

三、項目步驟

1.導入數據

利用python的pandas讀取csv數據

2.數據預處理:

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

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

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

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

四、構建模型

對於聚類任務,我們使用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)

結果為29014

5個中心:24709

聚類個數Calinski Harabasz 指標比較:

3個:17959

4個:29014

5個:24709

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

五、結果解讀:

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

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人

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

六、分析結論:

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

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

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

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

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


推薦閱讀:

2. 數據分析有哪些分類
雨沐田:數據分析之資料庫與Excel的區別
半路出家的數據分析師的詳細準備工作
Python筆記--Numpy函數匯總
慢慢出發數據分析

TAG:聚類 | 數據分析 |