(57)【要約】【課題】  ベクトル集合の要素数やクラスタ数が多くなった場合でもベクトル集合のクラスタリングの計算を効率的に行う。【解決手段】  クラスタリング装置１００は、クラスタリング対象の対象ベクトルそれぞれを、予め設定された数のクラスタの何れかに分類するクラスタリング実行部１０２と、対象ベクトル及び各クラスタを代表する代表ベクトルに対して、ベクトルが類似していると類似の値となるハッシュ値を算出するハッシュ値算出部１０３と、ハッシュ値同士を比較して対象ベクトルが分類される候補となるクラスタを特定するクラスタ候補絞込部１０８とを備える。クラスタリング実行部１０２は、特定されたクラスタのうちの何れかに対象ベクトルを再分類する。【選択図】  図１
2015055975.tif 000002
【特許請求の範囲】
【請求項１】
クラスタリング対象の複数の対象ベクトルを入力する入力手段と、
前記入力手段によって入力された複数の対象ベクトルそれぞれに対して、ベクトルが類似していると類似の値となるハッシュ値を算出する第１ハッシュ値算出手段と、
前記入力手段によって入力された複数の対象ベクトルそれぞれを、予め設定された数のクラスタの何れかに分類する分類手段と、
前記分類手段によって分類された対象ベクトルに基づいて、各クラスタを代表する代表ベクトルを算出する代表ベクトル算出手段と、
前記代表ベクトル算出手段によって算出された代表ベクトルそれぞれに対して、前記ハッシュ値を算出する第２ハッシュ値算出手段と、
前記第１ハッシュ値算出手段によって算出された対象ベクトルのハッシュ値と、前記第２ハッシュ値算出手段によって算出された代表ベクトルのハッシュ値とを比較して、当該対象ベクトルが分類される候補となるクラスタを特定する候補特定手段と、
前記候補特定手段によって特定されたクラスタのうちの何れかに、対象ベクトルを再分類する再分類手段と、
を備えるクラスタリング装置。
【請求項２】
前記第１ハッシュ値算出手段及び前記第２ハッシュ値算出手段は、ベクトルの方向が類似していると類似の値となるハッシュ値を算出する請求項１に記載のクラスタリング装置。
【請求項３】
前記再分類手段は、前記候補特定手段によって特定されたクラスタの代表ベクトルと対象ベクトルとの類似度を算出して、当該類似度に基づいて対象ベクトルを再分類する請求項１又は２に記載のクラスタリング装置。
【請求項４】
前記第１ハッシュ値算出手段は、１つの前記対象ベクトルに対して、互いに異なる系列の複数のハッシュ値を算出し、
前記第２ハッシュ値算出手段は、１つの前記代表ベクトルに対して前記系列の複数のハッシュ値を算出し、
前記候補特定手段は、同一の系列の前記対象ベクトルのハッシュ値と前記代表ベクトルのハッシュ値とを比較する、請求項１〜３の何れか一項に記載のクラスタリング装置。
【請求項５】
前記第１ハッシュ値算出手段は、１つの前記対象ベクトルに対して、複数の乱数ベクトルとの類似度を算出して、当該類似度に基づいて１つのハッシュ値を算出し、
前記第２ハッシュ値算出手段は、１つの前記代表ベクトルに対して、複数の乱数ベクトルとの類似度を算出して、当該類似度に基づいて１つのハッシュ値を算出する、請求項１〜４の何れか一項に記載のクラスタリング装置。
【請求項６】
クラスタリング装置の動作方法であるクラスタリング方法であって、
クラスタリング対象の複数の対象ベクトルを入力する入力ステップと、
前記入力ステップにおいて入力された複数の対象ベクトルそれぞれに対して、ベクトルが類似していると類似の値となるハッシュ値を算出する第１ハッシュ値算出ステップと、
前記入力ステップにおいて入力された複数の対象ベクトルそれぞれを、予め設定された数のクラスタの何れかに分類する分類ステップと、
前記分類ステップにおいて分類された対象ベクトルに基づいて、各クラスタを代表する代表ベクトルを算出する代表ベクトル算出ステップと、
前記代表ベクトル算出ステップにおいて算出された代表ベクトルそれぞれに対して、前記ハッシュ値を算出する第２ハッシュ値算出ステップと、
前記第１ハッシュ値算出ステップにおいて算出された対象ベクトルのハッシュ値と、前記第２ハッシュ値算出ステップにおいて算出された代表ベクトルのハッシュ値とを比較して、当該対象ベクトルが分類される候補となるクラスタを特定する候補特定ステップと、
前記候補特定ステップにおいて特定されたクラスタのうちの何れかに、対象ベクトルを再分類する再分類ステップと、
を含むクラスタリング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ベクトルをクラスタに分類するクラスタリング装置及びクラスタリング方法に関する。
【背景技術】
【０００２】
一般的に、ベクトル集合をクラスタリングするための方法としては、例えば特許文献１で用いられているように凝縮法やＫ−ｍｅａｎｓ法がある。凝縮法は、初期化時に各ベクトルをそれぞれ１つのクラスタとして、類似するクラスタのペアを順次結合する方法である。Ｋ−ｍｅａｎｓ法は、予め指定した数のクラスタにデータを分割し、そのクラスタ内部で中心ベクトルを求め、再度クラスタに分割しなおすという方法を繰り返すものである。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２０１１／０７８１８６号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、例えば特許文献１で採用されている凝縮法では、ベクトル集合中の２ベクトルの全ての組み合わせについて類似度を何度も算出することになる。そのため、ベクトル集合の要素数が多くなると計算時間はその２乗から３乗に比例し、飛躍的に増大してしまう。
【０００５】
また、特許文献１で採用されているＫ−ｍｅａｎｓ法では、各ベクトルデータについて、全てのクラスタの中心ベクトルと比較して、各ベクトルのクラスタを更新するという処理を繰り返しおこなう。そのため、クラスタ数が多くなると計算時間が増大してしまう。
【０００６】
本発明は、上記の問題点に鑑みてなされたものであり、ベクトル集合の要素数やクラスタ数が多くなった場合でもベクトル集合のクラスタリングの計算を効率的に行うことができるクラスタリング装置及びクラスタリング方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記の目的を達成するために、本発明に係るクラスタリング装置は、クラスタリング対象の複数の対象ベクトルを入力する入力手段と、入力手段によって入力された複数の対象ベクトルそれぞれに対して、ベクトルが類似していると類似の値となるハッシュ値を算出する第１ハッシュ値算出手段と、入力手段によって入力された複数の対象ベクトルそれぞれを、予め設定された数のクラスタの何れかに分類する分類手段と、分類手段によって分類された対象ベクトルに基づいて、各クラスタを代表する代表ベクトルを算出する代表ベクトル算出手段と、代表ベクトル算出手段によって算出された代表ベクトルそれぞれに対して、ハッシュ値を算出する第２ハッシュ値算出手段と、第１ハッシュ値算出手段によって算出された対象ベクトルのハッシュ値と、第２ハッシュ値算出手段によって算出された代表ベクトルのハッシュ値とを比較して、当該対象ベクトルが分類される候補となるクラスタを特定する候補特定手段と、候補特定手段によって特定されたクラスタのうちの何れかに、対象ベクトルを再分類する再分類手段と、を備える。
【０００８】
本発明に係るクラスタリング装置では、対象ベクトル、及びクラスタの代表ベクトルに対してハッシュ値が算出され、ハッシュ値の比較に基づいて対象ベクトルが分類される候補となるクラスタが特定される。従って、対象ベクトルをクラスタに分類する際に全てのクラスタの代表ベクトルとのベクトル同志の比較を行う必要がなく、従来のクラスタリングに比べてベクトル同志の比較を減らすことができる。これにより、本発明に係るクラスタリング装置によれば、ベクトル集合の要素数やクラスタ数が多くなった場合でもベクトル集合のクラスタリングの計算を効率的に行うことができる。
【０００９】
第１ハッシュ値算出手段及び第２ハッシュ値算出手段は、ベクトルの方向が類似していると類似の値となるハッシュ値を算出することとしてもよい。この構成によれば、ベクトルの方向の類似関係に基づくクラスタリングを行う際に、ベクトル集合の要素数やクラスタ数が多くなった場合でもベクトル集合のクラスタリングの計算を効率的に行うことができる。
【００１０】
再分類手段は、候補特定手段によって特定されたクラスタの代表ベクトルと対象ベクトルとの類似度を算出して、当該類似度に基づいて対象ベクトルを再分類することとしてもよい。この構成によれば、クラスタの再分類を適切に行うことができる。
【００１１】
第１ハッシュ値算出手段は、１つの対象ベクトルに対して、互いに異なる系列の複数のハッシュ値を算出し、第２ハッシュ値算出手段は、１つの代表ベクトルに対して系列の複数のハッシュ値を算出し、候補特定手段は、同一の系列の対象ベクトルのハッシュ値と代表ベクトルのハッシュ値とを比較する、こととしてもよい。この構成によれば、適切に対象ベクトルが分類される候補となるクラスタを特定することができる。
【００１２】
第１ハッシュ値算出手段は、１つの対象ベクトルに対して、複数の乱数ベクトルとの類似度を算出して、当該類似度に基づいて１つのハッシュ値を算出し、第２ハッシュ値算出手段は、１つの代表ベクトルに対して、複数の乱数ベクトルとの類似度を算出して、当該類似度に基づいて１つのハッシュ値を算出する、こととしてもよい。この構成によれば、より適切なハッシュ値を求めることができ、より適切に本発明に係るクラスタリングを行うことができる。
【００１３】
ところで、本発明は、上記のようにクラスタリング装置の発明として記述できる他に、以下のようにクラスタリング方法の発明としても記述することができる。これはカテゴリ等が異なるだけで、実質的に同一の発明であり、同様の作用及び効果を奏する。
【００１４】
即ち、本発明に係るクラスタリング方法は、クラスタリング装置の動作方法であるクラスタリング方法であって、クラスタリング対象の複数の対象ベクトルを入力する入力ステップと、入力ステップにおいて入力された複数の対象ベクトルそれぞれに対して、ベクトルが類似していると類似の値となるハッシュ値を算出する第１ハッシュ値算出ステップと、入力ステップにおいて入力された複数の対象ベクトルそれぞれを、予め設定された数のクラスタの何れかに分類する分類ステップと、分類ステップにおいて分類された対象ベクトルに基づいて、各クラスタを代表する代表ベクトルを算出する代表ベクトル算出ステップと、代表ベクトル算出ステップにおいて算出された代表ベクトルそれぞれに対して、ハッシュ値を算出する第２ハッシュ値算出ステップと、第１ハッシュ値算出ステップにおいて算出された対象ベクトルのハッシュ値と、第２ハッシュ値算出ステップにおいて算出された代表ベクトルのハッシュ値とを比較して、当該対象ベクトルが分類される候補となるクラスタを特定する候補特定ステップと、候補特定ステップにおいて特定されたクラスタのうちの何れかに、対象ベクトルを再分類する再分類ステップと、を含む。
【発明の効果】
【００１５】
本発明によれば、対象ベクトルをクラスタに分類する際に全てのクラスタの代表ベクトルとのベクトル同志の比較を行う必要がなく、従来のクラスタリングに比べてベクトル同志の比較を減らすことができる。これにより、本発明によれば、ベクトル集合の要素数やクラスタ数が多くなった場合でもベクトル集合のクラスタリングの計算を効率的に行うことができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態に係るクラスタリング装置の機能構成を示す図である。
【図２】クラスタリング対象のベクトルを示す図である。
【図３】ハッシュ値の算出に用いられる正規乱数ベクトルを示す表である。
【図４】ハッシュ値の算出に用いられる切片の値を示す表である。
【図５】ハッシュ値の算出に用いられる一様乱数ベクトルを示す表である。
【図６】ハッシュ値の算出に用いられるＬＳＨパラメータを示す表である。
【図７】クラスタリングの結果として出力される情報を示す図である。
【図８】本発明の実施形態に係るクラスタリング装置のハードウェア構成を示す図である。
【図９】本発明の実施形態に係るクラスタリング装置で実行される処理のうち、対象ベクトルをクラスタリングするクラスタリング方法全体を示すフローチャートである。
【図１０】本発明の実施形態に係るクラスタリング装置で実行される処理のうち、ベクトルのハッシュ値を算出する処理を示すフローチャートである。
【図１１】本発明の実施形態に係るクラスタリング装置で実行される処理のうち、対象ベクトルが分類される候補となるクラスタを特定する処理を示すフローチャートである。
【図１２】本発明の実施形態に係るクラスタリング装置で実行される処理のうち、ハッシュ値を生成するために用いられる情報を取得又は生成する処理を示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下、図面と共に本発明に係るクラスタリング装置及びクラスタリング方法の実施形態について詳細に説明する。なお、図面の説明においては同一要素には同一符号を付し、重複する説明を省略する。
【００１８】
図１に本実施形態に係るクラスタリング装置１００の機能構成を示す。クラスタリング装置１００は、複数のベクトルを示すベクトルデータを入力して、入力したベクトルデータのそれぞれを複数のクラスタの何れかに分類する装置である。クラスタリング装置１００は、具体的には、ワークステーションやＰＣ（Personal Computer）等の装置に相当する。
【００１９】
図１に示すようにクラスタリング装置１００は、入力部１０１と、クラスタリング実行部１０２と、ハッシュ値算出部１０３と、ＬＳＨ算出用正規乱数ベクトル記憶部１０４と、ＬＳＨ算出用切片記憶部１０５と、ＬＳＨ算出用一様乱数ベクトル記憶部１０６と、ＬＳＨパラメータ記憶部１０７と、クラスタ候補絞込部１０８と、ＬＳＨテーブル作成部１０９とを備えて構成されている。
【００２０】
入力部１０１は、クラスタリング対象の複数の対象ベクトルのベクトルデータを入力する入力手段である。入力部１０１は、例えば、クラスタリング装置１００に接続されると共にベクトルデータを格納した装置２００から、ベクトルデータを取得することでベクトルデータの入力を行う。なお、ベクトルデータの入力は、上記以外でも外部入力（例えば、運用者による入力）等の任意の方法で行うこととしてもよい。クラスタリング対象のベクトルデータを図２に示す。図２において１つの行のデータが１つのベクトルデータに相当する。図２における「１：１２．４」との記載は、ベクトルの１つ目の属性（要素）の値が１２．４であることを示す（本実施形態におけるベクトル表記は、全てこの表記である）。入力部１０１に入力される複数のベクトルデータは、全て同じ次元数のものである。例えば、図２に示すベクトルデータは１０００次元のベクトルである。入力部１０１は、入力したベクトルデータをクラスタリング実行部１０２に出力する。
【００２１】
クラスタリング実行部１０２は、入力部１０１によって入力された複数のベクトルデータそれぞれを予め設定された数のクラスタの何れかに分類する分類手段である。即ち、クラスタリング実行部１０２は、ベクトルデータにクラスタを設定する。具体的には、クラスタリング実行部１０２は、分類を行うため以下の機能を有している。ここで、対象ベクトルを分類するクラスタの数は、設定ファイル又は外部入力等によって予め最大クラスタ数として設定されており、クラスタリング実行部１０２に記憶されている。最大クラスタ数は、１以上の整数が指定される。各クラスタには、０〜（最大クラスタ数−１）の整数がＩＤとして付与されている。
【００２２】
クラスタリング実行部１０２は、入力部１０１から複数のベクトルデータが入力されると、各ベクトルデータを任意の方法で各クラスタの何れかに分類する。例えば、クラスタリング実行部１０２は、ベクトルデータ毎に０〜（最大クラスタ数−１）のランダムな整数を選択し、選択した整数がクラスタＩＤとなるクラスタに当該ベクトルデータを分類する。
【００２３】
また、クラスタリング実行部１０２は、分類されたベクトルデータに基づいて、各クラスタを代表する代表ベクトルを算出する代表ベクトル算出手段である。具体的には、クラスタリング実行部１０２は、代表ベクトルとして各クラスタの中心ベクトルを計算する。ここで、クラスタのＩＤがｉであるクラスタをＣｉ、当該クラスタの中心ベクトルをｃｉ、対象ベクトルのｋ番目の成分（要素値）をｖｋとする。クラスタリング実行部１０２は、当該クラスタの中心ベクトルｃｉのｋ番目の成分（要素値）ｃｉ，ｋは下式に基づいて計算する。
【数１】
2015055975.tif 000003
なお、中心ベクトルは、上記以外の式によって算出されてもよい。例えば、クラスタに属する対象ベクトルの平均としてもよい。
【００２４】
クラスタリング実行部１０２は、最初の対象ベクトルのクラスタへの分類に基づいて上記の中心ベクトルの算出を行う。また、対象ベクトルのクラスタへの分類は、後述するように繰り返し行われる。クラスタリング実行部１０２は、対象ベクトルのクラスタへの再分類が行われた後にも中心ベクトルの算出を行う。
【００２５】
クラスタリング実行部１０２は、入力部１０１によって入力された複数の対象ベクトルに対してハッシュ値を算出させるため、対象ベクトルのベクトルデータをハッシュ値算出部１０３に出力する。また、クラスタリング実行部１０２は、算出した中心ベクトルに対してハッシュ値を算出させるため、中心ベクトルのベクトルデータをハッシュ値算出部１０３に出力する。その際、クラスタリング実行部１０２は、最大クラスタ数をハッシュ値算出部１０３に通知する。クラスタリング実行部１０２は、ハッシュ値算出部１０３によって算出されたハッシュ値を受け取る。クラスタリング実行部１０２は、当該ハッシュ値に基づいた処理を行うが、それについてはハッシュ値の算出の説明の後に説明する。
【００２６】
ハッシュ値算出部１０３は、クラスタリング実行部１０２から入力されたベクトルに対してハッシュ値を算出する（ベクトルをハッシュ値に変換する）手段である。具体的には、ハッシュ値算出部１０３は、複数の対象ベクトルそれぞれに対してハッシュ値を算出する第１ハッシュ値算出手段である。また、ハッシュ値算出部１０３は、各クラスタの中心ベクトルそれぞれに対してハッシュ値を算出する第２ハッシュ値算出手段である。ここで算出されるハッシュ値は、ベクトルが類似していると類似の値となるハッシュ値である。また、このハッシュ値は、ベクトルの方向が類似していると類似の値となるハッシュ値となるものであってもよい。
【００２７】
この際、ハッシュ値算出部１０３は、１つのベクトルに対して、互いに異なる系列の（後述するようにテーブルＩＤ毎の）複数のハッシュ値を算出することとしてもよい。また、ハッシュ値算出部１０３は、１つのベクトルに対して、（後述するようにコードＩＤ毎の）複数の乱数ベクトルとの類似度を算出して、当該類似度に基づいて１つのハッシュ値を算出してもよい。
【００２８】
具体的には、ハッシュ値算出部１０３は、ＬＳＨ（Locality Sensitive Hashing）アルゴリズムに準じて以下のようにハッシュ値を算出する。また、ハッシュ値の算出には、ＬＳＨ算出用正規乱数ベクトル記憶部１０４、ＬＳＨ算出用切片記憶部１０５、ＬＳＨ算出用一様乱数ベクトル記憶部１０６及びＬＳＨパラメータ記憶部１０７に予め記憶されている情報が用いられる。
【００２９】
ＬＳＨ算出用正規乱数ベクトル記憶部１０４は、ハッシュ値を算出するための正規乱数ベクトルを記憶する手段である。ＬＳＨ算出用正規乱数ベクトル記憶部１０４に記憶されている情報を図３に示す。正規乱数ベクトルは、要素値（ベクトルの各成分）を正規乱数としたベクトルである。要素値は、例えば、平均０、分散１の乱数とされる。また、正規乱数ベクトルの次元数は、対象ベクトルの次元数と同じにされる。図３に示すように正規乱数ベクトルには、テーブルＩＤとコードＩＤとが対応付けられる。
【００３０】
テーブルＩＤは、算出されるハッシュ値の系列を示すものである。１つのテーブルＩＤに対応付けられた正規乱数ベクトルは、１つのＬＳＨテーブルを構成する。これにより、テーブルＩＤの数（ＬＳＨテーブルの数）のハッシュ値が算出されえる。テーブルＩＤは、１からテーブルＩＤの数までの整数値とされる。コードＩＤは、全てのテーブルＩＤに対して同じ数だけ対応付けられる。即ち、１つのテーブルＩＤに対して、コードＩＤの数だけ正規乱数ベクトルが対応付けられる。コードＩＤは、複数であってもよい。この場合、１つのハッシュ値を算出するのに複数の正規乱数ベクトルが用いられる。コードＩＤは、１からコードＩＤの数までの整数値とされる。テーブルＩＤ及びコードＩＤの数は、予め設定されている。ＬＳＨ算出用正規乱数ベクトル記憶部１０４は、その数に応じたテーブルＩＤ及びコードＩＤ、並びにそれらに対応付けられる正規乱数ベクトルを予め（ハッシュ値算出の段階で）記憶している。
【００３１】
ＬＳＨ算出用切片記憶部１０５は、ハッシュ値を算出するための切片の値を記憶する手段である。ＬＳＨ算出用切片記憶部１０５に記憶されている情報を図４に示す。切片の値は、０以上で、後述するＬＳＨパラメータの値未満の少数乱数である。図４に示すように切片の値には、テーブルＩＤとコードＩＤとが対応付けられる。ＬＳＨ算出用切片記憶部１０５は、各テーブルＩＤ及び各コードＩＤ、並びにそれらに対応付けられる切片の値を予め（ハッシュ値算出の段階で）記憶している。
【００３２】
ＬＳＨ算出用一様乱数ベクトル記憶部１０６は、ハッシュ値を算出するための一様乱数ベクトルを記憶する手段である。ＬＳＨ算出用一様乱数ベクトル記憶部１０６に記憶されている情報を図５に示す。一様乱数ベクトルは、要素値（ベクトルの各成分）を一様乱数としたベクトルである。要素値は、例えば、整数の乱数とされる。また、一様乱数ベクトルの次元数は、コードＩＤの数と同じにされる。本実施形態の例では、コードＩＤの数及び一様乱数ベクトルの次元数は１０である。図５に示すように正規乱数ベクトルには、テーブルＩＤが対応付けられる。ＬＳＨ算出用一様乱数ベクトル記憶部１０６は、各テーブルＩＤ、及び各テーブルＩＤに対応付けられる一様乱数ベクトルを予め（ハッシュ値算出の段階で）記憶している。
【００３３】
ＬＳＨパラメータ記憶部１０７は、ハッシュ値を算出するためのＬＳＨパラメータを記憶する手段である。ＬＳＨパラメータ記憶部１０７に記憶されている情報を図６に示す。ＬＳＨパラメータは、予め設定される正の値である。
【００３４】
ハッシュ値算出部１０３によるハッシュ値の算出について説明する。ハッシュ値算出部１０３は、クラスタリング実行部１０２から、ハッシュ値の算出対象のベクトルデータと最大クラスタ数を入力する。当該入力が行われるとハッシュ値算出部１０３は、ハッシュ値の算出を開始する。ハッシュ値算出部１０３は、ハッシュ値を算出する際に、ＬＳＨ算出用正規乱数ベクトル記憶部１０４、ＬＳＨ算出用切片記憶部１０５、ＬＳＨ算出用一様乱数ベクトル記憶部１０６及びＬＳＨパラメータ記憶部１０７に記憶されている上記の情報を読み出す。
【００３５】
ハッシュ値算出部１０３は、ハッシュ値の算出対象のベクトルと、正規乱数ベクトルとのコサイン類似度を算出する。ハッシュ値算出部１０３は、２つのベクトルｖ１，ｖ２のコサイン類似度ｃｏｓ（ｖ１，ｖ２）を下式に基づいて計算する。
【数２】
2015055975.tif 000004
ここでｋはベクトルの各成分の属性（添え字）、Ｄはベクトルの次元数、ｖｉ，ｋはベクトルｖｉの成分ｋの値を表す。次に、ハッシュ値算出部１０３は、算出したコサイン類似度と指定された定数Ａとの積を求める。定数Ａは、１以上の値で予め設定される。指定された定数Ａは、設定ファイル又は外部入力等によって予めハッシュ値算出部１０３に記憶されている。
【００３６】
次に、ハッシュ値算出部１０３は、コサイン類似度の算出に用いた正規乱数ベクトルに係るテーブルＩＤ及びコードＩＤに対応付けられた切片の値と、上記で算出した積との和を求める。次に、ハッシュ値算出部１０３は、算出した和のＬＳＨパラメータによる商を求める。即ち、ハッシュ値算出部１０３は、以下の式により上記の値を算出する。
（ｃｏｓ（ｖ１，ｖ２）×Ａ＋切片）／ＬＳＨパラメータ
【００３７】
ハッシュ値算出部１０３は、１つのテーブルＩＤに対応付けられた全てのコードＩＤに対して上記の値であるＬＳＨコードを求める（ＬＳＨコードへの変換を行う）。ハッシュ値算出部１０３は、求められたＬＳＨコードからコードベクトルを構成する。コードベクトルは、その属性（添え字）がコードＩＤである成分を上記の算出した値として設定されたベクトルである。例えば、コードＩＤが１の正規乱数ベクトルが用いられて算出された値は、コードベクトルの１番目の成分（要素）の値となる。従って、コードベクトルの次元数は、コードＩＤの数となる。
【００３８】
ハッシュ値算出部１０３は、得られたコードベクトルと一様乱数ベクトルとのコサイン類似度を算出する。この算出にも、上記の式が用いられる。また、ここで用いられる一様乱数ベクトルは、コードベクトルの算出に用いた正規乱数ベクトルに係るテーブルＩＤに対応付けられたものである。次に、ハッシュ値算出部１０３は、算出したコサイン類似度と最大クラスタ数との積を算出する。次に、ハッシュ値算出部１０３は、算出した積の小数点以下を切り捨てて整数値とし、当該整数値をハッシュ値とする。なお、積を整数値とする処理は、必ずしも切り捨てでなくてもよく、切り上げや四捨五入等でもよい。
【００３９】
上記のように得られたハッシュ値は、テーブルＩＤに対応するものである。ハッシュ値算出部１０３は、全てのテーブルＩＤに対してハッシュ値を求める。但し、必ずしも全てのテーブルＩＤに対してハッシュ値を求める必要はなく、予め指定（設定）されたテーブルＩＤ（１つでも複数でもよい）に対してのみハッシュ値を求めることとしてもよい。
【００４０】
上記のようにして求められたハッシュ値は、異なるベクトルの入力に対して同じハッシュ値を出力することがある。更に、類似したベクトルを入力すると同じハッシュ値あるいは近い値のハッシュ値を出力する可能性が高い。なお、上述したコサイン類似度を用いてハッシュ値を算出する場合には、ベクトルの方向が類似している場合に同じハッシュ値あるいは近い値のハッシュ値を出力する可能性が高い。即ち、この場合、類似したベクトルとは、ベクトルの方向が類似していることを指す。なお、ハッシュ値の算出方法を変えることで、ベクトルの方向以外の類似関係（例えば、ベクトルの大きさも加味した類似関係）を反映したハッシュ値とすることができる。ハッシュ値算出部１０３は、算出したハッシュ値をクラスタリング実行部１０２に出力する。
【００４１】
クラスタリング実行部１０２は、対象ベクトルのハッシュ値と、各クラスタの中心ベクトルのハッシュ値とをハッシュ値算出部１０３から入力する。上述したようにこのハッシュ値は、例えば、テーブルＩＤの数（ＬＳＨテーブル数）個ある。クラスタリング実行部１０２は、各対象ベクトルが分類されるべきクラスタの候補を特定するため、対象ベクトルのハッシュ値と、各クラスタの中心ベクトルのハッシュ値とをクラスタ候補絞込部１０８に出力する。なお、各クラスタの中心ベクトルのハッシュ値は、クラスタＩＤが対応付けられている。また、各ハッシュ値にはテーブルＩＤが対応付けられており、何れのＬＳＨテーブルによるハッシュ値か把握できるようになっている。
【００４２】
クラスタ候補絞込部１０８は、クラスタリング実行部１０２から入力された対象ベクトルのハッシュ値と、各クラスタの中心ベクトルのハッシュ値とを比較して、当該対象ベクトルが分類される候補となるクラスタを特定する候補特定手段である。即ち、クラスタ候補絞込部１０８は、各対象ベクトルについて、分類されるべきクラスタの候補の絞込みを行う。
【００４３】
クラスタ候補の絞込みは、対象ベクトル毎に行われる。クラスタ候補絞込部１０８は、対象ベクトルのクラスタ候補集合を空集合に設定する。次に、クラスタ候補絞込部１０８は、以下のように、ＬＳＨテーブルによるハッシュ値に基づきクラスタ候補集合にクラスタ候補を追加する。なお、以下の処理は、テーブルＩＤ（ＬＳＨテーブル）毎に行われる。
【００４４】
まず、クラスタ候補絞込部１０８は、対象ベクトルのハッシュ値と中心ベクトルのハッシュ値とを比較し、ハッシュ値が同じ中心ベクトルがあるか否か（ハッシュ値が同じクラスタが存在するか否か）を判定する。ハッシュ値が同じ中心ベクトルがある（ハッシュ値が同じクラスタが存在する）と判定された場合、クラスタ候補絞込部１０８は、当該中心ベクトルに係るクラスタを全てクラスタ候補集合に追加する。具体的には、クラスタＩＤをクラスタ候補集合に追加する。
【００４５】
ハッシュ値が同じ中心ベクトルがない（ハッシュ値が同じクラスタが存在しない）と判定された場合、クラスタ候補絞込部１０８は、中心ベクトルのハッシュ値から、対象ベクトルのハッシュ値と最も近いハッシュ値を探索する。この探索は、例えば中心ベクトルのハッシュ値一覧から二分探索を行うことで行われる。クラスタ候補絞込部１０８は、探索したハッシュ値の中心ベクトルに係るクラスタをクラスタ候補集合に追加する。
【００４６】
クラスタ候補絞込部１０８は、上記の処理をハッシュ値が算出されている全てのテーブルＩＤについて行う。即ち、クラスタ候補絞込部１０８は、同一の系列の対象ベクトルのハッシュ値と中心ベクトルのハッシュ値とを比較する。また、クラスタ候補絞込部１０８は、上記の処理を全ての対象ベクトルについて行う。クラスタ候補絞込部１０８は、対象ベクトル毎のクラスタ候補集合をクラスタリング実行部１０２に出力する。
【００４７】
クラスタリング実行部１０２は、クラスタ候補絞込部１０８から入力されたクラスタ候補集合に含まれるクラスタのうちの何れかに、対象ベクトルを再分類する再分類手段である。即ち、クラスタリング実行部１０２は、ベクトルデータにクラスタを再設定する。具体的には、クラスタリング実行部１０２は、クラスタ候補集合に含まれるクラスタの中心ベクトルと対象ベクトルとの類似度を算出して、当該類似度に基づいて対象ベクトルを再分類する。類似度としては、例えば上述したコサイン類似度を用いることができる。例えば、クラスタリング実行部１０２は、算出した類似度が最も高くなる中心ベクトルを当該対象ベクトルが再分類されるクラスタとして設定する。なお、クラスタ候補集合に含まれるクラスタが１つのみである場合には、中心ベクトルと対象ベクトルとの類似度の算出は行わずにそのクラスタに対象ベクトルを分類させることとしてもよい。
【００４８】
クラスタリング実行部１０２は、当該再分類を実行すると対象ベクトルが再分類されたクラスタの中心ベクトルを再度、計算する。計算した中心ベクトルに基づいて、クラスタリング実行部１０２、ハッシュ値算出部１０３及びクラスタ候補絞込部１０８は、上述した処理（中心ベクトルの計算、クラスタ候補の絞込、対象ベクトルのクラスタの再分類）を行う。この繰り返しは、回数が予め設定されている。繰り返しの回数は、設定ファイル又は外部入力等によって予めクラスタリング実行部１０２に記憶されている。クラスタリング実行部１０２は、上記の処理が設定された回数の繰り返されたと判断するとその時点での対象ベクトルが分類されているクラスタを示す情報を出力する。出力される情報は、例えば、図７に示すように対象ベクトルに分類されたクラスタを示すクラスタＩＤが対応付けられた情報である。また、出力される情報には、上記の情報に加えて各クラスタの中心ベクトルの情報が含まれていてもよい。この出力としては、例えば、運用者が認識できるように表示出力を行うこととしてもよいし、別の装置やモジュールに送信することとしてもよい。
【００４９】
なお、上記では、予め設定された回数繰り返すとしているが、例えば、繰り返しを行ってもクラスタに分類される対象ベクトルに変化がない場合には、その時点でクラスタへの分類を終了してクラスタリングの結果を出力することとしてもよい。
【００５０】
ＬＳＨテーブル作成部１０９は、ハッシュ値を生成するために用いられるＬＳＨ算出用正規乱数ベクトル記憶部１０４、ＬＳＨ算出用切片記憶部１０５、ＬＳＨ算出用一様乱数ベクトル記憶部１０６及びＬＳＨパラメータ記憶部１０７に記憶されている情報を取得又は生成する手段である。
【００５１】
ＬＳＨテーブル作成部１０９は、例えば、クラスタリング装置１００に接続されると共にＬＳＨパラメータを格納した装置３００から、ＬＳＨパラメータを取得する。なお、ＬＳＨパラメータの取得は、上記以外でも外部入力（例えば、運用者による入力）等の任意の方法で行うこととしてもよい。ＬＳＨテーブル作成部１０９は、取得したＬＳＨパラメータをＬＳＨパラメータ記憶部１０７に格納する。
【００５２】
ＬＳＨテーブル作成部１０９は、対象ベクトルの次元数と同じ次元数の正規乱数ベクトルを生成する。生成する正規乱数ベクトルの個数は、ＬＳＨテーブルの数（テーブルＩＤの数）及びＬＳＨコードの数（コードＩＤの数）に応じたものであり、具体的には、ＬＳＨテーブルの数とＬＳＨコードの積である。正規乱数の次元数、ＬＳＨテーブルの数及びＬＳＨコードの数は、設定ファイル又は外部入力等によって予め設定されており、ＬＳＨテーブル作成部１０９に記憶されている。具体的には、ＬＳＨテーブル作成部１０９は、平均０、分散１の正規乱数を生成して、生成した値を正規乱数ベクトルの各成分に設定する。ＬＳＨテーブル作成部１０９は、生成した正規乱数ベクトルをテーブルＩＤ及びコードＩＤの組に対応付けてＬＳＨ算出用正規乱数ベクトル記憶部１０４に格納する。
【００５３】
ＬＳＨテーブル作成部１０９は、切片の値を生成する。生成する切片の値の個数は、ＬＳＨテーブルの数（テーブルＩＤの数）及びＬＳＨコードの数（コードＩＤの数）に応じたものであり、具体的には、ＬＳＨテーブルの数とＬＳＨコードの積である。具体的には、ＬＳＨテーブル作成部１０９は、切片の値として、０以上かつＬＳＨパラメータの値未満の少数乱数を生成する。ＬＳＨテーブル作成部１０９は、生成した切片の値をテーブルＩＤ及びコードＩＤの組に対応付けてＬＳＨ算出用切片記憶部１０５に格納する。
【００５４】
ＬＳＨテーブル作成部１０９は、次元数がＬＳＨコードの数である一様乱数ベクトルを生成する。生成する一様乱数ベクトルの個数は、ＬＳＨテーブルの数（テーブルＩＤの数）である。具体的には、ＬＳＨテーブル作成部１０９は、整数の乱数を生成して、生成した値を一様乱数ベクトルの各成分に設定する。ＬＳＨテーブル作成部１０９は、生成した一様乱数ベクトルをテーブルＩＤに対応付けてＬＳＨ算出用一様乱数ベクトル記憶部１０６に格納する。
【００５５】
なお、ＬＳＨテーブル作成部１０９による上記の処理は、対象ベクトルのクラスタリングの処理以前に行われる。以上が、本実施形態に係るクラスタリング装置１００の機能構成である。
【００５６】
図８に本実施形態に係るクラスタリング装置１００のハードウェア構成を示す。図８に示すようにクラスタリング装置１００は、ＣＰＵ（Central Processing Unit）１００１、主記憶装置であるＲＡＭ（RandomAccess Memory）１００２及びＲＯＭ（Read Only Memory）１００３、通信を行うための通信モジュール１００４、並びにハードディスク等の補助記憶装置１００５等のハードウェアを備えるコンピュータを含むものとして構成される。これらの構成要素がプログラム等により動作することにより、上述したクラスタリング装置１００の機能が発揮される。以上が、本実施形態に係るクラスタリング装置１００の構成である。
【００５７】
引き続いて、図９〜図１２のフローチャートを用いて、本実施形態に係るクラスタリング装置１００で実行される処理を説明する。まず、図９のフローチャートを用いて、クラスタリング装置１００の動作方法である、対象ベクトルをクラスタリングするクラスタリング方法全体の処理について説明する。
【００５８】
本処理では、まず、入力部１０１によって、クラスタリング対象の複数の対象ベクトルのベクトルデータが入力（取得）される（Ｓ０１、入力ステップ）。入力されたベクトルデータは、入力部１０１からクラスタリング実行部１０２に出力される。続いて、クラスタリング実行部１０２によって、予め設定される最大クラスタ数のクラスタの何れかに各対象ベクトルが分類される（Ｓ０２、分類ステップ）。続いて、クラスタリング実行部１０２によって、分類されたベクトルデータに基づいて各クラスタの中心ベクトルが算出される（Ｓ０３、代表ベクトル算出ステップ）。
【００５９】
続いて、対象ベクトルのベクトルデータが、クラスタリング実行部１０２からハッシュ値算出部１０３に出力される。また、最大クラスタ数が、クラスタリング実行部１０２からハッシュ値算出部１０３に通知される。続いて、ハッシュ値算出部１０３によって、クラスタリング実行部１０２から入力された対象ベクトルに対してハッシュ値が算出される（Ｓ０４、第１ハッシュ値算出ステップ）。このハッシュ値は、上述したようにＬＳＨテーブル（テーブルＩＤ）毎に算出される。算出されたハッシュ値は、ハッシュ値算出部１０３からクラスタリング実行部１０２に入力される。
【００６０】
続いて、中心ベクトルのベクトルデータが、クラスタリング実行部１０２からハッシュ値算出部１０３に出力される。続いて、ハッシュ値算出部１０３によって、クラスタリング実行部１０２から入力された中心ベクトルに対してハッシュ値が算出される（Ｓ０５、第２ハッシュ値算出ステップ）。算出されたハッシュ値は、ハッシュ値算出部１０３からクラスタリング実行部１０２に入力される。
【００６１】
続いて、対象ベクトルのハッシュ値と、各クラスタの中心ベクトルのハッシュ値とが、クラスタリング実行部１０２からクラスタ候補絞込部１０８に出力される。続いて、クラスタ候補絞込部１０８によって、対象ベクトルのハッシュ値と、各クラスタの中心ベクトルのハッシュ値とが比較されて、当該比較に基づき当該対象ベクトルが分類される候補となるクラスタが特定される（Ｓ０６、候補特定ステップ）。特定されたクラスタの情報は、対象ベクトル毎のクラスタ候補集合としてクラスタ候補絞込部１０８からクラスタリング実行部１０２に出力される。
【００６２】
続いて、クラスタリング実行部１０２によって、クラスタ候補集合に含まれるクラスタの中心ベクトルと対象ベクトルとの類似度に基づいて、対象ベクトルが当該クラスタのうちの何れかに再分類される（Ｓ０７、再分類ステップ）。続いて、クラスタリング実行部１０２によって、再分類されたクラスタの中心ベクトルが再度、計算される（Ｓ０８、代表ベクトル算出ステップ）。続いて、Ｓ０５〜Ｓ０８の処理が一定回数繰り返される。ここで、Ｓ０５における中心ベクトルのハッシュ値は、繰り返しの前のＳ０８において計算されたものが用いられて算出される。
【００６３】
一定回数の繰り返しが終了すると、クラスタリング実行部１０２によって、その時点での対象ベクトルが分類されているクラスタを示す情報、及び各クラスタの中心ベクトルの情報が出力される（Ｓ０９）。以上が、対象ベクトルをクラスタリングするクラスタリング方法全体の処理である。
【００６４】
引き続いて、図１０のフローチャートを用いて、ハッシュ値算出部１０３によるベクトルのハッシュ値を算出する処理（図９のＳ０４又はＳ０５の処理に相当）について説明する。以下のハッシュ値の算出はテーブルＩＤ毎に行われる。即ち、テーブルＩＤ毎に以下の処理が繰り返され、テーブルＩＤ毎のハッシュ値が算出される。なお、上述したように予め指定されたテーブルＩＤについてのみハッシュ値が算出されてもよい。
【００６５】
まず、クラスタリング実行部１０２からハッシュ値算出部１０３に、ハッシュ値の算出対象のベクトルデータ（対象ベクトル又は中心ベクトル）と最大クラスタ数が入力される（Ｓ１１）。これ以降の処理は、全てハッシュ値算出部１０３によるものである。続いて、ＬＳＨ算出用正規乱数ベクトル記憶部１０４、ＬＳＨ算出用切片記憶部１０５、ＬＳＨ算出用一様乱数ベクトル記憶部１０６及びＬＳＨパラメータ記憶部１０７に記憶されている、乱数ベクトル、切片の値、一様乱数ベクトル及びＬＳＨパラメータが取得される（Ｓ１２）。
【００６６】
以下のＳ１３〜Ｓ１６の計算は、テーブルＩＤに対応付けられた全てのコードＩＤに対して行われる。即ち、Ｓ１３〜Ｓ１６の計算は、コードＩＤが変更されて繰り返し行われる。続いて、ハッシュ値の算出対象のベクトルと、正規乱数ベクトルとのコサイン類似度が算出される（Ｓ１３）。この際、コサイン類似度算出対象のテーブルＩＤ及びコードＩＤは、上記の算出の前に予め特定されている。続いて、算出されたコサイン類似度と指定された定数との積が算出される（Ｓ１４）。続いて、上記で算出した積と、コサイン類似度の算出に用いられた正規乱数ベクトルに係るテーブルＩＤ及びコードＩＤに対応付けられた切片の値との和が算出される（Ｓ１５）。続いて、算出された和のＬＳＨパラメータによる商が算出される（Ｓ１６）。
【００６７】
全てのコードＩＤに対して上記の値（ＬＳＨコード）が算出されると、その属性（添え字）がコードＩＤである成分を、当該値を要素としたベクトルであるコードベクトルが生成される。続いて、コードベクトルと一様乱数ベクトルとのコサイン類似度が算出される（Ｓ１７）。続いて、算出されたコサイン類似度と最大クラスタ数との積が算出される（Ｓ１８）。続いて、算出された値の小数点以下が切り捨てられて整数値とされ、当該整数値がハッシュ値とされる。得られたハッシュ値は、ハッシュ値算出部１０３からクラスタリング実行部１０２に出力される（Ｓ１９）。以上が、ハッシュ値算出部１０３によるベクトルのハッシュ値を算出する処理である。
【００６８】
引き続いて、図１１のフローチャートを用いて、クラスタ候補絞込部１０８による対象ベクトルが分類される候補となるクラスタを特定する処理（分類されるべきクラスタの候補の絞込みの処理、図９のＳ０６の処理に相当）について説明する。
【００６９】
まず、クラスタリング実行部１０２からクラスタ候補絞込部１０８に、対象ベクトルのハッシュ値と、各クラスタの中心ベクトルのハッシュ値とが入力される（Ｓ２１）。なお、各クラスタの中心ベクトルのハッシュ値は、クラスタＩＤが対応付けられている。これ以降の処理は、全てクラスタ候補絞込部１０８によるものである。以下のハッシュ値の算出は対象ベクトル毎に行われる。即ち、対象ベクトル毎に以下の処理が繰り返され、対象ベクトル毎のクラスタ候補集合が特定される。
【００７０】
続いて、対象ベクトルのクラスタ候補集合が空集合に設定される（Ｓ２２）。以下のＳ２３〜Ｓ２６の計算は、ハッシュ値が算出されている全てのテーブルＩＤ（ＬＳＨテーブル）に対して行われる。即ち、Ｓ２３〜Ｓ２６の計算は、テーブルＩＤが変更されて繰り返し行われる。続いて、対象ベクトルのハッシュ値と中心ベクトルのハッシュ値とが比較され、ハッシュ値が同じ中心ベクトルがあるか否か（ハッシュ値が同じクラスタが存在するか否か）が判定される（Ｓ２３）。ハッシュ値が同じ中心ベクトルがある（ハッシュ値が同じクラスタが存在する）と判定された場合（Ｓ２３のＹｅｓ）、当該中心ベクトルに係るクラスタが全てクラスタ候補集合に追加される（Ｓ２４）。
【００７１】
ハッシュ値が同じ中心ベクトルがない（ハッシュ値が同じクラスタが存在しない）と判定された場合（Ｓ２３のＮｏ）、中心ベクトルのハッシュ値から、対象ベクトルのハッシュ値と最も近いハッシュ値が探索される（Ｓ２５）。探索されたハッシュ値（近傍ハッシュ値）の中心ベクトルに係るクラスタがクラスタ候補集合に追加される（Ｓ２６）。
【００７２】
ハッシュ値が算出されている全てのテーブルＩＤ（ＬＳＨテーブル）に対して上記の処理が終了すると、対象ベクトルが分類される候補となるクラスタを示す情報としてクラスタ候補集合が、クラスタ候補絞込部１０８からクラスタリング実行部１０２に出力される（Ｓ２７）。以上が、クラスタ候補絞込部１０８による対象ベクトルが分類される候補となるクラスタを特定する処理である。
【００７３】
引き続いて、図１２のフローチャートを用いて、ＬＳＨテーブル作成部１０９によるハッシュ値を生成するために用いられる情報を取得又は生成する処理について説明する。本処理は、対象ベクトルのクラスタリングの処理以前に行われる。
【００７４】
本処理では、まず、ＬＳＨパラメータが取得されてＬＳＨパラメータ記憶部１０７に登録（格納）される（Ｓ３１）。以下のＳ３２〜Ｓ３６の処理は、予め設定されたＬＳＨテーブルの数（テーブルＩＤの数）、繰り返し行われる。また、Ｓ３２〜Ｓ３４の処理は、予め設定されたＬＳＨコードの数（コードＩＤの数）、繰り返し行われる。
【００７５】
続いて、平均０、分散１の正規乱数が生成されて、生成された値が正規乱数ベクトルの各成分に設定される（Ｓ３２）。続いて、切片の値として、０以上かつＬＳＨパラメータの値未満の少数乱数が生成される（Ｓ３３）。生成された正規乱数ベクトル及び切片の値は、それぞれテーブルＩＤ及びコードＩＤの組に対応付けられてＬＳＨ算出用正規乱数ベクトル記憶部１０４及びＬＳＨ算出用切片記憶部１０５に登録（格納）される（Ｓ３４）。テーブルＩＤ及びコードＩＤは、１から開始され繰り返し毎に１増加した値とされる。コードＩＤは、テーブルＩＤが更新されると１から開始される。
【００７６】
続いて、整数の乱数が生成して、生成された値が一様乱数ベクトルの各成分に設定される（Ｓ３５）。生成した一様乱数ベクトルは、テーブルＩＤに対応付けられてＬＳＨ算出用一様乱数ベクトル記憶部１０６に登録（格納）される（Ｓ３６）。以上が、ＬＳＨテーブル作成部１０９によるハッシュ値を生成するために用いられる情報を取得又は生成する処理である。また、以上が、本実施形態に係るクラスタリング装置１００で実行される処理である。
【００７７】
上述したように、本実施形態では、ハッシュ値の比較に基づいて対象ベクトルが分類される候補となるクラスタが特定される。従って、対象ベクトルをクラスタに分類する際に全てのクラスタの中心ベクトルとのベクトル同志の比較を行う必要がなく、従来のクラスタリングに比べてベクトル同志の比較を減らすことができる。即ち、ハッシュ値を用いたクラスタの絞込みによって計算時間の高速化を行うことができる。これにより、本実施形態によれば、ベクトル集合の要素数やクラスタ数が多くなった場合でもベクトル集合のクラスタリングの計算を効率的に行うことができる。具体的には、クラスタ数に依存しない、ベクトル集合の要素数に比例した計算時間でクラスタリングすることが可能になる。
【００７８】
また、本実施形態のようにハッシュ値は、例えば、コサイン類似度を用いた、ベクトルの方向が類似していると類似の値となるものとすることができる。この構成によれば、ベクトルの方向の類似関係に基づくクラスタリングを行う際に、ベクトル集合の要素数やクラスタ数が多くなった場合でもベクトル集合のクラスタリングの計算を効率的に行うことができる。但し、ハッシュ値は、必ずしもベクトルの方向の類似関係を反映するものでなくてもよく、何らかの観点においてのベクトルの類似関係を反映するものであってもおい。
【００７９】
本実施形態のように、対象ベクトルのクラスタの再分類は、例えば、コサイン類似度等のようなクラスタの中心ベクトルと対象ベクトルとの類似度に基づいて行われてもよい。この構成によれば、クラスタの再分類を適切に行うことができる。
【００８０】
本実施形態のように、複数のＬＳＨテーブル（テーブルＩＤ）に応じた複数のハッシュ値を用いてクラスタ候補の絞込みを行うこととしてもよい。この構成によれば、複数のハッシュ値から絞込みが行われるのでクラスタ候補の絞込みの段階で対象ベクトルが分類されるべきクラスタを除外することを防ぐことができ、適切に対象ベクトルが分類される候補となるクラスタを特定することができる。但し、テーブルＩＤは必ずしも複数である必要はなく、１つであってもよい（その場合、テーブルＩＤを設ける必要はない）。
【００８１】
本実施形態のように、複数のＬＳＨコード（コードＩＤ）に応じた複数の一様乱数ベクトルを用いてハッシュ値を算出することとしてもよい。この構成によれば、偏りがないより適切なハッシュ値を求めることができ、より適切に本発明に係るクラスタリングを行うことができる。但し、コードＩＤは必ずしも複数である必要はなく、１つであってもよい（その場合、コードＩＤを設ける必要はない）。
【符号の説明】
【００８２】
１００…クラスタリング装置、１０１…入力部、１０２…クラスタリング実行部、１０３…ハッシュ値算出部、１０４…ＬＳＨ算出用正規乱数ベクトル記憶部、１０５…ＬＳＨ算出用切片記憶部、１０６…ＬＳＨ算出用一様乱数ベクトル記憶部、１０７…ＬＳＨパラメータ記憶部、１０８…クラスタ候補絞込部、１０９…ＬＳＨテーブル作成部、１００１…ＣＰＵ、１００２…ＲＡＭ、１００３…ＲＯＭ、１００４…通信モジュール、１００５…補助記憶装置。
【図１】
2015055975.tif 000005
【図２】
2015055975.tif 000006
【図３】
2015055975.tif 000007
【図４】
2015055975.tif 000008
【図５】
2015055975.tif 000009
【図６】
2015055975.tif 000010
【図７】
2015055975.tif 000011
【図８】
2015055975.tif 000012
【図９】
2015055975.tif 000013
【図１０】
2015055975.tif 000014
【図１１】
2015055975.tif 000015
【図１２】
2015055975.tif 000016