gosom

command module
v0.0.0-...-3954d85 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 29, 2018 License: Apache-2.0 Imports: 9 Imported by: 0

README

gosom

somを用いた異常値検知ツール

自己組織化マップによるリソース値の学習を行い、外れ度合をprometheusのexporterとして出力する。

使用方法

# dockerコンテナをビルド
$ docker build -t gosom ./
# dockerコンテナを起動
$ docker run -d --restart=always -p 3306:3306 gosom

Config

jsonでconfigを記述する。設定値の意味は下記。

  • server
    • host: ホスト名/IPアドレスを設定
    • port: gosomサーバーが使うポートを設定
  • som
    • size: SOMの辺の長さを設定。マップは正方形なのでセル数はsize*sizeとなる
  • dataporter
    • enable_porter: 内臓dataporterを有効にするかを設定。
    • baseurl: dataporterがデータを転送する先を設定。
{
    "server": { 
      "host": "localhost",
      "port": "3306"
    },
    "som": {
      "size": 200
    },
    "dataporter": {
      "enable_porter": true,
      "baseurl"  : "http://localhost:3306"
    }
  }

dockerで動作させる場合、server、dataporterは変更する必要がない

prometheusに出力するパラメータ

  • gosom_distance
    • 最後に学習したデータのBMUと中点との距離
  • gosom_radius
    • 最後の学習時点での近傍半径
  • gosom_outlier_rate
    • 最後に学習したデータの外れ度合。distance/radiusで計算
    • 1を超えたらおおむね外れ値にヒットしているはず(検証中)

ロジックについてのメモ

自己組織化マップによる学習をベースに、下記の要領で学習を行う

  1. 教師データと最も近いノード(BMU)を探す
  2. BMUから近傍半径r以内にいるノードを学習させる
  3. 中点をBMU方向に移動させる

学習データとして登場する頻度が高いデータほど中点にマッピングされるので、中点とBMUの距離を計算することで外れ値を計算する。

近傍半径rについて

  • 近傍半径rはノードの標準偏差ベクトルを計算し、そのスカラ量をもとに計算している
    • 近傍半径と係数についてはより良い決定方法があると考えられる

マップとノードについて

  • マップはsize*size個のノードで構成される。
  • 現実装では、ノード一つは3次元のベクトル(R,G,B)を持つ

技術メモ

  • サーバサイド
    • golang
  • フロントエンド
    • nuxt.js

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL