jiku log

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

「スモールデータ解析と機械学習」を読む ~第6章 異常検知問題 ⑤時系列データの取り扱い~

はじめに

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

本記事は,「第6章 異常検知問題」における,時系列データの取り扱いに関する読書メモである。

6.6 時系列データの取り扱い

異常検知問題は,連続的に測定される時系列データを対象にすることが多いため,時系列の特性,例えば自己相関などを特徴にすると,異常検知性能が改善することがある。

自己相関関数

自己相関関数は,時系列データ上の異なる点の間の相関として定義される。具体的には,


 \begin{align}
R(k) = \frac{ E[ (x_n - \mu)(x_{n-k} - \mu)] }{ \sigma^2 } = \frac{1}{n-k} \sum_{i=1}^{n-k} \frac{ (x_n - \mu)(x_{n-k} - \mu) }{ \sigma^2 } \\ \\
\end{align}
で定義される。なお kは2点間の差, \muは x_nの平均, \sigma^2は分散である。

PCAによる自己相関の抽出

主成分分析(PCA)は,変数間の相関関係を抽出するための方法であった。PCAを自己相関を計算するには,データ行列から以下のような行列を作成する。


 \begin{align}
\mathbfit{X}_k = 
  \begin{bmatrix}
  x_1 & x_2 & \cdots & x_k \\
  x_2 & x_3 & \cdots & x_{k+1} \\
  \vdots & \vdots & \ddots & \ddots \\
  x_{N-k+1} & x_{N-k+2} & \cdots & x_N \\
  \end{bmatrix}
\in \mathbb{R}^{(N-k) \times k} \\ \\
\end{align}
この \mathbfit{X}_kのような行列をハンケル行列と呼ぶ。

ハンケル行列 \mathbfit{X}_k \in \mathbb{R}^{(N-k) \times k}について, N-kと kのどちらが大きいか,ということは本書中には明示されていないが,長さ kのベクトルをもとのデータから切り出し,特徴的な波形を取り出すことを考えると, (N-k) \gt kと考えるのが妥当であるため, \mathbfit{X}_kは縦長の行列であると考えられる。

時系列データから \mathbfit{X}_kの転置行列 \mathbfit{X}_k^Tを作る手順は下図の手順のようになる。

ハンケル行列のつくり方

特異スペクトル分析

本節では,時系列データに対する異常診断である特異スペクトル分析(Singular Spectrum Analysis; SSA)が紹介されていた。

SSAは,異常検知と変化検知 | 書籍情報 | 株式会社 講談社サイエンティフィクにおいて詳細に説明されている。また,SSAの基本的な考え方であるハンケル行列に対する特異値分解については,当ブログの過去記事である「続々 制御工学のこころ」を読む ~第6章 ビヨンド最小二乗法 ④補足:時系列データに対する特異値分解(実践編)~ - jiku logにも説明した。よってこれらの文献を参照し,SSAについて確認した。


本書で紹介されている \mathbfit{X}_k \in \mathbb{R}^{(N-k) \times k}は縦型の行列になる。ここで,「続々 制御工学のこころ」を読む ~第6章 ビヨンド最小二乗法 ④補足:時系列データに対する特異値分解(実践編)~ - jiku logにならい,ハンケル行列を転置して \mathbfit{X}_k^T \in \mathbb{R}^{k \times (N-k)}を考え,これを特異値分解することを考える。


 \begin{align}
&\mathbfit{X}_k^T = \mathbfit{U} \mathbfit{\Sigma} \mathbfit{V}^T \\ \\
&\mathbfit{U} \in \mathbb{R}^{k \times k}, \; \mathbfit{\Sigma} \in \mathbb{R}^{k \times k}, \; \mathbfit{V} \in \mathbb{R}^{(N-k) \times k} \\ \\
\end{align}

SSAでは,左特異ベクトルからなる行列 \mathbfit{U}に基づき,異常診断を行なう。これは, k次元の左特異ベクトルは,窓幅 kで区切った時系列データを代表する波形を表しており,この代表的な波形パターンと診断対象のデータを比較する,という考えに基づいていると言える。

まとめと感想

今回は,「第6章 異常検知問題」における時系列データの取り扱いについてまとめた。

製造業の現場では,温度・圧力・振動などのセンサーから連続的にデータが得られるため,時系列の特徴を活かした異常検知は非常に重要だと感じた。単純に瞬間値だけを監視しても,プロセス全体の異常は見逃してしまうことが多い。特に振動や電流の波形監視では,自己相関や周期性の変化こそが異常の兆候となることが多いため,本節の内容は実務に直結する。

PCAやSSAを使って時系列を分解するアプローチは,現場データの「背後にある支配的なパターン」を抽出し,正常運転の基準を構築できる点で有用だと感じた。一方で,SSAは窓幅 kの設定や分解後の解釈が難しいため、モデルのブラックボックス化を避ける工夫(可視化や寄与率分析など)が必要だろう。

実務では,まずはPCAによる基礎的な異常検知を行ない,その後SSAのような高度な手法を導入することで,設備ごとの周期性や特徴的な波形に即した監視が実現できるのではないかと考える。


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