Nearest Neighbor¶
Configuration¶
設定は単体の JSON で与えられる。 JSON の各フィールドは以下のとおりである。
-
method
近傍探索に使用するアルゴリズムを指定する。 以下のアルゴリズムを指定できる。
設定値 類似度尺度 "lsh"
コサイン類似度のLocality Sensitive Hashingを利用する。 "minhash"
MinHashを利用する。 [Ping2010] "euclid_lsh"
コサイン類似度のLSHを用いてユークリッド距離での近傍探索を行う。
-
parameter
アルゴリズムに渡すパラメータを指定する。
method
に応じて渡すパラメータは異なる。- 共通
threads: 乱数生成や探索を行うスレッド数を指定する。 この値を大きくすると、ハッシュ生成や探索において、データを分割しマルチスレッドで並列処理するためレイテンシが小さくなる。 負の値を指定した場合は実行する環境の論理CPUコア数が利用される。 実行環境の論理CPUコア数よりも大きい値を指定した場合、スレッドは論理CPUコア数分しか起動しないが、データは
threads
数に分割され先に処理が終わったスレッドが処理する本パラメータは0.9.0から利用できる。
本パラメータに値を設定したときの挙動は以下の通りである (Integer)
threads
< 0threads
に論理CPUコア数が設定され場合と同様の挙動になる
threads
= 0threads
に1を設定した場合と同様の挙動になる
- 1 <=
threads
<= 論理CPUコア数- 指定した値のスレッド数の生成、データ分割が行われる
- 論理CPUコア数 <
threads
- 論理CPUコア数分のスレッドが起動する。ただし、データは
threads
数に分割される
- 論理CPUコア数分のスレッドが起動する。ただし、データは
なお、
threads
は後方互換性を確保するため省略可能である。省略した場合は従来と同様に1スレッドで動作する- lsh
hash_num: ハッシュのビット数を指定する。 大きくすると正確な値に近づく代わりに、多くのメモリを消費し、探索時間も増す。 (Integer)
- 値域: 1 <=
hash_num
- 値域: 1 <=
- minhash
hash_num: ハッシュのビット数を指定する。 大きくすると正確な値に近づく代わりに、多くのメモリを消費し、探索時間も増す。 (Integer)
- 値域: 1 <=
hash_num
- 値域: 1 <=
- euclid_lsh
hash_num: ハッシュの個数を指定する。 大きくすると正確な値に近づく代わりに、多くのメモリを消費し、探索時間も増す。 (Integer)
- 値域: 1 <=
hash_num
- 値域: 1 <=
-
converter
特徴変換の設定を指定する。 フォーマットは データ変換 で説明する。
- 例:
{ "method": "lsh", "parameter" : { "hash_num" : 64 }, "converter" : { "string_filter_types": {}, "string_filter_rules":[], "num_filter_types": {}, "num_filter_rules": [], "string_types": {}, "string_rules":[ {"key" : "*", "type" : "str", "sample_weight":"bin", "global_weight" : "bin"} ], "num_types": {}, "num_rules": [ {"key" : "*", "type" : "num"} ] } }
Data Structures¶
Methods¶
-
service
nearest_neighbor
¶ -
bool
set_row
(0: string id, 1: datum d)¶ パラメータ: - id -- 行 ID
- d -- 行に対応する
datum
戻り値: モデルの更新に成功した場合 True
行 ID
id
のデータをd
を利用して更新する。 同じid
を持つ行が既に存在する場合は、その行がd
で上書きされる。recommender
の場合と異なり差分更新ではない。 更新操作を受け付けたサーバが当該行を持つサーバと同一であれば、操作は即時反映される。 異なるサーバであれば、mix 後に反映される。
-
list<id_with_score>
neighbor_row_from_id
(0: string id, 1: uint size)¶ パラメータ: - id -- 近傍探索テーブル内の行を表す ID
- size -- 返す近傍点の個数
戻り値: id
で指定した近傍の id とその距離の値のリスト指定した行
id
に近い行とその距離のリストを (最大で)size
個返す。
-
list<id_with_score>
neighbor_row_from_datum
(0: datum query, 1: uint size)¶ パラメータ: - query -- 近傍探索の対象となる
datum
- size -- 返す近傍点の個数
戻り値: query
の近傍の id とその距離の値のリスト指定した
query
に近いdatum
を持つ行とそのquery
との距離のリストを (最大で)size
個返す。- query -- 近傍探索の対象となる
-
list<id_with_score>
similar_row_from_id
(0: string id, 1: uint ret_num)¶ パラメータ: - id -- 近傍探索テーブル内の行を表す ID
- ret_num -- 返す近傍点の個数
戻り値: id
で指定した近傍の id とその類似度の値のリスト指定した行
id
に近い行とその類似度のリストを (最大で)ret_num
個返す。
-
list<id_with_score>
similar_row_from_datum
(0: datum query, 1: uint ret_num)¶ パラメータ: - query -- 近傍探索の対象となる
datum
- ret_num -- 返す近傍点の個数
戻り値: query
の近傍の id とその類似度の値のリスト指定した
query
に近いdatum
を持つ行とそのquery
との類似度のリストを (最大で)ret_num
個返す。- query -- 近傍探索の対象となる
-
list<string>
get_all_rows
()¶ 戻り値: すべての行の ID リスト すべての行の ID リストを返す。
-
bool