本稿では,オンライン機械学習を実現するためのミドルウェアであるJubatusのユースケースとして,不動産賃貸物件を題材とし,利用者の嗜好を反映させながら絞り込みを行い最終的に物件を推薦するサービスを開発した.このサービスでは物件の属性情報を基にMDS(多次元尺度構成法)を用いて探索空間を構築する.利用者の操作に応じ,その空間上で二分探索を基本的発想とする幾何的絞り込み,およびJubatusの分類器を利用した絞り込みを行い,探索空間を狭めていく.さらに3次のBスプラインによるcurve fittingを行い,絞り込みの収束点を予測した上で,利用者の嗜好に合致する物件一覧を提示する.

1.はじめに

1.1  オンライン機械学習の活用

 近年の計算機の能力向上に伴い,機械学習を積極的に活用したサービスを実現するための取り組みが盛んに行われている.機械学習は音声認識や画像認識などのノイズ除去や特徴の抽出に使われるほか,ある商品の購入者はこの商品も購入しているといった推薦 (協調フィルタリング)にも利用されている.

 機械学習を利用する多くのケースではバッチ処理により学習させる.そこで得た結果を取り出し,オンラインでの評価に利用するのが一般的な適用方法である.しかしながら,バッチ処理による学習では入力に必要とする大量のデータを保持する必要がある,または処理するための大規模な環境が必要になるなど,処理にあたっての種々のコストが大きいことや,バッチ処理に一定の時間を必要とするため,学習結果をサービスに反映させるまでのタイムラグが存在する,といったさまざまな課題がある.

 そこで,学習をオンラインで行うことで,それらの問題を解消するオンライン機械学習が注目される.オンラインで学習させることで,その場限りの利用者のアクションを学習結果に反映させることができ,短いタイムスパンで利用者個別にフィードバックをかけることができる.

1.2 Jubatusについて

 Jubatus [1]はNTTソフトウェアイノベーションセンタと(株)Preferred Infrastructureが共同で開発したオンライン機械学習を実現するためのミドルウェアである.大量のデータを処理するための基盤技術としては,Googleが発表した論文をベースにOSSとして開発されたHadoop [3]があり,これをベースにした機械学習ライブラリであるMahout [4]が存在する.しかしHadoopはバッチ処理ベースのシステムであるため,結果を得るまでに一定の処理時間を必要とする.適切なアクションを適切なタイミングで行うためには,よりリアルタイム性が求められるシーンがあり,Jubatusはそのために開発された.2011年に最初のバージョンがリリースされて以降,機能拡張が進められており,現在では「分類」「推薦」「回帰」「グラフ処理」「異常値検知」「クラスタリング」といった機能を備えている.

 Jubatusの分類器はJubatusの初版リリースから実装されている機能である.これに対する検証の結果,利用するにあたってのCPU使用率やメモリ消費量などのフットプリントが小さいことや,学習を行った際に比較的安定して動作するものであることを確認できたことから[2],本稿で紹介するサービスではこれを利用している.

 本稿の内容のうち,Jubatusを利用した処理については3.2.3節で記述している.また,Jubatusの分類器のシステム中での位置付けやプロセスの管理方法については4.2節と4.3節で述べる.