jubaanomalyについて

17
Jubaanomalyについて Jubatusの異常検知機能のご紹介 湯原基貴 Copyright©2016 NTT corp. All Rights Reserved.

Upload: jubatusofficial

Post on 13-Jan-2017

5.616 views

Category:

Engineering


3 download

TRANSCRIPT

Page 1: Jubaanomalyについて

Jubaanomalyについて Jubatusの異常検知機能のご紹介

湯原基貴

Copyright©2016 NTT corp. All Rights Reserved.

Page 2: Jubaanomalyについて

アジェンダ

• Jubatusにおける異常検知とは

• 密度により異常度の算出

• LOFアルゴリズム

• Jubaanomalyを使ってみる

• おわりに

Copyright©2016 NTT corp. All Rights Reserved.

Page 3: Jubaanomalyについて

Jubatusにおける異常検知とは

• Jubatusでは入力されたデータから特徴を抜き出しキーとバリューから構成される特徴ベクトルという形で保持する • 特徴抽出処理(詳細は省略)

• データは特徴ベクトルで表現された空間(特徴空間)上の点と見なすことができる

世の中ではビッグデータというキーワードが注目されていますが、一口にビッグデータといっても立場や観点によって定義は様々です

ビッグデータ 2

世の中 1

キーワード 1

中心が茶 1

花びらの割合 0.7

高さ 150

特徴空間 特徴ベクトル データ

Copyright©2016 NTT corp. All Rights Reserved.

Page 4: Jubaanomalyについて

Jubatusにおける異常検知とは

• 特徴空間上での近傍データの関係による異常検知 • 学習モデルに登録されたデータ群に対して、他から孤立したデータ(外れ値)を異

常として検出する

• 分析対象のデータの外れ具合を異常度として数値化する

• これがJubatusにおける異常検知(Jubaanomaly)

特徴空間

異常度高

異常度高

異常度低

2次元の特徴ベクトルをもつデータの例 Copyright©2016 NTT corp. All Rights Reserved.

Page 5: Jubaanomalyについて

Jubatusの異常検出の特徴

• 分析対象のデータに対する異常度を、その近傍データ群との密度の違いを用いて算出する

• 下図ではデータA,Bは近傍との距離は同程度だが、近傍データ群の密度の違いにより異常度は以下のようになる • 点A → 低い異常度(周辺のデータ群の密度が低く、溶け込んでいる)

• 点B → 高い異常度(周辺のデータ群の密度が高く外れている)

A

B

特徴空間

2次元の特徴ベクトルをもつデータの例 Copyright©2016 NTT corp. All Rights Reserved.

Page 6: Jubaanomalyについて

密度による異常度の算出(1/2)

• あるデータ点Xに対する密度を「データ点Xとその近傍K点間の距離の平均の逆数」と定義

• 1)データ点Xとその近傍K点間の距離の平均 𝐷𝑖𝑠𝑡𝑎𝑣𝑔(𝑋) = 𝑋−𝑥𝑖𝐾𝑖=1

𝐾

• 𝑥𝑖:データ点Xの𝑖番目の近傍点

• 2)逆数(密度) 𝐷𝑒𝑛𝑠𝑖𝑡𝑦(X) = 1 𝐷𝑖𝑠𝑡𝑎𝑣𝑔(𝑋)

• D𝑒𝑛𝑠𝑖𝑡𝑦(X):データ点Xの密度

• あるデータ点Xに対する異常度を密度を用いて定義 • データ点Xの異常度=(近傍K点の密度の平均)/(Xの密集度)

X 0.6 0.5

0.8 0.7

数値は各データ点の密度

点Xの異常度(近傍K=3の場合) ((0.7+0.8+0.6) / 3) / 0.5) = 1.4

異常度 𝑋 =1

𝑘∙

Density (𝑥𝑖)

Deinsity(𝑋)𝑘𝑖=1

𝑥𝑖: 点 𝑥 の 𝑖 番目の近傍点

Copyright©2016 NTT corp. All Rights Reserved.

Page 7: Jubaanomalyについて

密度による異常度の算出(2/2)

• 異常度の計算に近傍点の密度を利用することで、近傍から外れたデータを異常データとして検出することができる • データXとデータYは近傍との平均距離は同程度であるが、近傍のデータ群からより

外れたデータYの異常度が高くなる(下図)

C

E F

G B

A D

H

I

J

K

Y

異常度大(データYの密度< 近傍の密度)

C

E F

G

B

A

D

H

I

J K

X

異常度低 (データXの密度 ≒ 近傍の密度)

Copyright©2016 NTT corp. All Rights Reserved.

Page 8: Jubaanomalyについて

LOFアルゴリズム(1/3)

• 密度による異常度の欠点 • データXと近傍点がほぼ同一の位置に存在する場合

• データXと近傍K点への平均距離 ≒ 0

• データXの密度(平均距離の逆数)≒ ∞

• 安定した異常度を求めることができない

• データXの異常度→0 (密度が∞であるため)

• 近傍の異常度→∞ (データXの異常度が0のため)

• JubatusではLOF(Local Outlier Factor)アルゴリズムを採用 • LOFでは、密度の代わりにLocal Reachability Density(LRD)を使用して算出され

るLOFを異常度とする

• LRDは密度が極端に高くなるような状況でもロバストにLOFを求めることができる

X データ点Xと近傍k(k=3)が同一の位置に存在(平均距離≒0)

Copyright©2016 NTT corp. All Rights Reserved.

Page 9: Jubaanomalyについて

LOFアルゴリズム(2/3)

• Local Reachability Density(LRD)の定義 • データ点Xとその近傍K点の間の距離reach-distの平

均の逆数

• 𝐿𝑅𝐷 𝑥 =𝑘

𝑥,𝑥𝑖 間の距離𝑟𝑒𝑎𝑐ℎ−𝑑𝑖𝑠𝑡 𝑘𝑖=1

• 距離reach-distは以下の値のうちいずれか大きい値を用いる

1. 点X, P間の距離

2. 点Pと(点Pの)K番目に近い点間の距離

• データXと近傍が密集(距離の平均が0)であっても2)によって距離reach-distは0よりも大きくなる

• データXと近傍A,B,C(k=3)の距離reach-dist(右図) • (X, A)の距離reach-dist = 2)点A, F間の距離

• (X, B)の距離reach-dist = 2)点A, B間の距離

• (X, C)の距離reach-dist = 1)点X, Cの距離

C

E

F

G

B

A

D

H

I

J

K

X

点 F は、点 A から k 番目に近い点

𝑥𝑖: 点 𝑥 の 𝑖 番目の近傍点

Copyright©2016 NTT corp. All Rights Reserved.

Page 10: Jubaanomalyについて

LOFアルゴリズム(3/3)

• LRD(再掲)とLOF(異常度)の定義

• 𝐿𝑅𝐷 𝑥 =𝑘

𝑥,𝑥𝑖 間の距離𝑟𝑒𝑎𝑐ℎ−𝑑𝑖𝑠𝑡 𝑘𝑖=1

• 𝐿𝑂𝐹 𝑥 =1

𝑘∙

𝐿𝑅𝐷(𝑥𝑖)

𝐿𝑅𝐷(𝑥)𝑘𝑖=1

• データXのLOF = (近傍点のLRD)/(データXのLRD) • LRDは密度と同様(距離reach-distの平均の逆数)と見なすことができる。従って、

LOFも密度に基づいた異常度と同様に考えることができる

𝑥𝑖: 点 𝑥 の 𝑖 番目の近傍点

Copyright©2016 NTT corp. All Rights Reserved.

Page 11: Jubaanomalyについて

Jubaanomalyの機能

• API • id_with_score add(datum row)

• データを追加してLOFを取得する

• id_with_score = {0:string id, 1:float score}

• CONFIG(代表的なもの) • method 近傍点を発見するために利用する機能を指定

• lof : redommender機能を利用

• 厳密なコサイン類似度、Euclid距離を使用した近傍探索が可能

• light_lof : nearest neighbor機能を利用

• 特徴ベクトルをハッシュ化して近似することで高速、省メモリで近傍探索が可能

• nearest_neighbor_num 近傍数kを指定

• hashnum 特徴ベクトルをハッシュ化する際のビット数を指定する

• ハッシュ化する必要があるアルゴリズム(LSH、Euclid_LSH,Minhashでのみ指定)

• 値を大きくすると近似精度が向上する(メモリ使用量、探索時間が増加する)

Copyright©2016 NTT corp. All Rights Reserved.

Page 12: Jubaanomalyについて

Jubaanomalyを使ってみる

• Jubatusを使った異常検知のシステム構成例 • Web Serverに対する不正アクセス検知

