論文紹介Scalable Nearest Neighbor Algorithms
for High Dimensional Data [1]
Keisuke Umezawa
Summary
● 最近傍探索アルゴリズムはおおまかに 3種類○ Tree Based Algorithm○ Hashing Based Algorithm○ Graph Based Algorithm
● 性能が良かったのは以下の 2つのアルゴリズム○ randomized k-d tree○ priority search k-means tree (提案手法 )
Agenda
1. 最近傍法の定義2. 最近傍法のアルゴリズムの分類3. 性能が良かったアルゴリズムを詳しく4. 性能評価
最近傍探索の種類● 最近傍探索には 3種類あるよ
1. nearest neighbor (NN) search2. K-nearest neighbor (KNN) search3. radius rearest neighbor (RNN) search
nearest neighbor (NN)
● 距離空間M 上の点集合 P={p1, p2, ..., pn}と点 q があった時、Pに含まれる qに最も近い点を探すこと
NN(q, P) = argminp P∈ d(q, p)
k-nearest neighbor (KNN)
● 距離空間M 上の点集合 P={p1, p2, ..., pn}と点 q があった時、Pに含まれる qに最も近い点 K個を探すこと
Radius nearest neighbor (RNN)
● 距離空間M 上の点集合 P={p1, p2, ..., pn}と点 q があった時、Pに含まれる qの半径 r以内の点を探すこと
Agenda
1. 最近傍法の定義2. 最近傍法のアルゴリズムの分類3. 性能が良かったアルゴリズムを詳しく4. 性能評価
最近傍探索アルゴリズム● (近似 )最近傍探索アルゴリズムには 3種類あるよ
1. tree based algorithma. k-d treeb. k-means tree 等
2. hashing based algorithma. locally sensitive hashing (LSH) 等
3. graph based algorithma. k-NN graph 等
最近傍探索アルゴリズム● (近似 )最近傍探索アルゴリズムには 3種類あるよ
1. tree based algorithma. k-d tree b. k-means tree 等
2. hashing based algorithma. locally sensitive hashing (LSH) 等
3. graph based algorithma. k-NN graph 等
k-d tree (tree based algorithm)
● 種類○ k-d tree
○ approximate k-d tree
○ randomized k-d tree
○ non-axis-aligned k-d tree
k-d tree (tree based algorithm)
● kd-tree
○ 最も良く知られたアルゴリズムの 1つ○ 各次元を巡回して中央値付近で分割
● 長所○ 低次元ベクトルでは高性能
● 短所○ 高次元になると全探索と変わらない
k-d tree (tree based algorithm)
● approximate kd-tree
○ 近似により高次元での性能を改善○ 誤差の指定方法が、 "error bound"と "time bound"がある
● 長所○ k-d treeより高次元での性能が高い
● 短所○ exactではない
k-d tree (tree based algorithm)
● randomized kd-tree
○ 乱数を用いて複数の k-d treeを生成し、並列に探索させる● 長所
○ 本論文で扱った中で、最も性能が高いものの 1つ● 短所
○ 複数の木を作る必要がある。○ 確率の要素が含まれるので、同じデータでも木を作るごとに結果が異なる
k-d tree (tree based algorithm)
● non-axis-aligned k-d tree
○ 軸と並行出ない方向に分割する k-d tree
○ PCAなどで分割方向を選択する● 長所● 短所
○ PCA等の計算があるため、計算速度は劣化する
k-means tree (tree based algorithm)
● k-means tree
○ k-meansで再帰的にクラスタリングすることで k分木を作成● 長所
○ 高い precisionが必要なときの性能が良い● 短所
○ index作成時に階層ごとにk-meansをするため時間がかかる
○ kの値に応じて最適なパラメータが異なり、1つの木だけで任意の kで高い性能を出せない
○ データ点の追加・削除時にどうするか
LSH (hash based algorithm)
● locally sensitive hashing (LSH)○ 元の空間の距離情報を保持しながら hash(低次元化 )する○ 例:元のデータの cosine類似度で近い点をハミング距離で近いように変換する
● 長所○ 数学的に性能が保証されている○ 多くのプロジェクトで使われた実績がある
● 短所○ tree basedに比べて性能が悪い
k-NN graph (graph based algorithm)
● k-NN graph○ 近傍点を繋いだ graph構造による探索
● 長所○ ある論文では randomized k-d tree並の性能が報告されている
● 短所○ index(graph構造 )作成に時間がかかる
Agenda
1. 最近傍法の定義2. 最近傍法のアルゴリズムの分類3. 性能が良かったアルゴリズムを詳しく4. 性能評価
性能が良かったアルゴリズムを詳しく● 性能が良かったのは以下の 2つの tree based
algorithm
○ randomized k-d tree
○ priority search k-means tree (提案手法 )
randomized k-d tree
● 乱数を用いて複数の k-d treeを生成し、並列に探索させる● k-d treeとの違い
○ index時■ 通常:分散の最も大きい軸で分割する■ 本手法:分散の大きい軸の上位 5軸からランダムで選択
○ search時■ 通常: 1つの木を探索する■ 本手法:複数の木を並列に探索する
randomized k-d tree
● 図を用いて直感的な説明○ q : クエリ , : 最近傍点
●左の treeだけでは、木構造で表現すると 2点が遠くなる
priority search k-means tree
● best-bin-firstアルゴリズムにより k-means treeの探索を高速化● index時
1. K個の領域に分割するように k-meansを行う2. 各領域に対して、
a. データ数が K個以下の場合、操作終了b. データ数が K個より大きい場合、その領域に 1を行う
K=2の場合
priority search k-means tree
● search時1. まだ探索していないクエリに最も近い領域を探す2. クエリとその領域に含まれる全データの距離を計算し、 prioirty queueに挿入する3. prioirty queue内のデータ数が、
a. k以上の場合、探索終了b. kより小さい場合、 1に戻る
k=3の場合、紫 ->青と探索
計算量の比較n:全データ数、 d:次元数、 T:k-d treeの数、K:k-meansの分岐数、 I:k-meansの Iteration数
Algorithm 最近傍点のsearch
index作成 データ追加 データ削除randomized k-d
treeO(log n) O(Tn log n) O(T log n) O(T log n)
priority k-means tree
O(d logK n) O(IdKn logK n) ? ?
Agenda
1. 最近傍法の定義2. 最近傍法のアルゴリズムの分類3. 性能が良かったアルゴリズムを詳しく4. 性能評価
Search Precision● randomized k-d treeが最も性能が良い●次点で k-means tree
Reference1. Scalable nearest neighbor algorithms for high dimensional data (
http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6809191 )
EOP
Search Precision● randomized k-d treeが最も性能が良い●ある条件設定では、
k-means treeが randomized k-d treeが良いときもある