楽天も情報爆発しています

楽天テクノロジーカンファレンスには行かれなかったのだが、大規模分散処理フレームワークの設計、実装が進行中 -- 楽天版MapReduce・HadoopはRubyを活用などを読むと、けっこうおもしろそうだったのだな、と分かる。

楽天技術研究所がどういう位置づけなのかは分からないが、こういう基盤技術の開発を支援しているというのは評価していいと思う。(車輪の再発明という気がしないでもないが)

個人的な興味としては楽天が大規模データに対してどういうことをしているかということなのだが、記事を見るといろいろ書いてある。

 計算モデルがシンプルでも規模が巨大になるとまったく別の問題が生まれてくる。処理すべき情報量が爆発的に増加しているからだ。

 例えば協調フィルタリングではユーザーを縦軸に、商品アイテムを横軸にした購買履歴マトリックスについて計算処理を行う必要があるが、あまりに量が多く、素直に実装すると「2日待っても計算が終わらないということになる」(同社)。同社では過去1年だけでも、処理すべきデータ量は3.7倍に膨らんだという。

 このため同社ではアルゴリズムの工夫と大規模分散処理という2つの面で取り組んでいるという。

 アルゴリズム面では、例えば嗜好の似たユーザーかどうかを判定するのに、「ローカリティ・センシティブ・ハッシング」(LSH:Locality Sensitive Hashing)というテクニックを使っているという。LSHを使うと、ユーザーの購買や評価の履歴が作る個別ベクトルの距離が小さい場合、高い確率でハッシュ値が一致するため、ベクトル間の距離をすべて計算せずに済むという。また、商品情報から辞書とマッチする言葉を抽出する際には検索関連で知られた技術「ダブル・アレイ・ツリー」(Double Array Trie)を使うことで高速化しているという。

 こうしたアルゴリズムの工夫に加えて取り組んでいるのが大規模分散処理だ。現在はオープンソースJava向け分散処理フレームワークHadoop」を使っているが、同社は今後、Rubyベースで開発中の「ROMA」や「fairy」に代替していく計画という。

LSH は最近こういう大規模データを扱っているところでは使用例が増えていると聞いていたが、楽天も使っているのかー。データ使用量の削減としては PFI も使っているという Tx の使用も検討しているのかな? (PFI は今回楽天テクノロジーアワードも受賞したらしい) (あと自然言語処理では LSH より SASH のほうがいいという論文もあったり)

商品の「検索エンジン」が今後重要になるということは以前書いたが、この部分はテキスト検索や画像検索ほど「定跡」が確立されていない領域のように見えるので、楽天MixiAmazon みたいなところが一歩抜けてこの業界をリードするような展開になるかもしれないなー、と思うのであった。(たぶん分散処理をしてどうなるという次元の話じゃないような)