Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

Elasticsearchの機械学習機能を使ってみた

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Prochain SlideShare
ナレッジグラフ入門
ナレッジグラフ入門
Chargement dans…3
×

Consultez-les par la suite

1 sur 18 Publicité

Plus De Contenu Connexe

Diaporamas pour vous (20)

Similaire à Elasticsearchの機械学習機能を使ってみた (20)

Publicité

Plus récents (20)

Elasticsearchの機械学習機能を使ってみた

  1. 1. 1 2020年3月23日 ITコミュニティ発表 Elasticsearchの機械学習機能を使ってみた! SOMPOシステムイノベーションズ株式会社 有坂祐一(ありさかゆういち) Mail:yarisaka@sompo-sys-i.com Twitter:@A1617Yuichi
  2. 2. 2 目次 1 はじめに   ・自己紹介   ・前回発表 2 Elasticsearch   ・Elasticsearchとは   ・Elasticsearchの機械学習機能の歴史 3 実行環境   ・環境構築   ・テストデータ作成 4 実行結果   ・データの概要把握(Data Visualizer)   ・教師なし学習のための機械学習ジョブの作成   ・異常値検出(Anomaly Detection)   ・将来予測(Forecast)   ・教師あり学習のための機械学習ジョブの作成   ・外れ値検知(Outlier Detection)   ・教師あり学習の分類(Classification) 5 まとめ
  3. 3. 3 1 はじめに  ・自己紹介   2001/4  株式会社日立システムアンドサービス   2015/4  株式会社日立製作所   2017/4∼ SOMPOシステムイノベーションズ株式会社(出向中)   金融機関向け業務システム開発に携わり、設計・開発・テストなどを経験。   開発言語はJava・COBOLなど。   現在はSOMPOグループの未来革新PJTで、DB周辺を担当。DB製品はIBM DB2。   → 今話題の人工知能(Artificial Intelligence)とは何か?     Elasticsearchの機械学習機能(Machine Learning)とは何か?が動機となり取り組みました。  ・前回発表   2019/6  第3回MUIT社との技術交流会         Elasticsearchを使ってTwitter監視アプリの作成!NoSQL活用のススメ         発表資料はSlideShareで公開しています。 ・2020年3月末で出向解除になります。   ありがとうございました。
  4. 4. 4 2 Elasticsearch  ・Elasticsearchとは Wikipediaから引用 7.6 / 2020年2月11日 ElasticsearchはApache Luceneをベースとした、Javaで書かれた 全文検索ソフトウェアである。2010年2月にShay Banonによって 初版がリリースされた。オープンソースだが、現在はElastic社が中 心になって開発が進められている。 圧倒的な全文検索スピードと利便性を誇る。Elasticsearchの内部 ではApache Luceneの全文検索をフル活用している。スケーラブ ル,スキーマレス,マルチテナント(SaaS)を特徴とする。JSON 形式でデータを保管するドキュメント型データベース。 検索エンジン業界では最も人気がある。著名な導入例として、 Facebook, Netflix, GitHub, 日本経済新聞社, RICOH(社内基盤監視) などがある。
  5. 5. 5  ・Elasticsearchの機械学習機能の歴史 Qiitaの@yutaka_unoさんの記事から引用   2016/10 Ver.5.0 行動分析技術プロバイダのPrelert社の買収(2016/9)   2017/05 Ver.5.4 Elastic Machine Learningのリリース(2017/3)   2017/12 Ver.6.1 Kibanaでデータの概要把握(Data Visualizer)     → 9ページ            異常値検出(Anomaly Detection)           → 11ページ            将来予測(Forecast)                → 13ページ   2018/02 Ver.6.2 日時フィルタ(Calendar Management)の追加   2018/06 Ver.6.3 ソースコードの公開   2018/08 Ver.6.4 Kibanaでサンプルデータの公開   2018/11 Ver.6.5 KibanaのGUIからデータ取り込みの実現       → 8ページ   2019/01 Ver.6.6 注釈(Annotation)の追加   2019/06 Ver.7.2 データ形式の変換(Data Frames)   2019/08 Ver.7.3 外れ値検知(Outlier Detection)            → 15ページ   2019/10 Ver.7.4 教師あり学習の回帰分析(Regression)   2019/12 Ver.7.5 教師あり学習の分類(Classification)         → 16ページ
  6. 6. 6 今回(2020/3) ・Mac OS 10.15.2 ・Elastic Stack  ・Elasticsearch 7.6.0  ・Kibana 7.6.0   ・Machine Learning Trial  ・Logstash 7.6.0 ・Metricbeat 7.6.0 ・Java SE 12.0.1 3 実行環境  ・環境構築   Elastic Cloud(Elastic社提供のクラウド環境)ではなくオンプレミスで環境構築。   公式サイトからダウンロード。 前回発表時(2019/6) ・Mac OS 10.14.1 ・Elastic Stack  ・Elasticsearch 7.0.0  ・Kibana 7.0.0  ・Logstash 7.0.1 ・Metricbeat 7.1.0 ・Java SE 12.0.1 <今回使用した製品> ・Elasticsearch  Logstashなどから転送されたデータを  JSON形式で保管するデータベース。 ・Kibana  Elasticsearchに格納されたデータを  ブラウザで可視化するGUIツール。  Machine Learning機能は30日間無料 トライアル版を使用。 ・Elastic Cloudでは、ほぼ全ての   最新機能を使用できます。
  7. 7. 7  ・テストデータ作成   Kaggle(カグル・https://www.kaggle.com)は企業や研究者がデータを投稿し、世界中の統計家や   データ分析家がその最適モデルを競い合う、予測モデリング及び分析手法関連プラットフォーム。   Kaggleからデータセット(CSV形式)をダウンロードして、KibanaのGUIから取り込み、   Elasticsearchに格納しました。 <Dataset> COVID-19 Complete Dataset(Updated every 24hrs) 世界の都市別の新型コロナウィルスの 感染者数、死亡者数、回復者数のデータ <Acknowledgements> WHO Coronavirus disease (COVID-2019) situation reports  ①データセットのダウンロード ・注目度が高いと思い選びました。   43,650 Downloads(3/15時点)
  8. 8. 8  ②テストデータの抽出   1/22∼3/4(43日間)の日本・中国・アメリカ   の新型コロナウィルスの感染者数を抽出  ③KibanaのGUIからアップロード  ④ElasticsearchがIndex(Database)を自動生成 ・Index定義(マッピン グ定義)の作成は難易度 が高いので、自動生成機 能が役立ちました。
  9. 9. 4 実行結果  ・データの概要把握(Data Visualizer)   ファイルをアップロードすると、機械学習機能がファイルを分析し、データに関する情報を   フィードバックします。 ・(左)3カ国の43日間の ドキュメント数(レコー ド数)の分布。 ・(右)感染者数 (Confirmed)の分布。 ・(左)観測日 (ObservationDate)の開 始日1/22と終了日3/4。 ・(右)国別(Country)のド キュメント数(レコード 数)の割合。 9
  10. 10.  ・教師なし学習のための機械学習ジョブの作成   教師なし学習の目標は、データの特徴をとらえることです。   教師なし学習のための機械学習ジョブ(Multi Metric Job)を作成しました。   機械学習ジョブがデータを分析用にモデル化します。 ・1/22∼3/4の国別の感染者数 (Confirmed)を、グラフ化しました。 今回は分析期間を指定しましたが、Logstash などから継続的にデータ転送することで、リ アルタイム分析が可能になります。 10 ・作成した機械学習 ジョブの定義 ・中国・アメリカ・ 日本の感染者数の グラフ
  11. 11.  ・異常値検出(Anomaly Detection)   機械学習機能が、過去の異常と比較するとどうなのか、これまでの異常よりも異常性が高いかどうか、   その他のデータと比較するとどうなのかを考慮して、異常の可能性を0∼100のスケールで正規化します。   この値をAnomaly Scoreとして表示します。 ・日本の感染者数の異常値検出 Warning(0∼24)のみ。 Anomaly Score = 2 (Top Score, 2/21) 11 ・中国の感染者数の異常値検出 Warning(0∼24)のみ。 Anomaly Score = 2 (Top Score, 2/27) ・アメリカの感染者数の異常値検出 Warning(0∼24)・Minor(25∼49)・Major(50∼74)を検出。 Anomaly Score = 70 (Top Score, 2/23)
  12. 12. 12 ・日本・中国・アメリカの感染者数のデータを、並べて表示しました。  アメリカに異常値が検出されています。感染者数が不安定であることを表しています。 
  13. 13.  ・将来予測(Forecast)   機械学習機能が、搭載された予測モデルを用いて、予測日時までのモデルの成長を反映した予測を行い   ます。予測結果はElasticsearchのIndex(Database)に書きこまれ、ユーザーは予測モデルと実際の結果を   比較することができます。3/3∼4/2の30日間の将来予測を実行しました。3/21に同じデータセットを   ダウンロードして、3/19時点の予測モデルと実際の結果を比較しました。 ・日本の感染者数の将来予測 3/19時点の予測モデルの感染者数=484 3/19時点の実際の感染者数= 924    13 ・中国の感染者数の将来予測 3/19時点の予測モデルの感染者数=135,537 3/19時点の実際の感染者数= 81,156 ・アメリカの感染者数の将来予測 3/19時点の予測モデルの感染者数=95 3/19時点の実際の感染者数= 13,677
  14. 14.  ・教師あり学習のための機械学習ジョブの作成   教師あり学習の目標は、分類(Classification)と回帰(Regression)の手法を使い、   テストデータを正解させることです。   教師あり学習のための機械学習ジョブ(Analytics Job)を作成しました。   機械学習ジョブ(Analytics Job)が使用するのは、時系列データに限りません。 14 ・作成した機械学習 ジョブの定義 ・1/22∼3/4(43日間)の日本・中 国・アメリカの新型コロナウィルス の感染者数をテストデータとして使 用しました。(教師なし学習と同じ データ) ・教師あり学習機能(P14∼P16) はベータ版です。
  15. 15.  ・外れ値検知(Outlier Detection)   外れ値検知は統計学的な手法で外れ値を検出するもので、異常値とは異なります。   Elasticsearchでは局所外れ値因子法(LOF)、k近傍法(kNN)などのアルゴリズムを使用しています。   データがIndex(Databese)内の他のデータと比べて、外れ値である可能性を0∼1のスケールで表します。 ・今回は単純に感染者数(Confirmed)の 外れ値検知なので、中国の感染者数が外 れ値として検知されています。 ・パラメータを増やすとより正確な検知 が可能になります。バッチデータを投入 した時の異常データチェックなどに使用 できます。 15 ・外れ値の可能性をOutlier Scoreで表し ています。
  16. 16.  ・教師あり学習の分類(Classification)   Elasticserchではブーストツリー回帰モデル(Boosted Tree Regression Model)と呼ばれるアルゴリズムを   使用しています。分類には2クラス分類(Binary Classification)と多クラス分類(Multi Class Classification)   があります。Elasticsearch Ver.7.6 では2クラス分類のみ実行できます。   分類APIは、混同行列(Confusion Matrix)を作成するための値を返します。 ・2クラス分類のみ実行可能なので、どの ような機能かを知るために、日本と中国の データを使って実行しました。 ・分類モデルを作成してみました。結果は1 レコードを除いて正解しています。モデルの 修正(学習)は、今回はできませんでした。 16 ・左列からテストデータが訓練に使用され たかどうか、分類モデルが推測した国名、実 際の国名を表しています。
  17. 17. 17 5. まとめ ・Elasticsearchの機械学習機能は、機械学習の知識がなくても簡単に利用できます。  コーディングも不要です。実行しながら勉強することができました。  機械学習機能を分析してみると、目的に応じて機械学習のアルゴリズムを選択する必要があることに  気付きました。 ・Elasticsearchはデータ収集と検索速度を長所とするDB製品です。  収集したデータをどのように活用していくかがポイントです。  ①データ収集 → ②可視化 → ③分析 → ④活用 → ⑤自動化  前回発表(2019/6)では②可視化まで、今回は③分析まで実行してみました。 ・社外イベントのElasticsearch勉強会、Elasticsearchハンズオンセミナーに参加しました。  2ヶ月に1回程度、2∼3時間の頻度で、開催されています。  ①Elastic Cloudの基礎的な使い方、②最新バージョンの紹介などのテーマがあリました。
  18. 18. 18 2020年3月23日 ITコミュニティ発表 Elasticsearchの機械学習機能を使ってみた! 有坂祐一 ありがとうございました

×