SlideShare a Scribd company logo
1 of 24
Download to read offline
Mining of Massive Datasets 輪読会
3. Finding Similar Items
リクルートコミュニケーションズ
丸山 哲太郎
似たアイテムを探すよ�
•  「似た」アイテムを探すことって、重要だよね
– レコメンドとか、まぁ、そのへん
– ま、要するに協調フィルタリングなんだけど
•  今回紹介すること
– ジャッカード類似度
– Minhashing
– Locality-Sensitive Hashing (LSH)
– いろんな距離に対する LSH
•  Shingle は要するに文字とか単語とかN-gram なので、
省略
2(C) Recruit Communications Co.,Ltd. All rights reserved. �
ジャッカード類似度 (3.1章)�
•  「どれぐらい似ているか」を表す指標:
ジャッカード類似度 = | S ∩ T | / | S ∪ T |�
3(C) Recruit Communications Co.,Ltd. All rights reserved. �
3.1.1 Jaccard Similarity of Sets
The Jaccard similarity of sets S and T is |S ∩ T |/|S ∪ T |, that is, the ratio
of the size of the intersection of S and T to the size of their union. We shall
denote the Jaccard similarity of S and T by SIM(S, T).
Example 3.1 : In Fig. 3.1 we see two sets S and T . There are three elements
in their intersection and a total of eight elements that appear in S or T or both.
Thus, SIM(S, T) = 3/8. ✷
T
S
Figure 3.1: Two sets with Jaccard similarity 3/8
Minhashing (3.3章)�
•  想定する状況
– 文章 A, B, C, D がある
– 単語 a, b, c, d, e が含まれるかで 0 or 1 つけた
– 文章のジャッカード類似度を計算したい�
4(C) Recruit Communications Co.,Ltd. All rights reserved. �
A� B� C� D�
a� 1� 0� 0� 1�
b� 0� 0� 1� 0�
c� 0� 1� 0� 1�
d� 1� 0� 1� 1�
e� 0� 0� 1� 0�
Minhashing (cont.)�
•  一般的に、類似度を計算するのは大変
–  特に、単語数(要素数)の多さで
•  Minhashing のアイデア
–  単語数に対してユニークなハッシュを、複数使う
•  ハッシュは互いに独立であるものを使う
•  ハッシュの数は単語数に比べれば圧倒的に少ない
–  文章がある単語を持つ
=�文章があるハッシュ値を持つ
–  ハッシュ-文章の対応表の中で
その最小値だけを保持する(← 「Min」)
–  文章間の類似度を上記の表の類似度で近似
–  単語数がハッシュ数に圧縮されて Happy
•  要するに特徴量の圧縮だったりする�
5(C) Recruit Communications Co.,Ltd. All rights reserved. �
Minhashing やってみる�
•  ハッシュ関数として、要素の順番 x に対して
以下の2つを取ってみる
– h1(x) = x + 1 mod 5
– h2(x) = 3x + 1 mod 5
•  ハッシュと言っても、要するに順列並べ替え
6(C) Recruit Communications Co.,Ltd. All rights reserved. �
A� B� C� D� h1� h2�
a(0)� 1� 0� 0� 1� 1� 1�
b(1)� 0� 0� 1� 0� 2� 4�
c(2)� 0� 1� 0� 1� 3� 2�
d(3)� 1� 0� 1� 1� 4� 0�
e(4)� 0� 0� 1� 0� 0� 3�
Minhashing のアルゴリズム�
•  ハッシュ–文章表を無限大に初期化
•  文章がその単語を持ち、
既にある値より小さければ、その値を代入�
7(C) Recruit Communications Co.,Ltd. All rights reserved. �
A� B� C� D� h1� h2�
a(0)� 1� 0� 0� 1� 1� 1�
b(1)� 0� 0� 1� 0� 2� 4�
c(2)� 0� 1� 0� 1� 3� 2�
d(3)� 1� 0� 1� 1� 4� 0�
e(4)� 0� 0� 1� 0� 0� 3�
h1� Inf� Inf� Inf� Inf�
h2� Inf� Inf� Inf� Inf�
Minhashing のアルゴリズム�
•  まずは a、 a を持つものは A, D
•  h1-A, h1-D に h1(0) = 1 を、
h2-A, h2-D に h2(0) = 1 を入れる
8(C) Recruit Communications Co.,Ltd. All rights reserved. �
A� B� C� D� h1� h2�
a(0)� 1� 0� 0� 1� 1� 1�
b(1)� 0� 0� 1� 0� 2� 4�
c(2)� 0� 1� 0� 1� 3� 2�
d(3)� 1� 0� 1� 1� 4� 0�
e(4)� 0� 0� 1� 0� 0� 3�
h1� 1� Inf� Inf� 1�
h2� 1� Inf� Inf� 1�
Minhashing のアルゴリズム�
•  次に b、 b を持つものは C
•  h1-C に h1(1) = 2 を、
h2-C に h2(1) = 4 を入れる
9(C) Recruit Communications Co.,Ltd. All rights reserved. �
A� B� C� D� h1� h2�
a(0)� 1� 0� 0� 1� 1� 1�
b(1)� 0� 0� 1� 0� 2� 4�
c(2)� 0� 1� 0� 1� 3� 2�
d(3)� 1� 0� 1� 1� 4� 0�
e(4)� 0� 0� 1� 0� 0� 3�
h1� 1� Inf� 2� 1�
h2� 1� Inf� 4� 1�
Minhashing のアルゴリズム�
•  次に c
•  h1-D, h2-D は既に 1 なため、
h1(2) = 3 および h2(2) = 2 は入らない
10(C) Recruit Communications Co.,Ltd. All rights reserved. �
A� B� C� D� h1� h2�
a(0)� 1� 0� 0� 1� 1� 1�
b(1)� 0� 0� 1� 0� 2� 4�
c(2)� 0� 1� 0� 1� 3� 2�
d(3)� 1� 0� 1� 1� 4� 0�
e(4)� 0� 0� 1� 0� 0� 3�
h1� 1� 3� 2� 1�
h2� 1� 2� 4� 1�
Minhashing のアルゴリズム�
•  次に d
•  h2(3) = 0 なため、h2-A, h2-C, h2-D が
0 になる
11(C) Recruit Communications Co.,Ltd. All rights reserved. �
A� B� C� D� h1� h2�
a(0)� 1� 0� 0� 1� 1� 1�
b(1)� 0� 0� 1� 0� 2� 4�
c(2)� 0� 1� 0� 1� 3� 2�
d(3)� 1� 0� 1� 1� 4� 0�
e(4)� 0� 0� 1� 0� 0� 3�
h1� 1� 3� 2� 1�
h2� 0� 2� 0� 0�
Minhashing のアルゴリズム�
•  最後に e
•  h1-C が h1(4) = 0 になる
12(C) Recruit Communications Co.,Ltd. All rights reserved. �
A� B� C� D� h1� h2�
a(0)� 1� 0� 0� 1� 1� 1�
b(1)� 0� 0� 1� 0� 2� 4�
c(2)� 0� 1� 0� 1� 3� 2�
d(3)� 1� 0� 1� 1� 4� 0�
e(4)� 0� 0� 1� 0� 0� 3�
h1� 1� 3� 0� 1�
h2� 0� 2� 0� 0�
Minhashing のアルゴリズム�
•  この表の一致度が類似度
– A と C の類似度は、h2 が同じで h1 が違うので、
0.5
– A と D の類似度は 1.0�(完全に一致)
•  あくまで近似
– 本当のジャッカード類似度は、A-C, A-D 共に 2/3
13(C) Recruit Communications Co.,Ltd. All rights reserved. �
A� B� C� D�
h1� 1� 3� 0� 1�
h2� 0� 2� 0� 0�
Minhashing の超大雑把な原理説明�
•  単語の集合を m、類似度が s な2つの文章A, B
•  文章A、Bに含まれる単語の集合を各々
mA、mB とする
•  mA∪mB=m∪、mA∩mB=m∩�とすると
|m∩| / |m∪| = s (ジャッカード類似度の定義)
•  A と B の Minhash が同じ値になる確率
=�m∪ の�Minhash が m∩ の Minhash な確率
= |m∩| / |m∪| = s
•  すなわち、独立なハッシュが h 個あれば、
そのうち Minhash の一致する確率が s
�
14(C) Recruit Communications Co.,Ltd. All rights reserved. �
(Minhash : 全要素をハッシュかけた時の最小値)
Minhashing まとめ�
•  ジャッカード類似度を近似的に求めることに
特化した特徴量圧縮方法
•  単語を一回舐めるだけで出来る(O(|m|))
•  ハッシュ関数は、ax + 1 mod |m| の
a に素数をぶち込めばいくらでも作れる
•  ハッシュ関数が多いほど精度も分解能も良く
なるが、圧縮率との兼ね合いで
•  単語数に対してユニークなハッシュって、あま
りメモリ効率が良くないんじゃあ・・・
⇒ minwise hashing
(hyperLogLog のようにバケツ使う)
15(C) Recruit Communications Co.,Ltd. All rights reserved. �
Locality-Sensitive Hasing (3.4 章)�
•  Minhashing で特徴量(単語)の圧縮はできた
•  でも、文章が沢山あったら、その中から似てる
ペアを探すのは大変だよね
•  つ Locality-Sensitive Hasing (LSH)�
16(C) Recruit Communications Co.,Ltd. All rights reserved. �
LSH のアルゴリズム�
•  Minhashing した ハッシュ-文章表がある
•  ある文章 A と似た文章を探したい
•  ハッシュを、r 個毎の b 個のグループに分ける
•  ハッシュとして、
「r 個のうち全部が A と同じなら残す」
というものを使う
•  これを b 回それぞれのグループで行って、
残ったものの和集合を「A に似た文章の候補」
として、後はその中で類似度を真面目に計算
するとかする
17(C) Recruit Communications Co.,Ltd. All rights reserved. �
LSHの評価�
•  文章 A と最も良く似ている文章 B との類似度
は s だったとする
•  最初のグループで、AとBが全部同じ確率は
sr
•  逆に言えば、最初のグループでBが選ばれな
い確率(false negative:偽陰性)は、1-sr
•  b 個のグループ全部で B が選ばれない確率
(false negative)は、(1-sr)b
•  っていうことは、Bが候補に選ばれる確率は、
1-(1-sr)b
18(C) Recruit Communications Co.,Ltd. All rights reserved. �
S字カーブ�
•  r と b の数を適当に仮定してシミュレートした
結果が、下の図
•  LSH は、ある程度類似度が大きいものを探す
のに効果的な手法であることが分かる�
19(C) Recruit Communications Co.,Ltd. All rights reserved. �
90 CHAPTER 3. FINDING SIMILAR ITEMS
0 1
of documents
Jaccard similarity
Probability
of becoming
a candidate
Figure 3.7: The S-curve
S字カーブを計算してみた�
20(C) Recruit Communications Co.,Ltd. All rights reserved. �
•  グループ数を減らす→候補に残る類似度の閾値が大きくなる�
•  グループ数 b =1の場合、完全一致(類似度 1.0)の�
ものしか選ばれないということなので、納得�
•  ある程度グループに分けることで、「まぁまぁ近いもの」�
を集めることが出来る�→�クラスタリング�
距離測度�(3.5章)�
•  「似ている」=「距離が近い」
•  じゃあ、「距離」って何ね?
–  数学的な(測度の一種である)「距離」の定義
–  今、x から y への距離を d(x, y) と書くことにする
•  d(x, y) ≧ 0
•  d(x, y) = 0 ⇔ x = y
•  d(x, y) = d(y, x) �����������������(対称性)
•  d(x, y) ≦ d(x, z) + d(z, y)����(三角不等式)
•  これらを満たせば何でも「距離」
–  わざとこれを満たさないものを距離として使う場合もある
–  かるばっくらいぶらーだいばーじぇんすとか(対称じゃない)
21(C) Recruit Communications Co.,Ltd. All rights reserved. �
距離の種類�
•  ユークリッド距離
–  いわゆる普通の距離、L2ノルム
–  r 次元に拡張すると、 {Σ ( | xi – yi | r )} 1/r
•  ジャッカード距離
–  1 – ジャッカード類似度
•  コサイン距離
–  いわゆる角度�(内積から計算できるよね?)
•  編集距離
–  x から何文字消して何文字追加したら y になる?
•  ハミング距離
–  bit 列において、(違うbit数) / (bit長)�
22(C) Recruit Communications Co.,Ltd. All rights reserved. �
色んな距離に対する LSH�
•  ジャッカード距離以外の距離に対する LSH
•  グループの分け方
– ユークリッド距離:次元をグループ分けする
– コサイン距離:互いに直行する超平面への写像
– ハミング距離:ビットをグループ分けする
•  ハッシュ関数
– ある閾値より近い距離のものを残す
– (本当は�(R, cR, P1, P2)-sensitive hash とか紹
介されているのだが、まぁいいかと(爆))�
23(C) Recruit Communications Co.,Ltd. All rights reserved. �
LSH まとめ�
•  大量の対象群から、似ているものを探したり
クラスタリングするときに有効な手法
– ある代表点の類似候補でクラスタひとつ、
残りからランダムに代表選んでまた類似候補、
とやっていけばクラスタリングできる
•  RandomProjection + k-NearestNeighbor
のようなイメージ
– あくまでイメージ
– この喩えはたぶん上手くない
24(C) Recruit Communications Co.,Ltd. All rights reserved. �

