19
外れ値検出のアルゴリズム(2) Isolation Forest 大澤 翔吾

外れ値検出のアルゴリズム Isolation Forest

Embed Size (px)

Citation preview

外れ値検出のアルゴリズム(2)Isolation Forest

大澤 翔吾

目次

● 外れ値検出とは

● Isolation Forestの仮定

● 分離(isolation)という概念

● 分離木(isolation tree)の構築

● 外れ値スコアの計算

外れ値検出とは

● 他と比べて「変」なデータ● 「期待されるパターン」にそぐわないデータ

を見つけ出す問題。

「変」「期待されるパターン」は適用する領域によって異なる。

外れ値検出のイメージ

0 スクロール率

滞在時間

外れ値検出のイメージ

Isolation Forestの仮定

● 正常値=”数が多くてどれも似通っている”

● 外れ値=”数が少なくて互いに異なる”

これだけ!

仮定のイメージ

図の出典:http://scikit-learn.org/stable/auto_examples/ensemble/plot_isolation_forest.html

正常値=白と緑

異常値=赤

分離(isolation)

● あるデータを、他の全てのデータから分けること

● どうやって?

1.ランダムに属性を選択する

2.選択した属性が、ランダムに選択した値より大きいか

小さいかで分割する

3.分割された2つの集合に対して1-2を再帰的に適用する

4.同じ値だけの集合に分割されたら分離完了

分離のイメージ

1. 属性をランダムに選ぶ(x軸かy軸か選ぶ)

2. その属性の最大・最小値の間のどこかの値を選ぶ

3. 軸に沿った直線で分割

分離のイメージ

1. 属性をランダムに選ぶ(x軸かy軸か選ぶ)

2. その属性の最大・最小値の間のどこかの値を選ぶ

3. 軸に沿った直線で分割

分離のイメージ

1. 属性をランダムに選ぶ(x軸かy軸か選ぶ)

2. その属性の最大・最小値の間のどこかの値を選ぶ

3. 軸に沿った直線で分割

外れ値は分離しやすい

上手く行けば二回で分離できる

ランダムにやっても、少ない回数で分離できそうだ

正常値は分離しにくい

値が密集している

他の値から切り離すのに何回も分割しなくてはいけない

ランダムにやったら、果たしてどれだけの回数が必要なのか…

分離木(isolation tree)の構築

今見せた分割をデータ構造に落とし込んだもの

x < 2

ex

true false

これ以上分割できなかったらそこで木は終わる

y < 5

分離木のノードは、属性としきい値を含む内部ノードか、分離が完了したことを示す外部ノードである

あるデータに木を辿らせたとき、異常値は深さが浅いノードに属する=分離に必要な分割数が少ない

内部ノードの属性としきい値は、どのようにデータ集合を分割したかを表している

分離木を辿る

x < 2

ex

true false

y < 5

true false

true false

ex x < -2

true false

ex ex

分離木を辿る

x < 2

ex

true false

y < 5

true false

true false

ex x < -2

true false

ex ex

(x, y) = (3, 5) の深さは1

分離木を辿る

x < 2

ex

true false

y < 5

true false

true false

ex x < -2

true false

ex ex

(x, y) = (1, 2) の深さは2

分離木を辿る

x < 2

ex

true false

y < 5

true false

true false

ex x < -2

true false

ex ex

(x, y) = (1, 6) の深さは3

外れ値スコアの計算

● たくさん分離木を作って、データが属する深さの平均を計算すれば良い

● 小さいと外れ値、大きいと正常値● でも「深さ」という値は理解しにくい。

[0, 1]の値に正規化したい。● 正規化するために色々なトリックが必要だが

今日は割愛● 詳しくは元論文を読んでネ

Liu, Fei Tony, Kai Ming Ting, and Zhi-Hua Zhou. "Isolation-based anomaly detection."ACM Transactions on Knowledge Discovery from Data (TKDD) 6.1 (2012): 3.