顧客・商品セグメンテーションを構築する

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) テスト&ラーン
  • まず肘(Elbow)法で概算の目安を得る
Pythonで学ぶマーケティングのための機械学習

肘(Elbow)法

  • 複数の k を反復
  • 同じデータで各 k でクラスタリング実行
  • 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で学ぶマーケティングのための機械学習

最適なセグメント数の特定

肘(Elbow)法

Pythonで学ぶマーケティングのための機械学習

テスト&ラーン手法

  • まず最適なセグメント数を数理的に算出
  • 最適な k の前後で複数値でセグメントを作成
  • 結果を確認し、ビジネス妥当性が最も高いものを選択(名前を付けられるか?あいまい・重複はないか?)
Pythonで学ぶマーケティングのための機械学習

顧客セグメントを作ってみましょう!

Pythonで学ぶマーケティングのための機械学習

Preparing Video For Download...