変数の中心化とスケーリング

Pythonで学ぶカスタマーセグメンテーション

Karolis Urbonas

Head of Data Science, Amazon

問題の把握

  • データセットの主要統計量を確認
  • 平均と標準偏差を比較
datamart_rfm.describe()

Pythonで学ぶカスタマーセグメンテーション

平均が異なる変数の中心化

  • K-means は平均が同程度の変数で良く機能します
  • 変数の中心化は各観測から平均を引きます
datamart_centered = datamart_rfm - datamart_rfm.mean()
datamart_centered.describe().round(2)

Pythonで学ぶカスタマーセグメンテーション

分散が異なる変数のスケーリング

  • K-means は分散/標準偏差が同程度の変数でより良く機能します
  • スケーリングは各変数をその標準偏差で割ります
datamart_scaled = datamart_rfm / datamart_rfm.std()
datamart_scaled.describe().round(2)

Pythonで学ぶカスタマーセグメンテーション

中心化とスケーリングの併用

  • 平均を引いて標準偏差で割る(手動)
  • あるいは scikit-learn のスケーラを使用(numpy.ndarray を返す)
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(datamart_rfm)
datamart_normalized = scaler.transform(datamart_rfm)

print('mean: ', datamart_normalized.mean(axis=0).round(2)) print('std: ', datamart_normalized.std(axis=0).round(2))
mean:  [-0. -0.  0.]
std:  [1. 1. 1.]
Pythonで学ぶカスタマーセグメンテーション

自分で異なる手法を試しましょう!

Pythonで学ぶカスタマーセグメンテーション

Preparing Video For Download...