30
論論論論 Scalable Nearest Neighbor Algorithms for High Dimensional Data [1] Keisuke Umezawa

Scalable nearest neighbor algorithms for high dimensional data

Embed Size (px)

Citation preview

Page 1: Scalable nearest neighbor algorithms for high dimensional data

論文紹介Scalable Nearest Neighbor Algorithms

for High Dimensional Data [1]

Keisuke Umezawa

Page 2: Scalable nearest neighbor algorithms for high dimensional data

Summary

● 最近傍探索アルゴリズムはおおまかに 3種類○ Tree Based Algorithm○ Hashing Based Algorithm○ Graph Based Algorithm

● 性能が良かったのは以下の 2つのアルゴリズム○ randomized k-d tree○ priority search k-means tree (提案手法 )

Page 3: Scalable nearest neighbor algorithms for high dimensional data

Agenda

1. 最近傍法の定義2. 最近傍法のアルゴリズムの分類3. 性能が良かったアルゴリズムを詳しく4. 性能評価

Page 4: Scalable nearest neighbor algorithms for high dimensional data

最近傍探索の種類● 最近傍探索には 3種類あるよ

1. nearest neighbor (NN) search2. K-nearest neighbor (KNN) search3. radius rearest neighbor (RNN) search

Page 5: Scalable nearest neighbor algorithms for high dimensional data

nearest neighbor (NN)

● 距離空間M 上の点集合 P={p1, p2, ..., pn}と点 q があった時、Pに含まれる qに最も近い点を探すこと

NN(q, P) = argminp P∈ d(q, p)

Page 6: Scalable nearest neighbor algorithms for high dimensional data

k-nearest neighbor (KNN)

● 距離空間M 上の点集合 P={p1, p2, ..., pn}と点 q があった時、Pに含まれる qに最も近い点 K個を探すこと

Page 7: Scalable nearest neighbor algorithms for high dimensional data

Radius nearest neighbor (RNN)

● 距離空間M 上の点集合 P={p1, p2, ..., pn}と点 q があった時、Pに含まれる qの半径 r以内の点を探すこと

Page 8: Scalable nearest neighbor algorithms for high dimensional data

Agenda

1. 最近傍法の定義2. 最近傍法のアルゴリズムの分類3. 性能が良かったアルゴリズムを詳しく4. 性能評価

Page 9: Scalable nearest neighbor algorithms for high dimensional data

最近傍探索アルゴリズム● (近似 )最近傍探索アルゴリズムには 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 等

Page 10: Scalable nearest neighbor algorithms for high dimensional data

最近傍探索アルゴリズム● (近似 )最近傍探索アルゴリズムには 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 等

Page 11: Scalable nearest neighbor algorithms for high dimensional data

k-d tree (tree based algorithm)

● 種類○ k-d tree

○ approximate k-d tree

○ randomized k-d tree

○ non-axis-aligned k-d tree

Page 12: Scalable nearest neighbor algorithms for high dimensional data

k-d tree (tree based algorithm)

● kd-tree

○ 最も良く知られたアルゴリズムの 1つ○ 各次元を巡回して中央値付近で分割

● 長所○ 低次元ベクトルでは高性能

● 短所○ 高次元になると全探索と変わらない

Page 13: Scalable nearest neighbor algorithms for high dimensional data

k-d tree (tree based algorithm)

● approximate kd-tree

○ 近似により高次元での性能を改善○ 誤差の指定方法が、 "error bound"と "time bound"がある

● 長所○ k-d treeより高次元での性能が高い

● 短所○ exactではない

Page 14: Scalable nearest neighbor algorithms for high dimensional data

k-d tree (tree based algorithm)

● randomized kd-tree

○ 乱数を用いて複数の k-d treeを生成し、並列に探索させる● 長所

○ 本論文で扱った中で、最も性能が高いものの 1つ● 短所

○ 複数の木を作る必要がある。○ 確率の要素が含まれるので、同じデータでも木を作るごとに結果が異なる

Page 15: Scalable nearest neighbor algorithms for high dimensional data

k-d tree (tree based algorithm)

● non-axis-aligned k-d tree

○ 軸と並行出ない方向に分割する k-d tree