20160616 GET /index.html 200 ………

アクセスログ

ブラウザからのアクセス

ログの収集

ログを queueにpush

ログ解析 プログラム

ログを取得

リアルタイムにLOFを計算

LOFの監視

Copyright©2016 NTT corp. All Rights Reserved.

Page 13: Jubaanomalyについて

Jubaanomalyを使ってみる

• 不正アクセス検知のデモをしよう!でも.... • ある程度アクセス頻度の高いログが手元にない • テストデータデータセットを使ってネットワーク侵入を模擬してみよう

• 利用したテストデータセット • KDD Cup 1999で利用されたネットワーク侵入検知データセット

• 1998年にMIT Lincoln Labsで作られたデータセットがベース • 米空軍のLANを模した環境における攻撃性アクセスの発見が目的

• 内容 • TCPダンプデータ • データ件数 約500万件

• Normal(正常なアクセス)とDOS,R2L,U2R,probingの4つのカテゴリに属する不正アクセスから構成

• 属性41項目 • 文字列:7項目、数値:34項目

• CSV形式 0,tcp,http,SF,219,1337,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,2,2,0.00,0.00,0.00,0.00,1.00,0.00,0.00,45,45,1.00,0.00,0.02,0.00,0.00,0.00,0.00,0.00,normal.

データ例

Copyright©2016 NTT corp. All Rights Reserved.

Page 14: Jubaanomalyについて

Jubaanomalyを使ってみる

• デモ • 不正アクセス検知

• 大部分の正常なアクセスはデータの傾向が似通っているはず→LOFが低い

• LOFが高い(孤立した)データを見つけることで不正アクセスを発見できる!

0,tcp,http,SF,219,1337,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,2,2,0.00,0.00,0.00,0.00,1.00,0.00,0.00,45,45,1.00,0.00,0.02,0.00,0.00,0.00,0.00,0.00,normal.

テストデータセット

ログを queueにpush

ログ解析 プログラム

ログを取得

ログデータを追加 LOFの取得

リアルタイムにLOFを表示

Copyright©2016 NTT corp. All Rights Reserved.

Page 15: Jubaanomalyについて

おわりに

• Jubatusの異常検知(Jubaanomaly)のアルゴリズムを説明

• デモの説明

Copyright©2016 NTT corp. All Rights Reserved.

Page 16: Jubaanomalyについて

参考:オンラインLOFアルゴリズム(1/2)

• ある点の異常度を求めるためには、その点の近傍 𝑘 点の LRD を算出する必要がある。 • LRD を算出するためには、その点の近傍 𝑘 点の LRD が既知である必要があるため、

N 件のデータ点が登録されているとき、最大で N 点の LRD の算出が必要となる (つまり、N 点間の距離を計算するために、最大で N – 1 回の近傍探索が発生する)

• 各点の LRD は、データ点の追加が行われるたびに再計算する必要があるが、この計算コストは下図に示すように非常に高い。

データ点 X が追加されたとき、LRD の再計算が必要な点群を厳密に抽出するには: (1) データ点 X が追加されたことにより、データ点 X の近傍 𝑘 点 の LRD の

再計算が必要 (2) データ点 X の近傍 𝑘 点の LRD の再計算を行うことにより、それらのデー

タ点の近傍 𝑘 点の LRD の再計算も必要 (3) … (以下、再計算の必要となる点の集合が収束するまで繰り返し)

X

(k = 3 とする)

Copyright©2016 NTT corp. All Rights Reserved.

Page 17: Jubaanomalyについて

参考:オンラインLOFアルゴリズム(2/2)

• Jubatus においては、データ点の追加時に LRD を再計算する点の範囲を、追加された点の近傍 𝑅 点に限定することにより、データ点の追加時の計算コストを削減することで、リアルタイムなデータ点の追加を可能にする (近傍探索の実行回数を最大で 𝑅 + 1 回に抑える)

X

データ点 X が追加されたとき、LRD の再計算が必要な点群を、データ点 X の近傍 R 点であると見なす

(R = 5 とする)

補足 𝑅 は、Jubatus におけるハイパーパラメタ reverse_nearest_neighbor_num に対応する。

補足 既存のデータ点を書き変える場合は、書き変え前後のデータ点の近傍 R 点に対して LRD の再計算を行うため、近傍探索の実行回数は (R+1) * 2 回となる。

Copyright©2016 NTT corp. All Rights Reserved.