Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Jubaanomalyについて

12,090 views

Published on

jubaanomalyについて

Published in: Engineering
  • Be the first to comment

Jubaanomalyについて

  1. 1. Jubaanomalyについて Jubatusの異常検知機能のご紹介 湯原基貴 Copyright©2016 NTT corp. All Rights Reserved.
  2. 2. アジェンダ • Jubatusにおける異常検知とは • 密度により異常度の算出 • LOFアルゴリズム • Jubaanomalyを使ってみる • おわりに Copyright©2016 NTT corp. All Rights Reserved.
  3. 3. Jubatusにおける異常検知とは • Jubatusでは入力されたデータから特徴を抜き出しキーとバリューから構 成される特徴ベクトルという形で保持する • 特徴抽出処理(詳細は省略) • データは特徴ベクトルで表現された空間(特徴空間)上の点と見なすこと ができる 世の中ではビッグデー タというキーワードが 注目されていますが、 一口にビッグデータと いっても立場や観点に よって定義は様々です ビッグデータ 2 世の中 1 キーワード 1 中心が茶 1 花びらの割合 0.7 高さ 150 特徴空間 特徴ベクトルデータ Copyright©2016 NTT corp. All Rights Reserved.
  4. 4. Jubatusにおける異常検知とは • 特徴空間上での近傍データの関係による異常検知 • 学習モデルに登録されたデータ群に対して、他から孤立したデータ(外れ値)を異 常として検出する • 分析対象のデータの外れ具合を異常度として数値化する • これがJubatusにおける異常検知(Jubaanomaly) 特徴空間 異常度高 異常度高 異常度低 2次元の特徴ベクトルをもつデータの例 Copyright©2016 NTT corp. All Rights Reserved.
  5. 5. Jubatusの異常検出の特徴 • 分析対象のデータに対する異常度を、その近傍データ群との密度の違いを 用いて算出する • 下図ではデータA,Bは近傍との距離は同程度だが、近傍データ群の密度の 違いにより異常度は以下のようになる • 点A → 低い異常度(周辺のデータ群の密度が低く、溶け込んでいる) • 点B → 高い異常度(周辺のデータ群の密度が高く外れている) A B 特徴空間 2次元の特徴ベクトルをもつデータの例 Copyright©2016 NTT corp. All Rights Reserved.
  6. 6. 密度による異常度の算出(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.
  7. 7. 密度による異常度の算出(2/2) • 異常度の計算に近傍点の密度を利用することで、近傍から外れたデータを 異常データとして検出することができる • データXとデータYは近傍との平均距離は同程度であるが、近傍のデータ群からより 外れたデータYの異常度が高くなる(下図) C E F G B A D H I J K Y 異常度大(データYの密度< 近傍の密度) C EF G B A D H I J K X 異常度低 (データXの密度 ≒ 近傍の密度) Copyright©2016 NTT corp. All Rights Reserved.
  8. 8. 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.
  9. 9. 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.
  10. 10. LOFアルゴリズム(3/3) • LRD(再掲)とLOF(異常度)の定義 • 𝐿𝑅𝐷 𝑥 = 𝑘 𝑥,𝑥 𝑖 間の距離 𝑟𝑒𝑎𝑐ℎ−𝑑𝑖𝑠𝑡𝑘 𝑖=1 • 𝐿𝑂𝐹 𝑥 = 1 𝑘 ∙ 𝐿𝑅𝐷(𝑥 𝑖) 𝐿𝑅𝐷(𝑥) 𝑘 𝑖=1 • データXのLOF = (近傍点のLRD)/(データXのLRD) • LRDは密度と同様(距離reach-distの平均の逆数)と見なすことができる。従って、 LOFも密度に基づいた異常度と同様に考えることができる 𝑥𝑖: 点 𝑥 の 𝑖 番目の近傍点 Copyright©2016 NTT corp. All Rights Reserved.
  11. 11. 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.
  12. 12. Jubaanomalyを使ってみる • Jubatusを使った異常検知のシステム構成例 • Web Serverに対する不正アクセス検知 20160616 GET /index.html 200 ……… アクセスログ ブラウザからの アクセス ログの収集 ログを queueにpush ログ解析 プログラム ログを取得 リアルタイムにLOFを 計算 LOFの監視 Copyright©2016 NTT corp. All Rights Reserved.
  13. 13. 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.
  14. 14. Jubaanomalyを使ってみる • デモ • 不正アクセス検知 • 大部分の正常なアクセスはデータの傾向が似通っているはず→LOFが低い • LOFが高い(孤立した)データを見つけることで不正アクセスを発見できる! 0,tcp,http,SF,21 9,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.0 2,0.00,0.00,0.00 ,0.00,0.00,norm al. テストデータセット ログを queueにpush ログ解析 プログラム ログを取得 ログデータを追加 LOFの取得 リアルタイムに LOFを表示 Copyright©2016 NTT corp. All Rights Reserved.
  15. 15. おわりに • Jubatusの異常検知(Jubaanomaly)のアルゴリズムを説明 • デモの説明 Copyright©2016 NTT corp. All Rights Reserved.
  16. 16. 参考:オンライン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.
  17. 17. 参考:オンライン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.

×