○ PCAなどで分割方向を選択する● 長所● 短所

○ PCA等の計算があるため、計算速度は劣化する

Page 16: Scalable nearest neighbor algorithms for high dimensional data

k-means tree (tree based algorithm)

● k-means tree

○ k-meansで再帰的にクラスタリングすることで k分木を作成● 長所

○ 高い precisionが必要なときの性能が良い● 短所

○ index作成時に階層ごとにk-meansをするため時間がかかる

○ kの値に応じて最適なパラメータが異なり、1つの木だけで任意の kで高い性能を出せない

○ データ点の追加・削除時にどうするか

Page 17: Scalable nearest neighbor algorithms for high dimensional data

LSH (hash based algorithm)

● locally sensitive hashing (LSH)○ 元の空間の距離情報を保持しながら hash(低次元化 )する○ 例:元のデータの cosine類似度で近い点をハミング距離で近いように変換する

● 長所○ 数学的に性能が保証されている○ 多くのプロジェクトで使われた実績がある

● 短所○ tree basedに比べて性能が悪い

Page 18: Scalable nearest neighbor algorithms for high dimensional data

k-NN graph (graph based algorithm)

● k-NN graph○ 近傍点を繋いだ graph構造による探索

● 長所○ ある論文では randomized k-d tree並の性能が報告されている

● 短所○ index(graph構造 )作成に時間がかかる

Page 19: Scalable nearest neighbor algorithms for high dimensional data

Agenda

1. 最近傍法の定義2. 最近傍法のアルゴリズムの分類3. 性能が良かったアルゴリズムを詳しく4. 性能評価

Page 20: Scalable nearest neighbor algorithms for high dimensional data

性能が良かったアルゴリズムを詳しく● 性能が良かったのは以下の 2つの tree based

algorithm

○ randomized k-d tree

○ priority search k-means tree (提案手法 )

Page 21: Scalable nearest neighbor algorithms for high dimensional data

randomized k-d tree

● 乱数を用いて複数の k-d treeを生成し、並列に探索させる● k-d treeとの違い

○ index時■ 通常:分散の最も大きい軸で分割する■ 本手法:分散の大きい軸の上位 5軸からランダムで選択

○ search時■ 通常: 1つの木を探索する■ 本手法:複数の木を並列に探索する

Page 22: Scalable nearest neighbor algorithms for high dimensional data

randomized k-d tree

● 図を用いて直感的な説明○ q : クエリ , : 最近傍点

●左の treeだけでは、木構造で表現すると 2点が遠くなる

Page 23: Scalable nearest neighbor algorithms for high dimensional data

priority search k-means tree

● best-bin-firstアルゴリズムにより k-means treeの探索を高速化● index時

1. K個の領域に分割するように k-meansを行う2. 各領域に対して、

a. データ数が K個以下の場合、操作終了b. データ数が K個より大きい場合、その領域に 1を行う

K=2の場合

Page 24: Scalable nearest neighbor algorithms for high dimensional data

priority search k-means tree

● search時1. まだ探索していないクエリに最も近い領域を探す2. クエリとその領域に含まれる全データの距離を計算し、 prioirty queueに挿入する3. prioirty queue内のデータ数が、

a. k以上の場合、探索終了b. kより小さい場合、 1に戻る

k=3の場合、紫 ->青と探索

Page 25: Scalable nearest neighbor algorithms for high dimensional data

計算量の比較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) ? ?

Page 26: Scalable nearest neighbor algorithms for high dimensional data

Agenda

1. 最近傍法の定義2. 最近傍法のアルゴリズムの分類3. 性能が良かったアルゴリズムを詳しく4. 性能評価

Page 27: Scalable nearest neighbor algorithms for high dimensional data

Search Precision● randomized k-d treeが最も性能が良い●次点で k-means tree

Page 28: Scalable nearest neighbor algorithms for high dimensional data

Reference1. Scalable nearest neighbor algorithms for high dimensional data (

http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6809191 )

Page 29: Scalable nearest neighbor algorithms for high dimensional data

EOP

Page 30: Scalable nearest neighbor algorithms for high dimensional data

Search Precision● randomized k-d treeが最も性能が良い●ある条件設定では、

k-means treeが randomized k-d treeが良いときもある