セグメンテーションのためのデータ準備

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

Karolis Urbonas

Head of Analytics & Science, Amazon

モデルの前提

  • まず K-means から始めます
  • K-means は 1) データがほぼ正規(非歪度)で、2) 標準化(平均=0、標準偏差=1)されていると有効です
  • 2つ目のモデル NMF は、生データ、特にスパースな行列に有効です
Pythonで学ぶマーケティングのための機械学習

対数変換で歪みを補正

# 第1の選択肢:対数変換
wholesale_log = np.log(wholesale)
sns.pairplot(wholesale_log, diag_kind='kde')
plt.show()
Pythonで学ぶマーケティングのための機械学習

対数変換データを確認

対数変換後のペアプロット

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

Box-Cox 変換で歪みを補正

# 第2の選択肢:Box-Cox 変換
from scipy import stats

def boxcox_df(x):
    x_boxcox, _ = stats.boxcox(x)
    return x_boxcox

wholesale_boxcox = wholesale.apply(boxcox_df, axis=0)
sns.pairplot(wholesale_boxcox, diag_kind='kde')
plt.show()
Pythonで学ぶマーケティングのための機械学習

Box-Cox 変換データを確認

Box-Cox のペアプロット

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

データをスケーリングする

  • 各列の値から列平均を引く
  • 各列の値を列の標準偏差で割る
  • sklearnStandardScaler() を使用
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()

scaler.fit(wholesale_boxcox) wholesale_scaled = scaler.transform(wholesale_boxcox) wholesale_scaled_df = pd.DataFrame(data=wholesale_scaled, index=wholesale_boxcox.index, columns=wholesale_boxcox.columns) wholesale_scaled_df.agg(['mean','std']).round()
      Fresh  Milk  Grocery  Frozen  Detergents_Paper  Delicassen
mean   -0.0   0.0      0.0     0.0              -0.0         0.0
std     1.0   1.0      1.0     1.0               1.0         1.0
Pythonで学ぶマーケティングのための機械学習

練習しましょう!

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

Preparing Video For Download...