More Related Content

What's hot

再帰でつくる、計算の世界
再帰でつくる、計算の世界再帰でつくる、計算の世界
再帰でつくる、計算の世界Kazuhiro Hishinuma
 
スペルミス修正プログラムを作ろう
スペルミス修正プログラムを作ろうスペルミス修正プログラムを作ろう
スペルミス修正プログラムを作ろうNaoya Ito
 
2SAT(充足可能性問題)の解き方
2SAT(充足可能性問題)の解き方2SAT(充足可能性問題)の解き方
2SAT(充足可能性問題)の解き方Tsuneo Yoshioka
 
R120234【メソ研】003
R120234【メソ研】003R120234【メソ研】003
R120234【メソ研】003Sei Sumi
 
Information Retrieval
Information RetrievalInformation Retrieval
Information Retrievalsaireya _
 
第5章 時系列データのモデリング, 補助情報を考慮したモデリング
第5章 時系列データのモデリング, 補助情報を考慮したモデリング第5章 時系列データのモデリング, 補助情報を考慮したモデリング
第5章 時系列データのモデリング, 補助情報を考慮したモデリングksmzn
 
20170422 数学カフェ Part2
20170422 数学カフェ Part220170422 数学カフェ Part2
20170422 数学カフェ Part2Kenta Oono
 
