JP2013218636A - クラスタリング処理装置、クラスタリング処理方法、及びプログラム - Google Patents

クラスタリング処理装置、クラスタリング処理方法、及びプログラム Download PDF

Info

Publication number
JP2013218636A
JP2013218636A JP2012090984A JP2012090984A JP2013218636A JP 2013218636 A JP2013218636 A JP 2013218636A JP 2012090984 A JP2012090984 A JP 2012090984A JP 2012090984 A JP2012090984 A JP 2012090984A JP 2013218636 A JP2013218636 A JP 2013218636A
Authority
JP
Japan
Prior art keywords
vector
distance
distance calculation
centroid
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2012090984A
Other languages
English (en)
Inventor
Keishi Fukumoto
佳史 福本
Makoto Onizuka
真 鬼塚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2012090984A priority Critical patent/JP2013218636A/ja
Publication of JP2013218636A publication Critical patent/JP2013218636A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Complex Calculations (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】三角不等式に基づいてk−Meansの距離計算量を軽減する方式におけるメモリ消費量を削減し、ベクトル間距離計算を高速化する。
【解決手段】クラスタリング処理装置において、距離に関するデータを圧縮してメモリに格納するデータ圧縮手段と、距離計算を行う対象となる入力ベクトル、及びセントロイドベクトルについて、非ゼロインデックスリスト及びBloom filterを算出し、メモリに格納する距離計算用データキャッシュ手段と、前記データ圧縮手段により圧縮された距離データを用いて距離計算の省略判定を行い、距離計算を省略しない場合における距離計算を前記非ゼロインデックスリスト及び前記Bloom filterを用いて行うことにより、入力ベクトルに対する最近傍セントロイドベクトルを求めるベクトル距離計算手段とを備える。
【選択図】図7

Description

本発明は、ベクトルデータのクラスタリング処理技術に関するものであり、特に自然言語分野で見られるような高次元かつ大規模なベクトルデータのクラスタリング処理を効率化するための技術に関する。
k−Meansはベクトルデータのクラスタリング処理を行うための代表的なアルゴリズムである。先行技術文献である非特許文献1("Using the Triangle Inequality to Accelerate k-Means")には、k−Meansアルゴリズムによるクラスタリング処理の過程でベクトル間の距離計算を繰り返し行う際に、クラスタの重心点を表すセントロイドベクトル同士の距離マトリックス、入力ベクトルとセントロイドベクトル間の距離の下限値及び上限値の保持と、距離の公理である三角不等式を用いて不要な距離計算を判定・省略することでクラスタリング処理の高速化を行う従来技術が開示されている。
以下、本発明の課題を理解し易くするために、まず、本発明が対象とする分散クラスタリング処理システムの構成及び動作の例について詳細に説明する。
この分散クラスタリング処理システムでは、大規模な入力ベクトルセットを効率的に処理するためにk−Meansアルゴリズムを分散処理化することを前提とし、それに非特許文献1に開示された技術を適用し、下限値及び上限値、三角不等式等に基づく不要な距離計算を判定・省略する処理を行っている。なお、非特許文献1に開示された技術は、「入力ベクトルとセントロイドベクトル間の距離の下限値及び上限値と、三角不等式を用いて不要な距離計算を省略することでk−Meansのクラスタリング処理を高速に行う技術」と称してもよい。当業者であれば、「入力ベクトルとセントロイドベクトル間の距離の下限値及び上限値と、三角不等式を用いて不要な距離計算を省略することでk−Meansのクラスタリング処理を高速に行う技術」が、非特許文献1に開示された技術、あるいはそれに類する技術であることを明確に理解できる。
(システム全体構成)
本例における分散クラスタリング処理システム100の物理構成例を図1に示す。図1に示すように、分散クラスタリング処理システム100は、複数の計算機200−1〜200−3がネットワーク110を介して接続され、相互に通信可能に構成されている。図1には3台の計算機が接続された例を示しているが、これは一例に過ぎず、計算機の台数は特定の数に限られるわけではない。なお、各図面において、同様の複数の構成部あるいはデータは、計算機200−1〜200−3のように、XXX−Yの形式で参照符号を割り当てている。そして、当該構成部あるいはデータについて、単独で説明を行うときには、XXXの参照符号を付けている。
図2に、図1に示す分散クラスタリング処理システム100を構成している計算機200の物理構成例を示す。図2に示すように、計算機200は、一般的なコンピュータの構成と同様に、CPU210、ローカルファイルシステム220、メモリ230、入出力装置240、ネットワークインターフェイス250を備え、これらがバス260により接続されている。ローカルファイルシステム220は、例えばハードディスク等の2次記憶装置により構成されている。また、メモリ230と2次記憶装置はいずれもデータを記憶する記憶装置であるから、これらを総称して記憶手段と称する場合がある。
図3に、分散クラスタリング処理システム100の論理構成300(機能構成と呼んでもよい)の例を示す。この論理構成300では、処理に用いられるデータ、処理の流れに対応する矢印、及び処理を実行する機能部が示されている。
後でより詳細に説明するが、図3に示す各要素のうち、最近傍セントロイドベクトル計算部330はそれぞれの計算機200が備え、各計算機200の最近傍セントロイドベクトル計算部330は、部分入力ベクトルセットを入力し、最近傍セントロイドベクトル計算を行って、補正ベクトルセットを出力する。各計算機200は、記憶手段に自身の処理に係る部分入力ベクトルセット、補正ベクトルセットをに格納する。
初期セントロイドベクトル生成部360及びセントロイドベクトル更新部350は、分散クラスタリング処理システム100を構成する計算機200のうちのいずれか1つの計算機が持てばよい。もしくは、分散クラスタリング処理システム100の外部にある、ネットワーク接続された計算機が初期セントロイドベクトル生成部360及びセントロイドベクトル更新部350を備えることとしてもよい。本実施の形態では、説明の便宜上、計算機200−1が、初期セントロイドベクトル生成部360及びセントロイドベクトル更新部350を有するものとする。
図3に示す論理構成300において、各データは該当の計算機200の記憶手段に格納され、各機能部及び処理の流れは、各計算機200においてプログラムが実行されることにより実現される。
(システムの動作)
以下、図3に示した構成に基づいて、図4の分散k−Meansのフローチャートに沿って、本例の分散クラスタリング処理の内容を説明する。
ステップ100) まず、入力ベクトルセット310と処理結果となるクラスタ数を指定するパラメータkが与えられる。具体的には、例えば、計算機200−1に入力ベクトルセット310とパラメータkが入力され、記憶手段に保持される。
計算機200−1において、初期セントロイド生成部360は、例えば入力ベクトルセットから選ぶ、もしくは入力ベクトルセットと同じ最大次元数のベクトルをランダムに生成するなど、任意の手段でk個のセントロイドベクトル370を作成し、出力する。
ステップ110) 計算機200−1は、入力ベクトルセットを、分散処理クラスタを構成する各計算機200に分割して部分入力ベクトルセット(320−1、320−2、320−3)として記憶手段に保持させ、さらにステップ100の出力であるセントロイドベクトルセットを全ての計算機200に配布し、各計算機200の記憶手段に保持させる。
各計算機200の最近傍セントロイドベクトル計算部330は、各々が保持する部分入力ベクトルセットとセントロイドベクトルセットのベクトル同士の距離計算を総当たりで実施し、部分入力ベクトルセットの各入力ベクトルがセントロイドベクトルセットのどのセントロイドベクトルに最も近いかを判定する。さらに入力ベクトル毎に最も近いと判定されたセントロイドベクトルを補正するための補正ベクトルを入力ベクトルに従って出力する(340−1、340−2、340−3)。なお、ステップ110の最近傍セントロイドベクトル計算部330に関する詳細処理は後述する。
ステップ120) セントロイドベクトル更新部350を有する計算機200−1は、ステップ110の出力である補正ベクトルを、それぞれが対象とするセントロイド毎に収集し、セントロイドベクトル更新部350が、補正ベクトルセットから新しいセントロイドベクトルを計算・更新する。
ステップ130) セントロイドベクトル更新部350において、各セントロイドベクトルについて、ステップ120による更新処理前から、更新処理後のセントロイドベクトルの移動距離が閾値を下回っているかどうか判定し、全てのセントロイドベクトルの移動距離が閾値を下回っている場合またはセントロイドベクトルの更新回数が閾値を上回っている場合は真を、そうでない場合は偽を出力する。
ステップ140) ステップ130の出力が偽(No)である場合はステップ110に戻り、更新されたセントロイドベクトルに関して再度補正ベクトルセットを計算し、出力する。ステップ130の出力が真である場合は全てのセントロイドベクトルを処理結果として出力する。
次に、各計算機200が備える最近傍セントロイドベクトル計算部330の構成及び処理について説明する。
図5は最近傍セントロイドベクトル計算部330を詳細化した論理構成図であり、図6は図4のステップ110を詳細化した処理フローである。この部分は従来技術 "Using the Triangle Inequality to Accelerate k-Means" の根幹を成す部分である。
図5に示すように、最近傍セントロイドベクトル計算部330は、ベクトル距離計算部410を備え、ベクトル距離計算部410は図示されるデータに対する処理を行う。各データは記憶手段に格納されるが、後述するように、※の付けられたデータについてはローカルファイルシステム220ではなく、メモリ230に格納される。
以下、図6のフローチャートを参照して、図5の構成に基づいて、最近傍セントロイドベクトル計算部330に関わる処理内容を説明する。
ステップ200) 図4のステップ100の出力であるk個のセントロイドベクトルセットまたは図4のステップ120によって更新されたセントロイドベクトルセットについて、初期セントロイドベクトル生成部360もしくはセントロイドベクトル更新部350において、セントロイドベクトル同士の総当たりで距離計算を行い、行列状のデータ(距離マトリックス)を出力し、当該データが各最近傍セントロイドベクトル計算部330に入力され、メモリ230に格納される。
ステップ210) 分散処理クラスタを構成する計算機200それぞれの最近傍セントロイドベクトル計算部330において、ベクトル距離計算部410は、記憶手段に保持される部分入力ベクトルセットから、未だ最近傍セントロイドベクトルが確定していない入力ベクトルを一つ選択して取得する(この入力ベクトルを以降は現入力ベクトルと呼称する)。以降ステップ280までは分散処理クラスタを構成する計算機200それぞれで並列に処理が実行される。
ステップ220) 各計算機200のベクトル距離計算部410において、図4のステップ100の出力であるセントロイドベクトルセットまたは図4のステップ120によって更新されたセントロイドベクトルセットから、現入力ベクトルと未だ距離計算を行なっていないセントロイドベクトルをひとつ選択して取得する(このセントロイドベクトルを以降は現セントロイドベクトルと呼称する)。その際、そのセントロイドベクトルの更新前のベクトルからの移動距離と、現入力ベクトルより、距離計算の省略判定に利用する距離の下限値リスト及び上限値リストの該当部分を更新する。
ステップ230) 各計算機200のベクトル距離計算部410において、ステップ200の出力であるセントロイドの距離マトリックス370、および入力ベクトルとセントロイドベクトル間の距離下限値リスト430・上限値リスト440を利用して、現入力ベクトルと現セントロイドベクトルとの距離計算が省略可能であるかどうかを判定し、省略可能である場合はステップ260に進む。
ステップ240) 各計算機200のベクトル距離計算部410において、現入力ベクトルと、現セントロイドベクトルの距離計算を、距離の公理を満たす任意の距離関数を用いて行う。その際に計算された距離が、現入力ベクトルのこの段階での最近傍セントロイドベクトル420との距離よりも近い場合は、最近傍セントロイドベクトルを現セントロイドベクトルに更新する。
ステップ250) 各計算機200のベクトル距離計算部410において、距離の下限値リスト430・上限値リスト440の現入力ベクトル及び現セントロイドベクトルに関する部分を更新する。
ステップ260) 各計算機200のベクトル距離計算部410において、現入力ベクトルに関して、セントロイドベクトルセットの全てのセントロイドベクトルと距離計算が完了しているかどうか判定し、完了していない場合はステップ220に戻る。
ステップ270) ステップ260にて現入力ベクトルの最近傍セントロイドベクトルが確定している場合は、分散処理クラスタを構成する計算機200それぞれのベクトル距離計算部410において、現入力ベクトルを以って最近傍セントロイドベクトルのベクトル空間内の位置を補正するための補正ベクトルを計算し、出力する。
ステップ280) 各計算機200のベクトル距離計算部410において、保持する部分入力ベクトルセットの全ての入力ベクトルに関して最近傍セントロイドベクトルが決定し、かつ補正ベクトルの出力が完了しているかどうか判定し、完了していない場合はステップ210に戻る。完了していれば、ここでの処理は終了する。
Using the Triangle Inequality to Accelerate k-Means [Charles Elkan、 ICML2003]
前述したように、上記非特許文献1の実現例における論理構成図5における"※"が付けられたデータは、I/O速度の都合上、基本的に計算機200のローカルファイルシステム220でなく、メモリ230に格納しなければならないデータを示している。その中でも特に、入力ベクトルセットが大規模な場合、もしくはk−Meansのkの数(事前に指定するクラスタリング後のクラスタ数)が多い場合、距離計算省略判定に利用する3種類の情報(図5に示す370、330、340)が非常に大量のメモリ空間を必要とするため、コモディティハードウェアでは利用することができない。また従来技術は、ベクトル間の距離計算そのものが高速化される技術ではなく、省略される距離計算回数が少ない場合は効果が小さくなるという問題がある。
本発明は上記の点に鑑みなされたもので、大規模入力ベクトルセットに対応するために、k−Meansを分散処理化することを前提とした状況下で、非特許文献1に記載された三角不等式に基づいてk−Meansの距離計算量を軽減する方式におけるベクトル間距離計算省略判定に必要となる各種情報のメモリ消費量を削減し、ベクトル間距離計算の高速化も行うことで、本発明が対象とする大規模な入力ベクトルセットを効率的にクラスタリング処理するための技術を提供することを目的とする。
上記の課題を解決するために、本発明は、分散クラスタリング処理システムを構成するクラスタリング処理装置であって、入力ベクトルとセントロイドベクトル間の距離の下限値及び上限値と、三角不等式を用いて不要な距離計算を省略することでk−Meansのクラスタリング処理を高速に行うクラスタリング処理装置において、
セントロイドベクトル同士の距離マトリックスにおける距離データを圧縮してメモリに格納するととともに、入力ベクトルとセントロイドベクトル間の距離についての下限値及び上限値のデータを圧縮してメモリに格納するデータ圧縮手段と、
距離計算を行う対象となる入力ベクトル、及びセントロイドベクトルについて、非ゼロ要素を示すリストである非ゼロインデックスリストを作成し、当該非ゼロインデックスリストからBloom filterを作成し、当該非ゼロインデックスリスト及び当該Bloom filterをメモリに格納する距離計算用データキャッシュ手段と、
前記データ圧縮手段により圧縮された距離データを用いて距離計算の省略判定を行い、距離計算を省略しない場合における距離計算を前記非ゼロインデックスリスト及び前記Bloom filterを用いて行うことにより、入力ベクトルに対する最近傍セントロイドベクトルを求めるベクトル距離計算手段とを備えることを特徴とするクラスタリング処理装置として構成される。
前記データ圧縮手段は、前記セントロイドベクトル間の距離の値、入力ベクトルとセントロイドベクトル間の距離についての下限値及び上限値のそれぞれについて、距離に関する所定の閾値から漏れる値をメモリに保持せず、さらに値を一律に当該所定の閾値とし、値そのものをメモリに保持しないように構成することができる。
また、前記距離計算用データキャッシュ手段は、前記非ゼロインデックスリストにおける各非ゼロインデックスに関して、所定の値の剰余を計算し、計算結果の位置のみを1としその他を0としたビット列を前記Bloom filterとして算出し、メモリに格納するように構成することができる。
また、本発明は、前記クラスタリング処理装置が実行するクラスタリング処理方法として構成することもできる。更に、本発明は、コンピュータを、前記クラスタリング処理装置における各手段として機能させるためのプログラムとして構成することもできる。
本発明によれば、k−Meansアルゴリズムを分散処理にて大規模ベクトルデータを対象として実施する際に、非特許文献1のベクトル間距離計算省略が、メモリ枯渇によって利用できないことを解消することができる。さらに、非特許文献1がカバーしないベクトル間距離計算省略対象外となる距離計算を効率化することができる。結果、クラスタリング処理を高速化することができる。
分散クラスタリング処理システム100の物理構成図である。 分散クラスタリング処理システム100を構成する計算機200の物理構成図である。 分散クラスタリング処理システム100の論理構成300を示す図である。 分散クラスタリング処理システム100による分散クラスタリング処理のフローチャートである。 従来の最近傍セントロイドベクトル計算部330の論理構成図である。 従来の最近傍セントロイドベクトル計算部330による各入力ベクトルの最近傍セントロイドベクトル決定処理を示すフローチャートである。 本発明の実施の形態に係る最近傍セントロイドベクトル計算部330の論理構成図である。 ベクトル間距離の下限値リストの例を示す図である。 閾値から漏れる値を保持しない下限値リストの例を示す図である。 値を閾値に一律とし、当該値を保持しない下限値リストの例を示す図である。 入力ベクトルセットの例を示す図である。 ベクトルの非ゼロインデックスリストの例を示す図である。 ベクトルのBloom filter算出例を示す図である。 ベクトルのBloom filterの例を示す図である。 本発明の実施の形態に係る最近傍セントロイドベクトル計算部330による各入力ベクトルの最近傍セントロイドベクトル決定処理を示すフローチャートである。
以下、図面を参照して本発明の実施の形態を説明する。なお、以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。
本実施の形態に係る分散クラスタリング処理システム100及び計算機200の物理構成は、図1及び図2を参照して説明した構成と同じである。また、本実施の形態に係る分散k−Meansの全体の論理構成及び処理フローは、図3及び図4を参照して説明した構成及び処理フローと同じである。本実施の形態では、各計算機200が備える最近傍セントロイドベクトル計算部330の構成及び動作が従来技術と異なる。すなわち、本実施の形態では、最近傍セントロイドベクトル計算部330が、ベクトル間距離計算省略判定に必要となる各種情報のメモリ消費量を削減し、ベクトル間距離計算の高速化を行うための構成を備える。
図7に、本実施の形態に係る最近傍セントロイドベクトル計算部330の論理構成図を示す。図7に示すとおり、図5に示した最近傍セントロイドベクトル計算部330と比べて、データ圧縮部550と距離計算用データキャッシュ部560が加えられている。また、図7に示す各データは、計算機200の記憶手段に格納されるが、特に※の付されたデータはメモリ230に格納される。
データ圧縮部550は、従来技術 "Using the Triangle Inequality to Accelerate k-Means"(非特許文献1)において距離計算省略判定に必要とする情報の消費メモリ量を削減するための機能部であり、本実施の形態が対象とする条件下であっても距離計算省略による高速化効果を得る。
例えばセントロイドベクトルと入力ベクトル間の距離の下限値リストが図8に示すものであったとき、データ圧縮部550は、閾値を例えば0.5と設定し、閾値を下回る値を図9に示すようにリストから削除する。そして、閾値を超える値は全て0.5に一律し、距離の値を図10に示すようにリストから削除することで、下限値リストが消費するメモリ空間を大幅に削減する。なお、閾値自体は予め設定しておき、「閾値」として、記憶手段に格納される。
すなわち、図8において、例えば、IDが1の入力ベクトルについて、IDが0、1、2のセントロイドベクトルに関しての下限値はそれぞれ0、0.4、0.55である。この例において、図9に示すように、データ圧縮部550は、予め定められた閾値0.5を下回る値(0.5以下の値)であるIDが0、1についてのセントロイドベクトルのデータをリストから削除するとともに、図10に示すように、閾値0.5を超える0.55の値はリストから削除する。
後述するように、データ圧縮部550は、セントロイドベクトル同士の距離についてもデータ圧縮を行う。
距離計算用データキャッシュ部560は、データ圧縮部550によって空いたメモリ空間を活用し、ベクトルデータの非ゼロ要素リストと、ベクトルデータのBloom Filterを算出して、メモリ230に蓄積する(キャッシュする)ための機能部である。距離計算用データキャッシュ部560を備えることにより、ベクトル間の距離計算の際に非ゼロ要素リストとBloom Filterを利用して距離計算に係わるCPUコストを下げることが可能となる。
例えば入力ベクトルセットが図11に示すとおりであったときに、距離計算用データキャッシュ部560は、入力ベクトルセットの各入力ベクトルについて、ゼロ以外の要素が格納されているインデックスに関する図12に示すような非ゼロインデックスリストを作成し、メモリ230内にキャッシュする。そして、非ゼロインデックスリストを元に図13のように、各非ゼロインデックスに関して、例えば4の剰余を計算し、計算結果の位置のみを1としその他を0とした4ビットのビット列をBloom filterとして出力し、メモリ230にキャッシュする。図14は図11の例から図13のように計算・出力された4ビットのBloom filterである。
例えば、図11に示す例において、IDが0の入力ベクトルは、インデックス4の値が1であり、インデックス10の値が1であり、その他の値が0である。よって、図12に示すように、IDが0の入力ベクトルの非ゼロインデックスリストは{4,10}となる。そして、図13に示すように、4と10についてそれぞれ4の剰余を計算して、値が0と2になるから、図14に示すように、IDが0の入力ベクトルについてのBloom filterは、0番目と2番目が1である1010となる。なお、図11〜図14は、例として入力ベクトルを示しているが、セントロイドベクトルについても同様のデータが算出され、キャッシュされる。
クラスタリング処理の過程で、非特許文献1の技術によって省略できないと判定されたベクトル間距離計算において、互いのBloom filterのAND演算を行い、結果のビット列が全て0であった場合に、距離計算中の2つのベクトルに共通する非ゼロインデックスが存在しないことを、単純な非ゼロインデックスリストの比較よりも高速に検知することができる。共通する非ゼロインデックスが存在しない2つのベクトルの内積は必ず0となるため、距離計算の過程でしばしば計算される内積計算を省くことができ、距離計算に係わるCPUコストを下げることができる。図14の例では、IDが5の入力ベクトルとIDが0及び6の入力ベクトルとの間において、Bloom filterのAND演算結果が0000となり、必ず内積が0であることを高速に検知できる。Bloom filterのAND演算結果が全て0でない場合においては、メモリ230にキャッシュしておいた非ゼロインデックスリストを用いることで、ベクトルの非ゼロ要素を高速に取得することができ、非ゼロ要素の探索に係わるCPUコストを削減することができる。
本実施の形態において、各データは該当の計算機200の記憶手段に格納され、各機能部及び処理の流れは、計算機200においてプログラムが実行されることにより実現される。当該プログラムは、可搬メモリ等の記憶媒体に格納して配布し、計算機200にインストールして用いてもよいし、ネットワーク上のサーバからダウンロードして計算機200にインストールしてもよい。
以下、上記のようにデータ圧縮部550と距離計算用データキャッシュ部560を備える最近傍セントロイドベクトル計算部330に関する処理動作について、図15のフローチャートに示す手順に沿って説明する。
ステップ300) 図6のステップ200と同様にして、図4のステップ100の出力であるk個のセントロイドベクトルセットまたは図4のステップ120によって更新されたセントロイドベクトルセットについて、初期セントロイドベクトル生成部360もしくはセントロイドベクトル更新部350において、セントロイドベクトル同士の総当たりで距離計算を行い、行列状のデータ(距離マトリックス)を出力し、当該データが各計算機200の最近傍セントロイドベクトル計算部330に入力され、メモリ230に保持される。そして、最近傍セントロイドベクトル計算部330におけるデータ圧縮部550は、閾値から漏れる値をメモリ230に保持せず(メモリ230から削除)、さらにセントロイドベクトル間の距離の値を閾値に一律し、値そのものはメモリ230に保持しない。
例えば、距離が閾値X以下の値はメモリ230に保持せず、距離が閾値Xを超える値については、距離を一律閾値Xと決め、どのセントロイドベクトル間が閾値Xの距離を持つかを示す情報を保持し、距離の値そのものはメモリに保持しない。
ステップ310) 図6のステップ210と同様にして、ベクトル距離計算部410は、現入力ベクトルを取得する。本実施の形態では、その際、距離計算用データキャッシュ部560は、現入力ベクトルの非ゼロインデックスリストとBloom filter(570)を計算してメモリ230に保持する。
ステップ320) ベクトル距離計算部410は、図6のステップ220と同様にして、現セントロイドベクトルを取得する。その際、距離計算用データキャッシュ部560は、ステップ310と同様に現セントロイドベクトルの距離計算用データ(非ゼロインデックスリストとBloom filter)を計算してメモリ230に保持する。また、図6のステップ220と同様に、ベクトル距離計算部410は、距離計算の省略判定に利用する距離の下限値リスト及び上限値リストの該当部分を更新するが、その際に、データ圧縮部550が、閾値から漏れる値はメモリ230に保持せず、さらに下限値・上限値を閾値に一律し、値そのものはメモリ230に保持しない。例えば、下限値については、前述したとおりに、閾値を下回る値(閾値以下の値)をリストから削除し、閾値を超える値を一律(閾値の値)とする。また、上限値については、閾値を上回る値(閾値以上の値)をリストから削除し、閾値未満の値を一律(閾値の値)とする。
ステップ330) 図6のステップ230と同様の処理を行う。すなわち、各計算機200のベクトル距離計算部410において、ステップ300の出力であるセントロイドの距離マトリックス370、および入力ベクトルとセントロイドベクトル間の距離下限値リスト530・上限値リスト540を利用して、現入力ベクトルと現セントロイドベクトルとの距離計算が省略可能であるかどうかを判定し、省略可能である場合はステップ360に進む。
ステップ340)基本的には、図6のステップ240と同様に、各計算機200のベクトル距離計算部410において、現入力ベクトルと、現セントロイドベクトルの距離計算を、距離の公理を満たす任意の距離関数を用いて行う。その際に計算された距離が、現入力ベクトルのこの段階での最近傍セントロイドベクトル520との距離よりも近い場合は、最近傍セントロイドベクトルを現セントロイドベクトルに更新する。
本実施の形態では、ここでの現入力ベクトルと現セントロイドベクトルの距離計算を、距離計算用データ570がキャッシュされたメモリ230を参照することで、Bloom filterを用いて内積計算を省略し、非ゼロインデックスリストを用いてベクトルの非ゼロ要素を高速に探索しながら、高速に行う。
ステップ350) 図6のステップ250と同様に、各計算機200のベクトル距離計算部410において、距離の下限値リスト530・上限値リスト540の現入力ベクトル及び現セントロイドベクトルに関する部分を更新するが、本実施の形態では、データ圧縮部550により、値が閾値を超えるもののみ、閾値に一律として更新を行う。
ステップ360) 図6のステップ260と同様に、各計算機200のベクトル距離計算部410において、現入力ベクトルに関して、セントロイドベクトルセットの全てのセントロイドベクトルと距離計算が完了しているかどうか判定し、完了していない場合はステップ320に戻る。
ステップ370) 図6のステップ270と同様に、ステップ360にて現入力ベクトルの最近傍セントロイドベクトルが確定している場合は、ベクトル距離計算部410において、現入力ベクトルを以って最近傍セントロイドベクトルのベクトル空間内の位置を補正するための補正ベクトルを計算し、出力する。
ステップ380) 図6のステップ280と同様に、各計算機200のベクトル距離計算部410において、保持する部分入力ベクトルセットの全ての入力ベクトルに関して最近傍セントロイドベクトルが決定し、かつ補正ベクトルの出力が完了しているかどうか判定し、完了していない場合はステップ310に戻る。完了していれば、ここでの処理は終了する。
(実施の形態のまとめ、効果)
上述したように、本実施の形態では、従来技術 "Using the Triangle Inequality to Accelerate k-Means" (非特許文献1)が距離計算省略判定に必要とする情報の消費メモリ量を削減するデータ圧縮部550を有し、本発明が対象とする大規模入力ベクトルセットから多量のクラスタを生成するクラスタリング処理であっても距離計算省略による高速化効果を得ることができる。また、ベクトルデータの非ゼロ要素リストと、ベクトルデータのBloom Filterを蓄積する距離計算用データキャッシュ部560を有し、ベクトル間の距離計算の際に非ゼロ要素リストとBloom Filterを利用して距離計算に係わるCPUコストを下げることができる。
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。
100 分散クラスタリング処理システム
110 ネットワーク
200 計算機
210 CPU
220 ローカルファイルシステム
230 メモリ
240 入出力装置
250 ネットワークインターフェイス
330 最近傍セントロイドベクトル計算部
350 セントロイドベクトル更新部
360 初期セントロイドベクトル生成部
410 ベクトル距離計算部
550 データ圧縮部
560 距離計算用データキャッシュ部

