データストリーム(時系列データ)の機械学習とシステムアーキテクチャ

機械学習技術 人工知能技術 デジタルトランスフォーメーション技術. センサーデータ&IOT ICT技術 ICTインフラ技術 本ブログのナビ

データストリーム(時系列データ)機械学習とシステムアーキテクチャについて

この世の中は静的なデータではなく動的なデータに溢れている。たとえば、工場やプラント、交通や、経済、ソーシャルネットワーク等で膨大な動的データが形成されている。工場やプラントのケースでは一般的な石油生産プラットフォームのセンサーでは、毎分10,000回の観測が行われ、ピーク時には100,000 o/mに達したり、モバイルデータのケースではミラノのモバイルユーザーは、1分間に20,000回の通話/SMS/データ接続を行い、毎分20,000回、ピーク時には80,000回に達したり、ソーシャルネットワークの場合は、例えばFacebookでは、2013年5月現在、1分間に300万件の「いいね!」を観測している。

これらのデータが現れるユースケースでは「最後の10分でタービンのバーリングが振動し始めたときに予想される故障のタイミングは何か?最後の10分間に検出されたように、タービンのバーリングが振動し始めたときの予想故障時間は?」とか「人々がいるところに公共交通機関はあるのか?」とか「話題のトップ10について、誰が議論をしているのか?」等の粒度の細かな様々な課題が生じ、それらに対する解が求められている。

このような時間軸上でのデータを扱う事で様々なDX人工知能のアプリケーションを扱うことができる。またそれらの処理を行う機械学習技術としては時系列データ解析技術として各種のものがある。また、システムアーキテクチャとしてもIOT技術データベース検索技術様々なアプローチがある。

本ブログでは以下に示すような項目でそれらについて述べる。

実装

WoT(Web of Things)は、インターネット上のさまざまなデバイスを相互に接続し、デバイス間の通信や相互作用を可能にするための標準化されたアーキテクチャとプロトコルとなる。WoTは、IoT(Internet of Things)を拡張し、デバイスとのやり取りを簡素化し、相互運用性を高めることを目的としている。

今回はこのWoTに関して、一般的な実装手順やライブラリ、プラットフォーム、更にpythonやCによる具体的な実装例について述べている。

分散型IoT(Internet of Things)システムとは、異なるデバイスやセンサーが相互に通信し、情報を共有し、協調して動作するシステムのことを指す。今回は、この分散型IoTシステムのデバイス間通信技術の概要と実装例について述べる。

オンライン学習(Online Learning)は、データが逐次的に到着する状況下で、モデルを逐次的に更新して学習する手法であり、通常の機械学習で行われるバッチ学習とは異なり、新しいデータが到着するたびにモデルが更新されるアルゴリズムであることが特徴となる。ここでは、このオンラン学習に関して様々なアルゴリズムと適用事例およびpythonによる実装例について述べている。

オンライン予測(Online Prediction)は、データが逐次的に到着する状況下で、モデルを使用してリアルタイムに予測を行う手法となる。”オンライン学習の概要と各種アルゴリズム、適用事例と具体的な実装“で述べたオンライン学習は、モデルの学習は逐次行うが、モデルの適用の即時性は明確に定義されていないのに対して、オンライン予測は、新たなデータが到着した時点で即座に予測を行い、その結果を利用することが特徴となる。

ここではこのオンライン予測に関しては様々な適用事例と具体的な実装例について述べている。

ベイズ構造時系列モデル(Bayesian Structural Time Series Model; BSTS)は、時間とともに変化する現象をモデル化する統計モデルの一種であり、予測や因果推論を目的として利用されるものとなる。ここではこのBSTSに関しての概要と様々な応用事例及び実装例について述べている

技術トピック

Apache Sparkは、オープンソースの並列分散処理基盤となる。Sparkは複数のコンポーネントで構成されている。並列分散処理のエンジンであるSpark Coreをベースに、用途別のライブラリ群として、SQL処理用のSpark SQL、ストリーム処理用のSpark Streaming、機械学習処理用のMLlib、グラフ処理用のGraphXなどとなる。

