Taste of Tech Topics

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

X-Pack Machine Learningを試してみました

みなさんこんにちは!
@です。
本日、待望のX-Pack Machine Learningがリリースされました。

X-Pack Machine Learning

X-Pack Machine Learningとは

X-Pack Machine LearningはElastic Stackで時系列の異常検知を行える機械学習の製品です。
特徴として、教師なし学習による異常検知モデルの生成や周期、トレンドの異常検知を行えます。
そして、2017年のElastic{ON}での注目機能の1つでもあります。

www.elastic.co

X-Pack Machine Learningは以前、Prelertとしてリリースされており、
弊社ブログでも説明させていただきました。

acro-engineer.hatenablog.com

早速、X-Pack Machine Learningを試してみます!

インストール

X-Packをインストールする手順と同じです。
そのため、公式のX-Packのインストール方法を確認し、インストールしてください。

www.elastic.co

実際にやってみた

解析準備

解析対象となるデータセットがX-Pack Machine Learningを試すために必要です。
今回は過去に弊社ブログで取り上げたfarequoteのサンプルを使います。
データの投入方法や形式は次のページを参考にしてください。

acro-engineer.hatenablog.com

X-Pack Machine Learningを利用して、2種類のJobを作成します。
1つ目がSingle Metric Job、2つ目がMulti Metric Jobです。

Single Metric Job

Single Metric Jobは1つのメトリックに対して、異常検知を行います。
今回はアクセス数全体のカウントを対象に異常検知を行います。

X-Pack Machine Learningでは、はじめにJobの種類を選択します。
本項目では、「Create a single metric job」を使います。
f:id:acro-engineer:20170505081718p:plain

次に解析対象となるElasticsearchのindexを設定します。indexは「farequote」を選択します。

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

次の画面でSingle Metric Jobの設定を行います。
Aggregationをcount, Bucket spanを30mにします。
また、データの可視化を設定項目右のボタンを押すとできます。
この機能によって予め、解析対象がどのようなデータかを確認できます。

最後に、「Create Job」をクリックすると、Jobの生成を行います。

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

Jobの生成が終わると、次の画面になります。
異常として検知された箇所に黄色い棒がグラフ内に表示されています。

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

最後に解析結果を確認しましょう。View Resultsをクリックすると
次のような画面になります。
時系列グラフを確認しつつ、異常箇所を見られます。
今までできなかった嬉しい機能の1つです。また、正常と判定する領域も確認できます。

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

Multi Metric Job

Multi Metric Jobはフィールドごとに異常検知を行います。
Single Metric Jobの構築でアクセス数の異常検知に成功しました。
しかし、本データに使われているairline(航空会社)全てが異常といえるのでしょうか?
特定のairlineに異常が発生しているかどうかをMulti Metric Jobで判定できます。

さて、早速試してみましょう。

今回はSingle Metric Jobを選択した画面で「Create a multi metric job」を選択しましょう。
まず、最初に次の画面が表示されます。この画面でJobの設定を行います。

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

Bucket spanを30m、Key Fieldsをairline.keyword、Job Detailsに名前や説明を書きます。
Key Fieldsで設定した属性をベースに分割し、各々のデータで異常検知します。
必要な設定を行った例は次のとおりです。設定が完了し次第、Create Jobを実行しましょう。

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

実行後、Anomaly Explorer画面に遷移できます。
どの航空会社のリクエスト数が増加しているかをAnomaly Explorerを使って、確認できます。

また、モデルが異常と判定した赤い四角をクリックすると、
クリックした対象のデータを表示できます。
そして、表示された時系列グラフからも急激にアクセス数が増加した様子を確認できます。

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

おまけ

Elastic Stack5.4で実装されたVisual Builderを使って
データを可視化しました。これまでのVisualizeよりリッチに感じます。

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

PrelertとX-Pack Machine Learningの違い

私が試してみて感じたX-Pack Machine LearningとPrelertの違いは以下、3点です。

より簡単に設定ができる

Prelertも簡単に異常検知の設定ができました。
しかし、X-Pack Machine Learningは更に簡単です。
X-Pack Machine Learningは利用ケース別(Single Metricなど)で
必要最低限の項目を設定を行えば使えます。

これまでに必要だったElasticsearchのアクセス先や
Prelertに見られた上級者向けの設定を記述・確認する必要がありません。

解析途中や解析後に生データを確認できる

X-Pack Machine Learningでは、Jobの設定途中に解析データを確認できます。
Prelertでは、モデルの解析途中や解析後にデータを確認する場合、
Kibanaなどのソフトを使ってデータ確認する必要がありました。

データを逐一、確認できることにより、
どのようなデータを解析しようとしているか確認し、適切な設定へ変更できます。

モデルが可視化できる

X-Pack Machine Learningはモデルを可視化できます。
X-Pack Machine Learningでは、解析している領域を可視化できます。
この可視化は、Prelert時にはindexを解析し、Timelionを利用して表示しなければなりませんでした。

Prelertのベータ版でMachine Learningを体験する | Elastic

X-Pack Machine Learningでは、モデルがどうデータを解析しているかを
標準で見えるようになっています。
そのため、本来ここはこうあるべきだったが、こうなったから異常と判定されたことを確認できます。

最後に

Prelertよりも非常に簡単に異常検知ができました!
また、生データを解析時に見れるといった痒い部分にも手が届いており、
非常に期待できる機能となっています!

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

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

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

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