
5.9
詳細:主成分分析
441
In[12]: pca = PCA().fit(digits.data)
plt.plot(np.cumsum(pca.explained_variance_ratio_))
plt.xlabel('number of components')
plt.ylabel('cumulative explained variance');
成分数
図5-87 PCAがデータの内容をどの程度保持しているかを示す累積因子寄与率
この曲線は、最初の
N
個の成分内に含まれる
64
次元分散の合計量を示します。例えば、最初の
10
個の成分には分散の約
75
%が含まれていますが、分散の約
100
%を表現するには約
50
個の成分
が必要です。
2
次元への投影では多くの(因子寄与で測定される)情報が失われていたことがわかります。分散
の
90
%を保持するためには、おおよそ
20
の成分が必要です。このプロットにより高次元のデータ
セットにはどのようにして冗長性が含まれているのかが理解できます。
5.9.2
PCA
によるノイズフィルタリング
PCA
はノイズの多いデータのフィルタリング手段としても使用できます。ノイズよりもずっと
大きな分散を持つ成分なら、ノイズから受ける影響は比較的小さいはずです。したがって、主成分
の大きなサブセットのみを使用してデータを再構築すれば、優先的に信号
が保持され、ノイズが排
除されます。
手書き数字のデータでどのように働くかを見てみましょう。まず、ノイズのないデータをいくつ
かプロットします ...