Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

今年のKDDベストペーパーを実装・公開しました

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Wird geladen in …3
×

Hier ansehen

1 von 30 Anzeige

今年のKDDベストペーパーを実装・公開しました

Herunterladen, um offline zu lesen

2013/09/01 第4回データ構造と情報検索と自然言語処理勉強会(DSIRNLP, http://partake.in/events/76854228-ba38-4f6e-87b9-f79e30add75c# )での発表内容です。
同一内容の会社ブログはこちら→ http://research.preferred.jp/2013/08/sketch/

2013/09/01 第4回データ構造と情報検索と自然言語処理勉強会(DSIRNLP, http://partake.in/events/76854228-ba38-4f6e-87b9-f79e30add75c# )での発表内容です。
同一内容の会社ブログはこちら→ http://research.preferred.jp/2013/08/sketch/

Anzeige
Anzeige

Weitere Verwandte Inhalte

Diashows für Sie (20)

Andere mochten auch (13)

Anzeige

Ähnlich wie 今年のKDDベストペーパーを実装・公開しました (20)

Anzeige

Aktuellste (20)

今年のKDDベストペーパーを実装・公開しました

  1. 1. 今年年のKDDベストペーパーを 実装してみました 株式会社プリファードインフラストラクチャー   ⽐比⼾戸  将平
  2. 2. ⾃自⼰己紹介 l  ⽐比⼾戸将平(HIDO  Shohei) l  TwitterID:  Vapnikマン@sla l  専⾨門:データマイニング、機械学習 l  経歴: –  2006-‐‑‒2012:  IBM東京基礎研究所データ解析グループ l  機械学習(特に異異常検知)のアルゴリズム研究開発 l  お客様案件でデータ解析プロジェクトに従事 –  2012-‐‑‒:  株式会社プリファードインフラストラクチャー l  ⼤大規模オンライン分散機械学習基盤Jubatusチームリーダー –  2013-‐‑‒:  Preferred  Infrastructure  America,  Inc. l  Chief  Research  Officer 2
  3. 3. l  今⽇日のトピック:⾏行行列列スケッチ l  ⾏行行列列スケッチとは l  Frequent-‐‑‒directionsアルゴリズム l  評価実験 l  +αのはなし Agenda
  4. 4. SIGKDD:  Intʼ’l  Conf.  on  Knowledge  Discovery   and  Data  Mining l  ACM  データマイニング/機械学習の最難関国際会議 l  理理論論的な保証と同時に実験での(特に⼤大規模)評価が必要 l  今年年は8⽉月中旬にシカゴで開催 l  Best  Research  Paper  Award:  Edo  Liberty  (Yahoo!  Labs,  Haifa) “Simple  and  Deterministic  Matrix  Sketching” 4
  5. 5. github.com/hido/frequent-‐‑‒directionで公開中 5
  6. 6. l  今⽇日のトピック:⾏行行列列スケッチ l  ⾏行行列列スケッチとは l  Frequent-‐‑‒directionsアルゴリズム l  評価実験 l  +αのはなし Agenda
  7. 7. ⾏行行列列スケッチ:n  x  mのオリジナル⾏行行列列Aを ⼩小さな⾏行行列列Bで近似 l  「近似ができる」という意味 –  以下の性質を良良く保つ –  BのSVDによる低ランク近似はAのそれをよく近似 l  応⽤用 –  PCA –  k-‐‑‒meansクラスタリング –  LSI 7
  8. 8. l  今⽇日のトピック:⾏行行列列スケッチ l  ⾏行行列列スケッチとは l  Frequent-‐‑‒directionsアルゴリズム l  評価実験 l  +αのはなし Agenda
  9. 9. n  x  mのオリジナル⾏行行列列Aをはるかに⼩小さな ℓx  m⾏行行列列Bで近似する(n  >>ℓ) l  元⾏行行列列Aの各⾏行行を、各変数の「表現量量」ベクトルと⾒見見なすと、 sketchは直感的にはよく現れる「⽅方向」をできるだけ残して⾏行行数 を削減する操作として捉えられる l  そのような操作は、各アイテムの出現個数リストからよく現れる 共起パターンを⾒見見つける、頻出アイテムマイニングと似ている l  実際、ゼロ⾏行行列列から始まるsketch⾏行行列列BにAの各⾏行行を挿⼊入しな がら、BのSVDを求めて頻出⽅方向を更更新しつつ、特異異値が⼩小さい ものに対応する部分はゼロ⾏行行に潰す操作を⾏行行って、逐次的にBを 更更新するアルゴリズムを与えた l  その結果、以下の不不等式で近似誤差を抑えられる 9
  10. 10. アルゴリズム(超簡単) 10 : BのSVDを逐次計算 : 特異異ベクトルをつぶす : Aのi⾏行行⽬目それぞれに独⽴立立した操作 : 計算量量はO(nℓm)
  11. 11. Python実装(NumPyつかえば超簡単) 11
  12. 12. l  今⽇日のトピック:⾏行行列列スケッチ l  ⾏行行列列スケッチとは l  Frequent-‐‑‒directionsアルゴリズム l  評価実験 l  +αのはなし Agenda
  13. 13. 評価実験:USPS⼿手書き⽂文字画像データセット PCAの上位2軸ではられる平⾯面でプロットしてみる 参考:東⼤大冨岡先⽣生の演習問題 http://www.ibis.t.u-‐‑‒tokyo.ac.jp/RyotaTomioka/Teaching/enshu13 13
  14. 14. まずPythonでnumpy.linalgのSVDで再現(⾏行行列列A) 14 l  元⾏行行列列Aの⼤大きさは7291  x  256(n=7291、m=256) l  ほぼ⼀一致することは確認できた ⾏行行列列AのSVD(近似⽬目標)演習ページから引⽤用
  15. 15. ℓ=  3の場合:さすがに無理理 l  ⻘青⾊色の1が左端、紫の0が右側に集まってはいる…? 15 ⾏行行列列AのSVD(近似⽬目標)ℓ = 3で得た⾏行行列列BのSVD結果
  16. 16. ℓ=  4の場合:だいぶばらけた l  まだ0、1、3以外はかなり混ざってしまっている 16 ⾏行行列列AのSVD(近似⽬目標)ℓ = 4で得た⾏行行列列BのSVD結果
  17. 17. ℓ=  5の場合:さらに変形 l  0と3が分かれてきた 17 ⾏行行列列AのSVD(近似⽬目標)ℓ = 5で得た⾏行行列列BのSVD結果
  18. 18. ℓ=  6の場合:さらに変形 l  左がやや潰れ始めている 18 ⾏行行列列AのSVD(近似⽬目標)ℓ = 6で得た⾏行行列列BのSVD結果
  19. 19. ℓ=  8の場合:ちょっと似てきた l  真ん中がまた分かれ始めた 19 ⾏行行列列AのSVD(近似⽬目標)ℓ = 8で得た⾏行行列列BのSVD結果
  20. 20. ℓ=  16の場合:かなり似てきた l  真ん中の様⼦子もほぼ⼀一緒に 20 ⾏行行列列AのSVD(近似⽬目標)ℓ = 16で得た⾏行行列列BのSVD結果
  21. 21. ℓ=  32の場合:ほぼ⼀一致 l  ⾒見見た⽬目ではもう違いが⾒見見つけられない l  これ以上ℓを⼤大きくしても結果に変化は⾒見見られない 21 ⾏行行列列AのSVD(近似⽬目標)ℓ = 32で得た⾏行行列列BのSVD結果
  22. 22. 近似精度度⾯面での結論論 l  ℓ  =  16くらいでほぼ⼗十分な近似結果が得られている l  数字が10種類しか無いことを考えるとこの結果は⽰示唆的 2222 7291 x 256⾏行行列列AのSVD結果16 x 256⾏行行列列BのSVD結果
  23. 23. l  今⽇日のトピック:⾏行行列列スケッチ l  ⾏行行列列スケッチとは l  Frequent-‐‑‒directionsアルゴリズム l  評価実験 l  +αのはなし Agenda
  24. 24. 冨岡先⽣生からの疑問 l  「ℓを増やしたら実⾏行行時間が短くなっているが何故ですか?」 l  実際にブログに書いた範囲だと実⾏行行時間は減少傾向 24 0" 0.2" 0.4" 0.6" 0.8" 1" 1.2" 1.4" 1.6" 1.8" 3" 4" 5" 6" 8" 16" 32" ℓ
  25. 25. 速度度⾯面の結論論:ℓが精度度的に⼗十分な時が最適? 25 l  ℓを増やせば⾏行行列列BのSVD回数は減っていく l  実⾏行行時間全体は⼀一度度減ったあと、増えていく 0" 500" 1000" 1500" 2000" 2500" 3000" 3500" 4000" 0" 0.5" 1" 1.5" 2" 2.5" 3" 3.5" 4" 3" 4" 5" 6" 8" 16" 32" 64" 256" B SVD ℓ
  26. 26. @tmaeharaさんからのコメント l  「これ知ってる!!進研ゼミでやったやつだ!!!」 26
  27. 27. そこんとこEdo  Liberty本⼈人に聞いてみました l  This  indeed  can  be  used  but  I  thought  it  will  be  less  efficient   in  practice  and  more  complicated  to  code.  So,  I  did  not   include  it  in  the  paper. l  Theoretically  though,  it  can  reduce  the  space  usage  by  a   factor  of  2,  which  theoretical  CS  people  think  is  not   important  :) l  That  said,  I  received  quite  a  few  questions  about  that  so  I  will   say  something  about  it  in  the  journal  version. l  incremental  rank-‐‑‒1  SVD  updatesも同じように使えると思うよ l  けど実⽤用的には効率率率悪いし実装するのも難しいよね l  だからSIGKDDの論論⽂文には⼊入れなかったよ l  けど少なくともメモリ使⽤用量量は桁違いに良良いはずだよ l  そこは理理論論の⼈人は気にしないのかもしれないけど… l  まぁ同じ質問受けまくるからジャーナル版では何か書くよ 27
  28. 28. ⾞車車輪輪の再発明あるいは再発⾒見見: 進歩性があるのであればありなのではないか l  ⼤大規模データだから⼿手法がシンプルに回帰、というのはある 28
  29. 29. まとめ:Frequent-‐‑‒directionsアルゴリズム使えるよ l  アルゴリズム単純 l  実装簡単(⽐比⼾戸Python版は公開されている) l  メモリあんまり喰わない l  オンライン性もある –  ⾏行行列列Aの各⾏行行に対して独⽴立立して動作する –  ストリームデータの各サンプル=Aの末尾⾏行行 –  新しいサンプルの到着毎に更更新すれば良良い l  並列列性もある –  ⾏行行列列をぶったぎってしまえば独⽴立立して計算できる l  いろんな機械学習タスクに使える –  クラスタリング、次元削減、外れ値検知、etc… 29 =
  30. 30. ん…?オンライン、並列列、機械学習…だと…? 30 http://jubat.us/にてOSS公開中!!

×