JubaQL Overview

機械学習とJubaQL

ビジネス上の需要からオンライン機械学習を用いるユーザが必要としているものは大きく5つのステップに分けられます。

  1. データの収集
  2. 仮説の構築
  3. 仮説の検証
  4. 仮説のモデル化
  5. モデルに基づいたオンラインシステム構築

Jubatus には様々な機能が搭載されていますが、それらを正しく利用するためにはやや煩雑な準備が必要になります。 Jubatus は上記の5つのステップの中では「仮説のモデル化」と「モデルに基づいたオンラインシステム構築」のフェーズにおいては有力な手段となり得ました。 しかし、その前のステップすべてに於いて未だに各ユーザの努力が必要でした。

そこで、SQL-like なクエリとして機械学習を実行可能とすることで、非プログラマかつSQLを扱える方々に対するJubatus導入の閾値を下げるために、SQL/CQLベースのDSL(ドメイン特化言語)としてJubaQLを開発しました。

JubaQLの目的

JubaQLとは、機械学習向けのストリーム処理・バッチ処理を実現するSQL/CQLベースのDSL(ドメイン特化言語)及びその処理系です。 JubaQLは大きく分けて以下の2つを実現することを目標にしています。

  1. SQL-Likeなインターフェースによる機械学習の実行
  2. バッチ処理とストリーム処理の統合的な処理

JubaQLの機能

JubaQL で提供されている主要な機能は以下の5つです。

・ JubatusのアルゴリズムをCQL/SQLを介して実行でき、かつ処理をスケールさせる仕組み

JubaQLはSQL-likeなシンタックスをベースとし、機械学習の観点で拡張された言語です。 習得、利用が容易であり、親しみやすい言語を目指して作られています。

・ 継続的にデータを投入し、処理し続けることの出来る仕組み

JubaQLはストリームデータを容易に再処理できます。 すなわち、(例えばHDFSなどに)蓄積されたストリームデータを処理し始め、そこからシームレスに(例えばApach Kafkaから受け取る)最新のストリームデータを継続的に処理できます。 これによって、結果に再現性が得られ、またパラメータチューニングが可能になります。

・ カスケード処理

クライアント側でデータに変更を加えずに、サーバ側でストリームデータを加工することができます。 あるモデルから得られた分析結果を入力として他のモデルに与えることが、ユーザの介在やクライアントとサーバ間の通信を必要とせずに実現できます。

・ トリガーベースのアクション

ユーザ定義関数(UDF = user-defined function)を定義することができ、ストリームデータに対して特定の条件が満たされたときにそれを実行するトリガーとして設定することができます。 これによって、特定のイベントが観測されたときに、データをデータベースに格納したり通知することがサーバをポーリングすることなく実現できます。

・ 時系列データ分析

ストリームデータに対してタイムウィンドウを定義することで、そのウィンドウに対して特徴量を取得し、それを使ってJubatusで学習やクエリすることが出来ます。 単一のイベントではなく、順に出現する複数のイベントに対する分析(例. 位置情報の追跡)が可能になります。