lightning talks at ec navi

59
Lightning Talk(s)

Upload: moai-kids

Post on 20-Jan-2017

667 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Lightning Talks at EC navi

Lightning Talk(s)

Page 2: Lightning Talks at EC navi

個人的な宣伝

Page 3: Lightning Talks at EC navi

チームラボ アルゴリズムコンテスト参加中

Page 4: Lightning Talks at EC navi

 が多い人がグランプリ

Page 5: Lightning Talks at EC navi

この場でお願いするのは恐縮ですがぜひ                をお願いします。

Page 6: Lightning Talks at EC navi

Buzzurl大好きです!!

Page 7: Lightning Talks at EC navi

本題

Page 8: Lightning Talks at EC navi

Similarity Join

Page 9: Lightning Talks at EC navi

大規模なデータ群から類似したデータを探す

Page 10: Lightning Talks at EC navi

例えば100万件の記事内で類似する文章を探す

など

Page 11: Lightning Talks at EC navi

普通に計算すればO(n^2)-n

ABCDE

ABCDE

Page 12: Lightning Talks at EC navi

普通に計算すればO(n^2)-n

ABCDE

ABCDE

Page 13: Lightning Talks at EC navi

普通に計算すればO(n^2)-n

ABCDE

ABCDE

Page 14: Lightning Talks at EC navi

普通に計算すればO(n^2)-n

ABCDE

ABCDE

Page 15: Lightning Talks at EC navi

普通に計算すればO(n^2)-n

ABCDE

ABCDE

Page 16: Lightning Talks at EC navi

1,000,000×1,000,000=1,000,000,000,

000

Page 17: Lightning Talks at EC navi

無理

Page 18: Lightning Talks at EC navi

大量のデータ群で効率的に類似検索を行うのがSimilarity Join

Page 19: Lightning Talks at EC navi

3つのアプローチ・Partition-base・Index-base・Prefix Filter

Page 20: Lightning Talks at EC navi

今日は「Prefix Filter」について

Page 21: Lightning Talks at EC navi

基本的な考え方

Page 22: Lightning Talks at EC navi

まずデータの最初の方だけを見てふるい分けをする

Page 23: Lightning Talks at EC navi

ふるいに残ったデータだけ比較処理を行う

Page 24: Lightning Talks at EC navi

数式prefix(x) ∩ prefix(y) != ∅のとき sim(x , y ) > threshold なら類似

※sim(x, y) は何かしらの類似度/距離算出アルゴリズム

Page 25: Lightning Talks at EC navi

prefix(x) ∩ prefix(y)

データx、yの前方nバイト/文字を抽出して比較をする

一致しない場合はふるい落とす

Page 26: Lightning Talks at EC navi

sim(x, y)

データx、yの類似度を算出しきい値を超えていえれば類似して

いるとみなす

Page 27: Lightning Talks at EC navi

数式おさらいprefix(x) ∩ prefix(y) != ∅のとき sim(x , y ) > threshold なら類似

※sim(x, y) は何かしらの類似度/距離算出アルゴリズム

Page 28: Lightning Talks at EC navi

どうなってれば類似している?

Page 29: Lightning Talks at EC navi

距離が近い=類似ユークリッド距離/マハラノビス距離/チェビシフ距離/ミンコフスキー距離/コサイン距離/編集距離/ジャッカード距離/マンハッタン距離/ハミ

ング距離・・・・・・

Page 30: Lightning Talks at EC navi

Prefix Filterでは「ジャッカード距離」「編集距離」

を用いる(事が多い)

Page 31: Lightning Talks at EC navi

ジャッカード距離(ジャッカード係数)

二つの集合の共通要素数を少なくとも1方にある要素の総数で割っ

たもの

Page 32: Lightning Talks at EC navi

X:{あ,え,い,う}Y:{え,お,あ}

Page 33: Lightning Talks at EC navi

X:{あ,え,い,う}Y:{え,お,あ}

X∩Y(共通要素):{あ,え}

Page 34: Lightning Talks at EC navi

X:{あ,え,い,う}Y:{え,お,あ}

X∩Y(共通要素):{あ,え}X∪Y(どちらかにある):{あ,い,う,え,お}

Page 35: Lightning Talks at EC navi

X:{あ,え,い,う}Y:{え,お,あ}

X∩Y(共通要素):{あ,え}X∪Y(どちらかにある):{あ,い,う,え,お}sim=|X∩Y|/|X∪Y|=2/5=0.4

Page 36: Lightning Talks at EC navi

主にふるい落しの時にジャッカード距離を使

prefix(x) ∩ prefix(y)

Page 37: Lightning Talks at EC navi

ちなみに「ジャッカード」ってなんか格好良い

Page 38: Lightning Talks at EC navi

ググってみたメーカー:PIJEL社ジャッカードストッキング素材:NYLON 85%, SPANDEX 15%カラー : ブラックサイズ : ワンサイズ

http://shopping.coneco.net/ca_316-pg_6-st_1903

Page 39: Lightning Talks at EC navi

編集距離(レーベンシュタイン距離)

ふたつの文書を何回置換/追加/削除したら同じ文字になるか

Page 40: Lightning Talks at EC navi

さだまさし田代まさし

Page 41: Lightning Talks at EC navi

田だまさし田代まさし

Page 42: Lightning Talks at EC navi

田代まさし田代まさし

二回置換すれば同じ文字になるから編集距離

「2」

Page 43: Lightning Talks at EC navi

レーベンシュタイン距離は類似度算出の際に

使う

sim(x, y)

Page 44: Lightning Talks at EC navi

ちなみに「レーベンシュタイン」ってなんか格好良い

Page 45: Lightning Talks at EC navi

ググってみた

Page 46: Lightning Talks at EC navi

数式にあてはめてみた

!= ∅のとき > threshold なら類似!

Page 47: Lightning Talks at EC navi

おさらい

Page 48: Lightning Talks at EC navi

まずデータの最初の方だけを見てふるい分けをする

Page 49: Lightning Talks at EC navi

ふるいに残ったデータだけ比較処理を行う

Page 50: Lightning Talks at EC navi

ふるい落し→

類似度算出→

Page 51: Lightning Talks at EC navi

文字列の比較の際はn-gramに分割して比較する

「あたたたたたた!」→あた  たた   たた    たた     たた        たた

文字列の比較の際はn-gramに分割して比較する

2-gram

Page 52: Lightning Talks at EC navi

性能測定

Page 53: Lightning Talks at EC navi

2000件の文書で測定何件類似文があるかを探す。A:普通に比較B:Prefix Filter

Page 54: Lightning Talks at EC navi

結果A:450,525msB:3,282ms

ms

0 125,000 250,000 375,000 500,000

A:普通B:Prefix Filter

Page 55: Lightning Talks at EC navi

チューニングをしたらもっと速くなった。C:684msD:297ms

ms

0 125,000 250,000 375,000 500,000

A:普通B:Prefix FilterC:改善1D:改善2

(http://ameblo.jp/just-do-neet/entry-10219004506.html)

Page 56: Lightning Talks at EC navi

結論

Page 57: Lightning Talks at EC navi

超速い

Page 59: Lightning Talks at EC navi

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