Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

Elasticsearch 6.1から追加されたMachine Learningの新機能を使ってみた。予測機能が面白いっ!

皆さんこんにちは。
@です。
最近、1年1年が早く感じられて、びっくりしています。

本題ですが、Machine Learningにバージョン6.1から追加された新機能を試してみました。
気がついたら様々な機能が追加されており、面白そうだったので、試した記録でブログを書いてみました!

本記事で、試した機能は次の4点です。

  1. Data Visualizer
  2. 予測機能
  3. Machine Learningのテンプレート設定
  4. Population Wizard

※本記事で利用しているElastic Stackのバージョン6.1.1です。

Data Visualizer

Machine Learningで適切に異常を検知するためにはデータの特性を
ある程度把握することが必要になります。
例えば、どのようなデータが少ないのか、データの分布がどうなっているかがあげられます。

従来のバージョンでは、データの特性を把握するために
KibanaのVisualizeやDashboardを手動で作成することもありました。
ちょっとした手間だったのですが、6.1の新機能「Data Visualizer」により、簡単にデータの概況を掴めるようになりました。

まず、Machine Learningに遷移し、「Create New Job」をクリックすると、処理の選択ができます。
この処理の中から「Data Visualizer」を選択します。

f:id:acro-engineer:20180206005005p:plain

この「Data Visualizer」を選択した結果は次の通りです。

f:id:acro-engineer:20180105161557p:plain

①のSearchでドキュメントを条件により絞り、②のFilterでKibana上で表示する項目を絞れます。
Filterを使うことで、ドキュメントの中から特定のデータの場合の調査も可能です。

表示されているグラフは、自動生成されています。
Metricsの他にFieldがありますが、このFieldは数値表現ができないデータ(文字列など)が該当します。

f:id:acro-engineer:20180105163428p:plain

Machine Learningのテンプレート設定

バージョン6.1より、特定のデータであればジョブを簡単に設定できるようになっています。
現在はNginxのMachine Learning用のテンプレートが設定できます。
このテンプレートの設定は非常に簡単で、FilebeatのNginxモジュールを使えば、使用可能です。

Machine Learningの初期画面から「Create New Job」をクリックします。
処理を選択する画面に遷移しますが、この設定ができる場合に「Filebeat Nginx」が追加で表示されます。
(利用できない場合はそもそも表示されない。)

f:id:acro-engineer:20180206005130p:plain

そして、job名のprefixとグループの指定をすれば、Machine LearningのJobを構築できます。
「Jobs」にJobが5種類含まれいます。「Create Jobs」をクリックすることで、作成されます。

f:id:acro-engineer:20180105174826p:plain

実際に試した結果は次の通りです。ここまで、何も考えずにお手軽に作成できるところが良いですね。
※投入データはランダムデータです。

f:id:acro-engineer:20180108183320p:plain

このテンプレート作成時にKibana Dashboardも作られます。便利ですね!
これらのDashboardはデータを詳細に確認したい場合に使えます。

f:id:acro-engineer:20180108183517p:plain

予測機能

従来のMachine Learningでは、異常検知ができました。
バージョン6.1から異常検知で学習したモデルを使って、未来予測もできるようになりました。
過去のデータから、将来どのような傾向になりそうか、目視で確認できるようになりました。

予測には、公式サイトのTaxiのサンプルを試します。

ニューヨーク市のタクシー乗降データでMachine Learningを体験する | Elastic

まずは、サイトの手順通りにTaxiのサンプルを動かします。

f:id:acro-engineer:20180206004829p:plain

従来までのバージョンと異なっているのは、画面の右上に「forecast」のボタンが追加されています。
この「forecast」をクリックし、予測の設定を開始します。

f:id:acro-engineer:20180206005443p:plain

この設定画面ですが、Durationの設定が可能です。
Durationはどれだけ未来を予測するかといったパラメータです。

試しにDurationを「1w」に入力し、最後に、「➡」をクリックします。
予測の結果は次の通りです。黄色い部分が予測部分を示しています。

f:id:acro-engineer:20180121234325p:plain

Population Wizard

最後にPopulation Wizardの紹介です。

かつての分析方法はSingle MetricとMulti Metricの2種類でした。(Advancedは除く)
Advancedで設定ができたPopulation Analysisの設定が簡単にできるようになりました。

Population Analysisは他とは違う傾向のデータを検知することができます。

例えば、複数のユーザがWebサイトにアクセスする場合に
大体のユーザは同じ傾向のアクセス(回数etc)になると思います。
このPopulationを利用した分析では、どのユーザが普通のユーザの傾向から異なるかを検出できます。

Population Wizardですが、Population対象のデータと
それを検出するための値(CPUの利用率など)の設定が基本です。
例えば、アクセス回数、もしくは、データ量が異なる市を発見する例は次の通りです。

f:id:acro-engineer:20180108191559p:plain

後は通常のJobと同じようにCreate Jobをクリックすれば、実行します。
実行した結果は次の通りです。

f:id:acro-engineer:20180122232328p:plain

とりあえず、出力しましたが、この解析結果が正しいのかが不明です。
そこでデータ側を確認するため、次のVisualizeを作成しました。

f:id:acro-engineer:20180123000113p:plain

Jobの結果通り、他と大きくかけ離れたデータが存在します。
このJobは系列単体で異常検知ができません。
しかし、他と比較して異なるデータを検知できるので、今までと別の使い方により、より有効に活用できそうです。

最後に

お試しで触ってみたところ、意外に便利だなぁと思う機能が増えています。
サービス自体、どんどん簡単に面白い機能を使えるよう進化しているので、使っていきます!

Acroquest Technologyでは、キャリア採用を行っています。


  • ビッグデータHadoop/Spark、NoSQL)、データ分析(Elasticsearch、Python関連)、Web開発(SpringCloud/SpringBoot、AngularJS)といった最新のOSSを利用する開発プロジェクトに関わりたい。
  • マイクロサービスDevOpsなどの技術を使ったり、データ分析機械学習などのスキルを活かしたい。
  • 社会貢献性の高いプロジェクトや、顧客の価値を創造するようなプロジェクトで、提案からリリースまで携わりたい。
  • 書籍・雑誌等の執筆や、対外的な勉強会の開催・参加を通した技術の発信、社内勉強会での技術情報共有により、エンジニアとして成長したい。

 
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。

データ分析基盤Elasticsearchを使い倒したいエンジニア募集! - Acroquest Technology株式会社のエンジニア中途・インターンシップ・契約・委託の求人 - Wantedlywww.wantedly.com