Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Jubatusのリアルタイム分散 レコメンデーション

Avatar for Yuya Unno Yuya Unno
February 25, 2012

Jubatusのリアルタイム分散 レコメンデーション

Avatar for Yuya Unno

Yuya Unno

February 25, 2012
Tweet

More Decks by Yuya Unno

Other Decks in Technology

Transcript

  1. ⾃自⼰己紹介 l  海野  裕也 (@unnonouno) l  unno/no/uno l  ㈱Preferred Infrastructure 研究開発部

    l  検索索・レコメンドエンジンSedueの開発など l  専⾨門 l  ⾃自然⾔言語処理理 l  テキストマイニング l  Jubatus開発者
  2. Big Data ! l  データはこれからも増加し続ける l  多いことより増えていくということが重要 l  データ量量の変化に対応できるスケーラブルなシステムが求めら れる

    l  データの種類は多様化 l  定形データのみならず、⾮非定形データも増加 l  テキスト、⾏行行動履履歴、⾳音声、映像、信号 l  ⽣生成される分野も多様化 l  PC、モバイル、センサー、⾞車車、⼯工場、EC、病院 5
  3. データを活⽤用する STEP 1. ⼤大量量のデータを捨てずに蓄積できるようになってきた STEP 2. データを分析することで、現状の把握、理理解ができる STEP 3. 状況を理理解し、現状の改善、予測ができる

    l 世の中的には、蓄積から把握、理理解に向かった段階 6 6 蓄積 理理解 予測 より深い解析へ 本の購買情報 を全て記録で きるように なった! この本が実際 に売れている のは意外にも 30代のおっさ ん達だ! この⼈人は30代 男性なので、 この本を買う のではない か?
  4. 分散かつオンラインの機械学習 l  処理理が速い! l  処理理の完了了を待つ時間が少ない l  5分前のTV番組の影響を反映した広告推薦ができる l  5分前の交通量量から渋滞をさけた経路路を提案できる l 

    ⼤大規模! l  処理理が間に合わなくなったらスケールアウト l  ⽇日本全国からデータが集まる状態でも動かしたい l  機械学習の深い分析! l  単純なカウント以上の精度度を 9
  5. 他の技術との⽐比較 l  ⼤大規模バッチ(Hadoop & Mahout) l  並列列分散+機械学習 l  リアルタイム性を確保するのは難しい l 

    オンライン学習ライブラリ l  リアルタイム+機械学習 l  並列列分散化させるのはかなり⼤大変 l  ストリーム処理理基盤 l  並列列分散+リアルタイム l  分散機械学習は難しい
  6. 3種類の処理理に分解 l  UPDATE l  データを受け取ってモデルを更更新(学習)する l  ANALYZE l  データを受け取って解析結果を返す l 

    MIX l  内部モデルを混ぜ合わせる l  cf. MAP / REDUCE l  ver. 0.2.0でこの3操作を書くだけで、残りの ソースを⾃自動⽣生成する仕組みができた 13
  7. 世の中の機械学習ライブラリの敷居はまだ⾼高い l  libsvmフォーマット l  +1 1:1 3:1 8:1 l  何よこれ?  ←普通の⼈人の反応

    l  ハイパーパラメータ l  「Cはいくつにしましたか?」 l  Cってなんだよ・・・  ←普通の⼈人の反応 l  研究者向き、エンジニアが広く使えない 16
  8. RDBやHadoopから学ぶべきこと l  わからない l  リレーショナル理理論論 l  クエリオプティマイザ l  トランザクション処理理 l 

    分散計算モデル l  わかる l  SQL l  Map/Reduce l  「あとは裏裏でよろしくやってくれるんでしょ?」 17
  9. Jubatus裏裏の⽬目標 l  わからない l  オンライン凸最適化 l  事後確率率率最⼤大化 l  MCMC、変分ベイズ l 

    特徴抽出、カーネルトリック l  わかる l  ⾃自動分類、推薦 l  「あとはよろしくやってくれるんでしょ?」 18 全ての⼈人に機械学習を!
  10. 近傍探索索とは何か? 登録されたデータの中から、クエリに近いものを探す l  データ:D={d 1 , d 2 , …,

    d n } l  クエリ:q l  類似度度関数fに対して、f(d, q)の⼤大きいk件を求めなさい l  fはコサイン類似度度やJaccard係数など クエリ q この辺が類似!
  11. レコメンダーに対する操作 l  similar_row l  クエリベクトルqに類似した⽂文書IDのリストを返す l  類似度度のスコアも同時に返す l  update_row l 

    指定の⽂文書IDのベクトルを更更新する l  complete_row l  クエリベクトルqと類似したベクトルの重み付き線形和を返す l  similar_rowを利利⽤用して実装されている
  12. 準備:よくある類似度度尺度度 l  コサイン類似度度 l  2つのベクトルの余弦 l  cos(θ(x, y)) = xTy

    / |x||y| l  Jaccard係数 l  2つの集合の積集合と和集合のサイズの⽐比 l  Jacc(X, Y) = |X∩Y|/|X∪Y| l  ビットベクトル間の距離離と思うことができる
  13. Locality Sensitive Hashing (LSH) l  ランダムなベクトル r を作る l  このときベクトルx,

    yに対してxTrとyTrの正負が⼀一致する 確率率率はおよそ cos(θ(x, y)) l  ランダムベクトルをk個に増やして正負の⼀一致率率率を数え れば、だいたいコサイン距離離になる l  ベクトルxに対して、ランダムベクトル{r 1 , …, r k }との内 積の正負を計算 H(x) = {sign(xTr 1 ), …, sign(xTr k )} l  signは正なら1、負なら0を返す関数 l  H(x)だけ保存すればよいので1データ当たりkビット
  14. 絵でわかるLSH l  正負が⼀一致というのは、ランダムな平⾯面の同じ側に来る ということ l  この確率率率は1 – θ(x, y)/π ≒

    cos(θ(x, y)) 平⾯面が⼀一つのランダ ムベクトルに対応 ランダムな平⾯面が2点間 を横切切る確率率率はθ/π
  15. Jaccard係数 l  集合の類似度度を図る関数 l  値を0, 1しか取らないベクトルだと思えばOK l  Jacc(X, Y) =

    |X∩Y| / |X∪Y| 例例 l  X = {1, 2, 4, 6, 7} l  Y = {1, 3, 5, 6} l  X∩Y = {1, 6} l  X∪Y = {1, 2, 3, 4, 5, 6, 7} l  Jacc(X, Y) = 2/7
  16. minhash l  X = { x 1 , x 2

    , …, x n } l  Xは集合なので、感覚的には⾮非ゼロ要素のインデックスのこと l  H(X) = { h(x 1 ), …, h(x n ) } l  m(X) = argmin(H(X)) l  m(X) = m(Y)となる確率率率はJacc(X, Y)に⼀一致 l  ハッシュ関数を複数⽤用意したとき、m(X)=m(Y)となる回数を数 えるとJacc(X, Y)に収束する l  m(X)の最下位ビットだけ保持すると、衝突の危険が⾼高 まる代わりにハッシュ関数を増やせる [Li+10a, Li+10b]
  17. 重み付きJaccard係数 l  各集合の要素のidfのような重みをつける l  wJacc(X, Y) = Σ i∈X∩Y w

    i / Σ i∈X∪Y w i l  w i が常に1なら先と同じ 例例 l  X = {1, 2, 4, 6, 7} l  Y = {1, 3, 5, 6} l  w = (2, 3, 1, 4, 5, 2, 3) l  X∩Y = {1, 6} l  X∪Y = {1, 2, 3, 4, 5, 6, 7} l  wJacc(X, Y) = (2+2)/(2+3+1+4+5+2+3)=4/20
  18. 重み付きJaccard版minhash [Chum+08] l  X = { x 1 , x

    2 , …, x n } l  H(X) = {h(x 1 )/w 1 , …, h(x n )/w n } l  論論⽂文中では-log(h(x))としている l  差分はw i で割っているところ l  感覚的にはw i が⼤大きければ、ハッシュ値が⼩小さくなりやすいの で、選ばれる確率率率が⼤大きくなる l  m(X) = argmin(H(X)) l  m(X) = m(Y)となる確率率率はwJacc(X, Y)に⼀一致
  19. まとめ l  Jubatusの3つの軸 l  リアルタイム l  分散 l  深い解析 l 

    MIX操作による緩い同期計算モデル l  レコメンドの4⼿手法 l  転置インデックス l  Locality Sensitive Hashing l  minhash l  アンカーグラフ l  Jubatusでは前者2つを実装
  20. 参考⽂文献 l  [Chum+08] Ondrej Chum, James Philbin, Andrew Zisserman. Near

    Duplicate Image Detection: min-Hash and tf-idf Weighting. BMVC 2008. l  [Li+10a] Ping Li, Arnd Christian Konig. b-Bit Minwise Hashing. WWW 2008. l  [Li+10b] Ping Li, Arnd Christian Konig, Wenhao Gui. b-Bit Minwise Hashing for Estimating Three-Way Similarities. NIPS 2008. l  [Liu+11] Wei Liu, Jun Wang, Sanjiv Kumar, Shin-Fu Chang. Hashing with Graphs. ICML 2011.