MP Joinを使った類似データ抽出

3,247 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,247
On SlideShare
0
From Embeds
0
Number of Embeds
1,105
Actions
Shares
0
Downloads
13
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

MP Joinを使った類似データ抽出

  1. 1. MPJoin を使った類似データ抽出株式会社サイバーエージェントアメーバ事業本部 Ameba Technology Laboratory服部 司
  2. 2. 株式会社サイバーエージェント 2今日紹介する話・ データセットの中から類似したデータペアを素 早く探し出す。
  3. 3. 株式会社サイバーエージェント 3データと類似性・どんなデータもベクトルで表現できる。(大抵は)例) ソーシャルグラフ user_01 : user_04 , user_10 , … user_02 : user_33 , user_41 , … … user_nn : user_02 , user_05 , … * 1user 辺りそれぞれ double [] で書ける
  4. 4. 株式会社サイバーエージェント 4・ベクトルの類似性を図る尺度 <類似性> - Cosin、Jaccard、Overlap、相関係数 例 ) Jaccard V1  V2 Jaccard (V1, V2 )  V1  V2 user A : 1、2、3、4、5 Jaccard(userA, userB) user B : 1、3、6、7 =2/7
  5. 5. 株式会社サイバーエージェント 5普通に探す場合 ・全ての組み合わせで類似性を計算する。 1 nC 2  n(n  1)  2 2  1 2 n n  → データ数 n が増えたら無理 例 ) n = 10^6 → 約5000億
  6. 6. 株式会社サイバーエージェント 6Similarity Join ・ 閾値 t ( 0 < t < 1)以上の類似性を持つ データペアを高速に取得する。 ・ 種類 - MPJoin (2009) - PPJoin (2008) - SSJoin (2006)
  7. 7. 株式会社サイバーエージェント 7MPJoin ・ 明らかに似ているはずがないペアは計算しない。 - Filter を使って計算対象を絞り込む。 - Filter を潜り抜けたモノを実際に計算する。 ・ Filterは以下の3種類 - Size Filtering - Prefix Filtering - Positional Filtering
  8. 8. 株式会社サイバーエージェント 8 Size Filtering・ データ長(特徴数)に大きな差があるペアは、似ているはずがない。 例) X : 1、2 Y : 1、3、6、7、9、11、15、21、33、101、… 正確な表現 ) |x| t |x|  |y |  t
  9. 9. 株式会社サイバーエージェント 9Prefix Filtering・ 先頭部分に似ている特徴が一切なかったら、似ているはずがない。 例) X : 2、4、5、6、9、11、15、21、33、101 Y : 1、3、7、8、9、11、15、21、33、101 正確な表現 ) x の先頭から長さ x  t | x |  | y |  1 1  t  と、y の先頭から長さ y  t | x |  | y |  1 1  t  の部分の中に、最低一個同じ素性が必要
  10. 10. 株式会社サイバーエージェント 10Positional Filtering・ 先頭部分に同じ特徴が存在する場合、先頭以降を考慮して、 閾値を超えるかどうか考える。 例) X : 1、3、5、6、9、11、15、21、33、82 Y : 1、3、7、8、9、11、15、21、33、99、101、103 正確な表現 ) x  t | x |  | y |   Over( x l , y l )  min  x r , y r  1  t 
  11. 11. 株式会社サイバーエージェント 11実際の使用例 - Spam Filteringのテンプレート抽出* (ms) * 1万件のコメントから 類似投稿を抽出 100倍以上速い他にも使えそうな例 - 一致・類似 テキストを 検索 Index に登録させない。 ( * 世間的な利用例はこっち )
  12. 12. 株式会社サイバーエージェント 12応用例 : なう のフォロワー推薦・ ある人とソーシャルグラフが似ている人* を探す。 * 『ある人SGと閾値 t 以上の類似度のSGを持つ人』・ データセット - 2011/4 時点での なう のフォロワー user : ??,???,??? node : ??,???,??? ( ???? per 1 user)・ 性能 - query : ???? - threshold : 0.3 → 全計算の 1 / 7 程度 (ms)
  13. 13. 株式会社サイバーエージェント 13TIPS・感想・ 向いているデータ → 疎なデータで、サイズフィルタリングが効きやすいデータ - 画像 × - ソーシャルグラフ △ - テキスト ◎・ 正直使えるケースは限定的。 - 現場で多い需要は、 『 データA と 最も似ているデータを探し出す 』 ・・・が、大体のデータは殆ど似ていない。( 類似度で0.1以下が大半 )
  14. 14. 株式会社サイバーエージェント 14・ ソースの公開 ( Java ) - similarity-join-tools ( https://code.google.com/p/similarity-join-tools/ )・ ブログ - http://ameblo.jp/principia-ca/entry-10800180833.html
  15. 15. 株式会社サイバーエージェント 15ご清聴ありがとうございました!

×