Spark CoreのデータソースにはHDFS(Hadoop Distributed File System)だけでなく、HIve、HBase、PostgreSQL、MySQL、CSVファイルなどの入力を受け付けることができる。

Sparkは大量データに対し高速な並列分散処理を実現する。Sparkはデータソースからデータを読み出した後、ストレージへのI?OやネットワークI/Oが極力少なくなる様に処理する。このため、Sparkは同じデータに対する変換処理が連続するケースや、機械学習のように結果セットに対して複数回繰り返し処理を行う処理に適している。また、同じレイテンシーで動作することを利用してストリーム処理を行うこともできる。Sparkの特徴を述べるために「機械学習処理」「業務処理」、「ストリーム処理」の観点でそれぞれ以下に述べる。

Apache Sparkのデータ処理には「RDD(Resillient Distributed Dataset)」と呼ばれるデータ構造を利用する。Sparkのプログミングモデルは「RDDを加工して新たなRDDを生成し、これを繰り返すことで目的の結果を得る」というものになる。

ここではこの動作の仕組みを詳しく見て、RDDの構造や特徴、およびRDDを中心とした分散構造がクラスタ上でどのように行われるかについて述べる。まずはRDDの構造や特徴、RDDに適用できる処理について述べる。

今回はSparkを動作させる環境の整備について述べる。Sparkはクラスタ上での動作を前提としている。しかし作成中のアプリケーションの挙動を確認したい場合や、機能テストを行いたい場合はクラスタ環境を構築するのは大掛かりで面倒であるので、単一のマシン上でのsparkを動作さらることも可能となっている。今回はまず単一マシン上での環境構築について述べ、さらにクラスタ環境を構築する手順について述べる。

今回はApache Sparkの開発環境の構築方法、アプリケーションのビルド法および実行方法について述べる。SparkではRDDを直接操作する最も基本的なライブラリのほか、いろいろな用途に特化したエコシステムの各種ライブラリが同梱されており、さまざまなプログラミング言語むけのAPIが提供されている。今回はApache Sparkが記述されているScalaを用いたアプリケーションの構築について、Spark-clintを利用する前提で述べる。まず、Sparkアプリケーションは、ソースコードをコンパイルしてJARファイルにパッケージングする必要がある。今回はこのためにsbtを用いる。sbtはScalaやJavaで記述されたソースコードのコンパイルやライブラリの依存関係の管理、パッケージングなど、アプリケーション開発プロジェクトにおけるビルドプロセスを統合的に管理するためのツールとなる。

Sparkプロジェクトは、低レイテンシーでのジョブ実行を重視したクラスタコンピューティングのフレームワークで、2009年にUC BerkleyのAMP Labから生まれた比較的新しいプロジェクトとなる。SparkはHadoopと共存可能だが(Hadoop Distributed File System(HDFS)に格納されたファイルに接続するなど)、計算の多くをメモリ上に保持することでジョブ実行時間の大幅な高速化を目指している。

今回はClojureライブラリであるSparklingを使ってSparkジョブを実行するために必要なキーコンセプトについて説明する。

GraphXは、Sparkと連携して動作するように設計された分散グラフ処理ライブラリとなる。 “Apache SparkとMLlibによる大規模な機械学習“で述べたしたMLlibライブラリのように、GraphXはSparkのRDDの上に構築された一連の抽象化機能を提供する。グラフの頂点と辺をRDDとして表現することで、GraphXは非常に大きなグラフをスケーラブルに処理することができる。

グラフ並列システムは、表現できる計算の種類を制限し、グラフを分割・分散する技術を導入することで、高度なグラフアルゴリズムを一般的なデータ並列システムより数桁速く効率的に実行することが可能となる。