20170422 数学カフェ Part1
20170422 数学カフェ Part120170422 数学カフェ Part1
20170422 数学カフェ Part1Kenta Oono
 

What's hot (9)

再帰でつくる、計算の世界
再帰でつくる、計算の世界再帰でつくる、計算の世界
再帰でつくる、計算の世界
 
スペルミス修正プログラムを作ろう
スペルミス修正プログラムを作ろうスペルミス修正プログラムを作ろう
スペルミス修正プログラムを作ろう
 
2SAT(充足可能性問題)の解き方
2SAT(充足可能性問題)の解き方2SAT(充足可能性問題)の解き方
2SAT(充足可能性問題)の解き方
 
R120234【メソ研】003
R120234【メソ研】003R120234【メソ研】003
R120234【メソ研】003
 
Information Retrieval
Information RetrievalInformation Retrieval
Information Retrieval
 
第5章 時系列データのモデリング, 補助情報を考慮したモデリング
第5章 時系列データのモデリング, 補助情報を考慮したモデリング第5章 時系列データのモデリング, 補助情報を考慮したモデリング
第5章 時系列データのモデリング, 補助情報を考慮したモデリング
 
20170422 数学カフェ Part2
20170422 数学カフェ Part220170422 数学カフェ Part2
20170422 数学カフェ Part2
 
