アイソレーションフォレストは、異常検出のための教師なし学習アルゴリズムであり、正常点のプロファイリングという最も一般的な手法[ 2 ]ではなく、異常を分離するという原理に基づいて動作します[ 1 ] 。
図1 - 潜在的に異常なポイントを含むウェブトラフィックの例統計学において、異常値(外れ値とも呼ばれる)とは、他の事象から大きく逸脱し、異なる平均値によって生成されたのではないかと疑われるような観測値または事象のことです。例えば、図1のグラフは、1か月間のWebサーバーへの受信トラフィックを、3時間間隔のリクエスト数として表したものです。グラフを見るだけで、いくつかの点(赤い丸で囲まれた部分)が異常に高いことがすぐにわかります。これは、その時点でWebサーバーが攻撃を受けていたのではないかと疑わせるほどです。一方、赤い矢印で示された平坦な部分も異常に見え、その期間中にサーバーがダウンしていた可能性を示唆しているかもしれません。
大規模なデータセットにおける異常は非常に複雑なパターンを示す場合があり、ほとんどの場合、目視で検出することは困難です。そのため、異常検出の分野は機械学習技術の応用に非常に適しています。
異常検出に用いられる最も一般的な手法は、「正常」のプロファイルの構築に基づいています。異常は、データセット内で正常プロファイルに適合しないインスタンスとして報告されます。[ 2 ] Isolation Forest は異なるアプローチを採用しています。正常インスタンスのモデルを構築しようとするのではなく、データセット内の異常なポイントを明示的に分離します。このアプローチの主な利点は、プロファイルベースの手法では許可されていない範囲でサンプリング技術を活用できることであり、メモリ要求の低い非常に高速なアルゴリズムを作成できます。[ 1 ] [ 3 ] [ 4 ]
歴史
Isolation Forest (iForest) アルゴリズムは、2008 年に Fei Tony Liu、Kai Ming Ting、Zhi-Hua Zhou によって最初に提案されました。[ 1 ]著者らは、サンプル内の異常データポイントの 2 つの定量的特性、すなわち次の特性を利用しました。
- 彼らは少数派であり、事例も少なく、
- それらは通常のインスタンスとは全く異なる属性値を持っている。
異常値は通常、サンプル内の他の点とは大きく異なり、数も少ないため、正常な点に比べて「分離」しやすいはずです。この原理に基づき、Isolation Forestはデータセットに対して「分離ツリー」(iTrees)の集合を構築し、iTrees上で平均パス長が短い点を異常値としてマークします。
2012年に発表された後の論文[ 2 ]では、同じ著者らがiForestを証明する一連の実験について述べている。
- 線形時間計算量が低く、メモリ要件も小さい。
- 無関係な属性を含む高次元データを処理できる
- トレーニングセットに異常値が含まれている場合でも含まれていない場合でもトレーニングできます。
- 再学習なしで、異なる粒度レベルの検出結果を提供できます。
2013年にZhiguo DingとMinrui Feiは、ストリーミングデータの異常検出の問題を解決するためにiForestに基づくフレームワークを提案した。[ 5 ] iForestのストリーミングデータへのさらなる応用については、Swee Chuan Tanら[ 4 ] 、 GA Sustoら[ 6 ]、Yu Wengら[ 7 ]の論文で説明されている。
iForest を異常検出に適用する際の主な問題の一つは、モデル自体ではなく、「異常スコア」の計算方法にありました。この問題は、Sahand Hariri、Matias Carrasco Kind、Robert J. Brunner が 2018 年の論文[ 8 ]で指摘し、 Extended Isolation Forest (EIF)という改良された iForest モデルを提案しました。同じ論文の中で、著者らは元のモデルに加えられた改良点と、特定のデータポイントに対して生成される異常スコアの一貫性と信頼性をどのように向上させるかについて説明しています。
アルゴリズム
図2 - 2次元ガウス分布における非異常点の分離例アイソレーションフォレストアルゴリズムの基本原理は、データセット内の異常なインスタンスは、正常なインスタンスに比べて、サンプルの残りの部分から分離(隔離)しやすいという性質に基づいています。データポイントを隔離するために、このアルゴリズムは、属性をランダムに選択し、その属性に対して許容される最小値と最大値の間で分割値をランダムに選択することによって、サンプル上に再帰的にパーティションを生成します。
図3 - 2次元ガウス分布における異常点の分離例正規分布する点の2次元データセットにおけるランダム分割の例を、図2に異常でない点について、図3に異常である可能性が高い点について示します。これらの図から、異常点は正常点に比べて、分離に必要なランダム分割の回数が少ないことがわかります。
数学的な観点から見ると、再帰的分割は分離木と呼ばれる木構造で表すことができ、点を分離するために必要な分割数は、木構造内で根から終点ノードに到達するまでのパスの長さとして解釈できます。例えば、図2の点x iのパスの長さは、図3の点x jのパスの長さよりも長くなります。
より厳密に言うと、X = { x 1 , ..., x n } を d 次元点の集合とし、X' ⊂ X を X の部分集合とする。分離木 (iTree) は、以下の特性を持つデータ構造として定義される。
- ツリー内の各ノード T について、T は子を持たない外部ノードか、1 つの「テスト」とちょうど 2 つの娘ノード (T l、 T r )を持つ内部ノードのいずれかです。
- ノード T でのテストは、属性 q と分割値 p から構成され、テスト q < p によってデータ ポイントが T lまたは T rのどちらに移動するかが決定されます。
iTreeを構築するために、アルゴリズムは、(i)ノードにインスタンスが1つだけになるか、(ii)ノードのすべてのデータが同じ値になるまで、属性qと分割値pをランダムに選択してX'を再帰的に分割します。
iTreeが完全に成長すると、X内の各点は外部ノードのいずれかに分離されます。直感的に、異常な点は、ツリー内のパス長が短い点(したがって分離しやすい点)であり、点のパス長h(x i )は
は、ルートノードから外部ノードに到達するためにx iがたどるエッジの数として定義されます。
iTreeの確率論的な説明は、iForestのオリジナル論文に記載されています。[ 1 ]
隔離林の特性
- サブサンプリング:iForestはすべての正常インスタンスを分離する必要がないため、トレーニングサンプルの大部分を無視することができます。その結果、iForestはサンプリングサイズを小さく保つと非常にうまく機能します。これは、通常大きなサンプリングサイズが望ましい既存の方法の大部分とは対照的な特性です。[ 1 ] [ 2 ]
- スワンピング:正常インスタンスが異常に近すぎると、異常を分離するために必要なパーティションの数が増加します。これはスワンピングと呼ばれる現象で、iForest が異常と正常ポイントを区別するのが難しくなります。スワンピングの主な原因の 1 つは、異常検出の目的に対してデータが多すぎることです。これは、この問題の解決策の 1 つはサブサンプリングであることを意味します。iForest はパフォーマンスの面でサブサンプリングに非常によく反応するため、サンプルのポイント数を減らすことは、スワンピングの影響を軽減する良い方法でもあります。[ 1 ]
- マスキング:異常の数が多い場合、それらのいくつかが密集して大きなクラスターに集まる可能性があり、個々の異常を分離することがより困難になり、結果としてそのような点を異常として検出することがより困難になります。スワンピングと同様に、この現象(「マスキング」として知られています)もサンプル内の点の数が多い場合に発生しやすく、サブサンプリングによって軽減できます。[ 1 ]
- 高次元データ: 標準的な距離ベースの手法の主な制限の 1 つは、高次元データセットの処理が非効率的であることです。[ 9 ]その主な理由は、高次元空間ではすべての点が等しく疎であるため、距離ベースの分離尺度を使用してもあまり効果的ではないからです。残念ながら、高次元データは iForest の検出パフォーマンスにも影響しますが、サンプル空間の次元を削減するために尖度などの特徴選択テストを追加することでパフォーマンスを大幅に向上させることができます。[ 1 ] [ 3 ]
- 正常インスタンスのみ: iForest は、トレーニング セットに異常点が含まれていない場合でも良好なパフォーマンスを発揮します。[ 3 ]その理由は、iForest がパス長 h(x i ) の値が大きいほどデータ ポイントが存在することを示すようにデータ分布を記述しているためです。結果として、異常の存在は iForest の検出パフォーマンスにはほとんど関係ありません。
分離フォレストによる異常検知
Isolation Forest を使用した異常検出は、主に 2 つの段階から構成されるプロセスです。[ 3 ]
- 最初の段階では、前のセクションで説明したように、トレーニングデータセットを使用してiTreeを構築します。
- 第2段階では、テストセット内の各インスタンスが前の段階で構築されたiTreesを通過し、以下に説明するアルゴリズムを使用してインスタンスに適切な「異常スコア」が割り当てられます。
テストセット内のすべてのインスタンスに異常スコアが割り当てられると、分析が適用されるドメインに応じて事前に定義された閾値よりもスコアが大きいポイントを「異常」としてマークすることが可能になります。
異常スコア
データポイントの異常スコアを計算するアルゴリズムは、iTree の構造が二分探索木(BST) の構造と同等であるという観察に基づいています。iTree の外部ノードへの終了は、BST での探索の失敗に対応します。[ 3 ]その結果、外部ノード終了の平均 h(x) の推定は、BST での探索の失敗と同じであり、つまり[ 10 ]となります。

