2016-05-19_22h51_07

データ解析の手順』 における「2.データを見える化(可視化)する」についてです。なお実行するためのプログラムについてはこちらをご覧ください。

公開中のプログラム・コード一覧(実用的かつ実践的なデータ解析・機械学習・データマイニング) : 大学教授のブログ

[New] KPCAのプログラムを簡単に入手できるようになりました!

それぞれのURLからお求めください!

MATLAB: https://spike.cc/shop/univprof/products/PAEUTd7r

R: https://spike.cc/shop/univprof/products/rbip3WVU

Python: https://spike.cc/shop/univprof/products/Q0dQlpB8

Kernel Principal Component Analysis (KPCA)

主成分分析 (Principal Component Analysis, PCA) は、線形の可視化手法ですが、変数間の非線形性を考慮に入れて可視化したいときもあります。そこでKernel Principal Component Analysis (KPCA)が用いられます。

基本的にKPCAはPCAと類似していますが、KPCAではカーネル関数を決める必要があります。もちろんデータセットに応じて、最適なカーネル関数は異なると思いますが、ガウシアンカーネルを使用すればまず間違いありません。パイパーパラメータの数も一つと少ない方ですし、変数間の非線形性も考慮できます。ここではガウシアンカーネルを使用したKPCAについて説明します。

KPCAは以下の手順で行います。    

  1. センタリングする       
    つまり、変数ごとにその変数の平均を引いて平均を0にします。
  2. スケーリングする       
    つまり、変数ごとにその変数の標準偏差で割って標準偏差を1にします。
  3. γの候補を決める
    例えば、
    γ: 2-20,  2-19,  …,  29,  210
    とします。
  4. γの値ごとにカーネル行列を計算し、その分散を計算する
    例えばカーネル行列が100×100の行列であったときは単純に10000×1のベクトルになおして分散を計算します。 
  5. 分散の大きさが最大となるγの値を最適値として決定する
    分散が最大となるγを選ぶことで、多様な値をもつカーネル行列となります。
  6. 上で最適化したγを固定してKPCAを実行する
  7. 成分数ごとの寄与率や累積寄与率を確認する
    寄与率が各主成分の持つ情報量を表します。第一主成分や第二主成分で寄与率が高いとデータの見える化がやりやすいです。
  8. 第一主成分軸 vs. 第二主成分軸 のプロットを確認する
    最も情報量の大きい二軸で確認します。このときに各軸の寄与率もしっかりと示します。
  9. 第一主成分軸 vs. 第三主成分軸 のプロットを確認する
    第二主成分軸までで情報量が不十分な場合は、第三主成分も確認します。寄与率によっては第四主成分以降も確認します。どの程度の寄与率であれば情報量が十分か判断するため、最初のデータセットにノイズがどの程度含まれるかが参考になります。 例えば5%くらいがノイズであると考えられる場合は、累積寄与率が 95%程度であれば十分です。
  10. これ以降の解析でも主成分軸を使用する場合は、使用する主成分軸の数を決める
    累積寄与率を見ながら使用する主成分軸の数を決めます。例えば最初のデータセットには5%くらいノイズが含まれると考えられる場合は、累積寄与率が95%になるまでの主成分軸を使用することで、それ以降の軸はノイズとして除去することができます。