20170422 数学カフェ Part1
20170422 数学カフェ Part120170422 数学カフェ Part1
20170422 数学カフェ Part1
 
Hessian free
Hessian freeHessian free
Hessian free
 

Similar to Mining of massive datasets chapter3

paizaオンラインハッカソン(略してPOH![ポー!])Lite「天才火消しエンジニア霧島 もしPMおじさんが『丸投げ』を覚えたら」解説
paizaオンラインハッカソン(略してPOH![ポー!])Lite「天才火消しエンジニア霧島 もしPMおじさんが『丸投げ』を覚えたら」解説paizaオンラインハッカソン(略してPOH![ポー!])Lite「天才火消しエンジニア霧島 もしPMおじさんが『丸投げ』を覚えたら」解説
paizaオンラインハッカソン(略してPOH![ポー!])Lite「天才火消しエンジニア霧島 もしPMおじさんが『丸投げ』を覚えたら」解説paiza
 
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9Yuya Unno
 
CODE THANKS FESTIVAL 2014 A日程 解説
CODE THANKS FESTIVAL 2014 A日程 解説CODE THANKS FESTIVAL 2014 A日程 解説
CODE THANKS FESTIVAL 2014 A日程 解説AtCoder Inc.
 
大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端Takuya Akiba
 
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17Yuya Unno
 
並列データベースシステムの概念と原理
並列データベースシステムの概念と原理並列データベースシステムの概念と原理
並列データベースシステムの概念と原理Makoto Yui
 
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)Koji Matsuda
 

Similar to Mining of massive datasets chapter3 (9)

