PCA【Principal Component Analysis】
〇PCAとは?
→相関のある多数の変数から相関のない小数で全体のばらつきを最もよく表す主成分と呼ばれる変数を合成する多変量解析手法の1つ
-教師なし学習の1つ
-データの特徴が判断しやすくなる。
〇次元圧縮を行う流れ
1.データの重心を求める。
2.重心からデータの分散が最大となる方向を見つける。
3.2で求めた方向を新たな基底とする。
4.3で作成した基底と直行する方向に対して分散最大となる方向を探す。
5.元データの次元数だけリピート
〇PCAをPythonで使う方法
<手順①>ライブラリのインポート
from sklearn,decomposition import PCA
<手順②>インスタンス作成
pca = PCA( )
<手順③>モデルの学習
pca.fit(X)
<手順➃>データの主成分表示
clf.transform(X)
※教師なしなのでyが存在しない。
scikit-learn.decomposition
PCAモジュール
【PCA()の引数】
・引数n_components:圧縮後の次元数
・引数copy:Falseの場合、変換するデータを上書きする(デフォルトはTrue)
・引数whiten: Trueの場合、白色化とよばれる、変数間の相関をなくす処理を行う(デフォルトはFalse)
・引数svd_solver: 特異値分解のソルバ('auto', 'full', 'arpack', 'randomized')
・引数random_state: 乱数
【クラスのメソッド】
・fit(X):学習の実行
・fit_transform(X):PCA変換
・transform(X): fitやfit_transformで定義したPCA変換
※使う変数は教師なしなので説明変数Xのみである。
〇PCAを使った次元削減
<手順①>ライブラリのインポート
# ライブラリのインポート
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
iris = load_iris()
X = iris.data
y = iris.target
また、次元削減前の説明変数の大きさも確認!
In [1]: X.shape
Out[1]: (150, 4)
<手順②>インスタンス作成
pca = PCA(n_components=3)
<手順③>モデルの学習
教師あり学習の時の同様に.fitを使って学習を行い、transformを使ってデータの次元削減を行います。
pca.fit(X)
X_ = pca.transform(X)
次元削減の変数X_の大きさも確認してみましょう。次元が指定の3次元となっていることが確認できます。
In [2]: X_.shape
Out[2]: (150, 3)
次元数が4➡3になっている。