Claims (7)

  1. 分散クラスタリング処理システムを構成するクラスタリング処理装置であって、入力ベクトルとセントロイドベクトル間の距離の下限値及び上限値と、三角不等式を用いて不要な距離計算を省略することでk−Meansのクラスタリング処理を高速に行うクラスタリング処理装置において、
    セントロイドベクトル同士の距離マトリックスにおける距離データを圧縮してメモリに格納するととともに、入力ベクトルとセントロイドベクトル間の距離についての下限値及び上限値のデータを圧縮してメモリに格納するデータ圧縮手段と、
    距離計算を行う対象となる入力ベクトル、及びセントロイドベクトルについて、非ゼロ要素を示すリストである非ゼロインデックスリストを作成し、当該非ゼロインデックスリストからBloom filterを作成し、当該非ゼロインデックスリスト及び当該Bloom filterをメモリに格納する距離計算用データキャッシュ手段と、
    前記データ圧縮手段により圧縮された距離データを用いて距離計算の省略判定を行い、距離計算を省略しない場合における距離計算を前記非ゼロインデックスリスト及び前記Bloom filterを用いて行うことにより、入力ベクトルに対する最近傍セントロイドベクトルを求めるベクトル距離計算手段と
    を備えることを特徴とするクラスタリング処理装置。
  2. 前記データ圧縮手段は、前記セントロイドベクトル間の距離の値、入力ベクトルとセントロイドベクトル間の距離についての下限値及び上限値のそれぞれについて、距離に関する所定の閾値から漏れる値をメモリに保持せず、さらに値を一律に当該所定の閾値とし、値そのものをメモリに保持しない
    ことを特徴とする請求項1に記載のクラスタリング処理装置。
  3. 前記距離計算用データキャッシュ手段は、前記非ゼロインデックスリストにおける各非ゼロインデックスに関して、所定の値の剰余を計算し、計算結果の位置のみを1としその他を0としたビット列を前記Bloom filterとして算出し、メモリに格納する
    ことを特徴とする請求項1又は2に記載のクラスタリング処理装置。
  4. 分散クラスタリング処理システムを構成するクラスタリング処理装置であって、入力ベクトルとセントロイドベクトル間の距離の下限値及び上限値と、三角不等式を用いて不要な距離計算を省略することでk−Meansのクラスタリング処理を高速に行うクラスタリング処理装置が実行するクラスタリング処理方法であって
    セントロイドベクトル同士の距離マトリックスにおける距離データを圧縮してメモリに格納するととともに、入力ベクトルとセントロイドベクトル間の距離についての下限値及び上限値のデータを圧縮してメモリに格納するデータ圧縮ステップと、
    距離計算を行う対象となる入力ベクトル、及びセントロイドベクトルについて、非ゼロ要素を示すリストである非ゼロインデックスリストを作成し、当該非ゼロインデックスリストからBloom filterを作成し、当該非ゼロインデックスリスト及び当該Bloom filterをメモリに格納する距離計算用データキャッシュステップと、
    前記データ圧縮ステップにより圧縮された距離データを用いて距離計算の省略判定を行い、距離計算を省略しない場合における距離計算を前記非ゼロインデックスリスト及び前記Bloom filterを用いて行うことにより、入力ベクトルに対する最近傍セントロイドベクトルを求めるベクトル距離計算ステップと
    を備えることを特徴とするクラスタリング処理方法。
  5. 前記データ圧縮ステップにおいて、前記クラスタリング処理装置は、前記セントロイドベクトル間の距離の値、入力ベクトルとセントロイドベクトル間の距離についての下限値及び上限値のそれぞれについて、距離に関する所定の閾値から漏れる値をメモリに保持せず、さらに値を一律に当該所定の閾値とし、値そのものをメモリに保持しない
    ことを特徴とする請求項4に記載のクラスタリング処理方法。
  6. 前記距離計算用データキャッシュステップにおいて、前記クラスタリング処理装置は、前記非ゼロインデックスリストにおける各非ゼロインデックスに関して、所定の値の剰余を計算し、計算結果の位置のみを1としその他を0としたビット列を前記Bloom filterとして算出し、メモリに格納する
    ことを特徴とする請求項4又は5に記載のクラスタリング処理方法。
  7. コンピュータを、請求項1ないし3のうちいずれか1項に記載のクラスタリング処理装置における各手段として機能させるためのプログラム。
