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.

NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する

1,830 views

Published on

合同勉強会 福岡での資料です

Published in: Software
  • Be the first to comment

NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する

  1. 1. NetBeansのメモリ使用ログから 機械学習で きしだが働いてるかどうか判定する 2017/2/11 きしだ なおき
  2. 2. きのう ● おきたら18時 ● 登壇者懇親会19時から
  3. 3. 作戦 ● プラン特A – 資料も完璧、デモまでやる ● プランA – 動作はする。資料も完璧。デモはできない ● プランB – 動作しなかったので、やろうと思ったことの資料つくってプレゼン ● プランC – なんも用意していないのでいきあたりばったりやる
  4. 4. 作戦 ● プランC+ – 動作したけど資料ができてないので いきあたりばったりやる
  5. 5. 今日のはなし ● NetBeansのメモリログから、機械学習で きしだが働いてるかどうか判定する
  6. 6. メモリログ ● ヒープの使用量 あそんでる あそんでるなんかしてる
  7. 7. どう取るか ● JMXという仕組みがある ● InfluxDBにつっこむ ● Grafanaで見る
  8. 8. 構成 なんかプログラム JMX https://github.com/kishida/analyzenb/blob/master/src/main/java/kis/analyzenb/JmxInflux.java
  9. 9. 問題 ● 単純な閾値では判定できない ● 時系列データの判定は単純な機械学習では 難しい
  10. 10. ウェーブレット変換 ● 時間ごとの周波数解析を行う ● フーリエ変換 – データ全体の周波数解析を行う ● 離散ウェーブレット変換 – 処理も簡単 http://d.hatena.ne.jp/nowokay/20161227
  11. 11. ウェーブレット変換のコード static List<List<Double>> wavletAnalysis(List<Double> data) { List<List<Double>> wavlets = new ArrayList<>(); while(data.size() > 1) { List<Double> wavlet = new ArrayList<>(); List<Double> next = new ArrayList<>(); for (int i = 0; i < data.size(); i += 2) { wavlet.add((data.get(i) - data.get(i + 1)) / 2); next.add((data.get(i) + data.get(i + 1)) / 2); } wavlets.add(wavlet); data = next; } wavlets.add(data); return wavlets; }
  12. 12. ウェーブレット変換でできること ● 情報圧縮 – JPEG2000で使われている ● 電子すかし(ステガノグラフィ) – 人間にはわからないように情報を画像などに 埋め込む 上位1/4の周波数成分だけ残してウェーブレット逆変換 http://d.hatena.ne.jp/nowokay/20161229
  13. 13. ウェーブレット変換の適用 ● 512データ(8分30秒)をウェーブレット変換 する ● 512 = 2^9 – 9+1=10周波数のデータができる
  14. 14. 機械学習 ● ディープじゃないラーニング ● 3層のニューラルネットワーク ● 各時間ごとに10個のデータ ● 出力は1つ ● 10 -> 5 -> 1 https://github.com/kishida/analyzenb/blob/master/src/main/java/kis/analyzenb/BackPropergation.java
  15. 15. 教師データはどうする? ● 機械学習では、学習用に、入力値とその入力が どう判定されるべきかという教師データが必要
  16. 16. Thread count ● NetBeansが使っているスレッド数 ● NetBeansを触ってないときはスレッド数が32 ● 教師データに使える
  17. 17. 機械学習とか不要では? ● ロマンです
  18. 18. 結果 ● なんとなく判定できている https://github.com/kishida/analyzenb/blob/master/src/main/java/kis/analyzenb/UsageData.java
  19. 19. まとめ ● 時系列データのウェーブレット変換からなんと なく状態を把握することができた ● 常に働いていれば判定など不要

×