jiku log

データサイエンスの核心を掴む : 学びと発見の記録

「スモールデータ解析と機械学習」を読む ~第6章 異常検知問題 ③多変量統計的プロセス管理~

はじめに

藤原 幸一 著「スモールデータ解析と機械学習」は,サンプル数が少ない状況でのモデル構築や予測精度の確保,統計的な不確実性の扱い方など,現場で直面する悩みに直結する理論と実践がコンパクトにまとまっている。製造業のデータ解析において「少ないデータだから仕方ない」と諦めるのではなく,「少ないからこそできる工夫」を身につけるためにこの本を読み,その学びをブログで共有しようと思う。

本記事は,「第6章 異常検知問題」における,多変量統計的プロセス管理(MSPC)に関する読書メモである。

6.3 多変量統計的プロセス管理(MSPC)

多変量統計的プロセス管理(Multivariate Statistical Process Control)は,主成分分析(PCA)を用いた異常診断手法であり,変数間の相関関係の変化に着目した異常診断手法である。

MSPCの考え方

MSPCは変数間の相関関係に着目した異常診断手法である。この考え方を,身長と体重のデータを例に説明する。


身長と体重の間には,正の相関関係がある。正常なサンプルでは,図の○のように,身長が大きい人は体重も大きくなる,という傾向になる。この正常サンプルに対しては,図のような楕円形の正常範囲を決めることができる。

この図において,☆のサンプルを考えると,このサンプルは身長・体重ともに,正常なサンプルよりも大きいが,身長と体重の間にある正の相関関係を考えると,正常と判断できる。
一方で×のサンプルを考えると,身長が大きいが体重が少ない(痩せすぎ),あるいは身長は小さいが体重が多い(太りすぎ)といった傾向がみられ,これらは異常と判断できる。

このように,正常なサンプル群に対して楕円(3次元以上は楕円体)を当てはめることにより,正常なデータの範囲を決める,というのがMSPCの基本的な考え方である。

T^2統計量

データ行列 \boldsymbol{X}は,各項目の平均が0になるように中心化されているものとする。 \boldsymbol{X}特異値分解(SVD)によって,


 \begin{align}
\boldsymbol{X} &= \boldsymbol{U}\boldsymbol{\Sigma}\boldsymbol{V}^T \\ \\
&=
  \begin{bmatrix}
    \boldsymbol{U}_R & \boldsymbol{U}_0 \\
  \end{bmatrix}

  \begin{bmatrix}
    \boldsymbol{\Sigma}_R & \boldsymbol{O} \\
    \boldsymbol{O} & \boldsymbol{\Sigma}_0 \\
  \end{bmatrix}

  \begin{bmatrix}
    \boldsymbol{V}_R & \boldsymbol{V}_0 \\
  \end{bmatrix}^T

\\ \\
\end{align}
のように表す。ただし Rを上位主成分数,および \boldsymbol{U}_Rなど Rが付いた行列は,上位主成分に対応する行列である。


監視対象のサンプル \boldsymbol{x} *1に対して, T^2統計量は次のように定義される。


 \begin{align}
T^2 = \sum_{r=1}^R \frac{t_r^2}{\sigma_{t_r}^2} = \boldsymbol{x}^T \boldsymbol{V}_R \boldsymbol{\Sigma}_R^{-2} \boldsymbol{V}_R^T \boldsymbol{x} \\ \\
\end{align}

これは, \boldsymbol{V}_Rに含まれる正規直交基底によって張られる空間における楕円体の中心からの距離(マハラノビス距離)を表す。
まず \boldsymbol{V}_R^T \boldsymbol{x} \in \mathbb{R}^Rは,監視対象のサンプルを \boldsymbol{V}_Rの座標系における成分で表したものであるため,


 \begin{align}
\boldsymbol{V}_R^T \boldsymbol{x} = 
  \begin{bmatrix}
    t_1 & \cdots & t_R \\
  \end{bmatrix}^T
\\ \\
\end{align}
のように表される。

また \boldsymbol{\Sigma}_R^{-2}は,対角成分が特異値の2乗(固有値)の逆数になっている対角行列であるため,


 \begin{align}
\boldsymbol{\Sigma}_R^{-2}  = 
  \begin{bmatrix}
    \sigma_{t_1}^{-2} & & \\
    & \ddots & \\
    & & \sigma_{t_R}^{-2} \\
  \end{bmatrix}
\\ \\
\end{align}
となる。

これらを組み合わせると,


 \begin{align}
T^2 = 
  \begin{bmatrix}
    t_1 & \cdots & t_R \\
  \end{bmatrix}

  \begin{bmatrix}
    \sigma_{t_1}^{-2} & & \\
    & \ddots & \\
    & & \sigma_{t_R}^{-2} \\
  \end{bmatrix}

  \begin{bmatrix}
    t_1 \\ 
    \vdots \\
    t_R \\
  \end{bmatrix}

= \sum_{r=1}^R \frac{t_r^2}{\sigma_{t_r}^2}
\\ \\
\end{align}
となり,これはマハラノビス距離になっている。

Q統計量

 T^2統計量の式を見ると,特異値の逆数が含まれている。そのため,上位固有値の数 Rまででマハラノビス距離の計算を打ち切らないと, T^2統計量の計算が不安定になることが分かる。一方で,上位固有値の数 Rまででマハラノビス距離の計算を打ち切ると,下位固有値に相当する部分で異常が起きたときに,この異常が検出できないことになる。


 Q統計量は,下位固有値に対応する固有ベクトル方向の異常を検出するものである。 Q統計量は以下で定義される。


 \begin{align}
Q = \boldsymbol{x}^T (\boldsymbol{I} - \boldsymbol{V}_R \boldsymbol{V}_R^T )\boldsymbol{x} \\ \\
\end{align}

ここで,


 \begin{align}
&
  \begin{bmatrix}
    \boldsymbol{V}_R & \boldsymbol{V}_0\\ 
  \end{bmatrix}

  \begin{bmatrix}
    \boldsymbol{V}_R^T \\ 
    \boldsymbol{V}_0^T \\ 
  \end{bmatrix}

= \boldsymbol{V}_R \boldsymbol{V}_R^T + \boldsymbol{V}_0 \boldsymbol{V}_0^T
= \boldsymbol{I} \\ \\

& \therefore \boldsymbol{I} - \boldsymbol{V}_R \boldsymbol{V}_R^T = \boldsymbol{V}_0 \boldsymbol{V}_0^T \\ \\

\end{align}

となるので, Q統計量は,監視対象サンプルを \boldsymbol{V}_0が張る空間に射影したベクトルの距離,すなわち監視対象サンプルを \boldsymbol{V}_Rに射影した時の垂線の長さに相当していることが分かる。

まとめと感想

今回は,「第6章 異常検知問題」における,多変量統計的プロセス管理(MSPC)についてまとめた。

MSPCは,製造業でのプロセス監視に非常に親和性が高い。現場データは多くのセンサー値で構成されており,それぞれ単独で見ると正常範囲に入っていても,相関関係が崩れることで異常が顕在化するケースは少なくない。例えば,温度と圧力が常に比例しているはずの装置で,温度だけが高くなっているような場合である。

LOFやアイソレーションフォレストのような機械学習ベースの異常検知は「分布や分離のしやすさ」に依存するが,MSPCは「物理的な相関構造」に基づくため,工程知識とのつながりが直感的で,原因究明にも役立ちやすい点が強みだと考えられる。特に T^2統計量と Q統計量の2つの統計量を併用する枠組みは,設備保全における「大きな変動の監視」と「微妙なバランス崩れの早期検知」を両立できるのが魅力的だ。

一方でMSPCは,正常範囲が単一の多変量正規分布にしたがっていると仮定しているが,これは様々な動作モードを含むようなプロセスの監視には直接適用することが難しい。そのため,正常範囲を非線形化するような様々な工夫が必要になる。


本記事を最後まで読んでくださり,どうもありがとうございました。

*1:この監視対象のサンプルは,データ行列の中心に合わせられているものとする。すなわち,データ行列 Xがもともと中心化されていない場合,各列の平均値からなるベクトル \boldsymbol{\mu}を各サンプルから引けばデータ行列は中心化されるが,監視対象のサンプルもこの \boldsymbol{\mu}が引かれているとする。