JP2012090984A 2012-04-12 2012-04-12 クラスタリング処理装置、クラスタリング処理方法、及びプログラム Pending JP2013218636A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012090984A JP2013218636A (ja) 2012-04-12 2012-04-12 クラスタリング処理装置、クラスタリング処理方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012090984A JP2013218636A (ja) 2012-04-12 2012-04-12 クラスタリング処理装置、クラスタリング処理方法、及びプログラム

Publications (1)

Publication Number Publication Date
JP2013218636A true JP2013218636A (ja) 2013-10-24

Family

ID=49590628

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012090984A Pending JP2013218636A (ja) 2012-04-12 2012-04-12 クラスタリング処理装置、クラスタリング処理方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP2013218636A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150065433A (ko) * 2013-12-05 2015-06-15 건국대학교 산학협력단 알고리즘 저장장치 및 이를 포함하는 클러스터링 장치
JP2016042237A (ja) * 2014-08-14 2016-03-31 日本電信電話株式会社 クラスタリング装置、方法、及びプログラム
JP2016151866A (ja) * 2015-02-17 2016-08-22 日本電信電話株式会社 クラスタリング装置、方法、及びプログラム
JP2016206985A (ja) * 2015-04-23 2016-12-08 日本電信電話株式会社 クラスタリング装置、方法、及びプログラム
KR101976320B1 (ko) * 2018-04-25 2019-05-07 연세대학교 산학협력단 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법
KR102014234B1 (ko) * 2019-01-31 2019-08-26 엘아이지넥스원 주식회사 무선 프로토콜 자동 분석 방법 및 그를 위한 장치

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150065433A (ko) * 2013-12-05 2015-06-15 건국대학교 산학협력단 알고리즘 저장장치 및 이를 포함하는 클러스터링 장치
KR101937494B1 (ko) 2013-12-05 2019-01-10 건국대학교 산학협력단 알고리즘 저장장치를 포함하는 클러스터링 장치
JP2016042237A (ja) * 2014-08-14 2016-03-31 日本電信電話株式会社 クラスタリング装置、方法、及びプログラム
JP2016151866A (ja) * 2015-02-17 2016-08-22 日本電信電話株式会社 クラスタリング装置、方法、及びプログラム
JP2016206985A (ja) * 2015-04-23 2016-12-08 日本電信電話株式会社 クラスタリング装置、方法、及びプログラム
KR101976320B1 (ko) * 2018-04-25 2019-05-07 연세대학교 산학협력단 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법
KR102014234B1 (ko) * 2019-01-31 2019-08-26 엘아이지넥스원 주식회사 무선 프로토콜 자동 분석 방법 및 그를 위한 장치

