- Given: 2つの集合
- Def: Jaccard similarity
0/1-hash
- Given: 集合族
- Def: 全要素
- Given: 全要素の並び順
このとき、集合 に対する 0/1-hash は、「 の順に全要素を見ていったときに、一番最初に に属している要素」と定義される。
この 0/1-MinHash について成り立つ重要な性質が、
「 がランダムなら、任意の に対して 」
である。証明は
- 全要素を の「A: 両方に含まれる」、「B: 片方に含まれる」、「C: どちらにも含まれない」の三種類に分ける
- このときタイプ C は無視してよくて、
- 残り (A + B) のうち一番最初にタイプ A を引く確率を考えればよい。
0/1-hash という名前は勝手に付けた。 は各要素についてその集合に属していれば1、そうでなければ0という写像になっているから。
MinHash
ランダムな を生成するのは時間がかかる。本質的なのは「比較する要素がランダムに選ばれること」なので、
- Given: 要素に対するハッシュ関数
- Def: 集合 に対する の最小値
として、 が「性能の良い」ハッシュであれば、同様に が成り立つ。
(通常の) MinHash
ハッシュ関数の数を増やすと、サンプリング回数を増やすことになり、Jaccard similarity の推定値の分散が減る。
- Given: 個の独立したハッシュ関数
このとき、Jaccard similarity の推定値は、 になる ( はクロネッカーのデルタ)。
Locality Sensitive Hashing
MinHash は Locality Sensitive Hashing (LSH) の1種と言える。LSH は距離が近い2点で同じ値を取りやすいハッシュ関数を用いた近傍探索。
- Given: 距離 の定義された空間
- Given: 近傍の閾値 と近似因子
このとき、LSH で用いるハッシュ関数 が満たすべき性質は、
- , where
- and
簡単な例は、ハミング距離の定義された空間()における、その部分空間への正射影()。
Nearest Neighbor Search
すでに書いたが、LSH は Nearest Neighbor Search (NNS; 最近傍探索) に対するアプローチの一種。
- データが存在するノルム空間の多様性、および
- 次元の呪い
から、これまで NNS に対する一般のアルゴリズムは悲観的に思われていたようだ(=対象となるデータのノルム空間に応じたアルゴリズムを設計する必要がある)が、2018年に発表された Data-dependent hashing via nonlinear spectral gaps という論文が「高次元ノルム空間における非線形スペクトルギャップを LSH に一般的に落とし込むことで、(approximate) NNS に対する新しいアプローチを与えた」ということで最近注目を浴びているらしいので、いつか結果だけでも理解したい。