Anomaly

  • 詳細な仕様は IDL 定義 を参照してください。

Configuration

設定は単体の JSON で与えられる。 JSON の各フィールドは以下のとおりである。

method

異常検知に使用するアルゴリズムを指定する。 以下のアルゴリズムを指定できる。

設定値 手法
"lof" Recommenderベースの Local Outlier Factor を利用する。 [Breunig2000]
"light_lof" Nearest Neighborベースの LOF を利用する。
parameter

アルゴリズムに渡すパラメータを指定する。 method に応じて渡すパラメータは異なる。

共通
unlearner:忘却機能に利用するUnlearnerのアルゴリズムを指定する。 忘却機能が不要な場合、このパラメータは省略する。 Unlearner で説明される unlearner を指定する。 ここで指定された方法に基づいてデータを忘却する。忘却の単位は、ID単位である。
unlearner_parameter:
 忘却機能に利用するUnlearnerに渡すパラメータを指定する。 Unlearner で説明される unlearner_parameter を指定する。 ここで指定された件数以上のデータは自動的に削除される。 unlearner を指定する際はこの unlearner_parameter の指定は必須である。

なお unlearnerunlearner_parameter のパラメータは 省略可能 である。

lof
nearest_neighbor_num:
 

対象データに対する近傍の数を指定する。 大きくすると誤検出が減る代わりに、検出漏れが増える。 (Integer)

  • 値域: 2 <= nearest_neighbor_num
reverse_nearest_neighbor_num:
 

異常値の情報を更新する際に、逆近傍候補の個数を指定する。 大きくすると検出が正確になる代わりに、更新に時間がかかる。 (Integer)

  • 値域: nearest_neighbor_num <= reverse_nearest_neighbor_num
ignore_kth_same_point:
 

登録できる重複データの件数を nearest_neighbor_num - 1 件に制限することにより、スコアが inf になることを防ぐ。 このパラメタは省略可能であり、デフォルト値は false (無効) である。 (Boolean)

method:

近傍探索に利用するレコメンダーのアルゴリズムを指定する。 Recommender で説明される method を指定する。

parameter:

近傍探索に利用するレコメンダーに渡すパラメータを指定する。 Recommender で説明される parameter を指定する。

light_lof
nearest_neighbor_num:
 

対象データに対する近傍の数を指定する。 大きくすると誤検出が減る代わりに、検出漏れが増える。 (Integer)

  • 値域: 2 <= nearest_neighbor_num
reverse_nearest_neighbor_num:
 

異常値の情報更新する際に、逆近傍候補の個数を指定する。 大きくすると検出が正確になる代わりに、更新に時間がかかる。 (Integer)

  • 値域: nearest_neighbor_num <= reverse_nearest_neighbor_num
ignore_kth_same_point:
 

登録できる重複データの件数を nearest_neighbor_num - 1 件に制限することにより、スコアが inf になることを防ぐ。 このパラメタは省略可能であり、デフォルト値は false (無効) である。 (Boolean)

method:

近傍探索に利用する近傍探索器のアルゴリズムを指定する。 Nearest Neighbor で説明される method を指定する。

parameter:

近傍探索に利用する近傍探索器に渡すパラメータを指定する。 Nearest Neighbor で説明される parameter を指定する。

converter

特徴変換の設定を指定する。 フォーマットは データ変換 で説明する。

例:
{
  "method" : "lof",
  "parameter" : {
    "nearest_neighbor_num" : 10,
    "reverse_nearest_neighbor_num" : 30,
    "method" : "euclid_lsh",
    "parameter" : {
      "hash_num" : 64,
      "table_num" : 4,
      "seed" : 1091,
      "probe_num" : 64,
      "bin_width" : 100
    }
  },
  "converter" : {
    "string_filter_types" : {},
    "string_filter_rules" : [],
    "num_filter_types" : {},
    "num_filter_rules" : [],
    "string_types" : {},
    "string_rules" : [
      { "key" : "*", "type" : "str", "sample_weight" : "bin", "global_weight" : "bin" }
    ],
    "num_types" : {},
    "num_rules" : [
      { "key" : "*", "type" : "num" }
    ]
  }
}

Data Structures

message id_with_score

スコア付きのデータIDを表す。

0: string id

データのIDを表す。

1: double score

IDに対して紐付くスコアを表す。 陰性の (正常な) データのスコアは 1.0 近辺になる。 スコアが大きくなるほど、より異常度が高いことを意味する。

message id_with_score {
  0: string id
  1: double score
}

Methods

service anomaly
bool clear_row(0: string id)
パラメータ:
  • id -- 削除する点 ID
戻り値:

点の削除に成功した場合 True

ID id で指定される点データを削除する。

id_with_score add(0: datum row)
パラメータ:
戻り値:

点 ID と異常値のタプル

点データ row を追加する。

list<string> add_bulk(0: list<datum> data)
パラメータ:
  • row -- 追加する datum のリスト
戻り値:

追加に成功したIDのリスト

複数の点データをまとめて追加する。 add と異なり、点データ追加時に異常値の計算は行わない。

double update(0: string id, 1: datum row)
パラメータ:
  • id -- 更新する点 ID
  • row -- 点の新しい datum
戻り値:

異常値

id をデータ row で更新する。

double overwrite(0: string id, 1: datum row)
パラメータ:
  • id -- 更新する点 ID
  • row -- 点の新しい datum
戻り値:

異常値

id をデータ row で上書き更新する。

double calc_score(0: datum row)
パラメータ:
戻り値:

与えられた row に対する異常度

点を追加せずに、与えられた点データ row の異常度を計算する。

この時、極端に大きな値を返却する場合がある。原因の詳細については FAQs:異常検知 を参照してください。

list<string> get_all_rows()
戻り値:すべての点の ID リスト

すべての点の ID リストを返す。