paizaオンラインハッカソン(略してPOH![ポー!])Lite「天才火消しエンジニア霧島 もしPMおじさんが『丸投げ』を覚えたら」解説
paizaオンラインハッカソン(略してPOH![ポー!])Lite「天才火消しエンジニア霧島 もしPMおじさんが『丸投げ』を覚えたら」解説paizaオンラインハッカソン(略してPOH![ポー!])Lite「天才火消しエンジニア霧島 もしPMおじさんが『丸投げ』を覚えたら」解説
paizaオンラインハッカソン(略してPOH![ポー!])Lite「天才火消しエンジニア霧島 もしPMおじさんが『丸投げ』を覚えたら」解説
 
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
 
CODE THANKS FESTIVAL 2014 A日程 解説
CODE THANKS FESTIVAL 2014 A日程 解説CODE THANKS FESTIVAL 2014 A日程 解説
CODE THANKS FESTIVAL 2014 A日程 解説
 
大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端
 
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
 
4thNLPDL
4thNLPDL4thNLPDL
4thNLPDL
 
並列データベースシステムの概念と原理
並列データベースシステムの概念と原理並列データベースシステムの概念と原理
並列データベースシステムの概念と原理
 
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
 
二分探索をはじめからていねいに
二分探索をはじめからていねいに二分探索をはじめからていねいに
二分探索をはじめからていねいに
 

More from Maruyama Tetsutaro

Online Matching and Ad Allocaton 8章&9章半分
Online Matching and Ad Allocaton 8章&9章半分Online Matching and Ad Allocaton 8章&9章半分
Online Matching and Ad Allocaton 8章&9章半分Maruyama Tetsutaro
 
shot note で手書き資料作成
shot note で手書き資料作成shot note で手書き資料作成
shot note で手書き資料作成Maruyama Tetsutaro
 
ユークリッド距離以外の距離で教師無しクラスタリング
ユークリッド距離以外の距離で教師無しクラスタリングユークリッド距離以外の距離で教師無しクラスタリング
ユークリッド距離以外の距離で教師無しクラスタリングMaruyama Tetsutaro
 
機械学習向けプログラミング言語の使い分け - RCO の場合
機械学習向けプログラミング言語の使い分け - RCO の場合機械学習向けプログラミング言語の使い分け - RCO の場合
機械学習向けプログラミング言語の使い分け - RCO の場合Maruyama Tetsutaro
 
業務に活かすデータサイエンスとは?
業務に活かすデータサイエンスとは?業務に活かすデータサイエンスとは?
業務に活かすデータサイエンスとは?Maruyama Tetsutaro
 
Ubuntuで最新パッケージを導入
Ubuntuで最新パッケージを導入Ubuntuで最新パッケージを導入
Ubuntuで最新パッケージを導入Maruyama Tetsutaro
 
Zshでデキるプロンプト
ZshでデキるプロンプトZshでデキるプロンプト
ZshでデキるプロンプトMaruyama Tetsutaro
 
ランダム・シャッフル
ランダム・シャッフルランダム・シャッフル
ランダム・シャッフルMaruyama Tetsutaro
 
Zipf分布に従う乱数の生成方法
Zipf分布に従う乱数の生成方法Zipf分布に従う乱数の生成方法
Zipf分布に従う乱数の生成方法Maruyama Tetsutaro
 
円錐曲線の極座標表示
円錐曲線の極座標表示円錐曲線の極座標表示
円錐曲線の極座標表示Maruyama Tetsutaro
 

More from Maruyama Tetsutaro (15)

Online Matching and Ad Allocaton 8章&9章半分
Online Matching and Ad Allocaton 8章&9章半分Online Matching and Ad Allocaton 8章&9章半分
Online Matching and Ad Allocaton 8章&9章半分
 
shot note で手書き資料作成
shot note で手書き資料作成shot note で手書き資料作成
shot note で手書き資料作成
 
ユークリッド距離以外の距離で教師無しクラスタリング
ユークリッド距離以外の距離で教師無しクラスタリングユークリッド距離以外の距離で教師無しクラスタリング
ユークリッド距離以外の距離で教師無しクラスタリング
 
機械学習向けプログラミング言語の使い分け - RCO の場合
機械学習向けプログラミング言語の使い分け - RCO の場合機械学習向けプログラミング言語の使い分け - RCO の場合
機械学習向けプログラミング言語の使い分け - RCO の場合
 
keynoteでslideshare
keynoteでslidesharekeynoteでslideshare
keynoteでslideshare
 
Lambda and rundeck
Lambda and rundeckLambda and rundeck
Lambda and rundeck
 
業務に活かすデータサイエンスとは?
業務に活かすデータサイエンスとは?業務に活かすデータサイエンスとは?
業務に活かすデータサイエンスとは?
 
日本の伝統色
日本の伝統色日本の伝統色
日本の伝統色
 
