データサイエンスのビジネス活用が広まる中、最も活用されているものの1つが異常検知です。
異常検知とは、膨大なデータの中から通常とは異なるものを特定すること、もしくはそのプロセスです。
例えば、ECサイトをハッキングし不正な行動をする人は、通常の購入者と異なる購入パターン (購入金額や購入頻度、支払い方法、配送先住所、Cookieなど) を行う可能性があります。
例えば、機器が故障する数日前から、機器内のセンサーデータのパターンが通常と異なる状態になる可能性があります。
例えば、サブスクサービスの利用者は解約する1ヶ月前に、今までと異なる使用パターンをする可能性があります。
このような異常検知を、どのようなアルゴリズムで検出するのでしょうか。
日に数十レコードぐらいのデータ量であれば、人力でどうにかなるかもしれません。
しかしデータ量が膨大で、数百万レコード、数十億レコードと、日々発生すると、人の目で見て判断するには限界があります。
そのような場合、機械学習的なアプローチで実施するのが楽です。
異常検知のアルゴリズムには色々ありますが、昔からあり比較的簡易なアプローチに、教師あり学習による異常検知と、教師なし学習による異常検知があります。
今回は、「教師あり異常検知と教師なし異常検知」というお話しをします。
「教師あり学習」と「教師なし学習」
機械学習のお勉強をすると、教科書の最初の方に「教師あり学習」と「教師なし学習」というワードがでてきます(たぶん)。
教師あり学習とは、教師ラベル(目的変数y)が付いたデータセットを学習に利用する機械学習アプローチです。
教師あり学習
多くの場合、教師ラベル(目的変数y)に「異常」or「正常」の値が入ります。もしくは、異常を複数の複数の分類もしくはレベル分類されている場合には、その異常の種類やレベルを示す値が入ります。
このような機械学習問題を、分類問題と表現したりします。
この教師ラベル(目的変数y)をもとに、異常検知のためのモデルを構築します。
子どもたちが、正解のあるドリルを使い学習するのに似ています。
教師なし学習
一方、教師なし学習とは、教師ラベル(目的変数y)が付いていないデータセットを学習に利用する機械学習アプローチです。
要は、教師ラベル(目的変数y)が無いため、どのレコードが正常で、どのレコードが異常なのかは、あらかじめ分かりません。
この状態で異常検知のためのモデルを構築します。
教師あり異常検知
教師あり異常検知は、教師あり学習で構築した数理モデルを活用し、異常検知をするアプローチです。
学習で使うデータに教師ラベル(目的変数y)があることで、異常パターンがどのようなものなのかを知ることができます。
そのことから、新たに手にしたデータが、異常なのか正常なのかを分類することができます。
一般的には分類問題と言われ、多くの数理モデルが提案されています。
古典的には、ロジスティック回帰モデルや決定木系のモデルなどが有名です。
ただ、異常ラベルの付いたレコードと正常ラベルの付いたレコードが、バランスよく存在することは少なく、異常ラベルの付いたレコードが極端に少ないケースが多いです。
そのため、異常ラベルの付いたレコードであるデータがある程度溜まるまで、データを蓄積し続けなければ、このアプローチは使えません。
まとめると、教師あり異常検知は、異常パターンをあらかじめ知っていて、そのパターンに当てはまるかどうかを見ていく、ただしそのためにデータ量がすれなりに必要、そんな感じです。
教師なし異常検知
教師なし異常検知は、教師なし学習で構築した数理モデルを活用し、異常検知をするアプローチです。
学習で使うデータに教師ラベル(目的変数y)がないため、異常パターンがどのようなものかを、事前に知ることはできません。
しかし、ある1つのことは事前に知っています。それは、正常データと異なる、ということです。
正常データと異なるため異常データと言われているので、当たり前と言えば当たり前ですが、そのことを利用します。
そのため、手元に異常データがなくとも正常データさえあれば、異常検知をすることができ、学習データのデータ量も少なくてすみます。
ちなみに、最もシンプルな方法は、似たようなパターンを持つレコードをグルーピングするクラスター分析を活用した方法です。
クラスター分析を実施したとき、異常データは正常データと異なるグループ(クラスター)に属します。属するというか、ひとりぼっち状態に近くなります。他のクラスターから距離をとるようになります。
ここであることに気を付けなければなりません。
それは、正常データなのにひとりぼっちになることもある、ということです。
そのため、教師あり異常検知に比べ、学習データの量は少なくて済みますが、精度面で劣ります。
完全な検知はありえない
教師あり異常検知であろうが、教師なし異常検知であろうが、異常の完全な検知はありえません。
多くの場合、異常かもしれないデータを発見し、そのデータが異常かどうかは人が判断します。
要するに、異常検知は人が異常かどうかを判断する作業を、データサイエンス技術を駆使して……
- 効率的に(もしくは楽に)する
- 異常検知の精度を高める
- スピードを上げる
……といった感じです。
実際に、サイバーセキュリティ業務の中で、99%近く効率化した事例もあります。
今回のまとめ
今回は、「教師あり異常検知と教師なし異常検知」というお話しをしました。
データサイエンスのビジネス活用が広まる中、最も活用されているものの1つが異常検知です。
異常検知とは、膨大なデータの中から通常とは異なるものを特定すること、もしくはそのプロセスです。
例えば、ECサイトをハッキングし不正な行動をする人は、通常の購入者と異なる購入パターンを行う可能性があります。
例えば、機器が故障する数日前から、機器内のセンサーデータのパターンが通常と異なる状態になる可能性があります。
例えば、サブスクサービスの利用者は解約する1ヶ月前に、今までと異なる使用パターンをする可能性があります。
このような異常検知を、どのようなアルゴリズムで検出するのでしょうか。
異常検知のアルゴリズムには色々あります。
昔からあり比較的簡易なアプローチに……
- 教師あり学習による異常検知
- 教師なし学習による異常検知
……があります。
データ量が膨大で、どのデータが異常で、どのデータが正常なのかラベリングされており、そのことから異常パターンがあらかじめ知りえるのであれば、教師あり学習による異常検知です。
データ量が少なく、どのデータが異常で、どのデータが正常なのかラベリングされておらず、異常パターンが分からない場合には、教師なし学習による異常検知です。
最新の技術もいいですが、昔ながらの古典的な手法でも十分です。
教師あり学習でしたらロジスティック回帰や決定木系など、教師なし学習でしたらクラスター分析や潜在クラス分析、混合正規分布モデルなどです。