外れ値検出のための混合モデルの尤度

シニアデータサイエンティストのウィリアム・カウリーが、"外れ値"の存在に対して頑健なモデル化手法にどのように適応できるかを説明します。

Date:

Date:

2022年7月5日

2022年7月5日

Author:

Author:

ウィリアム・コウリー

ウィリアム・コウリー

Secondmind におけるデータサイエンスは、実世界のデータと問題、そして私たちの研究者やエンジニアによる最先端の研究開発作業の交差点にあります。

しかし、実世界と R&D の世界を結びつけることは容易ではありません。

このブログ投稿では、いくつかのモデル技術を適応させ、"外れ値"の存在に対して堅牢にする方法を考えます。

外れ値とは何ですか?

あらゆる物理的プロセスを測定する際には、外れ値に出くわす可能性があります。

広く言えば、外れ値とは、私たちがモデル化に関心を持っているプロセスによって生成されないデータのことです。外れ値は、測定に使用される装置が一時的な故障に悩まされていたり、データの転送または書き込みプロセスが人的エラーにより壊れてしまったりすることで生成されることがあります。このため、外れ値(私たちが興味のないもの)を定義するためには、まず私たちが興味を持っているものを定義する必要があり、それはモデルを用いて行います。

以下のデータを考えてみましょう。



これは、顧客が私たちに送信した電動モーターからの一連の測定値を表しており、モーターの出力は印加された電流を変化させると測定されます。測定値 200 周辺の電力スパイクや、400~600 測定の間の3つの急激な電流の低下、900 に回りの電流スパイクなど、場違いに見える測定値がいくつかあります。

一般的に、私たちはモーターの応答を電流などの入力に対して高度に正確な予測モデルを構築したいと考えています。これらのモデルは、私たちのアクティブ ラーニング プラットフォームの要素をテストするために、電動モーター(または内燃機関)をシミュレートするために使用される場合があります。あるいは、モデルはプラットフォーム自体内でアクティブ ラーニング ループにデプロイされることもできます。このため、受け取ったデータ内の一時的な電流スパイクや検出器ノイズを考慮することが重要です。なぜなら、これらの特徴(いわゆる "外れ値")は、問題となるモーター/エンジンの真の挙動とは関係ないからです。これらの問題は、エンジンの "ノイズ" 自体とは異なると考えます。たとえば、電流が低いときに出力パワーがより変化するように見えることに注意してください。この種のデータの変動は、モーター/エンジン内で発生する複雑な物理的及び化学的プロセスの真の確率性に起因する可能性が高く、この現象は正しくモデル化したいと考えています。

電流を関数としてパワー出力を予測できるモデルを構築したいと考えています。以下の図でこのデータを少し異なる視点で視覚化しましょう。電流を x 軸に、パワーを y 軸に配置します。



データのほとんどは、あるノイズのある中央プロセスから生成されていることがわかります。上記で見たように、ノイズは x 依存性があるように見えます(データの分散は x=0 のときの方が x=1 よりも大きく見える)。したがって、外れ値のあるチェーン ガウス プロセス (HetGP e.g. Saul ら 2016) によってモーター応答をモデル化するのが適切かもしれません。HetGP は、スケーラブルな方法で外れ値をモデル化できる、ガウス プロセス フレームワークの新しいかつ非常に強力な拡張です。これにより、私たちのモーターデータに見られる外れ値の挙動を正確に捉えることができます。

最初の図で特定した 'スパイク' も明確に見えており、矢印で示されています。前述のように、これらのポイントをモデルが実際に考慮することは望ましくないと考えています。なぜなら、これらはデータの大部分を生成する真のエンジンの挙動を表すものではないと考えるからです。

では、これらのポイントに対して私たちは何をすべきでしょうか?

もちろん、これらを除去するためにいくつかのヒューリスティックを開発し、データがトレーニングのためにモデルに渡される前にこれらのヒューリスティックを適用することもできます。しかし、そのようなヒューリスティックは、適切に定義するのに時間がかかり、しばしば他のモデル問題やデータセットに適応しにくいため、非常に柔軟性がありません。代わりに、別のアプローチを採用します。データはそのままで、代わりに私たちの外れ値を含んだガウスプロセス モデル化の仮定を考えましょう。

モデルの仮定

私たちは、データがガウス分布から抽出されると仮定します。すなわち、

Y∣x∽N(f,exp(g)2)      (1)Y∣x∽N(f,exp(g)2)(1)

ここで fg は潜在のガウス プロセスであり、明瞭さのためにこれらの x 依存性を除いています。exp 変換は分散の正の値を確保します。この量が、モデルの「尤度」P(Y|x) を記述するために必要なもので、これはモデルのトレーニング中に最大化しようとしているものです。このようなモデルがデータに対してどのように機能するか見てみましょう。



一般的に、モデルが生成プロセスの平均関数を適切に捉えていることが確認できますが、外れ値の存在によりノイズ推定は明らかに影響を受けています。これはモデルにおける具体的な問題ではなく、データをできる限り説明しようとしており、外れ値により x∼0.4 での分散が大きくなります。学習した分散は、私たちが関心をもっている数量ではないのです。さあ、私たちのモデルの仮定を再考してみましょう。

