密度比推定に基づく異常検知

AI導入を考えているお客様のニーズの代表例の一つとして「異常検知」があります。例えば、大量のデータを持っているが、それらがラベル付けされていない上に、実際に起こる頻度が少ない「異常」をどうやって検知すれば良いかという問題です。癌などの病気もそうですが、そもそも病気になる確率が0.001%にも満たない場合、病気を持っていると知っている症例のデータがものすごく少ないため、教師あり学習では汎用性が高いモデルを作ることが困難であるという問題です。

弊社の技術顧問である杉山将先生は、数年前にこの問題に対して効果的な解決策を提案しています。それが、密度比推定に基づく異常検知です。この方法では、正常データの確率密度を取り、テストデータの確率密度で割ることによって、その密度比を正常度とします。この密度比は正常値に対しては1に近い値を出力し、異常データに対しては1から大きく離れた値を出力するという特徴を持ち、そうした値がある場合はテスト標本に異常値が入っていることになります。

 出展:杉山 将 「密度比推定によるビッグデータ解析」

出展:杉山 将 「密度比推定によるビッグデータ解析」

この手法のすごい所は、学習標本とテスト標本の確率分布を個別に計算せず、一発で密度比の推定を行える所にあります。また、実用面では以下のような利点があります。

  • 異常データを大量に収集する必要がない:異常データを学習データセットとして集める必要が無くなります
  • ラベル付け不要:正常だと分かっている標本さえあれば学習データセットに「正常」「異常」などのラベルを付ける必要が無くなります
  • 異常データがあれば、密度比に顕著に現れます

ただし、留意すべき点として、この方法からは「どのデータポイントが異常であるか」という異常値の特定まではできないということと、標本自体が高次元である場合、次元の呪いの問題があるため次元削減処理を行わなければならないことなどが挙げられます。また、密度比にどういう値がある場合は異常値があるとみなすかというスレッシュホールドを自分で決めなければなりません。実験を繰り返すことによってしか、良い値を設定することはできません。