皆さんこんにちは。
@tereka114です。
最近、1年1年が早く感じられて、びっくりしています。
本題ですが、Machine Learningにバージョン6.1から追加された新機能を試してみました。
気がついたら様々な機能が追加されており、面白そうだったので、試した記録でブログを書いてみました!
本記事で、試した機能は次の4点です。
- Data Visualizer
- 予測機能
- Machine Learningのテンプレート設定
- 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」を選択します。
この「Data Visualizer」を選択した結果は次の通りです。
①のSearchでドキュメントを条件により絞り、②のFilterでKibana上で表示する項目を絞れます。
Filterを使うことで、ドキュメントの中から特定のデータの場合の調査も可能です。
表示されているグラフは、自動生成されています。
Metricsの他にFieldがありますが、このFieldは数値表現ができないデータ(文字列など)が該当します。
Machine Learningのテンプレート設定
バージョン6.1より、特定のデータであればジョブを簡単に設定できるようになっています。
現在はNginxのMachine Learning用のテンプレートが設定できます。
このテンプレートの設定は非常に簡単で、FilebeatのNginxモジュールを使えば、使用可能です。
Machine Learningの初期画面から「Create New Job」をクリックします。
処理を選択する画面に遷移しますが、この設定ができる場合に「Filebeat Nginx」が追加で表示されます。
(利用できない場合はそもそも表示されない。)
そして、job名のprefixとグループの指定をすれば、Machine LearningのJobを構築できます。
「Jobs」にJobが5種類含まれいます。「Create Jobs」をクリックすることで、作成されます。
実際に試した結果は次の通りです。ここまで、何も考えずにお手軽に作成できるところが良いですね。
※投入データはランダムデータです。
このテンプレート作成時にKibana Dashboardも作られます。便利ですね!
これらのDashboardはデータを詳細に確認したい場合に使えます。
予測機能
従来のMachine Learningでは、異常検知ができました。
バージョン6.1から異常検知で学習したモデルを使って、未来予測もできるようになりました。
過去のデータから、将来どのような傾向になりそうか、目視で確認できるようになりました。
予測には、公式サイトのTaxiのサンプルを試します。
ニューヨーク市のタクシー乗降データでMachine Learningを体験する | Elastic
まずは、サイトの手順通りにTaxiのサンプルを動かします。
従来までのバージョンと異なっているのは、画面の右上に「forecast」のボタンが追加されています。
この「forecast」をクリックし、予測の設定を開始します。
この設定画面ですが、Durationの設定が可能です。
Durationはどれだけ未来を予測するかといったパラメータです。
試しにDurationを「1w」に入力し、最後に、「➡」をクリックします。
予測の結果は次の通りです。黄色い部分が予測部分を示しています。
Population Wizard
最後にPopulation Wizardの紹介です。
かつての分析方法はSingle MetricとMulti Metricの2種類でした。(Advancedは除く)
Advancedで設定ができたPopulation Analysisの設定が簡単にできるようになりました。
Population Analysisは他とは違う傾向のデータを検知することができます。
例えば、複数のユーザがWebサイトにアクセスする場合に
大体のユーザは同じ傾向のアクセス(回数etc)になると思います。
このPopulationを利用した分析では、どのユーザが普通のユーザの傾向から異なるかを検出できます。
Population Wizardですが、Population対象のデータと
それを検出するための値(CPUの利用率など)の設定が基本です。
例えば、アクセス回数、もしくは、データ量が異なる市を発見する例は次の通りです。
後は通常のJobと同じようにCreate Jobをクリックすれば、実行します。
実行した結果は次の通りです。
とりあえず、出力しましたが、この解析結果が正しいのかが不明です。
そこでデータ側を確認するため、次のVisualizeを作成しました。
Jobの結果通り、他と大きくかけ離れたデータが存在します。
このJobは系列単体で異常検知ができません。
しかし、他と比較して異なるデータを検知できるので、今までと別の使い方により、より有効に活用できそうです。
最後に
お試しで触ってみたところ、意外に便利だなぁと思う機能が増えています。
サービス自体、どんどん簡単に面白い機能を使えるよう進化しているので、使っていきます!
Acroquest Technologyでは、キャリア採用を行っています。
- ビッグデータ(Hadoop/Spark、NoSQL)、データ分析(Elasticsearch、Python関連)、Web開発(SpringCloud/SpringBoot、AngularJS)といった最新のOSSを利用する開発プロジェクトに関わりたい。
- マイクロサービス、DevOpsなどの技術を使ったり、データ分析、機械学習などのスキルを活かしたい。
- 社会貢献性の高いプロジェクトや、顧客の価値を創造するようなプロジェクトで、提案からリリースまで携わりたい。
- 書籍・雑誌等の執筆や、対外的な勉強会の開催・参加を通した技術の発信、社内勉強会での技術情報共有により、エンジニアとして成長したい。
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。データ分析基盤Elasticsearchを使い倒したいエンジニア募集! - Acroquest Technology株式会社のエンジニア中途・インターンシップ・契約・委託の求人 - Wantedlywww.wantedly.com