(57)【要約】【課題】三角不等式に基づいてｋ−Ｍｅａｎｓの距離計算量を軽減する方式におけるメモリ消費量を削減し、ベクトル間距離計算を高速化する。【解決手段】クラスタリング処理装置において、距離に関するデータを圧縮してメモリに格納するデータ圧縮手段と、距離計算を行う対象となる入力ベクトル、及びセントロイドベクトルについて、非ゼロインデックスリスト及びＢｌｏｏｍ  ｆｉｌｔｅｒを算出し、メモリに格納する距離計算用データキャッシュ手段と、前記データ圧縮手段により圧縮された距離データを用いて距離計算の省略判定を行い、距離計算を省略しない場合における距離計算を前記非ゼロインデックスリスト及び前記Ｂｌｏｏｍ  ｆｉｌｔｅｒを用いて行うことにより、入力ベクトルに対する最近傍セントロイドベクトルを求めるベクトル距離計算手段とを備える。【選択図】図７
2013218636.tif 000002
【特許請求の範囲】
【請求項１】
分散クラスタリング処理システムを構成するクラスタリング処理装置であって、入力ベクトルとセントロイドベクトル間の距離の下限値及び上限値と、三角不等式を用いて不要な距離計算を省略することでｋ−Ｍｅａｎｓのクラスタリング処理を高速に行うクラスタリング処理装置において、
セントロイドベクトル同士の距離マトリックスにおける距離データを圧縮してメモリに格納するととともに、入力ベクトルとセントロイドベクトル間の距離についての下限値及び上限値のデータを圧縮してメモリに格納するデータ圧縮手段と、
距離計算を行う対象となる入力ベクトル、及びセントロイドベクトルについて、非ゼロ要素を示すリストである非ゼロインデックスリストを作成し、当該非ゼロインデックスリストからＢｌｏｏｍ  ｆｉｌｔｅｒを作成し、当該非ゼロインデックスリスト及び当該Ｂｌｏｏｍ  ｆｉｌｔｅｒをメモリに格納する距離計算用データキャッシュ手段と、
前記データ圧縮手段により圧縮された距離データを用いて距離計算の省略判定を行い、距離計算を省略しない場合における距離計算を前記非ゼロインデックスリスト及び前記Ｂｌｏｏｍ  ｆｉｌｔｅｒを用いて行うことにより、入力ベクトルに対する最近傍セントロイドベクトルを求めるベクトル距離計算手段と
を備えることを特徴とするクラスタリング処理装置。
【請求項２】
前記データ圧縮手段は、前記セントロイドベクトル間の距離の値、入力ベクトルとセントロイドベクトル間の距離についての下限値及び上限値のそれぞれについて、距離に関する所定の閾値から漏れる値をメモリに保持せず、さらに値を一律に当該所定の閾値とし、値そのものをメモリに保持しない
ことを特徴とする請求項１に記載のクラスタリング処理装置。
【請求項３】
前記距離計算用データキャッシュ手段は、前記非ゼロインデックスリストにおける各非ゼロインデックスに関して、所定の値の剰余を計算し、計算結果の位置のみを１としその他を０としたビット列を前記Ｂｌｏｏｍ ｆｉｌｔｅｒとして算出し、メモリに格納する
ことを特徴とする請求項１又は２に記載のクラスタリング処理装置。
【請求項４】
分散クラスタリング処理システムを構成するクラスタリング処理装置であって、入力ベクトルとセントロイドベクトル間の距離の下限値及び上限値と、三角不等式を用いて不要な距離計算を省略することでｋ−Ｍｅａｎｓのクラスタリング処理を高速に行うクラスタリング処理装置が実行するクラスタリング処理方法であって
セントロイドベクトル同士の距離マトリックスにおける距離データを圧縮してメモリに格納するととともに、入力ベクトルとセントロイドベクトル間の距離についての下限値及び上限値のデータを圧縮してメモリに格納するデータ圧縮ステップと、
距離計算を行う対象となる入力ベクトル、及びセントロイドベクトルについて、非ゼロ要素を示すリストである非ゼロインデックスリストを作成し、当該非ゼロインデックスリストからＢｌｏｏｍ  ｆｉｌｔｅｒを作成し、当該非ゼロインデックスリスト及び当該Ｂｌｏｏｍ  ｆｉｌｔｅｒをメモリに格納する距離計算用データキャッシュステップと、
前記データ圧縮ステップにより圧縮された距離データを用いて距離計算の省略判定を行い、距離計算を省略しない場合における距離計算を前記非ゼロインデックスリスト及び前記Ｂｌｏｏｍ  ｆｉｌｔｅｒを用いて行うことにより、入力ベクトルに対する最近傍セントロイドベクトルを求めるベクトル距離計算ステップと
を備えることを特徴とするクラスタリング処理方法。
【請求項５】
前記データ圧縮ステップにおいて、前記クラスタリング処理装置は、前記セントロイドベクトル間の距離の値、入力ベクトルとセントロイドベクトル間の距離についての下限値及び上限値のそれぞれについて、距離に関する所定の閾値から漏れる値をメモリに保持せず、さらに値を一律に当該所定の閾値とし、値そのものをメモリに保持しない
ことを特徴とする請求項４に記載のクラスタリング処理方法。
【請求項６】
前記距離計算用データキャッシュステップにおいて、前記クラスタリング処理装置は、前記非ゼロインデックスリストにおける各非ゼロインデックスに関して、所定の値の剰余を計算し、計算結果の位置のみを１としその他を０としたビット列を前記Ｂｌｏｏｍ ｆｉｌｔｅｒとして算出し、メモリに格納する
ことを特徴とする請求項４又は５に記載のクラスタリング処理方法。  
【請求項７】
コンピュータを、請求項１ないし３のうちいずれか１項に記載のクラスタリング処理装置における各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ベクトルデータのクラスタリング処理技術に関するものであり、特に自然言語分野で見られるような高次元かつ大規模なベクトルデータのクラスタリング処理を効率化するための技術に関する。
【背景技術】
【０００２】
ｋ−Ｍｅａｎｓはベクトルデータのクラスタリング処理を行うための代表的なアルゴリズムである。先行技術文献である非特許文献１（"Using the Triangle Inequality to Accelerate k-Means"）には、ｋ−Ｍｅａｎｓアルゴリズムによるクラスタリング処理の過程でベクトル間の距離計算を繰り返し行う際に、クラスタの重心点を表すセントロイドベクトル同士の距離マトリックス、入力ベクトルとセントロイドベクトル間の距離の下限値及び上限値の保持と、距離の公理である三角不等式を用いて不要な距離計算を判定・省略することでクラスタリング処理の高速化を行う従来技術が開示されている。
【０００３】
以下、本発明の課題を理解し易くするために、まず、本発明が対象とする分散クラスタリング処理システムの構成及び動作の例について詳細に説明する。
【０００４】
この分散クラスタリング処理システムでは、大規模な入力ベクトルセットを効率的に処理するためにｋ−Ｍｅａｎｓアルゴリズムを分散処理化することを前提とし、それに非特許文献１に開示された技術を適用し、下限値及び上限値、三角不等式等に基づく不要な距離計算を判定・省略する処理を行っている。なお、非特許文献１に開示された技術は、「入力ベクトルとセントロイドベクトル間の距離の下限値及び上限値と、三角不等式を用いて不要な距離計算を省略することでｋ−Ｍｅａｎｓのクラスタリング処理を高速に行う技術」と称してもよい。当業者であれば、「入力ベクトルとセントロイドベクトル間の距離の下限値及び上限値と、三角不等式を用いて不要な距離計算を省略することでｋ−Ｍｅａｎｓのクラスタリング処理を高速に行う技術」が、非特許文献１に開示された技術、あるいはそれに類する技術であることを明確に理解できる。
【０００５】
（システム全体構成）
本例における分散クラスタリング処理システム１００の物理構成例を図１に示す。図１に示すように、分散クラスタリング処理システム１００は、複数の計算機２００−１〜２００−３がネットワーク１１０を介して接続され、相互に通信可能に構成されている。図１には３台の計算機が接続された例を示しているが、これは一例に過ぎず、計算機の台数は特定の数に限られるわけではない。なお、各図面において、同様の複数の構成部あるいはデータは、計算機２００−１〜２００−３のように、ＸＸＸ−Ｙの形式で参照符号を割り当てている。そして、当該構成部あるいはデータについて、単独で説明を行うときには、ＸＸＸの参照符号を付けている。
【０００６】
図２に、図１に示す分散クラスタリング処理システム１００を構成している計算機２００の物理構成例を示す。図２に示すように、計算機２００は、一般的なコンピュータの構成と同様に、ＣＰＵ２１０、ローカルファイルシステム２２０、メモリ２３０、入出力装置２４０、ネットワークインターフェイス２５０を備え、これらがバス２６０により接続されている。ローカルファイルシステム２２０は、例えばハードディスク等の２次記憶装置により構成されている。また、メモリ２３０と２次記憶装置はいずれもデータを記憶する記憶装置であるから、これらを総称して記憶手段と称する場合がある。
【０００７】
図３に、分散クラスタリング処理システム１００の論理構成３００（機能構成と呼んでもよい）の例を示す。この論理構成３００では、処理に用いられるデータ、処理の流れに対応する矢印、及び処理を実行する機能部が示されている。
【０００８】
後でより詳細に説明するが、図３に示す各要素のうち、最近傍セントロイドベクトル計算部３３０はそれぞれの計算機２００が備え、各計算機２００の最近傍セントロイドベクトル計算部３３０は、部分入力ベクトルセットを入力し、最近傍セントロイドベクトル計算を行って、補正ベクトルセットを出力する。各計算機２００は、記憶手段に自身の処理に係る部分入力ベクトルセット、補正ベクトルセットをに格納する。
【０００９】
初期セントロイドベクトル生成部３６０及びセントロイドベクトル更新部３５０は、分散クラスタリング処理システム１００を構成する計算機２００のうちのいずれか１つの計算機が持てばよい。もしくは、分散クラスタリング処理システム１００の外部にある、ネットワーク接続された計算機が初期セントロイドベクトル生成部３６０及びセントロイドベクトル更新部３５０を備えることとしてもよい。本実施の形態では、説明の便宜上、計算機２００−１が、初期セントロイドベクトル生成部３６０及びセントロイドベクトル更新部３５０を有するものとする。
【００１０】
図３に示す論理構成３００において、各データは該当の計算機２００の記憶手段に格納され、各機能部及び処理の流れは、各計算機２００においてプログラムが実行されることにより実現される。
【００１１】
（システムの動作）
以下、図３に示した構成に基づいて、図４の分散ｋ−Ｍｅａｎｓのフローチャートに沿って、本例の分散クラスタリング処理の内容を説明する。
【００１２】
ステップ１００）  まず、入力ベクトルセット３１０と処理結果となるクラスタ数を指定するパラメータｋが与えられる。具体的には、例えば、計算機２００−１に入力ベクトルセット３１０とパラメータｋが入力され、記憶手段に保持される。
【００１３】
計算機２００−１において、初期セントロイド生成部３６０は、例えば入力ベクトルセットから選ぶ、もしくは入力ベクトルセットと同じ最大次元数のベクトルをランダムに生成するなど、任意の手段でｋ個のセントロイドベクトル３７０を作成し、出力する。
【００１４】
ステップ１１０）  計算機２００−１は、入力ベクトルセットを、分散処理クラスタを構成する各計算機２００に分割して部分入力ベクトルセット（３２０−１、３２０−２、３２０−３）として記憶手段に保持させ、さらにステップ１００の出力であるセントロイドベクトルセットを全ての計算機２００に配布し、各計算機２００の記憶手段に保持させる。
【００１５】
各計算機２００の最近傍セントロイドベクトル計算部３３０は、各々が保持する部分入力ベクトルセットとセントロイドベクトルセットのベクトル同士の距離計算を総当たりで実施し、部分入力ベクトルセットの各入力ベクトルがセントロイドベクトルセットのどのセントロイドベクトルに最も近いかを判定する。さらに入力ベクトル毎に最も近いと判定されたセントロイドベクトルを補正するための補正ベクトルを入力ベクトルに従って出力する（３４０−１、３４０−２、３４０−３）。なお、ステップ１１０の最近傍セントロイドベクトル計算部３３０に関する詳細処理は後述する。
【００１６】
ステップ１２０）  セントロイドベクトル更新部３５０を有する計算機２００−１は、ステップ１１０の出力である補正ベクトルを、それぞれが対象とするセントロイド毎に収集し、セントロイドベクトル更新部３５０が、補正ベクトルセットから新しいセントロイドベクトルを計算・更新する。
【００１７】
ステップ１３０）  セントロイドベクトル更新部３５０において、各セントロイドベクトルについて、ステップ１２０による更新処理前から、更新処理後のセントロイドベクトルの移動距離が閾値を下回っているかどうか判定し、全てのセントロイドベクトルの移動距離が閾値を下回っている場合またはセントロイドベクトルの更新回数が閾値を上回っている場合は真を、そうでない場合は偽を出力する。
【００１８】
ステップ１４０）  ステップ１３０の出力が偽（Ｎｏ）である場合はステップ１１０に戻り、更新されたセントロイドベクトルに関して再度補正ベクトルセットを計算し、出力する。ステップ１３０の出力が真である場合は全てのセントロイドベクトルを処理結果として出力する。
【００１９】
次に、各計算機２００が備える最近傍セントロイドベクトル計算部３３０の構成及び処理について説明する。
【００２０】
図５は最近傍セントロイドベクトル計算部３３０を詳細化した論理構成図であり、図６は図４のステップ１１０を詳細化した処理フローである。この部分は従来技術 "Using the Triangle Inequality to Accelerate k-Means" の根幹を成す部分である。
【００２１】
図５に示すように、最近傍セントロイドベクトル計算部３３０は、ベクトル距離計算部４１０を備え、ベクトル距離計算部４１０は図示されるデータに対する処理を行う。各データは記憶手段に格納されるが、後述するように、※の付けられたデータについてはローカルファイルシステム２２０ではなく、メモリ２３０に格納される。
【００２２】
以下、図６のフローチャートを参照して、図５の構成に基づいて、最近傍セントロイドベクトル計算部３３０に関わる処理内容を説明する。
【００２３】
ステップ２００）  図４のステップ１００の出力であるｋ個のセントロイドベクトルセットまたは図４のステップ１２０によって更新されたセントロイドベクトルセットについて、初期セントロイドベクトル生成部３６０もしくはセントロイドベクトル更新部３５０において、セントロイドベクトル同士の総当たりで距離計算を行い、行列状のデータ（距離マトリックス）を出力し、当該データが各最近傍セントロイドベクトル計算部３３０に入力され、メモリ２３０に格納される。
【００２４】
ステップ２１０）  分散処理クラスタを構成する計算機２００それぞれの最近傍セントロイドベクトル計算部３３０において、ベクトル距離計算部４１０は、記憶手段に保持される部分入力ベクトルセットから、未だ最近傍セントロイドベクトルが確定していない入力ベクトルを一つ選択して取得する（この入力ベクトルを以降は現入力ベクトルと呼称する）。以降ステップ２８０までは分散処理クラスタを構成する計算機２００それぞれで並列に処理が実行される。
【００２５】
ステップ２２０）  各計算機２００のベクトル距離計算部４１０において、図４のステップ１００の出力であるセントロイドベクトルセットまたは図４のステップ１２０によって更新されたセントロイドベクトルセットから、現入力ベクトルと未だ距離計算を行なっていないセントロイドベクトルをひとつ選択して取得する（このセントロイドベクトルを以降は現セントロイドベクトルと呼称する）。その際、そのセントロイドベクトルの更新前のベクトルからの移動距離と、現入力ベクトルより、距離計算の省略判定に利用する距離の下限値リスト及び上限値リストの該当部分を更新する。
【００２６】
ステップ２３０）  各計算機２００のベクトル距離計算部４１０において、ステップ２００の出力であるセントロイドの距離マトリックス３７０、および入力ベクトルとセントロイドベクトル間の距離下限値リスト４３０・上限値リスト４４０を利用して、現入力ベクトルと現セントロイドベクトルとの距離計算が省略可能であるかどうかを判定し、省略可能である場合はステップ２６０に進む。
【００２７】
ステップ２４０）  各計算機２００のベクトル距離計算部４１０において、現入力ベクトルと、現セントロイドベクトルの距離計算を、距離の公理を満たす任意の距離関数を用いて行う。その際に計算された距離が、現入力ベクトルのこの段階での最近傍セントロイドベクトル４２０との距離よりも近い場合は、最近傍セントロイドベクトルを現セントロイドベクトルに更新する。
【００２８】
ステップ２５０）  各計算機２００のベクトル距離計算部４１０において、距離の下限値リスト４３０・上限値リスト４４０の現入力ベクトル及び現セントロイドベクトルに関する部分を更新する。
【００２９】
ステップ２６０）  各計算機２００のベクトル距離計算部４１０において、現入力ベクトルに関して、セントロイドベクトルセットの全てのセントロイドベクトルと距離計算が完了しているかどうか判定し、完了していない場合はステップ２２０に戻る。
【００３０】
ステップ２７０）  ステップ２６０にて現入力ベクトルの最近傍セントロイドベクトルが確定している場合は、分散処理クラスタを構成する計算機２００それぞれのベクトル距離計算部４１０において、現入力ベクトルを以って最近傍セントロイドベクトルのベクトル空間内の位置を補正するための補正ベクトルを計算し、出力する。
【００３１】
ステップ２８０）  各計算機２００のベクトル距離計算部４１０において、保持する部分入力ベクトルセットの全ての入力ベクトルに関して最近傍セントロイドベクトルが決定し、かつ補正ベクトルの出力が完了しているかどうか判定し、完了していない場合はステップ２１０に戻る。完了していれば、ここでの処理は終了する。
【先行技術文献】
【非特許文献】
【００３２】
【非特許文献１】Using the Triangle Inequality to Accelerate k-Means [Charles Elkan、 ICML2003]
【発明の概要】
【発明が解決しようとする課題】
【００３３】
前述したように、上記非特許文献１の実現例における論理構成図５における"※"が付けられたデータは、Ｉ／Ｏ速度の都合上、基本的に計算機２００のローカルファイルシステム２２０でなく、メモリ２３０に格納しなければならないデータを示している。その中でも特に、入力ベクトルセットが大規模な場合、もしくはｋ−Ｍｅａｎｓのｋの数（事前に指定するクラスタリング後のクラスタ数）が多い場合、距離計算省略判定に利用する３種類の情報（図５に示す３７０、３３０、３４０）が非常に大量のメモリ空間を必要とするため、コモディティハードウェアでは利用することができない。また従来技術は、ベクトル間の距離計算そのものが高速化される技術ではなく、省略される距離計算回数が少ない場合は効果が小さくなるという問題がある。
【００３４】
本発明は上記の点に鑑みなされたもので、大規模入力ベクトルセットに対応するために、ｋ−Ｍｅａｎｓを分散処理化することを前提とした状況下で、非特許文献１に記載された三角不等式に基づいてｋ−Ｍｅａｎｓの距離計算量を軽減する方式におけるベクトル間距離計算省略判定に必要となる各種情報のメモリ消費量を削減し、ベクトル間距離計算の高速化も行うことで、本発明が対象とする大規模な入力ベクトルセットを効率的にクラスタリング処理するための技術を提供することを目的とする。
【課題を解決するための手段】
【００３５】
上記の課題を解決するために、本発明は、分散クラスタリング処理システムを構成するクラスタリング処理装置であって、入力ベクトルとセントロイドベクトル間の距離の下限値及び上限値と、三角不等式を用いて不要な距離計算を省略することでｋ−Ｍｅａｎｓのクラスタリング処理を高速に行うクラスタリング処理装置において、
セントロイドベクトル同士の距離マトリックスにおける距離データを圧縮してメモリに格納するととともに、入力ベクトルとセントロイドベクトル間の距離についての下限値及び上限値のデータを圧縮してメモリに格納するデータ圧縮手段と、
距離計算を行う対象となる入力ベクトル、及びセントロイドベクトルについて、非ゼロ要素を示すリストである非ゼロインデックスリストを作成し、当該非ゼロインデックスリストからＢｌｏｏｍ  ｆｉｌｔｅｒを作成し、当該非ゼロインデックスリスト及び当該Ｂｌｏｏｍ  ｆｉｌｔｅｒをメモリに格納する距離計算用データキャッシュ手段と、
前記データ圧縮手段により圧縮された距離データを用いて距離計算の省略判定を行い、距離計算を省略しない場合における距離計算を前記非ゼロインデックスリスト及び前記Ｂｌｏｏｍ  ｆｉｌｔｅｒを用いて行うことにより、入力ベクトルに対する最近傍セントロイドベクトルを求めるベクトル距離計算手段とを備えることを特徴とするクラスタリング処理装置として構成される。
【００３６】
前記データ圧縮手段は、前記セントロイドベクトル間の距離の値、入力ベクトルとセントロイドベクトル間の距離についての下限値及び上限値のそれぞれについて、距離に関する所定の閾値から漏れる値をメモリに保持せず、さらに値を一律に当該所定の閾値とし、値そのものをメモリに保持しないように構成することができる。
【００３７】
また、前記距離計算用データキャッシュ手段は、前記非ゼロインデックスリストにおける各非ゼロインデックスに関して、所定の値の剰余を計算し、計算結果の位置のみを１としその他を０としたビット列を前記Ｂｌｏｏｍ ｆｉｌｔｅｒとして算出し、メモリに格納するように構成することができる。
【００３８】
また、本発明は、前記クラスタリング処理装置が実行するクラスタリング処理方法として構成することもできる。更に、本発明は、コンピュータを、前記クラスタリング処理装置における各手段として機能させるためのプログラムとして構成することもできる。
【発明の効果】
【００３９】
本発明によれば、ｋ−Ｍｅａｎｓアルゴリズムを分散処理にて大規模ベクトルデータを対象として実施する際に、非特許文献１のベクトル間距離計算省略が、メモリ枯渇によって利用できないことを解消することができる。さらに、非特許文献１がカバーしないベクトル間距離計算省略対象外となる距離計算を効率化することができる。結果、クラスタリング処理を高速化することができる。
【図面の簡単な説明】
【００４０】
【図１】分散クラスタリング処理システム１００の物理構成図である。
【図２】分散クラスタリング処理システム１００を構成する計算機２００の物理構成図である。
【図３】分散クラスタリング処理システム１００の論理構成３００を示す図である。
【図４】分散クラスタリング処理システム１００による分散クラスタリング処理のフローチャートである。
【図５】従来の最近傍セントロイドベクトル計算部３３０の論理構成図である。
【図６】従来の最近傍セントロイドベクトル計算部３３０による各入力ベクトルの最近傍セントロイドベクトル決定処理を示すフローチャートである。
【図７】本発明の実施の形態に係る最近傍セントロイドベクトル計算部３３０の論理構成図である。
【図８】ベクトル間距離の下限値リストの例を示す図である。
【図９】閾値から漏れる値を保持しない下限値リストの例を示す図である。
【図１０】値を閾値に一律とし、当該値を保持しない下限値リストの例を示す図である。
【図１１】入力ベクトルセットの例を示す図である。
【図１２】ベクトルの非ゼロインデックスリストの例を示す図である。
【図１３】ベクトルのＢｌｏｏｍ ｆｉｌｔｅｒ算出例を示す図である。
【図１４】ベクトルのＢｌｏｏｍ ｆｉｌｔｅｒの例を示す図である。
【図１５】本発明の実施の形態に係る最近傍セントロイドベクトル計算部３３０による各入力ベクトルの最近傍セントロイドベクトル決定処理を示すフローチャートである。
【発明を実施するための形態】
【００４１】
以下、図面を参照して本発明の実施の形態を説明する。なお、以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。
【００４２】
本実施の形態に係る分散クラスタリング処理システム１００及び計算機２００の物理構成は、図１及び図２を参照して説明した構成と同じである。また、本実施の形態に係る分散ｋ−Meansの全体の論理構成及び処理フローは、図３及び図４を参照して説明した構成及び処理フローと同じである。本実施の形態では、各計算機２００が備える最近傍セントロイドベクトル計算部３３０の構成及び動作が従来技術と異なる。すなわち、本実施の形態では、最近傍セントロイドベクトル計算部３３０が、ベクトル間距離計算省略判定に必要となる各種情報のメモリ消費量を削減し、ベクトル間距離計算の高速化を行うための構成を備える。
【００４３】
図７に、本実施の形態に係る最近傍セントロイドベクトル計算部３３０の論理構成図を示す。図７に示すとおり、図５に示した最近傍セントロイドベクトル計算部３３０と比べて、データ圧縮部５５０と距離計算用データキャッシュ部５６０が加えられている。また、図７に示す各データは、計算機２００の記憶手段に格納されるが、特に※の付されたデータはメモリ２３０に格納される。
【００４４】
データ圧縮部５５０は、従来技術 "Using the Triangle Inequality to Accelerate k-Means"（非特許文献１）において距離計算省略判定に必要とする情報の消費メモリ量を削減するための機能部であり、本実施の形態が対象とする条件下であっても距離計算省略による高速化効果を得る。
【００４５】
例えばセントロイドベクトルと入力ベクトル間の距離の下限値リストが図８に示すものであったとき、データ圧縮部５５０は、閾値を例えば０．５と設定し、閾値を下回る値を図９に示すようにリストから削除する。そして、閾値を超える値は全て０．５に一律し、距離の値を図１０に示すようにリストから削除することで、下限値リストが消費するメモリ空間を大幅に削減する。なお、閾値自体は予め設定しておき、「閾値」として、記憶手段に格納される。
【００４６】
すなわち、図８において、例えば、IDが１の入力ベクトルについて、IDが０、１、２のセントロイドベクトルに関しての下限値はそれぞれ０、０．４、０．５５である。この例において、図９に示すように、データ圧縮部５５０は、予め定められた閾値０．５を下回る値（０．５以下の値）であるIDが０、１についてのセントロイドベクトルのデータをリストから削除するとともに、図１０に示すように、閾値０．５を超える０．５５の値はリストから削除する。
【００４７】
後述するように、データ圧縮部５５０は、セントロイドベクトル同士の距離についてもデータ圧縮を行う。
【００４８】
距離計算用データキャッシュ部５６０は、データ圧縮部５５０によって空いたメモリ空間を活用し、ベクトルデータの非ゼロ要素リストと、ベクトルデータのＢｌｏｏｍ Ｆｉｌｔｅｒを算出して、メモリ２３０に蓄積する（キャッシュする）ための機能部である。距離計算用データキャッシュ部５６０を備えることにより、ベクトル間の距離計算の際に非ゼロ要素リストとＢｌｏｏｍ Ｆｉｌｔｅｒを利用して距離計算に係わるＣＰＵコストを下げることが可能となる。
【００４９】
例えば入力ベクトルセットが図１１に示すとおりであったときに、距離計算用データキャッシュ部５６０は、入力ベクトルセットの各入力ベクトルについて、ゼロ以外の要素が格納されているインデックスに関する図１２に示すような非ゼロインデックスリストを作成し、メモリ２３０内にキャッシュする。そして、非ゼロインデックスリストを元に図１３のように、各非ゼロインデックスに関して、例えば４の剰余を計算し、計算結果の位置のみを１としその他を０とした４ビットのビット列をＢｌｏｏｍ ｆｉｌｔｅｒとして出力し、メモリ２３０にキャッシュする。図１４は図１１の例から図１３のように計算・出力された４ビットのＢｌｏｏｍ ｆｉｌｔｅｒである。
【００５０】
例えば、図１１に示す例において、IDが０の入力ベクトルは、インデックス４の値が１であり、インデックス１０の値が１であり、その他の値が０である。よって、図１２に示すように、IDが０の入力ベクトルの非ゼロインデックスリストは｛４，１０｝となる。そして、図１３に示すように、４と１０についてそれぞれ４の剰余を計算して、値が０と２になるから、図１４に示すように、IDが０の入力ベクトルについてのＢｌｏｏｍ  ｆｉｌｔｅｒは、０番目と２番目が１である１０１０となる。なお、図１１〜図１４は、例として入力ベクトルを示しているが、セントロイドベクトルについても同様のデータが算出され、キャッシュされる。
【００５１】
クラスタリング処理の過程で、非特許文献１の技術によって省略できないと判定されたベクトル間距離計算において、互いのＢｌｏｏｍ ｆｉｌｔｅｒのＡＮＤ演算を行い、結果のビット列が全て０であった場合に、距離計算中の２つのベクトルに共通する非ゼロインデックスが存在しないことを、単純な非ゼロインデックスリストの比較よりも高速に検知することができる。共通する非ゼロインデックスが存在しない２つのベクトルの内積は必ず０となるため、距離計算の過程でしばしば計算される内積計算を省くことができ、距離計算に係わるＣＰＵコストを下げることができる。図１４の例では、ＩＤが５の入力ベクトルとＩＤが０及び６の入力ベクトルとの間において、Ｂｌｏｏｍ ｆｉｌｔｅｒのＡＮＤ演算結果が００００となり、必ず内積が０であることを高速に検知できる。Ｂｌｏｏｍ ｆｉｌｔｅｒのＡＮＤ演算結果が全て０でない場合においては、メモリ２３０にキャッシュしておいた非ゼロインデックスリストを用いることで、ベクトルの非ゼロ要素を高速に取得することができ、非ゼロ要素の探索に係わるＣＰＵコストを削減することができる。
【００５２】
本実施の形態において、各データは該当の計算機２００の記憶手段に格納され、各機能部及び処理の流れは、計算機２００においてプログラムが実行されることにより実現される。当該プログラムは、可搬メモリ等の記憶媒体に格納して配布し、計算機２００にインストールして用いてもよいし、ネットワーク上のサーバからダウンロードして計算機２００にインストールしてもよい。
【００５３】
以下、上記のようにデータ圧縮部５５０と距離計算用データキャッシュ部５６０を備える最近傍セントロイドベクトル計算部３３０に関する処理動作について、図１５のフローチャートに示す手順に沿って説明する。
【００５４】
ステップ３００）  図６のステップ２００と同様にして、図４のステップ１００の出力であるｋ個のセントロイドベクトルセットまたは図４のステップ１２０によって更新されたセントロイドベクトルセットについて、初期セントロイドベクトル生成部３６０もしくはセントロイドベクトル更新部３５０において、セントロイドベクトル同士の総当たりで距離計算を行い、行列状のデータ（距離マトリックス）を出力し、当該データが各計算機２００の最近傍セントロイドベクトル計算部３３０に入力され、メモリ２３０に保持される。そして、最近傍セントロイドベクトル計算部３３０におけるデータ圧縮部５５０は、閾値から漏れる値をメモリ２３０に保持せず（メモリ２３０から削除）、さらにセントロイドベクトル間の距離の値を閾値に一律し、値そのものはメモリ２３０に保持しない。
【００５５】
例えば、距離が閾値Ｘ以下の値はメモリ２３０に保持せず、距離が閾値Ｘを超える値については、距離を一律閾値Ｘと決め、どのセントロイドベクトル間が閾値Ｘの距離を持つかを示す情報を保持し、距離の値そのものはメモリに保持しない。
【００５６】
ステップ３１０）  図６のステップ２１０と同様にして、ベクトル距離計算部４１０は、現入力ベクトルを取得する。本実施の形態では、その際、距離計算用データキャッシュ部５６０は、現入力ベクトルの非ゼロインデックスリストとＢｌｏｏｍ ｆｉｌｔｅｒ（５７０）を計算してメモリ２３０に保持する。
【００５７】
ステップ３２０）  ベクトル距離計算部４１０は、図６のステップ２２０と同様にして、現セントロイドベクトルを取得する。その際、距離計算用データキャッシュ部５６０は、ステップ３１０と同様に現セントロイドベクトルの距離計算用データ（非ゼロインデックスリストとＢｌｏｏｍ ｆｉｌｔｅｒ）を計算してメモリ２３０に保持する。また、図６のステップ２２０と同様に、ベクトル距離計算部４１０は、距離計算の省略判定に利用する距離の下限値リスト及び上限値リストの該当部分を更新するが、その際に、データ圧縮部５５０が、閾値から漏れる値はメモリ２３０に保持せず、さらに下限値・上限値を閾値に一律し、値そのものはメモリ２３０に保持しない。例えば、下限値については、前述したとおりに、閾値を下回る値（閾値以下の値）をリストから削除し、閾値を超える値を一律（閾値の値）とする。また、上限値については、閾値を上回る値（閾値以上の値）をリストから削除し、閾値未満の値を一律（閾値の値）とする。
【００５８】
ステップ３３０）  図６のステップ２３０と同様の処理を行う。すなわち、各計算機２００のベクトル距離計算部４１０において、ステップ３００の出力であるセントロイドの距離マトリックス３７０、および入力ベクトルとセントロイドベクトル間の距離下限値リスト５３０・上限値リスト５４０を利用して、現入力ベクトルと現セントロイドベクトルとの距離計算が省略可能であるかどうかを判定し、省略可能である場合はステップ３６０に進む。
【００５９】
ステップ３４０）基本的には、図６のステップ２４０と同様に、各計算機２００のベクトル距離計算部４１０において、現入力ベクトルと、現セントロイドベクトルの距離計算を、距離の公理を満たす任意の距離関数を用いて行う。その際に計算された距離が、現入力ベクトルのこの段階での最近傍セントロイドベクトル５２０との距離よりも近い場合は、最近傍セントロイドベクトルを現セントロイドベクトルに更新する。
【００６０】
本実施の形態では、ここでの現入力ベクトルと現セントロイドベクトルの距離計算を、距離計算用データ５７０がキャッシュされたメモリ２３０を参照することで、Ｂｌｏｏｍ ｆｉｌｔｅｒを用いて内積計算を省略し、非ゼロインデックスリストを用いてベクトルの非ゼロ要素を高速に探索しながら、高速に行う。
【００６１】
ステップ３５０）  図６のステップ２５０と同様に、各計算機２００のベクトル距離計算部４１０において、距離の下限値リスト５３０・上限値リスト５４０の現入力ベクトル及び現セントロイドベクトルに関する部分を更新するが、本実施の形態では、データ圧縮部５５０により、値が閾値を超えるもののみ、閾値に一律として更新を行う。
【００６２】
ステップ３６０）  図６のステップ２６０と同様に、各計算機２００のベクトル距離計算部４１０において、現入力ベクトルに関して、セントロイドベクトルセットの全てのセントロイドベクトルと距離計算が完了しているかどうか判定し、完了していない場合はステップ３２０に戻る。
【００６３】
ステップ３７０）  図６のステップ２７０と同様に、ステップ３６０にて現入力ベクトルの最近傍セントロイドベクトルが確定している場合は、ベクトル距離計算部４１０において、現入力ベクトルを以って最近傍セントロイドベクトルのベクトル空間内の位置を補正するための補正ベクトルを計算し、出力する。
【００６４】
ステップ３８０）  図６のステップ２８０と同様に、各計算機２００のベクトル距離計算部４１０において、保持する部分入力ベクトルセットの全ての入力ベクトルに関して最近傍セントロイドベクトルが決定し、かつ補正ベクトルの出力が完了しているかどうか判定し、完了していない場合はステップ３１０に戻る。完了していれば、ここでの処理は終了する。
【００６５】
（実施の形態のまとめ、効果）
上述したように、本実施の形態では、従来技術 "Using the Triangle Inequality to Accelerate k-Means" （非特許文献１）が距離計算省略判定に必要とする情報の消費メモリ量を削減するデータ圧縮部５５０を有し、本発明が対象とする大規模入力ベクトルセットから多量のクラスタを生成するクラスタリング処理であっても距離計算省略による高速化効果を得ることができる。また、ベクトルデータの非ゼロ要素リストと、ベクトルデータのＢｌｏｏｍ Ｆｉｌｔｅｒを蓄積する距離計算用データキャッシュ部５６０を有し、ベクトル間の距離計算の際に非ゼロ要素リストとＢｌｏｏｍ Ｆｉｌｔｅｒを利用して距離計算に係わるＣＰＵコストを下げることができる。
【００６６】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。
【符号の説明】
【００６７】
１００  分散クラスタリング処理システム
１１０  ネットワーク
２００  計算機
２１０  ＣＰＵ
２２０  ローカルファイルシステム
２３０  メモリ
２４０  入出力装置
２５０  ネットワークインターフェイス
３３０  最近傍セントロイドベクトル計算部
３５０  セントロイドベクトル更新部
３６０  初期セントロイドベクトル生成部
４１０  ベクトル距離計算部
５５０  データ圧縮部
５６０  距離計算用データキャッシュ部
【図１】
2013218636.tif 000003
【図２】
2013218636.tif 000004
【図３】
2013218636.tif 000005
【図４】
2013218636.tif 000006
【図５】
2013218636.tif 000007
【図６】
2013218636.tif 000008
【図７】
2013218636.tif 000009
【図８】
2013218636.tif 000010
【図９】
2013218636.tif 000011
【図１０】
2013218636.tif 000012
【図１１】
2013218636.tif 000013
【図１２】
2013218636.tif 000014
【図１３】
2013218636.tif 000015
【図１４】
2013218636.tif 000016
【図１５】
2013218636.tif 000017