Recommender¶
Configuration¶
設定は単体の JSON で与えられる。 JSON の各フィールドは以下のとおりである。
- 
method レコメンドに使用するアルゴリズムを指定する。 以下のアルゴリズムを指定できる。
設定値 手法 "inverted_index"コサイン類似度版の転置インデックスを利用する。 "inverted_index_euclid"Euclid 距離版の転置インデックスを利用する。 "minhash"MinHash を利用する。 [Ping2010] "lsh"Locality Sensitive Hashing を利用する。 "euclid_lsh"Euclid 距離版の LSH を利用する。 [Andoni2005] "nearest_neighbor_recommender"nearest_neighbor実装を利用する。
- 
parameter アルゴリズムに渡すパラメータを指定する。
methodに応じて渡すパラメータは異なる。- 共通
 unlearner(optional): 忘却機能に利用するUnlearnerのアルゴリズムを指定する。 忘却機能を利用しない場合、 このパラメータを省略する。 Unlearner で説明される unlearnerを指定する。 ここで指定された方法に基づいてデータを忘却する。unlearner_parameter(optional): 忘却機能に利用するUnlearnerに渡すパラメータを指定する。 Unlearner で説明される unlearner_parameterを指定する。unlearnerを設定する場合、unlearner_parameterの指定は必須である。 ここで指定された件数以上のデータを忘却する。- inverted_index
 - なし
 - inverted_index_euclid
 ignore_orthogonal(optional): クエリ点と同一のキーを1つも持たない点を近傍探索時に無視する。 これにより、転置インデックスによる類似度を有する点のみが探索結果に含まれるようになる。 また、特定のユースケース(同一のキーを持つ点が少ない場合)では高速化に寄与する。 このパラメータは省略可能であり、デフォルト値は false(無効)である。 (Boolean)- minhash
 hash_num: ハッシュの個数を指定する。 大きくすると正確な値に近づく代わりに、多くのメモリを消費する。 (Integer)
- 値域: 1 <= 
hash_num 
- 値域: 1 <= 
 - lsh
 hash_num: ハッシュ値のビット数を指定する。 大きくすると正確な値に近づく代わりに、多くのメモリを消費する。 (Integer)
- 値域: 1 <= 
hash_num 
threads(optional): 乱数生成や探索を行うスレッド数を指定する。 省略した場合は従来と同様に1スレッドで動作する この値を大きくすると、ハッシュ生成や探索において、データを分割しマルチスレッドで並列処理するためレイテンシが小さくなる。 負の値を指定した場合は実行する環境の論理CPUコア数が利用される。 実行環境の論理CPUコア数よりも大きい値を指定した場合、スレッドは論理CPUコア数分しか起動しないが、データは
threads数に分割され先に処理が終わったスレッドが処理する。本パラメータはバージョン0.9.1から利用できる。
本パラメータに値を設定したときの挙動は以下の通りである (Integer)
threads< 0threadsに論理CPUコア数が設定され場合と同様の挙動になる
threads= 0threadsに1を設定した場合と同様の挙動になる
- 1 <= 
threads<= 論理CPUコア数- 指定した値のスレッド数の生成、データ分割が行われる
 
 - 論理CPUコア数 < 
threads- 論理CPUコア数分のスレッドが起動する。ただし、データは 
threads数に分割される 
 - 論理CPUコア数分のスレッドが起動する。ただし、データは 
 
cache_size(optional): ハッシュに利用する射影ベクトルをキャッシュする個数を指定する。 省略された場合射影ベクトルはキャッシュせず、ハッシュ計算の度に乱数を生成する。 この数値を大きくするとレイテンシが小さくなる代わりに、消費メモリが増大する。 (Integer)
- 値域 0 <= cache_size
 
- 値域: 1 <= 
 - euclid_lsh
 hash_num: ハッシュの数を指定する。 大きくすると正確な値に近づく代わりに、再現率が低下し、また多くのメモリを消費する。 (Integer)
- 値域: 1 <= 
hash_num 
table_num: テーブルの数を指定する。 大きくすると再現率が向上する代わりに、多くのメモリを消費し、レスポンスに時間がかかる。 (Integer)
- 値域: 1 <= 
table_num 
bin_width: 量子化幅を指定する。 大きくすると再現率が向上する代わりに、レスポンスに時間がかかる。 (Float)
- 値域: 0.0 < 
bin_width 
probe_num: 探索するビンの数を指定する。 大きくすると再現率が向上する代わりに、レスポンスに時間がかかる。 (Integer)
- 値域: 0 <= 
probe_num 
seed: 内部で利用している乱数のシードを指定する。 (Integer)
- 値域: 0 <= 
seed<= \(2^{32} - 1\) 
threads(optional): 乱数生成や探索を行うスレッド数を指定する。 省略した場合は従来と同様に1スレッドで動作する この値を大きくすると、ハッシュ生成や探索において、データを分割しマルチスレッドで並列処理するためレイテンシが小さくなる。 負の値を指定した場合は実行する環境の論理CPUコア数が利用される。 実行環境の論理CPUコア数よりも大きい値を指定した場合、スレッドは論理CPUコア数分しか起動しないが、データは
threads数に分割され先に処理が終わったスレッドが処理する。本パラメータはバージョン0.9.1から利用できる。
本パラメータに値を設定したときの挙動は以下の通りである (Integer)
threads< 0threadsに論理CPUコア数が設定され場合と同様の挙動になる
threads= 0threadsに1を設定した場合と同様の挙動になる
- 1 <= 
threads<= 論理CPUコア数- 指定した値のスレッド数の生成、データ分割が行われる
 
 - 論理CPUコア数 < 
