PCA 変換の可視化

Pythonで学ぶ教師なし学習

Benjamin Wilson

Director of Research at lateral.io

次元削減

  • 計算・保存がより効率的
  • 情報量の少ない「ノイズ」特徴量を除去
  • 予測(分類・回帰など)に悪影響の特徴を抑制
Pythonで学ぶ教師なし学習

主成分分析(PCA)

  • PCA = Principal Component Analysis(主成分分析)
  • 基本的な次元削減手法
  • 最初の段階は「脱相関」(本章)
  • 次の段階で次元を削減(後で扱う)
Pythonで学ぶ教師なし学習

PCA はデータを軸に整列

  • データを回転し、軸に整列
  • 平均が 0 になるようシフト
  • 情報は失われない

回転した軸付きワインデータの散布図

Pythonで学ぶ教師なし学習

PCA は fit/transform パターンに従う

  • PCAKMeansStandardScaler と同様の scikit-learn コンポーネント
  • fit() はデータから変換を学習
  • transform() は学習済み変換を適用
  • transform() は新規データにも適用可能
Pythonで学ぶ教師なし学習

scikit-learn での PCA 利用

  • samples は 2 特徴量配列(total_phenolsod280
[[ 2.8   3.92]
 ...
 [ 2.05  1.6 ]]
from sklearn.decomposition import PCA

model = PCA() model.fit(samples)
PCA()
transformed = model.transform(samples)
Pythonで学ぶ教師なし学習

PCA の特徴量

  • transformed の各行はサンプル
  • transformed の各列は「PCA 特徴量」
  • 各行は対応サンプルの PCA 値
print(transformed)
[[  1.32771994e+00   4.51396070e-01]
 [  8.32496068e-01   2.33099664e-01]
 ...
 [ -9.33526935e-01  -4.60559297e-01]]
Pythonで学ぶ教師なし学習

PCA 特徴量は相関しない

  • データセットの特徴量は相関しやすい(例:total_phenolsod280
  • PCA はデータを軸に合わせて回転
  • 得られる PCA 特徴量は線形相関しない(脱相関)

回転した軸付きワインデータの散布図

Pythonで学ぶ教師なし学習

ピアソン相関

  • 特徴量間の線形相関を測る
  • 値は -1 から 1
  • 0 は線形相関なし

相関 0.7、0、-0.7 の散布図 3 つ

Pythonで学ぶ教師なし学習

主成分

  • 主成分 = 分散の方向
  • PCA は主成分を座標軸に整列

主成分の方向を示す赤い矢印付きワインデータの散布図(回転軸)

Pythonで学ぶ教師なし学習

主成分

  • PCA オブジェクトの components_ 属性で取得
  • 各行は平均からの変位を定義
print(model.components_)
[[ 0.64116665  0.76740167]
 [-0.76740167  0.64116665]]
Pythonで学ぶ教師なし学習

Passons à la pratique !

Pythonで学ぶ教師なし学習

Preparing Video For Download...