今年のKDDベストペーパーを実装・公開しました
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 3,980 views

2013/09/01 第4回データ構造と情報検索と自然言語処理勉強会(DSIRNLP, http://partake.in/events/76854228-ba38-4f6e-87b9-f79e30add75c# )での発表内容です。

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

Statistics

Views

Total Views
3,980
Views on SlideShare
3,841
Embed Views
139

Actions

Likes
13
Downloads
18
Comments
0

13 Embeds 139

https://twitter.com 106
https://www.facebook.com 21
http://nuevospowerpoints.blogspot.com.es 2
https://m.facebook.com&_=1378216073501 HTTP 1
https://m.facebook.com&_=1378216041110 HTTP 1
https://m.facebook.com&_=1378102796174 HTTP 1
https://m.facebook.com&_=1378095374661 HTTP 1
https://m.facebook.com&_=1378090127343 HTTP 1
http://www.facebook.com 1
https://m.facebook.com&_=1378085832796 HTTP 1
https://m.facebook.com&_=1378085835374 HTTP 1
https://m.facebook.com&_=1378085796429 HTTP 1
https://m.facebook.com&_=1378216123963 HTTP 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

  • 今年年のKDDベストペーパーを 実装してみました 株式会社プリファードインフラストラクチャー   ⽐比⼾戸  将平
  • ⾃自⼰己紹介 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
  • l  今⽇日のトピック:⾏行行列列スケッチ l  ⾏行行列列スケッチとは l  Frequent-‐‑‒directionsアルゴリズム l  評価実験 l  +αのはなし Agenda
  • 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
  • github.com/hido/frequent-‐‑‒directionで公開中 5
  • l  今⽇日のトピック:⾏行行列列スケッチ l  ⾏行行列列スケッチとは l  Frequent-‐‑‒directionsアルゴリズム l  評価実験 l  +αのはなし Agenda
  • ⾏行行列列スケッチ:n  x  mのオリジナル⾏行行列列Aを ⼩小さな⾏行行列列Bで近似 l  「近似ができる」という意味 –  以下の性質を良良く保つ –  BのSVDによる低ランク近似はAのそれをよく近似 l  応⽤用 –  PCA –  k-‐‑‒meansクラスタリング –  LSI 7
  • l  今⽇日のトピック:⾏行行列列スケッチ l  ⾏行行列列スケッチとは l  Frequent-‐‑‒directionsアルゴリズム l  評価実験 l  +αのはなし Agenda
  • n  x  mのオリジナル⾏行行列列Aをはるかに⼩小さな ℓx  m⾏行行列列Bで近似する(n  >>ℓ) l  元⾏行行列列Aの各⾏行行を、各変数の「表現量量」ベクトルと⾒見見なすと、 sketchは直感的にはよく現れる「⽅方向」をできるだけ残して⾏行行数 を削減する操作として捉えられる l  そのような操作は、各アイテムの出現個数リストからよく現れる 共起パターンを⾒見見つける、頻出アイテムマイニングと似ている l  実際、ゼロ⾏行行列列から始まるsketch⾏行行列列BにAの各⾏行行を挿⼊入しな がら、BのSVDを求めて頻出⽅方向を更更新しつつ、特異異値が⼩小さい ものに対応する部分はゼロ⾏行行に潰す操作を⾏行行って、逐次的にBを 更更新するアルゴリズムを与えた l  その結果、以下の不不等式で近似誤差を抑えられる 9
  • アルゴリズム(超簡単) 10 : BのSVDを逐次計算 : 特異異ベクトルをつぶす : Aのi⾏行行⽬目それぞれに独⽴立立した操作 : 計算量量はO(nℓm)
  • Python実装(NumPyつかえば超簡単) 11
  • l  今⽇日のトピック:⾏行行列列スケッチ l  ⾏行行列列スケッチとは l  Frequent-‐‑‒directionsアルゴリズム l  評価実験 l  +αのはなし Agenda
  • 評価実験:USPS⼿手書き⽂文字画像データセット PCAの上位2軸ではられる平⾯面でプロットしてみる 参考:東⼤大冨岡先⽣生の演習問題 http://www.ibis.t.u-‐‑‒tokyo.ac.jp/RyotaTomioka/Teaching/enshu13 13
  • まずPythonでnumpy.linalgのSVDで再現(⾏行行列列A) 14 l  元⾏行行列列Aの⼤大きさは7291  x  256(n=7291、m=256) l  ほぼ⼀一致することは確認できた ⾏行行列列AのSVD(近似⽬目標)演習ページから引⽤用
  • ℓ=  3の場合:さすがに無理理 l  ⻘青⾊色の1が左端、紫の0が右側に集まってはいる…? 15 ⾏行行列列AのSVD(近似⽬目標)ℓ = 3で得た⾏行行列列BのSVD結果
  • ℓ=  4の場合:だいぶばらけた l  まだ0、1、3以外はかなり混ざってしまっている 16 ⾏行行列列AのSVD(近似⽬目標)ℓ = 4で得た⾏行行列列BのSVD結果
  • ℓ=  5の場合:さらに変形 l  0と3が分かれてきた 17 ⾏行行列列AのSVD(近似⽬目標)ℓ = 5で得た⾏行行列列BのSVD結果
  • ℓ=  6の場合:さらに変形 l  左がやや潰れ始めている 18 ⾏行行列列AのSVD(近似⽬目標)ℓ = 6で得た⾏行行列列BのSVD結果
  • ℓ=  8の場合:ちょっと似てきた l  真ん中がまた分かれ始めた 19 ⾏行行列列AのSVD(近似⽬目標)ℓ = 8で得た⾏行行列列BのSVD結果
  • ℓ=  16の場合:かなり似てきた l  真ん中の様⼦子もほぼ⼀一緒に 20 ⾏行行列列AのSVD(近似⽬目標)ℓ = 16で得た⾏行行列列BのSVD結果
  • ℓ=  32の場合:ほぼ⼀一致 l  ⾒見見た⽬目ではもう違いが⾒見見つけられない l  これ以上ℓを⼤大きくしても結果に変化は⾒見見られない 21 ⾏行行列列AのSVD(近似⽬目標)ℓ = 32で得た⾏行行列列BのSVD結果
  • 近似精度度⾯面での結論論 l  ℓ  =  16くらいでほぼ⼗十分な近似結果が得られている l  数字が10種類しか無いことを考えるとこの結果は⽰示唆的 2222 7291 x 256⾏行行列列AのSVD結果16 x 256⾏行行列列BのSVD結果
  • l  今⽇日のトピック:⾏行行列列スケッチ l  ⾏行行列列スケッチとは l  Frequent-‐‑‒directionsアルゴリズム l  評価実験 l  +αのはなし Agenda
  • 冨岡先⽣生からの疑問 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 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 ℓ
  • @tmaeharaさんからのコメント l  「これ知ってる!!進研ゼミでやったやつだ!!!」 26
  • そこんとこ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
  • ⾞車車輪輪の再発明あるいは再発⾒見見: 進歩性があるのであればありなのではないか l  ⼤大規模データだから⼿手法がシンプルに回帰、というのはある 28
  • まとめ:Frequent-‐‑‒directionsアルゴリズム使えるよ l  アルゴリズム単純 l  実装簡単(⽐比⼾戸Python版は公開されている) l  メモリあんまり喰わない l  オンライン性もある –  ⾏行行列列Aの各⾏行行に対して独⽴立立して動作する –  ストリームデータの各サンプル=Aの末尾⾏行行 –  新しいサンプルの到着毎に更更新すれば良良い l  並列列性もある –  ⾏行行列列をぶったぎってしまえば独⽴立立して計算できる l  いろんな機械学習タスクに使える –  クラスタリング、次元削減、外れ値検知、etc… 29 =
  • ん…?オンライン、並列列、機械学習…だと…? 30 http://jubat.us/にてOSS公開中!!