threads- 論理CPUコア数分のスレッドが起動する。ただし、データは 
threads数に分割される 
 - 論理CPUコア数分のスレッドが起動する。ただし、データは 
 
cache_size(optional): ハッシュに利用する射影ベクトルをキャッシュする個数を指定する。 省略された場合、射影ベクトルのキャッシュをせず、ハッシュ計算の度にベクトルを生成する。 この数値を大きくするとレイテンシが小さくなる代わりに、消費メモリが増大する。 (Integer)
- 値域 0 <= cache_size
 
- 値域: 1 <= 
 - nearest_neighbor_recommender
 method: 近傍探索に使用するアルゴリズムを指定する。 使用可能なアルゴリズムの一覧は Nearest Neighbor を参照のこと。 parameter: アルゴリズムに渡すパラメータを指定する。 パラメータの一覧は Nearest Neighbor を参照のこと。 
- 
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¶
各メソッドの最初のパラメタ name は、タスクを識別する ZooKeeper クラスタ内でユニークな名前である。
スタンドアロン構成では、空文字列 ("") を指定する。
- 
service 
recommender - 
bool 
clear_row(0: string id)¶ パラメータ: - id -- 削除する行 ID
 
戻り値: 行の削除に成功した場合 True
idで指定される行を推薦テーブルから削除する。
- 
bool 
update_row(0: string id, 1: datum row)¶ パラメータ: - id -- 行 ID
 - row -- 行に対応する 
datum 
戻り値: モデルの更新に成功した場合 True
行 ID
idのデータをrowを利用して更新する。 同じidを持つ行が既に存在する場合は、その行がrowで差分更新される。 存在しない場合は、新しい行のエントリが作成される。 更新操作を受け付けたサーバが当該行を持つサーバーと同一であれば、操作は即次反映される。 異なるサーバーであれば、mix 後に反映される。
- 
datum 
complete_row_from_id(0: string id)¶ パラメータ: - id -- 行 ID
 
戻り値: idの近傍から未定義の値を補完したdatum行
idの中で欠けている値を近傍から予測し、補完されたdatumを返す。
- 
datum 
complete_row_from_datum(0: datum row)¶ パラメータ: - row -- 補完したい値が欠けた 
datum 
戻り値: 指定した
rowで欠けている値を近傍から予測し、補完されたdatumを返す。- row -- 補完したい値が欠けた 
 
- 
list<id_with_score> 
similar_row_from_id(0: string id, 1: uint size)¶ パラメータ: - id -- 推薦テーブル内の行を表すID
 - size -- 返す近傍の数
 
戻り値: idで指定した近傍のidとその近傍性の値のリスト指定した行
idに近い行とその近傍性のリストを (最大で)size個返す。
- 
list<id_with_score> 
similar_row_from_id_and_score(0: string id, 1: double score)¶ パラメータ: - id -- 推薦テーブル内の行を表すID
 - score -- 近傍性スコアの下限値
 
戻り値: idで指定した近傍のidとその近傍性の値のリスト指定した行
idに近い行とその近傍性のリストのうち近傍性の値がscore以上のものを返す。
- 
list<id_with_score> 
similar_row_from_id_and_rate(0: string id, 1: float rate)¶ パラメータ: - id -- 推薦テーブル内の行を表すID
 - rate -- 返す近傍の割合 (値域 
0 < rate <= 1) 
戻り値: idで指定した近傍のidとその近傍性の値のリスト指定した行
idに近い行とその近傍性のリストをrateの割合の個数返す。例えば0.4を指定した場合には、近傍性の値が上位40%以内に含まれるものを返す。
- 
list<id_with_score> 
similar_row_from_datum(0: datum row, 1: uint size)¶ パラメータ: - row -- 近傍を探索したい 
datum - size -- 返す近傍の数
 
戻り値: rowで指定した近傍のidとその近傍性の値のリスト指定した
rowに近いdatumを持つ行とその近傍性のリストを (最大で)size個返す。- row -- 近傍を探索したい 
 
- 
list<id_with_score> 
similar_row_from_datum_and_score(0: datum row, 1: double score)¶ パラメータ: - row -- 近傍を探索したい 
datum - score -- 近傍性スコアの下限値
 
戻り値: rowで指定した近傍のidとその近傍性の値のリスト指定した
rowに近いdatumを持つ行とその近傍性のリストのうち近傍性の値がscore以上のものを返す。- row -- 近傍を探索したい 
 
- 
list<id_with_score> 
similar_row_from_datum_and_rate(0: datum row, 1: float rate)¶ パラメータ: - row -- 近傍を探索したい 
datum - rate -- 返す近傍の割合 (値域 
0 < rate <= 1) 
戻り値: rowで指定した近傍のidとその近傍性の値のリスト指定した
rowに近いdatumを持つ行とその近傍性のリストをrateの割合の個数返す。例えば0.4を指定した場合には、近傍性の値が上位40%以内に含まれるものを返す。- row -- 近傍を探索したい 
 
- 
datum 
decode_row(0: string id)¶ パラメータ: - id -- 推薦テーブル内の行を表すID
 
戻り値: 行 ID
idに対応するdatum行
idのdatumを返す。 ただし、fv_converterで不可逆な処理を行なっているdatumは復元されない。
- 
list<string> 
get_all_rows()¶ 戻り値: すべての行の ID リスト すべての行の ID リストを返す。
- 
bool