Similar Documents

Publication Publication Date Title
JP5774742B2 (ja) データ重複除去方法及び装置
CN111652380B (zh) 针对机器学习算法进行算法参数调优的方法及系统
US8494996B2 (en) Creation and revision of network object graph topology for a network performance management system
CN104008064B (zh) 用于多级存储器压缩的方法和系统
JP5229731B2 (ja) 更新頻度に基づくキャッシュ機構
JP2013218636A (ja) クラスタリング処理装置、クラスタリング処理方法、及びプログラム
US8229968B2 (en) Data caching for distributed execution computing
JP6142727B2 (ja) データアクセス分析プログラム、データアクセス分析方法、及びデータアクセス分析装置
Chen et al. Xgboost: Reliable large-scale tree boosting system
US20180349282A1 (en) Using caching techniques to improve graph embedding performance
JP6386089B2 (ja) 最適化されたブラウザレンダリングプロセス
JP2014153961A (ja) 情報処理装置、情報処理方法及び情報処理プログラム
US10320636B2 (en) State information completion using context graphs
JPWO2017072890A1 (ja) データ管理システム、データ管理方法およびプログラム
JP5964781B2 (ja) 検索装置、検索方法および検索プログラム
JP2013161455A (ja) グラフデータ可視化表示装置及び方法及びプログラム
JP6189266B2 (ja) データ処理装置、データ処理方法及びデータ処理プログラム
US20220360458A1 (en) Control method, information processing apparatus, and non-transitory computer-readable storage medium for storing control program
JP6733481B2 (ja) 検索手段選択プログラム、検索手段選択方法及び検索手段選択装置
TWI686704B (zh) 基於圖的資料處理方法和系統
JP5555238B2 (ja) ベイジアンネットワーク構造学習のための情報処理装置及びプログラム
JP2023006529A (ja) データ異常判定装置及び内部状態予測システム
JP6005583B2 (ja) 検索装置、検索方法および検索プログラム
JP2016218847A (ja) 逐次クラスタリング装置、方法、及びプログラム
KR102289411B1 (ko) 가중치 기반의 피처 벡터 생성 장치 및 방법