データストリームの課題を解くには、様々な要件が必要となる。以下にそれらのシステムに求められる特性を示す。(1)巨大なデータへの対応、(2)ストリームデータへの対応、(3)ヘテロジニアスなデータセットの連携、(4)不完全なデータへの対応、(5)ノイジーなデータへの対応 、(6)応答性(速度)の高い答えを提供する、(7)粒度の細かな情報へのアクセス、(8)複雑なドメインモデルの統合

これらに対して対応できる可能性のある既存のシステムとしては(1)データストリーム管理システム(Data Stream Management System:DSMS)、(2)複合イベント処理システム(CEP(Complex Event Procesing)system)の2つがある。

データストリーム管理システム(Data Stream Management System:DSMS)は、連続したデータの流れを管理するコンピュータプログラムとなる。DSMSはデーベース管理システム(DBMS)と似ているが、DBMSが通常のデータベースに格納された静的なデータを扱うのに対して、DSMSはクエリを1度だけ実行するのではなく、インストールされている限り連続的に永久に実行し続ける形態となる。ほとんどのDSMSはデータ駆動型なので、システムにデータが取り込まれる限り、連続的なクエリは新たな結果を生成し続けることになる。

DSMSでの大きな課題は、決められた量のメモリとデータへのランダムアクセスなしで、潜在的に無限量のデータストリームを処理することである。1回のパスで取り込むデータを制限する手法にはいくつかあり、大きく二つの種類に分けることができる。一つにはデータをサマライズしようとする圧縮技術があり、もう一つにはデータを(有限な)部分に分割しようとするウィンドウ技術がある。

イベント処理は、発生した事象(イベント)に関する情報(データ)のストリームを追跡して分析(処理)し、何らかの結論を得る手法である。[1] 複合イベント処理(CEP:Complex Event Procesing)は、複数のソースからのデータを組み合わせ、[2]より複雑な状況を示唆するイベントやパターンを推論するイベント処理である。複合イベント処理のゴールは、意味のあるイベント(例えば何らかの機会または脅威)を明らかにして、[3] できるだけ速やかに対処することである。

これらのイベントは営業の引き合いや受注、お客様からの問い合わせ電話など、組織のさまざまな層で発生している。また、それらはニュース記事[4] やテキストメッセージ、SNSへの投稿、株式市況、交通情報、天気予報やその他の種類のデータかもしれない。 イベントは測定値が時刻や温度その他の、あらかじめ定義されていたしきい値を超えた「状態の変化」として定義されることもある。CEPは組織にリアルタイムでパターンを分析する新たな手法を与え、ビジネスサイドがITとサービス部門とのより良いコュミニケーションを実現するとアナリストは提唱している。

Stream Resoning技術とはリアルタイムで、複数の、異種の、巨大な、必然的にノイズの多いストリームデータを用いて、極めて多数の同時ユーザーの意思決定プロセスをサポートするためにデータに意味づけを行うシステムとなる。

Apcheで提供されているストリーム処理を実現する分散プラットフォームについてまとめた。

Apache Sparkは、オープンソースの並列分散処理基盤となる。Sparkは複数のコンポーネントで構成されている。並列分散処理のエンジンであるSpark Coreをベースに、用途別のライブラリ群として、SQL処理用のSpark SQL、ストリーム処理用のSpark Streaming、機械学習処理用のMLlib、グラフ処理用のGraphXなどとなる。

Spark CoreのデータソースにはHDFS(Hadoop Distributed File System)だけでなく、HIve、HBase、PostgreSQL、MySQL、CSVファイルなどの入力を受け付けることができる。

Sparkは大量データに対し高速な並列分散処理を実現する。Sparkはデータソースからデータを読み出した後、ストレージへのI?OやネットワークI/Oが極力少なくなる様に処理する。このため、Sparkは同じデータに対する変換処理が連続するケースや、機械学習のように結果セットに対して複数回繰り返し処理を行う処理に適している。また、同じレイテンシーで動作することを利用してストリーム処理を行うこともできる。Sparkの特徴を述べるために「機械学習処理」「業務処理」、「ストリーム処理」の観点でそれぞれ以下に述べる。

Siegen大学のBusiness & Information Systems Engineering (BISE) InstituteのDaniel Metz氏の学位論文のテーマは、過去10年間のリアルタイムエンタープライズ(RTE)のコンセプトとそれを支える技術に関する分析であり、その主な目的は欠点を特定することである。その後、イベント駆動型アーキテクチャ(EDA)と複雑なイベント処理(CEP)のパラダイムを活用し、RTEの概念を実現するために不可欠な、異なる企業レベルにわたる時間的・意味的垂直統合のギャップを克服するリファレンスアーキテクチャを開発した。開発したリファレンスアーキテクチャは、中小企業の典型的な特徴を持つ鋳造工場に実装され、検証されている

今回は状態空間モデルの応用の一つであるカルマンフィルターのClojureでの実装について述べる。カルマンフィルターは離散的な誤差のある観測から、時々刻々と時間変化する量(例えばある物体の位置と速度)を推定するために用いられる無限インパルス応答フィルターであり、その使いやすさからレーダーやコンピュータービジョンなど幅広い工学分野で利用されている技術となる。具体的な利用例としては、機器内蔵の加速度計やGPSからの誤差のある情報を統合して、時々刻々変化する自動車の位置を推定したり、人工衛星やロケットの制御などにも用いられている。

カルマンフィルターは以前述べた隠れマルコフモデル(hidden markov model)と類似した隠れ状態とそれらから生成される観測データを持つ状態空間モデルで、状態は連続であり、状態変数の変化はガウス分布に従う雑音を用いて統計的に記述されるものとなる。

コメント

  1. […] このSW技術の対象をIOTの情報まで広げることで様々な情報源を元にしたフレキシブルなサービスが構築出来、前述のIOTのビジネス化への障壁の一つを崩せる可能性がある。SWのIOT技術への拡張には意味的解釈を付与したデータストリーム技術が開発されている。 […]

  2. […] それらの技術に加えて近年の最新IT技術であるセマンティックウェブ技術やIOT技術、ストリーミング推論技術を用いたスマートファクトリー技術を適用することで運用の効率化が行え、更にリスク解析技術と融合されたICT技術を用いることで更なる安全性の追求ができるものと考えられる。 […]

  3. […] これらオントロジーによって整理されたナレッジとストリームデータハンドリングに代表されるIOT技術、更にスパースモデリングや深層学習、時系列データ解析等の機械学習技術や、各種推論技術を組み合わせることで、自律的なリスク管理システムの構築が可能となる。 […]

  4. […] さらに「データストリーム(時系列データ)の機械学習とシステムアーキテクチャ」に述べられているように、それらの判定されたデータをさらにオントロジー等のデータと組み合わせてリアルタイムの推論を行なわせたり、「グローバルマッチングでのsimilarity(類似性)(5)確率的アプローチ」に述べによあな確率的な推論(マルコフロジックネットワーク)を行うこともできる。 […]

  5. […] 機械学習技術サマリー 確率的生成モデルサマリー 時系列データ解析技術サマリー ストリームデータ制御技術サマリー 人工知能技術サマリー IOT&センサー技術サマリー  デジタルトランスフォーメーション技術サマリー […]

  6. […] 機械学習技術 人工知能技術  デジタルトランスフォーメーション技術.  センサーデータ&IOT ICT技術  ストリームデータの処理と機械学習 […]

  7. […] 人工知能、機械学習、IOTを組み合わせたデータストリーム技術 | Deus Ex Machina より: 2021年7月26日 4:46 AM […]

  8. […] 機械学習技術 人工知能技術  デジタルトランスフォーメーション技術.  センサーデータ&IOT ICT技術   ストリームデータ処理 […]

  9. […] 人工知能、機械学習、IOTを組み合わせたデータストリーム技術 | Deus Ex Machina より: 2021年7月29日 5:01 AM […]

  10. […] デジタルトランスフォーメーション技術. センサーデータ&IOT ストリームデータの処理と機械学習 確率的生成モデル 関係データ学習 サポートベクトルマシン […]

  11. […] デジタルトランスフォーメーション技術. センサーデータ&IOT ストリームデータの処理 確率的生成モデル 深層学習 関係データ学習 サポートベクトルマシン […]

  12. […] デジタルトランスフォーメーション技術. センサーデータ&IOT ICT技術 ストリームデータの処理と機械学習 ICTインフラ技術 本ブログのナビ 確率的生成モデル 関係データ学習 […]

  13. […] LINE コピー 2023.07.17 2023.06.26 機械学習技術 時系列データ解析技術 ストリームデータ制御技術 人工知能技術 IOT&センサー技術 セマンティックウェブ技術 […]

  14. […] & UX  ITインフラ技術 確率的生成モデル 時系列データ解析技術 ストリームデータ制御技術 IOT&センサー技術 コンピュータのハードウェア […]

  15. […] デジタルトランスフォーメーション技術 センサーデータ&IOT ICT技術 ストリームデータの処理 ICTインフラ技術 確率的生成モデル 関係データ学習 […]

  16. […] デジタルトランスフォーメーション技術 センサーデータ&IOT ICT技術 ストリームデータの処理 ICTインフラ技術 確率的生成モデル 関係データ学習 […]

  17. […] デジタルトランスフォーメーション技術. センサーデータ&IOT ICT技術 ストリームデータの処理と機械学習 ICTインフラ技術 Clojure Python […]

  18. […] デジタルトランスフォーメーション技術. センサーデータ&IOT ICT技術 ストリームデータの処理と機械学習 ICTインフラ技術 並列分散処理 […]

  19. […] また、リアルタイムデータのハンドリングに関しては”データストリーム(時系列データ)の機械学習とシステムアーキテクチャ“を、またセキュリティ技術に関しては”暗号化と […]

  20. […] ink)を使用して、データの変化をリアルタイムで監視し、必要なアクションを実行する。”データストリーム(時系列データ)の機械学習とシステムアーキテクチャ“も参照のこと。 […]

  21. […] をリアルタイムで監視し、必要なアクションを実行します。リアルタイム処理に関しては”データストリーム(時系列データ)の機械学習とシステムアーキテクチャ“も参照のこと。 […]

  22. […] デジタルトランスフォーメーション技術 センサーデータ&IOT ICT技術 ストリームデータの処理 ICTインフラ技術 確率的生成モデル 関係データ学習 […]

  23. […] デジタルトランスフォーメーション技術 センサーデータ&IOT ICT技術 ストリームデータの処理 ICTインフラ技術 確率的生成モデル 関係データ学習 […]

  24. […] PIやデータフィードを使用することもできる。詳細は”データストリーム(時系列データ)の機械学習とシステムアーキテクチャ“や”センサーデータ&IOT技術“等を参照のこ […]

  25. […] デジタルトランスフォーメーション技術. センサーデータ&IOT ストリームデータの処理 確率的生成モデル 深層学習 関係データ学習 サポートベクトルマシン […]

  26. […] デジタルトランスフォーメーション技術 センサーデータ&IOT ICT技術 ストリームデータの処理 ICTインフラ技術 確率的生成モデル 関係データ学習 […]

  27. […] 人工知能、機械学習、IOTを組み合わせたデータストリーム技術 | Deus Ex Machina より: 2021年7月24日 4:28 AM […]

  28. […] 人工知能、機械学習、IOTを組み合わせたデータストリーム技術 | Deus Ex Machina より: 2021年7月30日 4:49 AM […]

  29. […] 人工知能、機械学習、IOTを組み合わせたデータストリーム技術 | Deus Ex Machina より: 2021年8月3日 4:53 AM […]

  30. […] デジタルトランスフォーメーション技術 センサーデータ&IOT ICT技術 ストリームデータの処理 ICTインフラ技術 確率的生成モデル 関係データ学習 […]

タイトルとURLをコピーしました