Distance Based Hashingによる多次元データのK近傍探索
元ネタは
Vassilis Athitsos, Michalis Potamias, Panagiotis Papapetrou, and George Kollios. Nearest Neighbor Retrieval Using Distance-Based Hashing. In ICDE, pp. 327–336. IEEE, 2008.
Locally Sensitive Hashing(LSH)
多次元データのK近傍探索を行う場合に使われるのがLocally Sensitive Hashingである.同じく多次元データの探索技術として木構造の一つであるKD木を使ったものなどもある.
をオブジェクトの空間とし,上で定義される距離測度をとする.また,となるハッシュ関数族をで表す.ただし,は整数全体の集合を意味する.いま,であるとき,全てのに対して,
となる実数が存在する場合,
は局所性を持つ(locally sensitiveである)と言う*1.
局所性を持つ関数族が与えられたとき,
Locally Sensitive Hashing(LSH)のインデクシングは以下のように行われる.
- となる2つの整数を選択する
- 個のハッシュ関数を作成する.ただし,それぞれのハッシュ関数はからランダムに選ばれた個の関数のリストである.すなわち,となる.
- 個のハッシュテーブルに,として値を保存する.ここで,は,ハッシュテーブルの番目のエントリに値を保存する事を意味している.データ同士の値が近い場合,一定確率で同じハッシュ値が生成されるため,K近傍探索が行えるようになる.
LSHではこの個のハッシュテーブルをもとにしてK近傍探索を行う.ただし,とはデータの種類によって最適な値が異なってくる.直感的にはが低くなるとハッシュ値が衝突する確率が大きくなり,検索しなければならないデータの取りこぼしが少なくなってしまうが,余分なデータのハッシュ値まで衝突してしまうため,計算のコストが増大する.逆に,を大きくしすぎると,衝突が発生しにくくなってしまい,の値を大きくとらないとならない.
Distance Based Hashing
一般的にLSHではデータの検出の正確性やコストなどを厳密なものにするため,データ空間に三角不等式が成り立つなど,一定の制約が必要となる.Distance Based Hashingではデータ同士の距離が測定可能こと以外には,例えばデータの空間がユークリッド空間である必要があるなどといった特別な制約がない.以下ではDistance Based Hashingのインデクシング方法を説明する.
をオブジェクトの空間とし,上で定義される距離測度をとする.いま,となるランダムな値が与えられたとき,データ空間から1次元の実数空間への写像を以下のように定義する.
次に,となる,2つの実数が与えられたとき,二値の値を返す関数を以下のように定義する.
ここで,が0となる確率が,だいたい0.5になるようなの組み合わせの集合を考える.すなわち,
となる集合である.
DBHでは以下のハッシュ関数族を用いて,インデクシングを行う.
あとは,LSHと同様に,個のハッシュ関数からハッシュテーブルのインデクス値を生成する.また,DBHでもLSHと同様に個のハッシュテーブルを用いる.
*1:Aristides Gionis, Piotr Indyk, and Rajeev Motwani. Similarity Search in High Dimensions via Hashing. In VLDB ’99: Proceedings of the 25th International Conference on Very Large Data Bases, pp. 518–529, San Francisco, CA, USA, 1999. Morgan Kaufmann Publishers Inc.