Gnuplotあれこれ
GnuplotあれこれGnuplotあれこれ
Gnuplotあれこれ
 
Ubuntuで最新パッケージを導入
Ubuntuで最新パッケージを導入Ubuntuで最新パッケージを導入
Ubuntuで最新パッケージを導入
 
Zshでデキるプロンプト
ZshでデキるプロンプトZshでデキるプロンプト
Zshでデキるプロンプト
 
配列数式
配列数式配列数式
配列数式
 
ランダム・シャッフル
ランダム・シャッフルランダム・シャッフル
ランダム・シャッフル
 
Zipf分布に従う乱数の生成方法
Zipf分布に従う乱数の生成方法Zipf分布に従う乱数の生成方法
Zipf分布に従う乱数の生成方法
 
円錐曲線の極座標表示
円錐曲線の極座標表示円錐曲線の極座標表示
円錐曲線の極座標表示
 

Recently uploaded

TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成Hiroshi Tomioka
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 

Recently uploaded (9)

TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 

Mining of massive datasets chapter3

  • 1. Mining of Massive Datasets 輪読会 3. Finding Similar Items リクルートコミュニケーションズ 丸山 哲太郎
  • 3. ジャッカード類似度 (3.1章)� •  「どれぐらい似ているか」を表す指標: ジャッカード類似度 = | S ∩ T | / | S ∪ T |� 3(C) Recruit Communications Co.,Ltd. All rights reserved. � 3.1.1 Jaccard Similarity of Sets The Jaccard similarity of sets S and T is |S ∩ T |/|S ∪ T |, that is, the ratio of the size of the intersection of S and T to the size of their union. We shall denote the Jaccard similarity of S and T by SIM(S, T). Example 3.1 : In Fig. 3.1 we see two sets S and T . There are three elements in their intersection and a total of eight elements that appear in S or T or both. Thus, SIM(S, T) = 3/8. ✷ T S Figure 3.1: Two sets with Jaccard similarity 3/8
  • 4. Minhashing (3.3章)� •  想定する状況 – 文章 A, B, C, D がある – 単語 a, b, c, d, e が含まれるかで 0 or 1 つけた – 文章のジャッカード類似度を計算したい� 4(C) Recruit Communications Co.,Ltd. All rights reserved. � A� B� C� D� a� 1� 0� 0� 1� b� 0� 0� 1� 0� c� 0� 1� 0� 1� d� 1� 0� 1� 1� e� 0� 0� 1� 0�
  • 5. Minhashing (cont.)� •  一般的に、類似度を計算するのは大変 –  特に、単語数(要素数)の多さで •  Minhashing のアイデア –  単語数に対してユニークなハッシュを、複数使う •  ハッシュは互いに独立であるものを使う •  ハッシュの数は単語数に比べれば圧倒的に少ない –  文章がある単語を持つ =�文章があるハッシュ値を持つ –  ハッシュ-文章の対応表の中で その最小値だけを保持する(← 「Min」) –  文章間の類似度を上記の表の類似度で近似 –  単語数がハッシュ数に圧縮されて Happy •  要するに特徴量の圧縮だったりする� 5(C) Recruit Communications Co.,Ltd. All rights reserved. �
  • 6. Minhashing やってみる� •  ハッシュ関数として、要素の順番 x に対して 以下の2つを取ってみる – h1(x) = x + 1 mod 5 – h2(x) = 3x + 1 mod 5 •  ハッシュと言っても、要するに順列並べ替え 6(C) Recruit Communications Co.,Ltd. All rights reserved. � A� B� C� D� h1� h2� a(0)� 1� 0� 0� 1� 1� 1� b(1)� 0� 0� 1� 0� 2� 4� c(2)� 0� 1� 0� 1� 3� 2� d(3)� 1� 0� 1� 1� 4� 0� e(4)� 0� 0� 1� 0� 0� 3�
  • 7. Minhashing のアルゴリズム� •  ハッシュ–文章表を無限大に初期化 •  文章がその単語を持ち、 既にある値より小さければ、その値を代入� 7(C) Recruit Communications Co.,Ltd. All rights reserved. � A� B� C� D� h1� h2� a(0)� 1� 0� 0� 1� 1� 1� b(1)� 0� 0� 1� 0� 2� 4� c(2)� 0� 1� 0� 1� 3� 2� d(3)� 1� 0� 1� 1� 4� 0� e(4)� 0� 0� 1� 0� 0� 3� h1� Inf� Inf� Inf� Inf� h2� Inf� Inf� Inf� Inf�
  • 8. Minhashing のアルゴリズム� •  まずは a、 a を持つものは A, D •  h1-A, h1-D に h1(0) = 1 を、 h2-A, h2-D に h2(0) = 1 を入れる 8(C) Recruit Communications Co.,Ltd. All rights reserved. � A� B� C� D� h1� h2� a(0)� 1� 0� 0� 1� 1� 1� b(1)� 0� 0� 1� 0� 2� 4� c(2)� 0� 1� 0� 1� 3� 2� d(3)� 1� 0� 1� 1� 4� 0� e(4)� 0� 0� 1� 0� 0� 3� h1� 1� Inf� Inf� 1� h2� 1� Inf� Inf� 1�
  • 9. Minhashing のアルゴリズム� •  次に b、 b を持つものは C •  h1-C に h1(1) = 2 を、 h2-C に h2(1) = 4 を入れる 9(C) Recruit Communications Co.,Ltd. All rights reserved. � A� B� C� D� h1� h2� a(0)� 1� 0� 0� 1� 1� 1� b(1)� 0� 0� 1� 0� 2� 4� c(2)� 0� 1� 0� 1� 3� 2� d(3)� 1� 0� 1� 1� 4� 0� e(4)� 0� 0� 1� 0� 0� 3� h1� 1� Inf� 2� 1� h2� 1� Inf� 4� 1�
  • 10. Minhashing のアルゴリズム� •  次に c •  h1-D, h2-D は既に 1 なため、 h1(2) = 3 および h2(2) = 2 は入らない 10(C) Recruit Communications Co.,Ltd. All rights reserved. � A� B� C� D� h1� h2� a(0)� 1� 0� 0� 1� 1� 1� b(1)� 0� 0� 1� 0� 2� 4� c(2)� 0� 1� 0� 1� 3� 2� d(3)� 1� 0� 1� 1� 4� 0� e(4)� 0� 0� 1� 0� 0� 3� h1� 1� 3� 2� 1� h2� 1� 2� 4� 1�
  • 11. Minhashing のアルゴリズム� •  次に d •  h2(3) = 0 なため、h2-A, h2-C, h2-D が 0 になる 11(C) Recruit Communications Co.,Ltd. All rights reserved. � A� B� C� D� h1� h2� a(0)� 1� 0� 0� 1� 1� 1� b(1)� 0� 0� 1� 0� 2� 4� c(2)� 0� 1� 0� 1� 3� 2� d(3)� 1� 0� 1� 1� 4� 0� e(4)� 0� 0� 1� 0� 0� 3� h1� 1� 3� 2� 1� h2� 0� 2� 0� 0�
  • 12. Minhashing のアルゴリズム� •  最後に e •  h1-C が h1(4) = 0 になる 12(C) Recruit Communications Co.,Ltd. All rights reserved. � A� B� C� D� h1� h2� a(0)� 1� 0� 0� 1� 1� 1� b(1)� 0� 0� 1� 0� 2� 4� c(2)� 0� 1� 0� 1� 3� 2� d(3)� 1� 0� 1� 1� 4� 0� e(4)� 0� 0� 1� 0� 0� 3� h1� 1� 3� 0� 1� h2� 0� 2� 0� 0�
  • 13. Minhashing のアルゴリズム� •  この表の一致度が類似度 – A と C の類似度は、h2 が同じで h1 が違うので、 0.5 – A と D の類似度は 1.0�(完全に一致) •  あくまで近似 – 本当のジャッカード類似度は、A-C, A-D 共に 2/3 13(C) Recruit Communications Co.,Ltd. All rights reserved. � A� B� C� D� h1� 1� 3� 0� 1� h2� 0� 2� 0� 0�
  • 14. Minhashing の超大雑把な原理説明� •  単語の集合を m、類似度が s な2つの文章A, B •  文章A、Bに含まれる単語の集合を各々 mA、mB とする •  mA∪mB=m∪、mA∩mB=m∩�とすると |m∩| / |m∪| = s (ジャッカード類似度の定義) •  A と B の Minhash が同じ値になる確率 =�m∪ の�Minhash が m∩ の Minhash な確率 = |m∩| / |m∪| = s •  すなわち、独立なハッシュが h 個あれば、 そのうち Minhash の一致する確率が s � 14(C) Recruit Communications Co.,Ltd. All rights reserved. � (Minhash : 全要素をハッシュかけた時の最小値)
  • 15. Minhashing まとめ� •  ジャッカード類似度を近似的に求めることに 特化した特徴量圧縮方法 •  単語を一回舐めるだけで出来る(O(|m|)) •  ハッシュ関数は、ax + 1 mod |m| の a に素数をぶち込めばいくらでも作れる •  ハッシュ関数が多いほど精度も分解能も良く なるが、圧縮率との兼ね合いで •  単語数に対してユニークなハッシュって、あま りメモリ効率が良くないんじゃあ・・・ ⇒ minwise hashing (hyperLogLog のようにバケツ使う) 15(C) Recruit Communications Co.,Ltd. All rights reserved. �
  • 16. Locality-Sensitive Hasing (3.4 章)� •  Minhashing で特徴量(単語)の圧縮はできた •  でも、文章が沢山あったら、その中から似てる ペアを探すのは大変だよね •  つ Locality-Sensitive Hasing (LSH)� 16(C) Recruit Communications Co.,Ltd. All rights reserved. �
  • 17. LSH のアルゴリズム� •  Minhashing した ハッシュ-文章表がある •  ある文章 A と似た文章を探したい •  ハッシュを、r 個毎の b 個のグループに分ける •  ハッシュとして、 「r 個のうち全部が A と同じなら残す」 というものを使う •  これを b 回それぞれのグループで行って、 残ったものの和集合を「A に似た文章の候補」 として、後はその中で類似度を真面目に計算 するとかする 17(C) Recruit Communications Co.,Ltd. All rights reserved. �
  • 18. LSHの評価� •  文章 A と最も良く似ている文章 B との類似度 は s だったとする •  最初のグループで、AとBが全部同じ確率は sr •  逆に言えば、最初のグループでBが選ばれな い確率(false negative:偽陰性)は、1-sr •  b 個のグループ全部で B が選ばれない確率 (false negative)は、(1-sr)b •  っていうことは、Bが候補に選ばれる確率は、 1-(1-sr)b 18(C) Recruit Communications Co.,Ltd. All rights reserved. �
  • 19. S字カーブ� •  r と b の数を適当に仮定してシミュレートした 結果が、下の図 •  LSH は、ある程度類似度が大きいものを探す のに効果的な手法であることが分かる� 19(C) Recruit Communications Co.,Ltd. All rights reserved. � 90 CHAPTER 3. FINDING SIMILAR ITEMS 0 1 of documents Jaccard similarity Probability of becoming a candidate Figure 3.7: The S-curve
  • 20. S字カーブを計算してみた� 20(C) Recruit Communications Co.,Ltd. All rights reserved. � •  グループ数を減らす→候補に残る類似度の閾値が大きくなる� •  グループ数 b =1の場合、完全一致(類似度 1.0)の� ものしか選ばれないということなので、納得� •  ある程度グループに分けることで、「まぁまぁ近いもの」� を集めることが出来る�→�クラスタリング�
  • 21. 距離測度�(3.5章)� •  「似ている」=「距離が近い」 •  じゃあ、「距離」って何ね? –  数学的な(測度の一種である)「距離」の定義 –  今、x から y への距離を d(x, y) と書くことにする •  d(x, y) ≧ 0 •  d(x, y) = 0 ⇔ x = y •  d(x, y) = d(y, x) �����������������(対称性) •  d(x, y) ≦ d(x, z) + d(z, y)����(三角不等式) •  これらを満たせば何でも「距離」 –  わざとこれを満たさないものを距離として使う場合もある –  かるばっくらいぶらーだいばーじぇんすとか(対称じゃない) 21(C) Recruit Communications Co.,Ltd. All rights reserved. �
  • 22. 距離の種類� •  ユークリッド距離 –  いわゆる普通の距離、L2ノルム –  r 次元に拡張すると、 {Σ ( | xi – yi | r )} 1/r •  ジャッカード距離 –  1 – ジャッカード類似度 •  コサイン距離 –  いわゆる角度�(内積から計算できるよね?) •  編集距離 –  x から何文字消して何文字追加したら y になる? •  ハミング距離 –  bit 列において、(違うbit数) / (bit長)� 22(C) Recruit Communications Co.,Ltd. All rights reserved. �
  • 23. 色んな距離に対する LSH� •  ジャッカード距離以外の距離に対する LSH •  グループの分け方 – ユークリッド距離:次元をグループ分けする – コサイン距離:互いに直行する超平面への写像 – ハミング距離:ビットをグループ分けする •  ハッシュ関数 – ある閾値より近い距離のものを残す – (本当は�(R, cR, P1, P2)-sensitive hash とか紹 介されているのだが、まぁいいかと(爆))� 23(C) Recruit Communications Co.,Ltd. All rights reserved. �