Top Banner
MPJoin を使った類似データ抽出 株式会社サイバーエージェント アメーバ事業本部 Ameba Technology Laboratory 服部 司
15

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

Jun 21, 2015

Download

Technology

JAVA DM
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: MP Joinを使った類似データ抽出

MPJoin を使った類似データ抽出

株式会社サイバーエージェント アメーバ事業本部 Ameba Technology Laboratory

服部 司

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

2 株式会社サイバーエージェント

・ データセットの中から類似したデータペアを素 早く探し出す。

今日紹介する話

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

3 株式会社サイバーエージェント

データと類似性

・どんなデータもベクトルで表現できる。(大抵は)

例 ) ソーシャルグラフ

user_01 : user_04 , user_10 , …

user_02 : user_33 , user_41 , … …

user_nn : user_02 , user_05 , …

* 1user 辺りそれぞれ double [] で書ける

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

4 株式会社サイバーエージェント

・ベクトルの類似性を図る尺度

<類似性> - Cosin、Jaccard、Overlap、相関係数

例 ) Jaccard

user A : 1、2、3、4、5

user B : 1、3、6、7

21

2121 ),(

VV

VVVVJaccard

Jaccard(userA, userB)

= 2 / 7

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

5 株式会社サイバーエージェント

普通に探す場合

nnnnnC 2

2

1)1(

2

12

・全ての組み合わせで類似性を計算する。

→ データ数 n が増えたら無理

例 ) n = 10^6 → 約5000億

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

6 株式会社サイバーエージェント

Similarity Join

・ 閾値 t ( 0 < t < 1)以上の類似性を持つ データペアを高速に取得する。

・ 種類

- MPJoin (2009) - PPJoin (2008) - SSJoin (2006)

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

7 株式会社サイバーエージェント

MPJoin

・ 明らかに似ているはずがないペアは計算しない。

- Filter を使って計算対象を絞り込む。 - Filter を潜り抜けたモノを実際に計算する。

・ Filterは以下の3種類

- Size Filtering

- Prefix Filtering

- Positional Filtering

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

8 株式会社サイバーエージェント

Size Filtering

・ データ長(特徴数)に大きな差があるペアは、似ているはずがない。

X : 1、2

Y : 1、3、6、7、9、11、15、21、33、101、…

例 )

正確な表現 )

tt

||||||

xyx

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

9 株式会社サイバーエージェント

Prefix Filtering

・ 先頭部分に似ている特徴が一切なかったら、似ているはずがない。

X : 2、4、5、6、9、11、15、21、33、101

Y : 1、3、7、8、9、11、15、21、33、101

例 )

正確な表現 )

x の先頭から長さ

と、y の先頭から長さ

の部分の中に、最低一個同じ素性が必要

1||||

1

yxx

t

t

1||||

1

yxy

t

t

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

10 株式会社サイバーエージェント

Positional 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

例 )

正確な表現 )

rrllOver

t

tyxyxyxx ,min),(||||

1

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

11 株式会社サイバーエージェント

実際の使用例

他にも使えそうな例

- Spam Filteringのテンプレート抽出*

- 一致・類似 テキストを 検索 Index に登録させない。

( * 世間的な利用例はこっち )

100倍以上速い

* 1万件のコメントから

類似投稿を抽出 (ms)

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

12 株式会社サイバーエージェント

応用例 : なう のフォロワー推薦

・ ある人とソーシャルグラフが似ている人* を探す。

・ データセット - 2011/4 時点での なう のフォロワー

user : ??,???,???

node : ??,???,??? ( ???? per 1 user)

・ 性能 - query : ???? - threshold : 0.3

→ 全計算の 1 / 7 程度

* 『ある人SGと閾値 t 以上の類似度のSGを持つ人』

(ms)

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

13 株式会社サイバーエージェント

TIPS・感想

・ 向いているデータ → 疎なデータで、サイズフィルタリングが効きやすいデータ - 画像 × - ソーシャルグラフ △ - テキスト ◎

・ 正直使えるケースは限定的。

- 現場で多い需要は、 『 データA と 最も似ているデータを探し出す 』

・・・が、大体のデータは殆ど似ていない。( 類似度で0.1以下が大半 )

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

14 株式会社サイバーエージェント

・ ソースの公開 ( Java )

- similarity-join-tools

( https://code.google.com/p/similarity-join-tools/ )

・ ブログ

- http://ameblo.jp/principia-ca/entry-10800180833.html

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

15 株式会社サイバーエージェント

ご清聴ありがとうございました!