ここで、mはテストデータのサイズ、mはサンプルセットのサイズ、Hは調和数であり、これは次のように推定できます。
、 どこ
はオイラー・マスケローニ定数 です。
上記のc(m)の値は、mが与えられたときのh(x)の平均を表しているため、これを使用してh(x)を正規化し、特定のインスタンスxに対する異常スコアの推定値を取得できます。

ここで、E(h(x))はiTreeの集合からのh(x)の平均値です。任意のインスタンスxに対して、次のことが興味深い点です。
- sが1に近い場合、xは異常値である可能性が非常に高い。
- sが0.5より小さい場合、xは正常値である可能性が高い。
- あるサンプルにおいて、すべてのインスタンスに約0.5の異常スコアが割り当てられている場合、そのサンプルには異常がないと仮定しても差し支えない。
拡張された隔離の森
前述のセクションで説明したように、Isolation Forest アルゴリズムは、計算とメモリ消費の両方の観点から非常に優れたパフォーマンスを発揮します。元のアルゴリズムの主な問題点は、ツリーの分岐方法にバイアスが生じ、データのランキングのための異常スコアの信頼性が低下する可能性があることです。これが、Hariri ら[ 8 ]によるExtended Isolation Forest (EIF) アルゴリズムの導入の主な動機です。
図4 - 平均値がゼロで共分散行列が1である2次元正規分布点オリジナルのIsolation Forestがなぜそのようなバイアスを受けるのかを理解するために、著者らは、平均がゼロで共分散が単位行列で与えられる2次元正規分布から抽出したランダムデータセットに基づく実例を示している。そのようなデータセットの例を図4に示す。
図を見れば、(0, 0) に近い点は正常点である可能性が高く、(0, 0) から遠く離れた点は異常点である可能性が高いことが容易に理解できます。したがって、点が分布の「中心」から放射状に外側へ移動するにつれて、点の異常スコアはほぼ円形かつ対称的なパターンで増加するはずです。しかし、著者らが Isolation Forest アルゴリズムによって生成された分布の異常スコア マップを生成することで示すように、実際にはそうではありません。点が放射状に外側へ移動するにつれて異常スコアは正しく増加しますが、中心からほぼ同じ放射距離にある他の点と比較して、x 方向と y 方向に異常スコアが低い長方形の領域も生成されます。
図5 - EIFを用いたランダム分割異常スコアマップに現れるこれらの予期せぬ長方形領域は、実際にはアルゴリズムによって導入されたアーティファクトであり、主にアイソレーションフォレストの決定境界が垂直または水平のいずれかに限定されていることに起因することが証明できる(図2および図3を参照)。[ 8 ]
これが、Haririらが論文で、元のIsolation Forestを次のように改良することを提案している理由です。データの範囲内でランダムな特徴と値を選択するのではなく、ランダムな「傾き」を持つ分岐カットを選択します。EIFによるランダム分割の例を図5に示します。
著者らは、この新しいアプローチがどのようにして従来のアイソレーションフォレストの限界を克服し、最終的に異常スコアマップの改善につながるかを示している。
オープンソース実装
- Spark iForest - Apache Spark上で動作する、ScalaとPythonによる分散実装。Yang , Fangzhou著。
- Isolation Forest - LinkedInの不正対策AIチームのJames Verbus氏が作成した、Spark/Scalaによる実装。
- EIF – 異常検知のための拡張隔離森林の実装(Sahand Hariri著)
- scikit-learnのサンプルを含むPython 実装。
参考文献
- 1 2 3 4 5 6 7 8 Fei, Toni Liu; Ting, Kai Ming; Zhou, Zhi-Hua (2008年12月). "Isolation Forest". 2008年第8回IEEE国際データマイニング会議: 413–422 . Bibcode : 2008icdm.conf...58L . doi : 10.1109/ICDM.2008.17 . ISBN 978-0-7695-3502-9。
- 1 2 3 4 Chandola, Varun; Banerjee, Arindam; Kumar, Kumar (2009年7月). "異常検出: 概説" . ACM Computing Surveys . 41 . doi : 10.1145/1541880.1541882 .
- 1 2 3 4 5 Fei, Toni Liu; Ting, Kai Ming; Zhou, Zhi-Hua (2008 年 12 月). "隔離に基づく異常検出" . ACM Transactions on Knowledge Discovery from Data . 6 : 1– 39.
- 1 2 Chuan Tan, Swee; Ming Ting, Kai; Fei Liu, Tony (2011年7月16日). 「ストリーミングデータの高速異常検出」 . 2011年7月. 2 : 1511–1516 . ISBN 978-1-57735-514-4。
- ↑ Ding, Zhiguo; Fei, Minrui (2013 年 9 月). "スライディング ウィンドウを使用したストリーミング データに対するアイソレーション フォレスト アルゴリズムに基づく異常検出アプローチ" . IFAC Proceedings Volumes . 46 (20): 12– 17. doi : 10.3182/20130902-3-CN-3020.00044 .
- ↑ Susto, Gian Antonio; Beghi, Alessandro; McLoone, Seán (2017年5月) 「オンライン隔離フォレストによる異常検出:プラズマエッチングへの応用」2017年第28回SEMI先端半導体製造会議(ASMC): 89–94。Bibcode : 2017asmc.conf ... 23S。doi:10.1109 /ASMC.2017.7969205。ISBN 978-1-5090-5448-0。
- ↑ Weng, Yu; Liu, Lei (2019年4月15日). "モバイルサービスセキュリティにおける多次元ストリームのための集団的異常検出アプローチ" . IEEE Access . 7 : 49157–49168 . Bibcode : 2019IEEEA...749157W . doi : 10.1109/ACCESS.2019.2909750 .
- 1 2 3 Hariri, Sahand; Carrasco Kind, Matias; Brunner, Robert J. (2013 年 9 月 2 日). "Extended Isolation Forest". IEEE Transactions on Knowledge and Data Engineering . 33 (4): 1479–1489 . arXiv : 1811.02141 . doi : 10.1109 /TKDE.2019.2947676 .
- ↑ Dilini Talagala, Priyanga; Hyndman, Rob J.; Smith-Miles, Kate (2019年8月12日). "高次元データにおける異常検出". arXiv : 1908.04000 [ stat.ML ].
- ↑シャファー、クリフォード A. (2011). Java によるデータ構造とアルゴリズム解析(第 3 版)。ミネオラ、ニューヨーク: ドーバー出版。ISBN 9780486485812. OCLC 721884651 .