2016-06-08_17h55_44

複数の変数 (特徴量・記述子) を用いて外れ値・異常サンプルを検出する方法として、主成分分析 (principal component analysis, PCA) を行ったときのT2統計量・Squared Prediction Error (SPEもしくはQ統計量) が有名です。これらの計算の方法・使い方についてはこちらのPCAの本に詳細に書きました。

PCAとPLSはとても似ています。説明変数のデータセットから互いに無相関な (=直交する) 主成分を計算することは同じであり、その計算方法が異なるだけです。

  • PCA: 主成分軸におけるデータセット(主成分スコア)の分散が
  • PLS: 主成分スコアと目的変数との共分散が

最大になるようにそれぞれ主成分が計算されます。

T2統計量・SPEは主成分にもとづいて計算されることから、PCAだけでなくPLSでもT2統計量・SPEを計算できます。PCAのときと同じで、

  • T2統計量: 選択した主成分数までの主成分スコアをスケーリングした後の原点からのユークリッド距離の二乗
  • SPE: 選択した主成分数よりあとの主成分軸における原点からのユークリッド距離の二乗

です。それぞれの値が大きいときに外れ値・異常サンプルということになります。しきい値の決め方などT2統計量・SPE(Q統計量)の詳細についてはこちらをご覧ください

PLSのT2統計量・SPEの利点は?

PLSでは目的変数を考慮できることが利点です。というか、PLSを行うときには目的変数が必要です。今回のような外れ値・異常サンプルの検出を行うときには目的変数をどうすればよいでしょうか?

二通りの方法が考えられます。

  • 異常サンプルに関係している (もしくは関係してそうな) 変数にする
  • 異常サンプルを1、正常なサンプルを0とする変数にする

順に説明します。

目的変数として、異常サンプルに関係している (もしくは関係してそうな) 変数にする

PCAではこれが難しいのです。みなさんの中には、『目的変数を説明変数の一つとして追加してPCAをすればいいんじゃないの?』と考える方もいると思います。もちろんこれでも目的変数を考慮できますし、これで問題ないときもあるにはあります。しかしこの方法では、新しいサンプルにおいては目的変数の値が得られないと外れ値・異常サンプルの検出ができません

PLSでは、主成分軸の方向を決める (ローディングを計算する) ときには目的変数の値が必要ですが、新しいサンプルの主成分スコアを計算するときには説明変数の値だけで十分です。目的変数の値は必要ありません。異常サンプルに関係している (もしくは関係してそうな) 変数を考慮しながら、新しいサンプルに対してはそのような変数の値がなくても外れ値・異常サンプルを検出できるわけです。

目的変数として、異常サンプルを1、正常なサンプルを0とする変数にする

もし事前にどのサンプルが異常サンプルでどのサンプルが正常なサンプルか分かっているときは、その情報を目的変数にします。つまりある変数について、異常サンプルについては変数の値を1にして、正常サンプルについては変数の値を0にした変数を新たに準備して、それを目的変数とするわけです。これによって、どのサンプルが異常なサンプルなのか、といった情報を考慮しながら、まだ異常サンプルか正常なサンプルか分からないサンプルについて、異常・正常を判定できるようになります。

まとめ

PLSでもT2統計量・SPE(Q統計量)を計算できます。適切な目的変数があったり、どのサンプルが異常でどのサンプルが正常かの情報があるときは、PCAよりPLSを用いたほうがよいです