建立顧客與產品分群

Python 的行銷機器學習

Karolis Urbonas

Head of Analytics & Science, Amazon

K-means 分群步驟

使用 K-means 分群(k 為叢集數):

from sklearn.cluster import KMeans

kmeans=KMeans(n_clusters=k)
kmeans.fit(wholesale_scaled_df)
wholesale_kmeans4 = wholesale.assign(segment = kmeans.labels_)
Python 的行銷機器學習

NMF 分群步驟

使用 NMF 分群(k 為叢集數):

from sklearn.decomposition import NMF
nmf = NMF(k)
nmf.fit(wholesale)
components = pd.DataFrame(nmf.components_, columns=wholesale.columns)

取得分群指派:

segment_weights = pd.DataFrame(nmf.transform(wholesale, columns=components.index)
segment_weights.index = wholesale.index
wholesale_nmf = wholesale.assign(segment = segment_weights.idxmax(axis=1))
Python 的行銷機器學習

如何初始化分群數?

  • K-means 與 NMF 都需要設定叢集數(k
  • 定義 k 的兩種方式:1)數學法,2)測試調整
  • 我們將用數學上的肘部法則來取得初步估計
Python 的行銷機器學習

肘部法則(Elbow criterion)

  • 遍歷多個 k
  • 對相同資料各自執行分群
  • 計算各自的平方誤差總和(SSE
  • 繪製 SSEk 的圖並找出「肘部」——誤差降低的邊際改善開始趨緩處
Python 的行銷機器學習

計算平方誤差總和並繪圖

sse = {}
for k in range(1, 11):
    kmeans=KMeans(n_clusters=k, random_state=333)
    kmeans.fit(wholesale_scaled_df)
    sse[k] = kmeans.inertia_
plt.title('Elbow criterion method chart')
sns.pointplot(x=list(sse.keys()), y=list(sse.values()))
plt.show()
Python 的行銷機器學習

找出最佳分群數

肘部法則示意

Python 的行銷機器學習

測試與調整法

  • 先用數學方法計算最佳分群數
  • 在最佳 k 附近嘗試多個分群設定
  • 檢視結果並選擇最具商業意涵者(你能為各群命名嗎?是否模糊或重疊?)
Python 的行銷機器學習

一起來建立顧客分群!

Python 的行銷機器學習

Preparing Video For Download...