1. 序章

このチュートリアルでは、主成分分析(PCA)を確認し、主成分の最適な数を選択してその使用方法を説明します。

最後に、このような手法を一般的な機械学習データセットに適用する方法を説明します。

2. 次元削減

次元削減は、データを高次元空間から次元がはるかに小さい新しい空間に変換するタスクです。 次元削減は、信号処理分野でのデータ圧縮のプロセスと密接に関連しています。

機械学習では、一般に次元削減を使用してモデルのトレーニングを高速化します。さらに、データの次元を削減すると、ノイズの多い特徴や、精度の高いモデルが除外される場合があります。 ]が得られます。 次元削減は、データの視覚化やデータの意味のある解釈を見つけるのにも役立ちます。 実際、次元を2つまたは3つに減らすと、プロット上で高次元のデータを表現し、関連情報を取得できます。

3. PCAの概要

PCAは、最も一般的な次元削減手法です。 PCAでは、圧縮と回復は線形変換によって実行されます。 アルゴリズムは、インスタンスのセットに対して計算された平均二乗誤差が最小である線形変換を見つけます。

特徴ベクトルのセットが与えられると、サイズの実数行列、ここで、は、線形変換を実行することによっての次元を減らすために使用されます。 サイズの実数行列を使用して、変換を実行することにより、圧縮バージョンから各元のベクトルを近似的に再構築します。 したがって、は元の特徴ベクトルの復元されたバージョンであり、同じ次元を持ちます。  PCAは、インスタンスのセットに対して計算された平均二乗誤差が最小になるように、圧縮行列と回復行列を見つけることで構成されます。つまり、次の問題が解決されます。

(1)  

とが式の解である場合、それを示すことができます。 、それからそれはする必要があります 。 したがって、回復行列は、圧縮行列を転置することによって取得されます。 さらに、それを実証することができます行列の列、式の解。 、データのサンプル共分散行列の固有ベクトルに対応します。 共分散行列は次のように定義されていることに注意してください。

(2)  

ここで、は各特徴の平均値を構成要素とするベクトルです。

(3)  

したがって、共分散行列の固有ベクトルを計算し、対応する固有値が降順で並べ替えられるように並べ替える必要があります。

(4)  

最後に、PCAの圧縮行列は次のように表すことができます。

(5)  

共分散行列の固有ベクトルは主成分と呼ばれます。

4. 主成分の適切な数の選択

固有値は、対応する主成分の方向に沿ったデータの分散を表します。 したがって、固有値が最も低いコンポーネントには含まれる情報が最も少ないため、ドロップすることができます。 各成分の重要性は、いわゆる説明された分散比によって表されます。これは、各主成分に沿った分散の部分を示します

(6)  

分母での合計は、主成分の最大数に対して実行されることに注意してください。 最初の成分の説明された分散比を合計することにより、いわゆる累積説明された分散を取得します:

(7)  

良い戦略は、累積説明分散がしきい値、たとえば0.95(95%)を超える次元の数を選択することです。

5. 例

Pythonパッケージscikit-learnで提供される実装を利用して、PCAをMNISTデータセットに適用してみましょう。

keras 関数を使用してMNISTデータセットをロードし、次の範囲のトレーニングセットを正規化します。

import numpy as np
from keras.datasets import mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.reshape(-1, 28*28) / 255.0

すべての主成分()を考慮してトレーニングセットでPCAを実行し、次に次元の数ごとに累積説明分散を計算します。

from sklearn.decomposition import PCA
pca = PCA()
pca.fit(x_train)
cumsum = np.cumsum(pca.explained_variance_ratio_)

主成分の数の関数として説明された分散のプロットを見ると、曲線の肘が観察されます。 累積分散の急激な増加が止まると、主成分の最適数に達します

データの分散を95% ofに保つために必要な主成分の最小数は、次のコマンドで計算できます。

d = np.argmax(cumsum >= 0.95) + 1

分散を95% ofに保ちながら、次元数を784から150に減らすことができることがわかりました。 したがって、圧縮されたデータセットは元のサイズの19% ofになります。 分散を99% ofに維持したい場合は、次元数を330に減らすことができます。つまり、元のサイズの42% ofになります。

6. 結論

この記事では、一般的な次元削減手法である主成分分析について説明しました。 次に、主成分の最適な数を選択して、その使用方法を説明しました。 最後に、Python実装を使用したMNISTデータセットへのPCAの適用を示しました。