第332話|教師あり異常検知と教師なし異常検知

第332話|教師あり異常検知と教師なし異常検知

データサイエンスのビジネス活用が広まる中、最も活用されているものの1つが異常検知です。

異常検知とは、膨大なデータの中から通常とは異なるものを特定すること、もしくはそのプロセスです。

例えば、ECサイトをハッキングし不正な行動をする人は、通常の購入者と異なる購入パターン (購入金額や購入頻度、支払い方法、配送先住所、Cookieなど) を行う可能性があります。

例えば、機器が故障する数日前から、機器内のセンサーデータのパターンが通常と異なる状態になる可能性があります。

例えば、サブスクサービスの利用者は解約する1ヶ月前に、今までと異なる使用パターンをする可能性があります。

このような異常検知を、どのようなアルゴリズムで検出するのでしょうか。

日に数十レコードぐらいのデータ量であれば、人力でどうにかなるかもしれません。

しかしデータ量が膨大で、数百万レコード、数十億レコードと、日々発生すると、人の目で見て判断するには限界があります。

そのような場合、機械学習的なアプローチで実施するのがです。

異常検知のアルゴリズムには色々ありますが、昔からあり比較的簡易なアプローチに、教師あり学習による異常検知と、教師なし学習による異常検知があります。

今回は、「教師あり異常検知と教師なし異常検知」というお話しをします。

「教師あり学習」と「教師なし学習」

機械学習のお勉強をすると、教科書の最初の方に「教師あり学習」と「教師なし学習」というワードがでてきます(たぶん)。

教師あり学習とは、教師ラベル(目的変数y)が付いたデータセットを学習に利用する機械学習アプローチです。

 教師あり学習

多くの場合、教師ラベル(目的変数y)に「異常」or「正常」の値が入ります。もしくは、異常を複数の複数の分類もしくはレベル分類されている場合には、その異常の種類やレベルを示す値が入ります。

このような機械学習問題を、分類問題と表現したりします。

この教師ラベル(目的変数y)をもとに、異常検知のためのモデルを構築します。

子どもたちが、正解のあるドリルを使い学習するのに似ています。

 教師なし学習

一方、教師なし学習とは、教師ラベル(目的変数y)が付いていないデータセットを学習に利用する機械学習アプローチです。

要は、教師ラベル(目的変数y)が無いため、どのレコードが正常で、どのレコードが異常なのかは、あらかじめ分かりません。

この状態で異常検知のためのモデルを構築します。

教師あり異常検知

教師あり異常検知は、教師あり学習で構築した数理モデルを活用し、異常検知をするアプローチです。

学習で使うデータに教師ラベル(目的変数y)があることで、異常パターンがどのようなものなのかを知ることができます。

そのことから、新たに手にしたデータが、異常なのか正常なのかを分類することができます。

一般的には分類問題と言われ、多くの数理モデルが提案されています。

古典的には、ロジスティック回帰モデルや決定木系のモデルなどが有名です。

ただ、異常ラベルの付いたレコード正常ラベルの付いたレコードが、バランスよく存在することは少なく、異常ラベルの付いたレコードが極端に少ないケースが多いです。

そのため、異常ラベルの付いたレコードであるデータがある程度溜まるまで、データを蓄積し続けなければ、このアプローチは使えません

まとめると、教師あり異常検知は、異常パターンをあらかじめ知っていて、そのパターンに当てはまるかどうかを見ていく、ただしそのためにデータ量がすれなりに必要、そんな感じです。

教師なし異常検知

教師なし異常検知は、教師なし学習で構築した数理モデルを活用し、異常検知をするアプローチです。

学習で使うデータに教師ラベル(目的変数y)がないため、異常パターンがどのようなものかを、事前に知ることはできません

しかし、ある1つのことは事前に知っています。それは、正常データと異なる、ということです。

正常データと異なるため異常データと言われているので、当たり前と言えば当たり前ですが、そのことを利用します。

そのため、手元に異常データがなくとも正常データさえあれば、異常検知をすることができ、学習データのデータ量も少なくてすみます

ちなみに、最もシンプルな方法は、似たようなパターンを持つレコードをグルーピングするクラスター分析を活用した方法です。

クラスター分析を実施したとき、異常データは正常データと異なるグループ(クラスター)に属します。属するというか、ひとりぼっち状態に近くなります。他のクラスターから距離をとるようになります。

ここであることに気を付けなければなりません。

それは、正常データなのにひとりぼっちになることもある、ということです。

そのため、教師あり異常検知に比べ、学習データの量は少なくて済みますが、精度面で劣ります

完全な検知はありえない

教師あり異常検知であろうが、教師なし異常検知であろうが、異常の完全な検知はありえません。

多くの場合、異常かもしれないデータを発見し、そのデータが異常かどうかは人が判断します。

要するに、異常検知は人が異常かどうかを判断する作業を、データサイエンス技術を駆使して……

  • 効率的に(もしくは楽に)する
  • 異常検知の精度を高める
  • スピードを上げる

……といった感じです。

実際に、サイバーセキュリティ業務の中で、99%近く効率化した事例もあります。

今回のまとめ

今回は、「教師あり異常検知と教師なし異常検知」というお話しをしました。

データサイエンスのビジネス活用が広まる中、最も活用されているものの1つが異常検知です。

異常検知とは、膨大なデータの中から通常とは異なるものを特定すること、もしくはそのプロセスです。

例えば、ECサイトをハッキングし不正な行動をする人は、通常の購入者と異なる購入パターンを行う可能性があります。

例えば、機器が故障する数日前から、機器内のセンサーデータのパターンが通常と異なる状態になる可能性があります。

例えば、サブスクサービスの利用者は解約する1ヶ月前に、今までと異なる使用パターンをする可能性があります。

このような異常検知を、どのようなアルゴリズムで検出するのでしょうか。

異常検知のアルゴリズムには色々あります。

昔からあり比較的簡易なアプローチに……

  • 教師あり学習による異常検知
  • 教師なし学習による異常検知

……があります。

データ量が膨大で、どのデータが異常で、どのデータが正常なのかラベリングされており、そのことから異常パターンがあらかじめ知りえるのであれば、教師あり学習による異常検知です。

データ量が少なく、どのデータが異常で、どのデータが正常なのかラベリングされておらず、異常パターンが分からない場合には、教師なし学習による異常検知です。

最新の技術もいいですが、昔ながらの古典的な手法でも十分です。

教師あり学習でしたらロジスティック回帰や決定木系など、教師なし学習でしたらクラスター分析や潜在クラス分析、混合正規分布モデルなどです。