堅牢な尤度

私たちは、データが外れ値のあるガウスプロセスに生成されていると仮定したと述べました。これを再訪し、x∼0.4での候補の外れ値の影響を考慮します。

これらの潜在的な外れ値は、明らかに中央のデータとは同じプロセスから生成されたものではありません。したがって、これを考慮するために尤度を適応させる必要があります。適応した尤度を混合分布として記述でき、すなわち私たちが興味を持っている分布 N(f,exp⁡(g)2) と他の分布との加重和であることを示すことができます。他の分布のパラメータ化がどのように行われるかはさほど重要ではなく(結局、それはあまり気にしていないのです)、遭遇する可能性のあるデータを包み込むのに十分に広範囲である限りは問題ありません。ここでは、ガウス分布 N(0,100) を使用しています。

したがって、私たちのモデルの仮定を次のように書き換えることができます。

Y∣x∼(1−woutlier)×N(f,exp⁡(g)2)+woutlier×N(0,100)      (2)Y∣x∼(1−woutlier​)×N(f,exp(g)2)+woutlier​×N(0,100)(2)

ここで Woutlier∈[0,1] は、混合分布中の外れ値コンポーネントの相対的な重みを記述する単一のグローバルパラメータ(x 依存性を持たない)です。一般的に、このパラメータの値はわからないため、モデルの最適化中にデータから学習されます。私たちのモデルには、この混合尤度を持つ名前を「RobustHetGP」と呼びます。なぜなら、今や外れ値の存在に対して「堅牢」だからです。

それでは、こうしたモデルの予測をデータと比較しましょう。



このモデルは、中心データに対してはるかに良いフィットをもたらし、x∼0.4 での潜在的な外れ値を効果的に無視しました。これは素晴らしく、私たちはこれがエンジンの真の電流に対する応答をより正確に表していると信じています。

外れ値検出

各データポイントに対して、モデルがそのデータポイントが外れ値分布から抽出された可能性がどれくらいあるかを尋ねることもできます。この値 poutlier は、潜在の関数(fg は、ガウスプロセスフレームワーク内の関数の分布を記述します)を統合し、堅牢モデル尤度のコンポーネント上で計算されます。すなわち、

poutlier(Y,x)=1−(1−woutlier)×∫f∫gPgood(Y∣f,g)/Pmix(Y∣f,g) df dg,      (3)poutlier​(Y,x)=1−(1−woutlier​)×∫f​∫g​Pgood​(Y∣f,g)/Pmix​(Y∣f,g)dfdg,(3)

ここで PgoodPmix は、それぞれ式 1 および 2 で説明された生成分布に関してデータ Y を観測する確率を示しています。通常、この積分には解析的解がありませんが、それを解決するために数値的手法を採用できます。私たちはデータセット内の各ポイントについて poutlier を計算します。以下の図の色のスケールによって示されるように、poutlier>0.5 のポイントは赤で囲まれます。



モデルは、5 つの外れ値ポイント (データの 0.5%) を正しく特定します。モデルは Woutlier=0.00455 を学習し、これは真の値に非常に近いです。

したがって、モデルの仮定への比較的軽微な調整が、外れ値を堅牢に扱うための能力をモデルに与え、電流に対する真のエンジン応答を正確にモデル化できるようになりました。

モデルの不適合

上記の混合尤度の別の使用例は、モデルの不適合のインスタンスを警告することです。言い換えれば、私たちのモデルの仮定が瑕疵がある場合に警告します。

以下は新しい合成データです。これには以前と同じ "外れ値" と x 値がありますが、生成分布(つまり、モーター/エンジン)は異なります。中央プロセスがより集中しているが、y 値が大きいほど重い尾があります。注意すべきは、各 x に対して以前の例と同じ平均と分散を持っています。



それでは、このデータに堅牢モデルをフィッティングしてみましょう。



明らかに、モデルはデータ内に多くの外れ値があることを判断しました。実際、woutlier は今や ∼0.043 の値を持ち、以前のデータの 10 倍大きい!外れ値の汚染割合が 4-5% であることは大したことに見えないかもしれませんが、サブパーセントレベルであることを期待している場合は懸念の余地があります。

実際、woutlier の値が大きいと、モデル尤度内の N(f,exp⁡(g)2) 項のガウスに関する仮定がこのデータに対して貧弱な仮定である可能性があり、モデル内で他の説明方法を調査する必要があることを示しています。

要約

この技術的なブログ投稿では、モデルへの比較的簡単な変更が、外れ値の存在に対して堅牢にする方法を示しました。これは、実際の自動車データに一般的な現象です。これにより、各データポイントが有効であるかどうかを推論でき、全体として、データのどの割合が私たちの仮定モデルによって良好に説明できるかを判断できます。ガウスプロセスによって提供される原則的なモデリング フレームワーク内でこれを行うことで、私たちが調査する各データセットに対してクリーンアップのためのヒューリスティックを開発する非常に時間のかかる手続きを省くことができます。これにより、クライアントとの作業の早い段階で、そのデータに関するより意味のある、洞察に満ちた会話ができるようになり、最終的にはより正確なエンジン校正モデルをより短時間で構築することができます。

Share