プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

異常検出(アノマリー検出)とは?主な用途と活用分野を解説

異常検出(Anomaly Detection)の目的は、多数のオブジェクトの中から「大多数とは明らかに異なるオブジェクト」を見つけ出すことです。異常なオブジェクトは、データの散布図上で他のデータポイントから離れた位置に現れるため、外れ値(Outlier)と呼ばれることがよくあります。

また、異常なオブジェクトは、期待される値や一般的な属性値から大きく逸脱していることから偏差検出(Deviation Detection)、例外的な存在であることから例外マイニング(Exception Mining)と呼ばれることもあります。

異常検出の主な用途

不正検出(詐欺検出)

クレジットカードの不正利用では、カードを不正に使用している人物の購買行動は、本来の所有者の行動パターンとは異なります。クレジットカード会社は、不正利用に特徴的な購買パターンを監視したり、通常の行動からの変化を検知したりすることで、不正を特定しようとします。同様の手法は、他の種類の不正行為の検出にも幅広く応用されています。

侵入検知

残念ながら、コンピュータシステムやネットワークへの攻撃は日常的に発生しています。コンピュータやネットワークを機能停止・過負荷に陥らせることを目的とした攻撃には明白なものもありますが、データを密かに収集することを目的とした攻撃には、検出が非常に困難なものも少なくありません。こうした侵入の一部は、システムやネットワークの異常な挙動を監視することで検知できます。

生態系の異変の検出

現実の世界では、人間に重大な影響を及ぼしうる自然現象が数多く存在します。ハリケーン、洪水、干ばつ、熱波、山火事などがその代表例です。異常検出の目的は、こうしたイベントが発生する可能性やその原因を予測することにあります。

公衆衛生

一部の国では、病院や診療所がさまざまな統計データを国の機関に報告し、さらなる分析が行われています。たとえば、ある都市の子どもたちがある特定の疾病(麻疹など)に対してワクチン接種を受けているにもかかわらず、複数の病院に症例が散発的に発生した場合、これは異常な事象であり、その都市のワクチン接種プログラムに問題があることを示唆している可能性があります。

医療

特定の患者において、通常とは異なる症状や検査結果は、潜在的な健康問題を示している可能性があります。ただし、ある検査結果が異常かどうかの判断は、年齢や性別など患者の複数の特性に依存します。さらに、結果を異常と判定するかどうかの判断にはトレードオフが伴います。異常と判定すれば、不要な追加検査のコストが発生し、逆に異常を見逃せば、未診断・未治療のまま患者に害が及ぶ恐れがあるからです。

データ前処理としての異常検出

近年の異常検出への関心は、異常そのものを検出対象とするソフトウェアによって牽引されてきましたが、歴史的には、異常検出は「典型的なデータオブジェクトの分析を改善するための手法」として捉えられてきました。

たとえば、ごく少数の外れ値であっても、一連の値の平均値や標準偏差を変えてしまったり、クラスタリングアルゴリズムが生成するクラスタの構成を変化させてしまったりします。このため、異常検出はデータ前処理における重要な要素とされているのです。

  1. C言語のトークンとは?種類と基本構成要素をサンプルコード付きで解説

    C言語のプログラムは命令文(ステートメント)の集まりであり、さらにその命令文一つひとつは、より小さな単位の集合によって構成されています。このように、Cプログラムを構成する個々の小さな単位のことを「トークン(token)」と呼びます。つまり、Cプログラム内のすべての命令文は、複数のトークンが集まってできているということです。トークンはCプログラムを作り上げるための材料であり、「プログラムの基本的な構成要素(ビルディングブロック)」とも表現されます。Cプログラムにおけるトークンの種類Cプログラムの中で扱われるトークンには、主に以下の7種類があります。キーワード(予約語):int、if、for、re

  2. C#のコメントとは?複数行・単一行コメントの書き方を解説

    コメントは、コードの内容や意図を説明するために記述する注釈です。コンパイラはコメント部分を完全に無視するため、プログラムの動作には一切影響しません。C#では、複数行にわたるコメントは「/*」で始まり、「*/」で終わります。 複数行コメント /* 以下はC#における 複数行コメントの例です */ 「/* ... */」で囲まれた範囲はすべてコンパイラによって無視されます。処理の概要や注意点など、複数行にわたる説明を残したい場合に使用します。 単一行コメント // 変数の宣言 int a = 10; 単一行コメントは「//」から行末までがコメントとして扱われます。変数の意味や処理の意図を手軽にメモ