こんにちは、ブレインズテクノロジーの原です。本日は、機械学習を用いた「異常検知」の基本的な考え方と、良く用いる学習手法を3パターンに分けてご紹介します。また、特に問題になる「過検出」をどのように抑制すればいいのかについても解説します。
そもそも異常検知ってどう考えて、どう取り組めばいいの?
異常検知とは、(当たり前かもしれませんが)通常ではないデータパターンを識別することを言います。特に、様々な因子が絡む複雑な状況下で異常検知をしたい場合(例:クレジットカードの不正利用、外観検査など)には、ルールベースの判断が難しいこともあり、機械学習を用いることが主流となっています。
さて機械学習と言うと、「異常データがたくさん必要なんだろうな。そんなデータあまり持ってないよ。」と思われる方も多いと思います。実際、異常は頻繁に起きるものではないため、収集できる異常データの数は必然的に少なくなります。また全ての発生パターンを網羅する異常データを収集することは通常困難です。
良品学習とはどういうものなの?
では異常データが少ない場合には、異常検知はできないのでしょうか?そんなことはありません。そこで活用されるのが、「良品学習」です。良品学習とは、正常データは容易に収集できることに着目し、それらを使って(逆に言えば異常データは使わずに)モデルを作ることを言います。
正常な状態とはどういうものかを覚え込ませることで、いつもと違うものを検出しますので、未知の異常が起きた場合でも異常と判定することができます。極端に言えば、異常データが一切手に入らない場合においても、異常検知モデルを学習することができます。
全部、良品学習で良いの?
では、全ての異常検知問題について、良品学習だけで対応できるのでしょうか。いいえ、もちろん問題があります。良品学習で異常と判定されたものの中には、一般に、本当の異常(見つけたいもの)と、偽の異常(見つけたくないもの)が含まれてしまうためです。後者の偽の異常は「過検出」とも呼ばれます。
良品学習では、いつもと違うものを異常と判断するわけですが、いつもと違ったからと言って、必ずしも廃棄すべき不良品であるとは限らない事が、この問題の本質です。このような場合には、良品学習による判定を行ったあとに、更に本物の異常と偽物の異常を分別する、という2段構えを取ることが多いです。このような行為を、品質管理では「異常データを層別する」などと言います。
異常検知モデルの学習方法3パターン
さて、上述した内容について、機械学習の用語を用いて再整理すると次のようになります。
- 教師あり学習
教師あり学習は正常データと異常データの両方を用いて、モデルを学習する手法です。既知の異常に対しては有効な手法で、高い精度での検知が期待できますが、十分な異常データを用意する必要があります。また、未知の異常に対してはどのような判定になるか分からず、異常を見逃してしまう恐れがあります。 - 教師なし学習
教師なし学習は正常データのみを用いてモデルを学習する手法です。良品学習は教師なし学習に該当します。正常データのみで学習を行うため、異常データを必要としません。未知の異常が発生した際にも異常と判定することができます。ただし、正常と判定すべきデータを異常と判定してしまう、過検出が発生する場合があります。 - ハイブリッド(教師なし学習+層別)
正常データと既知の異常データの両方を用いて、2段階で異常検知を行う手法です。まず、正常データのみを使ってモデルを作成し、異常検知を行います(ここまでは教師なし学習と同じ)。その後、異常と判定されたデータについて、予め学習しておいた分類器を用いて、本当の異常かそうでない(過検出)かを分類します(繰り返しになりますが、これを「層別」と呼称します)。このように、教師なし分類器と層別を行う分類器を2段階で組み合わせることで、良品学習を行いつつ過検出を抑制するという、教師あり学習と教師なし学習の両方のメリットを生かした異常検知ができます。
まとめ
本記事では、機械学習を用いた異常検知の代表的な3つのパターンと過検出を抑制する手法について紹介しました。お手持ちの課題に対して、どのように異常検知モデルを学習すれば良いか、お悩みの方はぜひ一度ご相談ください。
[1]Chandola, Varun; Banerjee, A.; Kumar, V. (2009). “Anomaly detection: A survey”. ACM Computing Surveys 41