QCon Tokyo 2014
QCon2014 My Report Top
Detail Report#3/8
異常検知 機械学習の有望なアプリケーション
寺田英雄:オープンストリーム
講師 BackGround
- 機械学習(独学)
- 動画エンコーダー、同期再生エンジン
- 画像処理、パターン認識
- オブジェクト指向(driver FW)
- 言語は assembra, c, c++, python, R,,
Anomaly Detection ?
異常検知の目的
正常とされるパターンに一致しないパターンを見つけること
(なんかあるぞと警報を出す)
技術的に
- あらゆるアルゴリズムを動員(定番がない)
- 活発な研究
- 機械学習の書学者に生きた教材
- 結果がシンプル=>正常 or 異常
社会的に
- あちこちにニーズ
- 異常の意味の広がり(通常とそうでないと意味で使うと応用例が増える)
異常検知は現場導入しやすい
- 結果がシンプル(なんかビッグデータがあるけどというときに)
- 学習データを用意しやすい
- 評価しやすい
- デバッグしやすい
機械学習とは?
普通のプログラム
入力 Xi -> アルゴリズムYi = f(Xi) -> 出力データ Yi
普通に作れない場合
入力データ(不定形) -> ???? -> 出力データ
(この???の部分を半自動でコンピュータにやらせる)
モデルベース学習(オフライン学習)
学習と実行が分かれている
学習
生データ -> 学習アルゴリズム -> モデルデータ
実行
生データ -> モデル実行エンジン(モデルデータ) -> 出力
モデルベース(オンライン学習)
学習と実行
生データ -> 学習アルゴリズム -> モデルデータ
->(モデルデータ:上記の計算結果で常時上書きながら) -> 出力
学習アルゴリズム検討事項
- 入力データの性質
- 異常のタイプ
- データらベル(教師)の有無
- 検知結果の出力
- 特徴
入力データの性質
- インスタンスは属性値の集合
- 単変量型と多変量型
属性値の型と手法
- 2値 binary
- カテゴリ categorical
- 連続値 numerical
統計的手法 -> 連続値、カテゴリ
最近傍型手法-> 距離定義が必要
インスタンス間の関係性
- シーケンスデータ(順序に意味がある)
- 空間データ(位置により意味合いが変わる 近傍インスタンスと関係)
- グラフデータ (graphdata) (facebook, 友人関係など) エッジで結合されたデータノード
異常のタイプ
点異常
文脈依存型異常
晴れ続きでは雨が、雨続きでは晴れが異常になる
- 集団型異常
データラベル(教師)の有無
教師あり異常検知
- 正常なパターンも異常のパターンもある
- 異常検知というよりも、ただの区別
教師無し異常検知
(仮定を用いて判定)
半教師有異常検知
- 正常データだけにラベル有
- 正常でないものを異常とする
検知結果の出力
Score で表示するか、2値で表示するか。
-
Score
異常度合を出す -
ラベル
正常、異常
よい特徴量とは?
- 一言では答えられない
- 生データVS アルゴリズム
- アルゴリズムに引っかかりやすい形式
- ノイズに負けにくい形式
- 経験則、ノウハウ-> 批判 -> Deep Learning by Google
異常検知のアルゴリズム
- 分類による異常検知
分類モデル
- ニューラルネットワーク
- ベイジアンネットワーク
- サポートベクターマシン
- ルールベース
分類器を見つけさせる
最近傍
LOF(Local outlier factor)の概念図
事例
SQL インジェクション攻撃の検知
Provider
SQLを取り出す
Parser
- SQLを解析、Token列を抽出
- Skelton Queryを作成
Feature Selector
- Feature vector 作成
- Profileを選択
自動車用歩行者検知
- 教師有学習
- 車両前方カメラ
- ランダム背景
- 学習データ
- 何千人分
スキャン
各点の郊外の向きと強さで人とグラム
Histogram of oriented Gradient
Histogram binを特徴ベクトルに変換する
その他事例
- ネットワーク侵入
- クレジットカード不正利用
- 携帯電話不正利用
- 保険請求
- インサイダー取引
- 画像診断:病巣検知
まとめ
- 実用性が高い
- 機械学習の勉強に最適
- みんなでやってみよう