pca_objective

いきなりですが、主成分分析 (principal component analysis, PCA) を行う目的は何でしょうか?

大多数の人は、『データの見える化』と答えます (もしくは、同じ意味ですが『データの可視化』)。

しかし『見える化』といっても、データの何を見たいのでしょうか

データの数は数えればすぐに見られます。データの中心やばらつきならば、データの平均や標準偏差を計算すれば見えます。変数間の相関ならば相関係数を求めればOKです。

皆さん、データの何を見たいか意識して主成分分析を行っていますか?

もちろん!! データの『様子』を見たいんですよ!!
とおっしゃる方もいます。でも、データの『様子』って何でしょうか?見えた結果はちゃんと『様子』を表していますか?

ほとんどの方は、
主成分分析を行って『様子』が見えた!第一主成分 vs. 第二主成分のプロットにおいて、このデータとこのデータは近くにあるから、実際のデータも近くにあるんだ!
・・・と思いがちです。これ、間違っています。

こちらに書いた通り第一主成分 vs. 第二主成分のプロット上で近いデータ同士でも、実際のデータ同士では離れている場合もあります。これを考えていない人は以外と多いです。

実は、『主成分分析を行って役に立った!』と思えるようになるには、以下の5つの場合しかありません。

  • ① あるデータセットともう一つのデータセットとの分布が近いかどうか確認したい場合
  • ② データセットにある外れ値を特定したい場合
  • ③ データセットにおける、データが存在する範囲を決めたい場合
  • ④ データに含まれるノイズを減らしたい場合
  • ⑤ 変数 (成分) 間の関係を無相関化したい場合

順番に説明します。

① あるデータセットともう一つのデータセットとの分布が近いかどうか確認したい場合

ある一つのデータと別の一つのデータとの関係では、さきほど述べたように主成分分析後に近いデータが実際には離れていることがあります

しかし、あるデータセットともう一つのデータセットとの関係であれば、そのような問題はありません。つまり、複数のデータと複数のデータとの関係が主成分分析後に近ければ、実際のデータセット同士も近いと信頼できます。『複数』の数が多くなれば多くなるほど信頼度は上がります。第一・第二主成分の累積寄与率が同じであれば、50個と50個を比較するより100個と100個を比較したほうがよいわけです。

なぜ複数のデータ同士なら問題ないかというと、第一・第二主成分で表現されなかった部分は正規分布であることが仮定されているためです。一つのデータ同士では、正規分布における2つの値の間でたまたま差が大きくなってしまうこともあります。しかし、例えば100個と100個とで表現されなかった部分を比べたら、正規分布における100個と100個とを比べることになり、ほどんどそれらの分布に差はありません。つまり、第一主成分 vs. 第二主成分のプロット上での分布のみ考えることができます。

主成分分析後のプロットでデータを比較するときは、データセット同士にしましょう。

② データセットにある外れ値を特定したい場合

こちらの記事のように、主成分分析後のプロットにおいて、他のデータと離れているデータは実際のデータも離れている、つまり外れ値です。

T2統計量という、主成分をスケーリングした後の原点からのユークリッド距離の二乗、によって外れ値を見つけましょう。T2統計量の値が大きいデータが外れ値です。このとき、第二成分までで計算する必要はありません。第三、第四、・・・と増やしてもT2統計量の計算はできます。

①において、主成分分析後のプロットにおいて近いデータでも実際のデータは離れていることもある、という話をしました。これによると、T2統計量だけでは外れ値を検出できないことになります。T2統計量の値が小さくても、実際のデータは外れ値であることもあります。

そこで、二乗予測誤差 (Squared Prediction Error, SPE) という指標を用います。Q統計量とも呼ばれています。これは使用する主成分の成分数より後の、すべての主成分軸での空間における、原点からの距離です。主成分分析による推定値と実際の値との誤差の二乗和という言い方もできます。

これらのT2統計量とSPE (Q統計量) によって外れ値を見つけます。

③ データセットにおける、データが存在する領域を決めたい場合

使用しているデータセットの領域を決める方法はいろいろとあります。

たとえば、各変数に上限と下限を設定する方法です。上限・下限の設定には、3シグマ法を用いることが一般的です。つまり、平均値に標準偏差の3倍を足したものを上限とし、平均値から標準偏差の3倍を引いたものを下限とします。この方法では、まず変数の数が多くなると設定する上限・下限も増えるため面倒です。さらに、変数間の相関関係 (共線性) を考慮できません

主成分分析の後に計算された、T2統計量・SPEに上限を設けることでデータ領域を決める方法があります。T2統計量・SPEという2つだけの、しかも上限だけ決めればよいのです。さらに主成分分析を行っているため、変数間の相関関係 (共線性) も考慮されています。

上限値は、T2統計量・SPEそれぞれの最大値としても構いませんが、元のデータセットの中にT2統計量・SPEの値がたまたま大きいデータが含まれているかもしれません。最大値は、そのような"たまたま"の状況に左右されやすいといえます。よりそのような状況に左右されにくく統計的に妥当なのは、元のデータセットの99.7%が含まれる範囲とすることです。ちなみに99.7%というのは3シグマ法に由来します。例えば、元のデータセットに1000個のデータがあるとしますと、T2統計量の値を小さい順に並び替え、その997番目の値をT2統計量のしきい値とします。

このようにT2統計量・SPEを用いて、使用しているデータセットの存在するデータ領域を決めます。

④ データセットに含まれるノイズを減らしたい場合

主成分分析のあとに ある成分数まで使用するとき、それ以降の成分の情報をノイズとみなして、次の解析から省くことができます。

このように主成分分析によりデータセットに含まれるノイズを減らせます。

⑤ 変数 (成分) 間の関係を無相関化したい場合

主成分分析を行うことによって得られる主成分間の関係はすべて無相関です。つまり、相関係数は0ということです。

基本的に説明変数 (入力変数) の間には少なからず相関関係があります。解析を行うときに、そのような相関関係があると具合が悪く、無相関化することでメリットがある場合もあります。例えば独立成分分析を行うとき、変数間が無相関であれば、求める分離行列の自由度が小さくなり計算しやすくなります

変数 (成分) 間の関係を無相関化したい場合は主成分分析を行いましょう。

===

以上です。

主成分分析を行う際は、①から⑤のどの場合なのか、しっかりと目的意識をもちましょう。

主成分分析をさらに勉強したい方は以下の本も参考にしてください!