以下、図面を参照して本発明の実施の形態を詳細に説明する。本発明の実施の形態は、複数のデータ点をクラスタリングするクラスタリング装置に本発明を適用させた場合を例に説明する。
<概要>
まず、第1〜第5の実施の形態の概要について説明する。第1〜第5の実施の形態は、ユークリッド空間上のN個のデータ点の集合Xと、集合Xを分割するクラスタの数k(k<N)を入力として、集合Xをk個に分割し、k個の集合Yi(i=1,2,...,k)を出力するにあたり、次の2つの処理を行うことを特徴とする。第1〜第5の実施の形態では、データ点を表す空間上に存在する点であって、かつ当該空間上において移動しない点である不動点を用いて、複数のデータ点をクラスタリングする。第1〜第5の実施の形態では、不動点としてピボットを用いる場合を例に説明する。
1.本実施の形態に係るクラスタリング装置は、ユークリッド空間上に存在するピボットをj個(j<k)選択し、ピボットの座標を記憶部に記憶させる処理を行う。ここで、ピボットとは、データ点を表す空間上の点である。なお、ピボットはデータ点と一致してもしなくともよい。また、本実施の形態では、複数のピボットを用いる場合を例に説明するが、ピボットは1つであってもよい。また、距離計算の省略(第1の実施の形態において後述する)の割合向上の点から、ピボットは以下の二つの性質を有することを望まれる。
(ア)ユークリッド空間中でデータ点の密な領域に存在すること。
(イ)同一の領域に複数のピボットが存在しないこと。
2.ピボットを用いて距離計算の不要な計算を省略しながら、k個のクラスタの中心のうちでデータ点に最も近い中心を選出し、選出された中心を表す識別子を記憶部に記憶させる処理を行う。中心を表す識別子は各中心に対して付与した通し番号や記号であってもよいし、中心の座標を記憶した記憶部中の各中心座標の格納位置を示すパスやURLの文字列であってもよい。
[第1の実施の形態]
<クラスタリング装置の構成>
第1の実施の形態に係るクラスタリング装置100は、CPU(Central Processing Unit)と、RAM(Random Access Memory)と、後述する各処理ルーチンを実行するための情報提示プログラムを記憶したROM(Read Only Memory)とを備えたコンピュータで構成されている。CPUがプログラムを、内部記憶装置であるROMから読み込んで実行することにより、コンピュータがクラスタリング装置100として機能する。
クラスタリング装置100には、ユークリッド空間上のN個のデータ点の集合Xと、集合Xを分割するクラスタの数k(k<N)とが入力として与えられる。クラスタリング装置100は、入力された集合Xを、k個のクラスタに分割し、分割結果を出力する。
図1に示すように、クラスタリング装置100は、機能的には、入力部10と、演算部20と、出力部50とを含んだ構成で表すことができる。
入力部10は、データ点の集合Xと、クラスタの数kとを受け付ける。
演算部20は、クラスタリング部22と、データ点座標記憶部26と、中心座標記憶部28と、ピボット座標記憶部32と、中心ID記憶部34と、ピボットデータ点距離記憶部38と、ピボット中心距離記憶部44と、分割結果処理部48とを備えている。
クラスタリング部22は、入力部10によって受け付けたデータ点の集合Xに含まれる複数のデータ点の各々について、当該データ点と複数のピボットの各々との間の距離、及び複数のクラスタの中心の各々と複数のピボットの各々との間の距離とに基づいて、当該データ点が所属するクラスタを決定する。なお、ピボットとは、データ点を表すユークリッド空間上の点である。クラスタリング部22は、データ・分割数処理部24と、ピボット選択部30と、ピボットデータ点距離計算部36と、中心座標更新部40と、ピボット中心距離計算部42と、所属変更判定部46とを備えている。
データ・分割数処理部24は、入力部10によって受け付けたユークリッド空間上のN個のデータ点の集合Xと、集合Xを分割するクラスタの数k(k<N)とに基づいて、次の処理を行う。
データ・分割数処理部24は、入力部10によって受け付けた集合Xに含まれる全てのデータ点のユークリッド座標を、データ点座標記憶部26に記憶させる。また、データ・分割数処理部24は、入力部10によって受け付けたクラスタの数kに基づいて、k個のクラスタの各々について、当該クラスタの中心の仮の中心座標(ランダムに決めてもよいし、全て原点でもよい)を中心座標記憶部28に記憶させる。
データ点座標記憶部26には、データ・分割数処理部24によって格納された集合Xに含まれる全てのデータ点xのユークリッド座標が記憶される。
中心座標記憶部28には、データ・分割数処理部24によって格納されたk個のクラスタの各々についてのクラスタの中心の仮の中心座標、後述するピボット選択部30によって得られたk個のクラスタの各々についてのクラスタの中心の中心座標、又は後述する中心座標更新部40によって更新されたk個のクラスタの各々についてのクラスタの中心の中心座標が記憶される。
ピボット選択部30は、データ点座標記憶部26に記憶された複数のデータ点に基づいて、複数のピボットを選択する。具体的には、ピボット選択部30は、データ点座標記憶部26に記憶されたデータ点xの座標から、j個(j<k)のピボットを選択し、選択されたピボットの座標をピボット座標記憶部32に記憶させる。なお、ピボットの個数jは、予め定められている。
第1の実施の形態では、複数のデータ点から複数のクラスタの中心を決定し、複数のクラスタの中心に基づいて、データ点を表す空間上の点から、複数のピボットを選択する場合を例に説明する。ピボット選択部30は、以下の処理を行い、ピボットを選択する。なお、既に選択されたピボットの集合を既存ピボット集合という。
第1の実施の形態では、ピボット選択部30は、まず、ピボットの選択処理が早期に終了するように、後述する終了条件(下記(1)にて後述)を設定したLloyd法(上記非特許文献1を参照。)と同様の手順を集合Xに適用し、適用した結果得られたk個の中心のうち、所属するデータ点の数が最大の中心を最初のピボットとして選択する。
次に、ピボット選択部30は、ピボットとして選択されていないクラスタの中心の各々について、当該クラスタに所属するデータ点の各々に対し、既存ピボット集合を用いて距離の三角不等式に従って距離計算の省略(省略方法については後述)が行えていない回数を求め、ピボットとして選択されていないクラスタの中心から、距離計算の省略が行えていない回数が多い中心を、ピボットとして再帰的にj−1個選択する。そして、ピボット選択部30は、選ばれたj個のピボットの座標を、ピボット座標記憶部32に記憶させる。第1の実施の形態における具体的なピボットの選択方法は以下の(1)〜(3)に示す通りである。
(1)ピボット選択部30は、データ点の集合Xに対し、Lloyd法と同様の手順を分割数kで1反復だけ適用する。第1の実施の形態では、ピボットの選択処理を早期で終了させるための終了条件として反復回数を1回としたが、複数回であってもよいし、中心座標の移動距離に閾値を設けてそれを下回ったときに、終了とする終了条件としてもよい。
ここで、データ点の集合Xに対しLloyd法と同様の手順を分割数kで1反復だけ適用させる場合には、まず、データ点の集合Xの全データ点の所属を、それぞれランダムにk個の中心に割り振る。そして、複数のクラスタの中心の各々について、当該クラスタの中心の初期座標を、当該クラスタの中心に所属しているデータ点の重心に設定する。そして、データ点の集合Xの各データ点について、k個のクラスタの中心と当該データ点との距離を計算し、最も距離が近い中心に当該データ点の所属を変更する。そして、ピボット選択部30は、データ点の集合Xの複数のデータ点の各々について、当該データ点が所属するクラスタの中心のIDを、中心ID記憶部34に記憶させる。
(2)ピボット選択部30は、上記(1)で得られたk個の中心のうち、所属するデータ点の数が最も大きい中心の初期座標を最初のピボットとし、最初のピボットの座標をピボット座標記憶部32に記憶させる。
(3)ピボット選択部30は、以降、2個目からj個目のピボットについて、ピボットとして選択されていない中心のうち、既存ピボット集合を用いて距離の三角不等式によって「距離計算の省略が行えていない回数が多い中心」をピボットとして選択する。第1の実施の形態では、例えば、2個目からj個目のピボットとして、以下の式(1)を満たす中心cを再帰的にピボットとして選択し、選択された中心cの座標をピボット座標記憶部32に記憶させる。
ただし、C,Pはそれぞれ、k個の中心の集合、既存ピボット集合である。上記(3)の処理は、各中心cAについて、count(cA)を0に初期化した後、下記疑似コードの手順で計算される(ただし、X(cA)は中心cAに所属するデータ点の集合である。)。
for x∈X(cA)
for cB∈C\{cA}
flag=0
for p∈P
if d(x,cA)<|d(p,cB)−d(p,x)|
flag=1
break
if flag=0
count(cA)=count(cA)+1
count(cB)=count(cB)+1
ピボット座標記憶部32には、ピボット選択部30によって選択された複数のピボットの座標が記憶される。
中心ID記憶部34には、データ点の集合Xの複数のデータ点の各々について、当該データ点が所属するクラスタの中心のID番号が記憶される。
ピボットデータ点距離計算部36は、データ点座標記憶部26に記憶された複数のデータ点の座標と、ピボット座標記憶部32に記憶された複数のピボットの座標とを取得し、複数のデータ点の各々と複数のピボットの各々との間の距離を計算する。具体的には、ピボットデータ点距離計算部36は、全てのピボットとデータ点との組み合わせについて、ピボットとデータ点とのユークリッド距離を計算し、ピボットデータ点距離記憶部38に記憶させる。
ピボットデータ点距離記憶部38には、全てのデータ点とピボットとの組み合わせについて、複数のデータ点の各々と複数のピボットの各々との間の距離が記憶されている。
中心座標更新部40は、複数のクラスタの中心の各々について、当該中心に所属しているデータ点を中心ID記憶部34から読み込み、当該中心に所属しているデータ点を調べる。そして、中心座標更新部40は、複数のクラスタの中心の各々について、当該中心に所属するデータ点の座標をデータ点座標記憶部26から読み込み、読み込まれた複数のデータ点の重心を算出し、算出された重心を、当該中心の新たな座標として中心座標記憶部28に記憶させる。
ピボット中心距離計算部42は、中心座標記憶部28に記憶された複数のクラスタの中心の座標と、ピボット座標記憶部32に記憶された複数のピボットの座標とを取得し、複数のクラスタの中心の各々と、複数のピボットの各々との間の距離を計算する。具体的には、ピボット中心距離計算部42は、全ての中心とピボットとの組み合わせについて、中心とピボットとのユークリッド距離を計算し、ピボット中心距離記憶部44に記憶させる。
ピボット中心距離記憶部44は、全ての中心とピボットとの組み合わせについて、複数のクラスタの中心の各々と、複数のピボットの各々との間の距離が記憶されている。
所属変更判定部46は、複数のデータ点の各々について、ピボットデータ点距離記憶部38に記憶された、当該データ点と複数のピボットの各々との間の距離、及びピボット中心距離計算部42に記憶された、複数のクラスタの中心の各々と複数のピボットの各々との間の距離に基づいて、距離の三角不等式を用いて、データ点が所属するクラスタを変更するか否かを判定する。そして、所属変更判定部46は、データ点が所属するクラスタを変更すると判定された場合には、データ点が所属するクラスタを変更する。
また、所属変更判定部46は、複数のデータ点の各々について当該データ点が所属するクラスタを変更しないと判定されるまで、所属変更判定部46による判定及び変更を繰り返すことにより、複数のデータの各々について、当該データ点が所属するクラスタを決定する。
具体的には、所属変更判定部46は、データ点の集合Xの全てのデータ点について、下記の手順(1)〜(4)に従って、当該データ点と最も近い距離に存在する中心に、当該データ点を所属させる。この際、一つでも所属する中心に変更があったデータ点が存在した場合、中心座標更新部40に戻る。一方、一つも存在しなかった場合、分割結果処理部48に進む。
(1)データ点xの所属する中心cXを中心ID記憶部34から取得する。
(2)データ点xの座標と、当該データ点xが所属する中心cXの座標とを、それぞれデータ点座標記憶部26と中心座標記憶部28とから読み込む。
(3)データ点xと中心cXとの距離d(x,cX)を算出する。
(4)中心cX以外のすべての中心cYについて下記を行う。
1.全てのピボットpについて下記を行う。
(ア)ピボットpとデータ点xとの距離d(p,x)をピボットデータ点距離記憶部38から読み込み、ピボットpと中心cYとの距離d(p,cY)をピボット中心距離記憶部44から読み込む。
(イ)|d(p,x)−d(p,cY)|を算出する。(距離の三角不等式より、これはd(x,cY)の距離の下限である。)
(ウ)d(x,cX)と|d(p,x)−d(p,cY)|とを比較し、d(x,cX)<|d(p,x)−d(p,cY)|であればd(x,cY)を計算するまでもなくd(x,c)<d(x,cY)であるので、所属の変更は起こらない。次の中心cYについて(4)1.に進む。
2.cYの座標を中心座標記憶部28から読み込み、d(x,cY)を算出する。
3. d(x,cX)とd(x,cY)との距離の大きさを比べ、d(x,cX)>d(x,cY)であれば、xの所属をcYに変更し、中心ID記憶部34に記憶させる。
図2に、所属変更判定部46による処理の概念図を示す。図2に示すように、本発明の実施の形態では、距離計算の省略を判定するにあたり、d(p,x)とd(p,cY)とについて、全てのピボットとデータ点及び中心との組み合わせ数だけ記憶している。記憶する個数はd(p,x)、d(p,cY)それぞれについてj×N個,j×k個の計j×(N+k)個である。一方、Elkanの方法は距離計算の省略用に全てのデータ点と中心との組み合わせについて「データ点と中心との距離の下限」を計N×k個記憶していた。N,kがともに大きな数である場合、本発明の実施の形態は、ピボットの数jがクラスタの数kより小さいため、記憶個数についてElkanの方法に比べて効率的になる。なお、ピボットの数jがクラスタの数kに比べ十分小さいほど、少ない記憶容量で済むが、距離計算の省略率は低くなる。また、ピボットの数jがクラスタの数kに近づくほど、大きな記憶容量が必要となり、距離計算の省略率は高くなる。そのため、ピボットの数jは、記憶容量と距離計算の省略率とのかねあいに基づき、決定してもよい。
分割結果処理部48は、複数のクラスタの中心ci(i=1,2,...,k)の各々について、当該中心に所属するデータ点を中心ID記憶部34から取得する。そして、分割結果処理部48は、複数のクラスタの中心の各々について、当該中心に所属するデータ点の集合Yi(i=1,2,...,k)を出力する。
出力部50は、分割結果処理部48によって出力されたデータ点の集合Yi(i=1,2,...,k)を結果として出力する。
<クラスタリング装置100の作用>
次に、本実施の形態に係るクラスタリング装置100の作用について説明する。クラスタリング装置100にデータ点の集合Xとクラスタの数kとが入力されると、図3に示すデータ分割処理ルーチンが実行される。
<データ分割処理ルーチン>
ステップS100において、入力部10によって、データ点の集合Xと、クラスタの数kとを受け付ける。
次に、ステップS102において、データ・分割数処理部24によって、上記ステップS100で受け付けた集合Xに含まれる全てのデータ点のユークリッド座標を、データ点座標記憶部26に記憶させる。また、データ・分割数処理部24によって、上記ステップS100で受け付けたクラスタの数kに基づいて、k個のクラスタの各々について、当該クラスタの中心の仮の中心座標を中心座標記憶部28に記憶させる。
ステップS104において、ピボット選択部30によって、ピボット選択処理が行われる。ステップS104は、図4に示すピボット選択処理ルーチンによって実現される。
<ピボット選択処理ルーチン>
ステップS200において、データ点の集合Xの複数のデータ点の各々について、データ点の所属を、ランダムにクラスタの中心に割り振る。
ステップS202において、複数のクラスタの中心の各々について、中心の初期座標を、当該中心に所属しているデータ点の重心に設定し、中心座標記憶部28に記憶させる。
ステップS204において、データ点の集合Xの複数のデータ点の各々について、k個の中心と当該データ点との距離を計算し、最も距離が近い中心に当該データ点の所属を変更する。また、データ点の集合Xの複数のデータ点の各々について、当該データ点が所属するクラスタの中心のIDを、中心ID記憶部34に記憶させる。
ステップS206において、上記ステップS202で得られたk個の中心の初期座標のうち、所属するデータ点の数が最も大きい中心の初期座標を最初のピボットとし、最初のピボットの座標をピボット座標記憶部32に記憶させる。
ステップS208において、ピボット選択部30によって、第2ピボット選択処理が行われる。ステップS208は、図5及び図6に示す第2ピボット選択処理ルーチンによって実現される。
<第2ピボット選択処理ルーチン>
ステップS300において、全てのクラスタの中心cについて、count(c)を初期化する。なお、中心の集合Cから既存ピボット集合Pを除いた集合に含まれる中心cについて、count(c)を初期化してもよい。
ステップS302において、上記ステップS206又は後述するステップS332でピボットとして選択された中心とは異なる中心cAを設定する。
ステップS304において、データ点の集合Xから、上記ステップS302で設定された中心cAに所属する1つのデータ点xを設定する。
ステップS306において、上記ステップS304で設定されたデータ点xが所属していない中心cBを設定する。
ステップS308において、既存ピボット集合Pから、1つのピボットpを設定する。
ステップS310において、flagに0を代入する。
ステップS312において、上記ステップS304で設定されたデータ点xと当該データ点xが所属する中心cAとの間の距離d(x,cA)を算出する。また、上記ステップS308で設定されたピボットpと上記ステップS306で設定された中心cBとの間の距離d(p,cB)を算出する。そして、上記ステップS308で設定されたピボットpと上記ステップS304で設定されたデータ点xとの間の距離d(p,x)を算出する。
ステップS314において、上記ステップS312で算出された各距離に基づいて、d(x,cA)<|d(p,cB)−d(p,x)|であるか否かを判定する。d(x,cA)<|d(p,cB)−d(p,x)|である場合には、距離計算の省略が行えていると判定し、ステップS316へ進む。一方、d(x,cA)<|d(p,cB)−d(p,x)|でない場合には、距離計算の省略が行えていないと判定し、ステップS318へ移行する。
ステップS316において、flagに1を代入する。
ステップS318において、既存ピボット集合に含まれる全てのピボットについて、上記ステップS308〜S314の各処理を実行したか否かを判定する。既存ピボット集合に含まれる全てのピボットについて、上記ステップS308〜S314の各処理を実行した場合には、ステップS320へ進む。一方、上記ステップS308〜S314の各処理を実行していないピボットが存在する場合には、ステップS308へ戻る。
ステップS320において、flagは0であるか否かを判定する。flagが0である場合には、ステップS322へ移行する。一方、flagが0でない場合には、ステップS306へ戻る。
ステップS322において、count(cA)を1インクリメントする。
ステップS324において、count(cB)を1インクリメントする。
ステップS326において、上記ステップS304で設定したデータ点xが所属していない中心の全てについて、上記ステップS306〜S324の各処理を実行したか否かを判定する。データ点xが所属していない中心の全てについて、上記ステップS306〜S324の各処理を実行した場合には、ステップS328へ進む。一方、上記ステップS306〜S324の各処理を実行していない中心が存在する場合には、ステップS306へ戻る。
ステップS328において、データ点の集合Xに含まれる全てのデータ点について、上記ステップS304〜ステップS326の各処理を実行したか否かを判定する。データ点の集合Xに含まれる全てのデータ点について、上記ステップS304〜ステップS326の各処理を実行した場合には、ステップS330へ進む。一方、上記ステップS304〜ステップS326の各処理を実行していないデータ点が存在する場合には、ステップS304へ戻る。
ステップS330において、ピボットとして選択されていない中心の全てについて、上記ステップS302〜S328の各処理を実行したか否かを判定する。ピボットとして選択されていない中心の全てについて、上記ステップS302〜S328の各処理を実行した場合には、ステップS332へ進む。一方、上記ステップS302〜S328の各処理を実行していない中心が存在する場合には、ステップS302へ戻る。
ステップS332において、上記式(1)を満たす中心cを、ピボットとして選択し、選択されたピボットの座標を、ピボット座標記憶部32に記憶させる。
ステップS334において、j−1個のピボットが選択されたか否かを判定する。j−1個のピボットが選択された場合には、第2ピボット選択処理ルーチンを終了する。一方、j−1個のピボットが選択されていない場合には、ステップS300へ戻る。
次に、データ分割処理ルーチンに戻り、ステップS106において、ピボットデータ点距離計算部36によって、上記ステップS102でデータ点座標記憶部26に記憶された複数のデータ点の座標と、上記ステップS322でピボット座標記憶部32に記憶された複数のピボットの座標とを取得し、複数のデータ点の各々と複数のピボットの各々との間の距離を計算する。そして、ピボットデータ点距離計算部36によって、全てのピボットとデータ点との組み合わせについて、計算されたピボットとデータ点との距離を、ピボットデータ点距離記憶部38に記憶させる。
ステップS108において、中心座標更新部40によって、複数のクラスタの中心の各々について、当該中心に所属しているデータ点を中心ID記憶部34から読み込む。そして、中心座標更新部40によって、複数のクラスタの中心の各々について、当該中心に所属するデータ点の座標をデータ点座標記憶部26から読み込み、読み込まれた複数のデータ点の重心を算出し、算出された重心を、当該中心の新たな座標として中心座標記憶部28に記憶させる。
ステップS110において、ピボット中心距離計算部42によって、上記ステップS108で中心座標記憶部28に記憶された複数のクラスタの中心の座標と、上記ステップS322でピボット座標記憶部32に記憶された複数のピボットの座標とを取得し、複数のクラスタの中心の各々と、複数のピボットの各々との間の距離を計算する。具体的には、ピボット中心距離計算部42は、全ての中心とピボットとの組み合わせについて、中心とピボットとのユークリッド距離を計算し、ピボット中心距離記憶部44に記憶させる。
ステップS112において、所属変更判定部46によって、所属変更判定処理が行われる。ステップS112は、図7及び図8に示す所属変更判定処理ルーチンによって実現される。
<所属変更判定処理ルーチン>
ステップS400において、データ点の集合Xから、1つのデータ点xを設定する。
ステップS402において、上記ステップS400で設定されたデータ点xの所属する中心cXを中心ID記憶部34から取得する。
ステップS404において、上記ステップS400で設定されたデータ点xの座標を、データ点座標記憶部26から取得する。また、上記ステップS402で取得された中心cXの座標を中心座標記憶部28から取得する。
ステップS406において、上記ステップS404で取得されたデータ点xの座標及び中心cXの座標に基づいて、データ点xと中心cXとの間の距離d(x,cX)を算出する。
ステップS408において、上記ステップS402で取得された中心cXとは異なる中心cYを設定する。
ステップS410において、既存ピボット集合Pから、1つのピボットpを設定する。
ステップS412において、上記ステップS400で設定されたデータ点xと、上記ステップS410で設定されたピボットpとの距離d(p,x)を、ピボットデータ点距離記憶部38から取得する。
ステップS414において、上記ステップS408で設定された中心cYと、上記ステップS410で設定されたピボットpとの距離d(p,cY)を、ピボット中心距離記憶部44から取得する。
ステップS416において、上記ステップS412で取得されたd(p,x)と、上記ステップS414で取得されたd(p,cY)とに基づいて、|d(p,x)−d(p,cY)|を算出する。
ステップS418において、上記ステップS406で算出されたd(x,cX)と、上記ステップS416で算出された|d(p,x)−d(p,cY)|とに基づいて、d(x,cX)<|d(p,x)−d(p,cY)|を満たすか否かを判定する。d(x,cX)<|d(p,x)−d(p,cY)|を満たす場合には、ステップS408へ戻る。一方、d(x,cX)<|d(p,x)−d(p,cY)|を満たさない場合には、ステップS420へ進む。
ステップS420において、上記ステップS408で取得された中心cYの座標を、中心座標記憶部28から取得する。
ステップS422において、上記ステップS404で取得されたデータ点xの座標と、上記ステップS420で取得されたた中心cYの座標とに基づいて、データ点xと中心cYとの間の距離d(x,cY)を算出する。
ステップS424において、上記ステップS406で算出されたd(x,cX)と、上記ステップS422で算出されたd(x,cY)とに基づいて、d(x,cX)>d(x,cY)を満たすか否かを判定する。d(x,cX)>d(x,cY)を満たす場合には、ステップS426へ進む。一方、d(x,cX)>d(x,cY)を満たさない場合には、ステップS428へ移行する。
ステップS426において、上記ステップS400で設定されたデータ点xの所属を、上記ステップS408で設定された中心cYに対応するクラスタへ変更し、中心ID記憶部34に記憶させる。
ステップS428において、上記ステップS402で取得された中心cX以外の全ての中心cYについて、上記ステップS408〜S426の各処理を実行したか否かを判定する。全ての中心cYについて、上記ステップS408〜S426の各処理を実行した場合には、ステップS430へ進む。一方、上記ステップS408〜S426の各処理を実行していない中心cYが存在する場合には、ステップS408へ戻る。
ステップS430において、データ点の集合Xに含まれる全てのデータ点について、上記ステップS400〜S428の各処理を実行したか否かを判定する。データ点の集合Xに含まれる全てのデータ点について、上記ステップS400〜S428の各処理を実行した場合には、所属変更判定処理ルーチンを終了する。一方、上記ステップS400〜S428の各処理を実行していないデータ点が存在する場合には、ステップS400へ戻る。
次に、データ分割処理ルーチンに戻り、ステップS114において、上記ステップS112でクラスタの変更があったデータ点が存在するか否かを判定する。クラスタの変更があったデータ点が存在しない場合には、ステップS116へ進む。一方、クラスタの変更があったデータ点が存在する場合には、ステップS108へ戻る。
ステップS116において、分割結果処理部48によって、複数のクラスタの中心ci(i=1,2,...,k)の各々について、当該中心に所属するデータ点を中心ID記憶部34から取得する。そして、分割結果処理部48によって、複数のクラスタの中心の各々について、当該中心に所属するデータ点の集合Yi(i=1,2,...,k)を出力する。
ステップS118において、出力部50によって、分割結果処理部48によって出力されたデータ点の集合Yi(i=1,2,...,k)を結果として出力して、データ分割処理ルーチンを終了する。
以上のように、ユーザは、本発明の実施の形態に係るクラスタリング装置を用いて、ユークリッド空間上のN個のデータ点の集合Xと、集合Xを分割するクラスタの数k(k<N)を入力し、k個の集合Yi(i=1,2,...,k)を出力として得ることができる。
以上説明したように、第1の実施の形態に係るクラスタリング装置によれば、複数のデータ点の各々について、ピボットデータ点距離記憶部38に記憶された、データ点と複数のピボットの各々との間の距離、及びピボット中心距離記憶部44に記憶された、複数のクラスタの中心の各々と複数のピボットの各々との間の距離に基づいて、データ点が所属するクラスタを決定することにより、データ点の数及びクラスタの数が大きな値であっても、少ない記憶容量で複数のデータ点を高速にクラスタリングすることができる。また、距離計算の省略が行えていない回数が多い中心をピボットとして選択することにより、上述したピボットとして望まれる性質「(イ)同一の領域に複数のピボットが存在しないこと。」を満たしやすいピボットが選択される。
また、データ点の数Nとデータ点の分割数kが共に大きい場合に高速にk−meansクラスタリングを実行することができる。大規模データは多数のクラスタから形成される可能性が高いため、N,kがともに大きな場合に高速にk−meansクラスタリングを実行できることは重要である。
また、データ点の数Nと、データ点の分割数kがともに大きな数である場合、記憶個数については、上記非特許文献2のElkanの方法に比べて効率的になる。
また、本実施の形態は、データ点とクラスタ中心の経由点であるピボットを用いることを特徴とする。Nをデータ点の数、kをクラスタ数、jをピボット数とし、j<k<Nとする。クラスタリング手法の1つであるElkan法は、O(N×k)の記憶領域を必要とする。一方、本実施の形態の手法は、O((N+k)×j)の記憶領域を必要とする。
例えば、データ点数を1つ記憶するのに8バイトが必要(double型を想定)で、データ点数が10億個であり、1,000個のクラスタに分割しようとすると、Elkan法では8テラバイトのメモリが必要だが、ピボットの個数を10個とすると本実施の形態の手法では80ギガバイトのメモリで済む。これにより、これまでElkan法が現実的には取り扱えなかった大規模なデータを、本実施の形態の手法は取り扱うことができる。
本実施の形態の手法がこのような効果を生み出すことができるのは、ピボットを導入したためである。Elkan法と本実施の形態の手法の両方とも、距離計算を省略することにより計算時間の短縮を図っている。Elkan法は、データ点と移動前のクラスタ中心と移動後のクラスタ中心の3点間について、距離の三角不等式を用いて距離計算の省略を図っている。これに対し本実施の形態の手法は、データ点とクラスタ中心とピボットの3点間について、距離の三角不等式を用いて距離計算の省略を図る。この工夫により、上述のようなメモリ節減の効果が生み出される。
[第2の実施の形態]
次に、本発明の第2の実施の形態について説明する。なお、第2の実施の形態に係るクラスタリング装置の構成は、第1の実施の形態と同様の構成となるため、同一符号を付して説明を省略する。
第2の実施の形態では、クラスタの中心とデータ点との間の距離の下限と、クラスタの中心とデータ点との間の実距離との誤差が大きい中心を、ピボットとして選択する点が、第1の実施の形態と異なっている。
上記第1の実施の形態では、2個目からj個目のピボットは、ピボットに選ばれていない中心のうち、既存のピボットを用いて距離の三角不等式によって「距離計算の省略が行えていない回数が多い中心」をピボットとして採用したが、第2の実施の形態では「距離の三角不等式によって得られる中心とデータ点との距離の下限と実距離との誤差が大きい中心」をピボットとして選択する。
<クラスタリング装置の構成>
第2の実施の形態に係るクラスタリング装置のピボット選択部30は、上記第1の実施の形態と同様の手法により、最初のピボットを選択する。ピボット選択部30は、2個目からj個目のピボットについて、複数のデータ点の各々について、データ点と当該データ点が所属するクラスタの中心との距離と、ピボットとデータ点との距離と、ピボットとデータ点が所属するクラスタの中心との距離とに基づいて、以下の式(2)を満たす中心cを再帰的にピボットとして選択する。
<クラスタリング装置の作用>
次に、第2の実施の形態に係るクラスタリング装置の作用について説明する。第2の実施の形態に係るクラスタリング装置では、上記図3に示すデータ分割処理ルーチンと同様の処理ルーチンが実行される。
なお、以下の処理における「error(c)」は、上記式(2)における
に対応する。
データ分割処理ルーチンのステップS104において、ピボット選択部30によって、ピボット選択処理が行われる。ステップS104は、上記図4に示すピボット選択処理ルーチンによって実現される。
ピボット選択処理ルーチンのステップS208において、ピボット選択部30によって、第2ピボット選択処理が行われる。ステップS208は、図9に示す第2ピボット選択処理ルーチンによって実現される。
<第2ピボット選択処理ルーチン>
ステップS500において、1つのクラスタの中心cを設定する。
ステップS502において、上記ステップS500で設定されたクラスタの中心cに対するerror(c)に0を代入する。
ステップS504において、上記ステップS500で設定された中心cに所属する1つのデータ点xを設定する。
ステップS506において、既存ピボット集合に含まれるピボットpの各々について、d(x,c)−|d(p,c)−d(p,x)|の値を算出し、算出された値の各々のうち、最小となるd(x,c)−|d(p,c)−d(p,x)|の値を選択する。
ステップS508において、上記ステップS502で初期化されたerror(c)又は前回の本ステップS508で更新されたerror(c)に、上記ステップS506で選択されたd(x,c)−|d(p,c)−d(p,x)|の最小値を加算して、error(c)を更新する。
ステップS510において、上記ステップS500で設定された中心cに所属する全てのデータ点について、上記ステップS504〜S508の各処理を実行したか否かを判定する。上記ステップS500で設定された中心cに所属する全てのデータ点について、上記ステップS504〜S508の各処理を実行した場合には、ステップS512へ進む。一方、上記ステップS504〜S508の各処理を実行していないデータ点が存在する場合には、ステップS504へ戻る。
ステップS512において、全てのクラスタの中心について上記ステップS500〜S510の各処理を実行したか否かを判定する。全てのクラスタの中心について上記ステップS500〜S510の各処理を実行した場合には、ステップS514へ進む。一方、上記ステップS500〜S510の各処理を実行していないクラスタの中心が存在する場合には、ステップS500へ戻る。
ステップS514において、上記式(2)を満たす中心cを、ピボットとして選択し、選択されたピボットの座標を、ピボット座標記憶部32に記憶させる。
ステップS516において、j−1個のピボットが選択されたか否かを判定する。j−1個のピボットが選択された場合には、第2ピボット選択処理ルーチンを終了する。一方、j−1個のピボットが選択されていない場合には、ステップS500へ戻る。
以上説明したように、第2の実施の形態に係るクラスタリング装置によれば、距離の三角不等式によって得られる中心とデータ点との間の距離の下限と実距離との差が大きい中心をピボットとして選択し、複数のデータ点の各々について、ピボットデータ点距離記憶部38に記憶された、データ点と複数のピボットの各々との間の距離、及びピボット中心距離記憶部44に記憶された複数のクラスタの中心の各々と、複数のピボットの各々との間の距離に基づいて、データ点が所属するクラスタを決定することにより、データ点の数及びクラスタの数が大きな値であっても、少ない記憶容量で複数のデータ点を高速にクラスタリングすることができる。また、距離の三角不等式によって得られる中心とデータ点との間の距離の下限と実距離との差が大きい中心をピボットとして選択することにより、上述したピボットとして望まれる性質「(イ)同一の領域に複数のピボットが存在しないこと。」を満たしやすいピボットが選択される。
[第3の実施の形態]
次に、本発明の第3の実施の形態について説明する。なお、第1又は第2の実施の形態と同様の構成となる部分については、同一符号を付して説明を省略する。
第3の実施の形態では、Lloyd法を適用することなくピボット選択を行う点が、第1又は第2の実施の形態と異なっている。
第1又は第2の実施の形態では、Lloyd法を1反復適用し、得られた中心に基づいてピボットを選択したが、第3の実施の形態では、Lloyd法を適用することなくピボットを選択する。
<クラスタリング装置の構成>
図10に示すように、第3の実施の形態に係るクラスタリング装置300は、機能的には、入力部10と、演算部20と、出力部50とを含んだ構成で表すことができる。
演算部20は、クラスタリング部322と、データ点座標記憶部26と、中心座標記憶部28と、ピボット座標記憶部32と、ピボットデータ点距離記憶部38と、中心ID記憶部34と、ピボット中心距離記憶部44と、分割結果処理部48とを備えている。
クラスタリング部322は、データ・分割数処理部24と、ピボット選択部30と、ピボットデータ点距離計算部36と、初期所属中心決定部329と、中心座標更新部40と、ピボット中心距離計算部42と、所属変更判定部46とを備えている。
初期所属中心決定部329は、中心座標記憶部28に記憶されている中心の数から分割数kを取得する(または、データ・分割数処理部24から直接取得してもよい)。そして、初期所属中心決定部329は、データ点の集合Xのデータ点の各々について、当該データ点の所属をそれぞれランダムにクラスタの中心に割り振り、当該データ点が所属する中心のID番号を中心ID記憶部34に記憶させる。
第3の実施の形態に係るクラスタリング装置300のピボット選択部30は、たとえば、データ点の集合Xから、ランダムに初期ピボットを選択し、以降、既存ピボット集合から最も遠いデータ点を再帰的にj−1回選択する。そして、ピボット選択部30は、選択されたピボットの座標をピボット座標記憶部32に記憶させる。
<クラスタリング装置の作用>
次に、第3の実施の形態に係るクラスタリング装置の作用について説明する。第3の実施の形態に係るクラスタリング装置では、図11に示すデータ分割処理ルーチンが実行される。なお、図11に示すデータ分割処理ルーチンにおける、第1の実施の形態におけるデータ分割処理ルーチンと同一の処理については、同一符号を付して、詳細な説明を省略する。
ステップS103において、初期所属中心決定部329によって、データ点の集合Xのデータ点の各々について、当該データ点の所属をそれぞれランダムにクラスタの中心に割り振り、当該データ点が所属する中心のID番号を中心ID記憶部34に記憶させる。
ステップS104において、ピボット選択部30によって、ピボット選択処理が行われる。ステップS104は、図12に示すピボット選択処理ルーチンによって実現される。
<ピボット選択処理ルーチン>
ステップS600において、データ点の集合Xから、1つのピボットを選択する。
ステップS602において、データ点の集合Xから、上記ステップS600で選択された最初のピボットと前回までの本ステップS602で選択されたピボットとを含むピボット集合から最も遠いデータ点を、ピボットとして選択する。
ステップS604において、j個のピボットが選択されたか否かを判定する。j個のピボットが選択された場合には、ピボット選択処理ルーチンを終了する。一方、j個のピボットが選択されていない場合には、ステップS600へ戻る。
なお、第3の実施の形態に係るクラスタリング装置の他の構成及び作用については、第1の実施の形態と同様であるため、説明を省略する。
以上説明したように、第3の実施の形態に係るクラスタリング装置によれば、既存ピボット集合から最も遠いデータ点を再帰的にピボットとして選択し、複数のデータ点の各々について、ピボットデータ点距離記憶部38に記憶された、データ点と複数のピボットの各々との間の距離、及びピボット中心距離記憶部44に記憶された、複数のクラスタの中心の各々と複数のピボットの各々との間の距離に基づいて、データ点が所属するクラスタを決定することにより、データ点の数及びクラスタの数が大きな値であっても、少ない記憶容量で複数のデータ点を高速にクラスタリングすることができる。また、既存ピボット集合から最も遠いデータ点を再帰的にピボットとして選択することにより、上述したピボットとして望まれる性質「(イ)同一の領域に複数のピボットが存在しないこと。」を満たしやすいピボットが選択される。
[第4の実施の形態]
次に、本発明の第4の実施の形態について説明する。なお、第4の実施の形態に係るクラスタリング装置の構成は、第3の実施の形態と同様の構成となるため、同一符号を付して説明を省略する。
第4の実施の形態では、確率的にピボットの選択を行う点が、第1〜第3の実施の形態と異なっている。
上記第1〜第3の実施の形態では、決定論的にピボットの選択を行ったが、第4の実施の形態では、確率的にピボットの選択を行う。
<クラスタリング装置の構成>
第4の実施の形態に係るクラスタリング装置のピボット選択部30は、ランダムに最初のピボットを選択する。ピボット選択部30は、2個目からj個目のピボットについて、データ点の集合Xから既存ピボット集合Pを除いた集合から、以下の式(3)に示す確率に従って、x’∈X\Pをピボットとして選択する。
なお、D(x)は既存ピボット集合のうち、最もデータ点xと近い距離に存在するピボットと、データ点xとの間の距離を表す。
<クラスタリング装置の作用>
次に、第4の実施の形態に係るクラスタリング装置の作用について説明する。第4の実施の形態に係るクラスタリング装置では、上記図11に示すデータ分割処理ルーチンと同様の処理ルーチンが実行される。
ステップS104において、ピボット選択部30によって、ピボット選択処理が行われる。ステップS104は、図13に示すピボット選択処理ルーチンによって実現される。
<ピボット選択処理ルーチン>
ステップS700において、ランダムに1つ目のピボットを選択し、ピボット座標記憶部32に記憶させる。
ステップS702において、データ点の集合Xから、1つのデータ点xを設定する。
ステップS704において、ピボット座標記憶部32から、既存ピボット集合に含まれるピボットの各々の座標を取得し、上記ステップS702で設定されたデータ点xと最も近い距離に存在するピボットとデータ点xとの間の距離D(x)を算出する。
ステップS706において、データ点の集合Xに含まれる全てのデータ点について、上記ステップS702〜S704の各処理を実行したか否かを判定する。全てのデータ点について、上記ステップS702〜S704の各処理を実行した場合には、ステップS708へ進む。一方、上記ステップS702〜S704の各処理を実行していないデータ点が存在する場合には、ステップS702へ戻る。
ステップS708において、データ点の集合Xから既存ピボット集合Pを除いた集合について、上記ステップS704で算出されたD(x)の各々の和を算出する。
ステップS710において、データ点の集合Xから、上記式(3)に示す確率に従って、x’∈X\Pをピボットとして選択し、選択されたピボットの座標を、ピボット座標記憶部32に記憶させる。
ステップS712において、j個のピボットが選択されたか否かを判定する。j個のピボットが選択された場合には、ピボット選択処理ルーチンを終了する。一方、j個のピボットが選択されていない場合には、ステップS710へ戻る。
なお、第4の実施の形態に係るクラスタリング装置の他の構成及び作用については、第1又は第3の実施の形態と同様であるため、説明を省略する。
以上説明したように、第4の実施の形態に係るクラスタリング装置によれば、確率的にピボットを選択し、複数のデータ点の各々について、ピボットデータ点距離記憶部38に記憶された、データ点と複数のピボットの各々との間の距離、及びピボット中心距離記憶部44に記憶された、複数のクラスタの中心の各々と複数のピボットの各々との間の距離に基づいて、データ点が所属するクラスタを決定することにより、データ点の数及びクラスタの数が大きな値であっても、少ない記憶容量で複数のデータ点を高速にクラスタリングすることができる。また、確率的にピボットを選択することにより、データ点の疎な領域に存在するデータ点がピボットとして選択されにくくなるため、上述したピボットとして望まれる性質「(ア)ユークリッド空間中でデータ点の密な領域に存在すること。」を満たしやすいピボットが選択される。
[第5の実施の形態]
次に、本発明の第5の実施の形態について説明する。なお、第5の実施の形態に係るクラスタリング装置の構成は、第3又は第4の実施の形態と同様の構成となるため、同一符号を付して説明を省略する。
第5の実施の形態では、距離計算の省略が行えていない回数が多く、かつ既存のピボットから遠い中心を確率的にピボットとして選択する点が、第1〜第4の実施の形態と異なっている。
上記第1の実施の形態では、count(c)を用いて「距離計算の省略が行えていない回数が多い中心」をピボットとして選択したが、第5の実施の形態では、ピボットの選択にピボット同士の距離の要素を加味することで、ピボットが遠くの領域に配置されやすくする。
<クラスタリング装置の構成>
第5の実施の形態に係るクラスタリング装置のピボット選択部30は、上記第1の実施の形態と同様の手法により、最初のピボットを選択する。ピボット選択部30は、2個目からj個目のピボットについて、複数のデータ点の各々について、データ点と当該データ点が所属するクラスタの中心との距離と、ピボットとデータ点との距離と、ピボットとデータ点が所属するクラスタの中心との距離とに基づいて、中心の集合Cから既存ピボット集合Pを除いた集合から、以下の式(4)に示す確率に従って、中心cT∈C\Pをピボットとして選択する。
なお、D(c)は既存のピボットのうち最も中心cと近い距離に存在するピボットと、中心cとの間の距離を表す。
<クラスタリング装置の作用>
次に、第5の実施の形態に係るクラスタリング装置の作用について説明する。第5の実施の形態に係るクラスタリング装置では、上記図11に示すデータ分割処理ルーチンと同様の処理ルーチンが実行される。
データ分割処理ルーチンのステップS104において、ピボット選択部30によって、ピボット選択処理が行われる。ステップS104は、図14及び図15に示すピボット選択処理ルーチンによって実現される。
<ピボット選択処理ルーチン>
ステップS800において、ピボット座標記憶部32から、既存ピボット集合に含まれるピボットの各々の座標を取得し、ステップS302で設定された中心cと最も近い距離に存在するピボットと中心cとの間の距離D(cX)を算出する。
ステップS802において、中心の集合Cから既存ピボット集合Pを除いた集合について、上記ステップS800で算出されたD(c)の各々の和を算出する。
ステップS804において、中心の集合Cから、上記式(4)に示す確率に従って、cT∈C\Pをピボットとして選択し、選択されたピボットの座標を、ピボット座標記憶部32に記憶させる。
ステップS806において、j個のピボットが選択されたか否かを判定する。j個のピボットが選択された場合には、ピボット選択処理ルーチンを終了する。一方、j個のピボットが選択されていない場合には、ステップS300へ戻る。
なお、第5の実施の形態に係るクラスタリング装置の他の構成及び作用については、第4の実施の形態と同様であるため、説明を省略する。
以上説明したように、第5の実施の形態に係るクラスタリング装置によれば、距離計算の省略が行えていない回数が多く、かつ既存のピボットから遠い中心を確率的にピボットとして選択し、複数のデータ点の各々について、ピボットデータ点距離記憶部38に記憶された、データ点と複数のピボットの各々との間の距離、及びピボット中心距離記憶部44に記憶された複数のクラスタの中心の各々と、複数のピボットの各々との間の距離に基づいて、データ点が所属するクラスタを決定することにより、データ点の数及びクラスタの数が大きな値であっても、少ない記憶容量で複数のデータ点を高速にクラスタリングすることができる。また、距離計算の省略が行えていない回数が多く、かつ既存のピボットから遠い中心を確率的にピボットとして選択することにより、上述したピボットとして望まれる性質「(ア)ユークリッド空間中でデータ点の密な領域に存在すること。」及び「(イ)同一の領域に複数のピボットが存在しないこと。」を満たしやすいピボットが選択される。
[第6の実施の形態]
次に、本発明の第6の実施の形態について説明する。なお、第1〜第5の実施の形態と同様の構成となる部分については、同一符号を付して説明を省略する。
第6の実施の形態では、複数のデータ点をクラスタリングする際に、クラスタリングの繰り返し計算においてクラスタの中心が移動しない場合に、データ点とクラスタの中心との間の距離計算を省略する点が第1〜第5の実施の形態と異なっている。
<クラスタリング装置の構成>
図16に示すように、第6の実施の形態に係るクラスタリング装置600は、機能的には、入力部10と、演算部620と、出力部50とを含んだ構成で表すことができる。
演算部620は、クラスタリング部622と、データ点座標記憶部26と、中心座標記憶部28と、中心ID記憶部34と、分割結果処理部48とを備えている。
クラスタリング部622は、複数のデータ点の各々について、当該データ点の所属するクラスタの決定に応じて当該クラスタの中心の位置が変更されたか否かに基づいて、データ点が所属するクラスタを決定する。クラスタリング部622は、データ・分割数処理部24と、初期所属中心決定部329と、中心座標更新部640と、所属変更判定部646とを備えている。
中心座標更新部640は、複数のクラスタの中心の各々について、当該中心に所属しているデータ点を中心ID記憶部34から読み込み、当該中心に所属しているデータ点を調べる。そして、中心座標更新部640は、複数のクラスタの中心の各々について、当該中心に所属するデータ点の座標をデータ点座標記憶部26から読み込み、読み込まれた複数のデータ点の重心を算出し、算出された重心を、当該中心の新たな座標として中心座標記憶部28に記憶させる。
また、中心座標更新部640は、複数のクラスタの中心の各々について、上記更新処理によって、当該クラスタの中心が移動したか否かを所属変更判定部646へ出力する。
所属変更判定部646は、複数のクラスタの中心の各々の中心が移動したか否かに基づいて、複数のデータ点の各々に対し、当該データ点と複数のクラスタの中心の各々との間の距離を計算するか否かを判定する。そして、所属変更判定部646は、複数のデータ点の各々について、計算されたデータ点とクラスタの中心との間の距離に基づいて、データ点が所属するクラスタを変更するか否かを判定する。
図17に所属変更判定部646の処理の概念図を示す。図17(A)に示すように、データ点xと中心cX,cYとが空間上に存在していると仮定する。なお、添え字「’」が付与された中心c’は、中心cが中心座標更新部640によって更新された後の中心を表す。また、データ点xが中心cXに所属していると仮定する。
図17(B)に示すように、中心座標更新部640による更新処理によって、中心cX及び中心cYが移動しない場合には、データ点xの所属は中心cXのままであるため、データ点xとクラスタの中心cYとの間の距離計算を省略することができる。
一方、図17(C)に示すように、中心座標更新部640による更新処理によって、中心cX及び中心cYの少なくとも一方が移動した場合には、データ点xと中心cX’との間の距離d(x,cX’)、及びデータ点xと中心cY’との間の距離d(x,cY’)を計算し、計算した距離d(x,cX’)及び距離d(x,cY’)に基づいて、データ点が所属するクラスタを変更するか否かを判定する。
<クラスタリング装置の作用>
次に、第6の実施の形態に係るクラスタリング装置の作用について説明する。第6の実施の形態に係るクラスタリング装置では、図18に示すデータ分割処理ルーチンが実行される。なお、図18に示すデータ分割処理ルーチンにおける、第1〜第5の実施の形態におけるデータ分割処理ルーチンと同一の処理については、同一符号を付して、詳細な説明を省略する。
ステップS112において、所属変更判定部646によって、所属変更判定処理が行われる。ステップS112は、図19に示す所属変更判定処理ルーチンによって実現される。
ステップS900において、ステップS108での更新処理によって中心cX及び中心cYの少なくとも1つの中心が移動したか否かを判定する。少なくとも1つの中心が移動した場合には、ステップS420へ進む。一方、全ての中心が移動していない場合には、ステップS428へ移行する。
なお、第6の実施の形態に係るクラスタリング装置の他の構成及び作用については、第1の実施の形態と同様であるため、説明を省略する。
以上説明したように、第6の実施の形態に係るクラスタリング装置によれば、複数のクラスタの中心の各々について、当該クラスタの中心が移動したか否かに基づいて、複数のデータ点の各々に対し、当該データ点と複数のクラスタの中心の各々との間の距離を計算するか否かを判定し、複数のクラスタの中心の各々について、当該クラスタの中心が移動した場合には、当該データ点と複数のクラスタの中心の各々との間の距離に基づいて、データ点が所属するクラスタを変更するか否かを判定することにより、データ点の数及びクラスタの数が大きな値であっても、少ない記憶容量で複数のデータ点を高速にクラスタリングすることができる。また、データ点が所属するクラスタの中心cXと、データ点が所属するクラスタ以外のクラスタの中心cYとが移動したか否かの計算コストO(k2)は、Elkanの手法の計算コストO(k×N)に比べて、高効率である。
また、第6の実施の形態に係るクラスタリング装置は、クラスタの中心があまり移動しなくなる、クラスタリングの繰り返し計算の終盤において、効果的である。
[第7の実施の形態]
次に、本発明の第7の実施の形態について説明する。なお、第1〜第6の実施の形態と同様の構成となる部分については、同一符号を付して説明を省略する。
第7の実施の形態では、複数のデータ点をクラスタリングする際に、データ点が所属するクラスタの中心cXと、データ点が所属するクラスタの中心cX以外の中心cYとの間の距離に基づいて、データ点と中心cYとの間の距離計算の省略を行う点が第1〜第6の実施の形態と異なっている。
<クラスタリング装置の構成>
図20に示すように、第7の実施の形態に係るクラスタリング装置700は、機能的には、入力部10と、演算部720と、出力部50とを含んだ構成で表すことができる。
演算部720は、クラスタリング部722と、データ点座標記憶部26と、中心座標記憶部28と、中心ID記憶部34と、中心間距離記憶部735と、分割結果処理部48とを備えている。
クラスタリング部722は、複数のデータ点の各々について、複数のクラスタの中心間の距離に基づいて、当該データ点が所属するクラスタを決定する。クラスタリング部722は、データ・分割数処理部24と、初期所属中心決定部329と、中心座標更新部740と、中心間距離算出部745と、所属変更判定部746とを備えている。
第7の実施の形態に係るクラスタリング装置の中心座標更新部740は、複数のクラスタの中心の各々について、当該中心に所属しているデータ点を中心ID記憶部34から読み込み、当該中心に所属しているデータ点を調べる。そして、中心座標更新部740は、複数のクラスタの中心の各々について、当該中心に所属するデータ点の座標をデータ点座標記憶部26から読み込み、読み込まれた複数のデータ点の重心を算出し、算出された重心を、当該中心の新たな座標として中心座標記憶部28に記憶させる。
中心間距離算出部745は、複数のクラスタの中心のペアの各々について、中心と他の中心との間の距離を算出し、算出された距離を、中心間距離記憶部735へ記憶させる。
中心間距離記憶部735には、複数のクラスタの中心のペアの各々について、中心と他の中心との間の距離が記憶される。
所属変更判定部746は、複数のデータ点の各々について、複数のクラスタの各々に対し、中心間距離記憶部735に記憶された、当該データ点と当該データ点が所属するクラスタの中心と当該データ点が所属するクラスタ以外のクラスタの中心との間の距離に基づいて、当該データ点と複数のクラスタの中心の各々との間の距離を計算するか否かを判定する。そして、所属変更判定部746は、複数のデータ点の各々について、計算されたデータ点とクラスタの中心との間の距離に基づいて、データ点が所属するクラスタを変更するか否かを判定する。
図21に所属変更判定部746の処理の概念図を示す。図21に示すように、データ点xと、中心座標更新部740による更新処理後の中心cX,cYとが空間上に存在していると仮定する。また、データ点xは中心cXに所属していると仮定する。
所属変更判定部746は、図21(A)に示すように、データ点xと当該データ点が所属するクラスタの中心cXとの間の距離d(x,cX)を算出する。次に、所属変更判定部746は、データ点が所属するクラスタの中心cXと、当該データ点が所属するクラスタ以外のクラスタの中心cYとの間の距離d(cX,cY)を、中心間距離記憶部735から取得する。そして、所属変更判定部746は、d(x,cX)≦d(cX,cY)/2である場合には、データ点xと中心cYとの間の距離d(x,cY)の計算を省略する。この場合には、データ点xは、中心cX半径d(cX,cY)/2の円内に存在し、データ点xの所属は中心cXのままであるため、データ点xと中心cYとの間の距離d(x,cY)の計算は省略することができる。
一方、所属変更判定部646は、図21(B)に示すように、d(x,cX)>d(cX,cY)/2である場合には、データ点xと中心cYとの間の距離d(x,cY)の計算を行う。データ点xが中心cX半径d(cX,cY)/2の円内に存在しないため、データ点xと中心cYとの間の距離d(x,cY)の計算を行い、データ点xの所属を決定する。
<クラスタリング装置の作用>
次に、第7の実施の形態に係るクラスタリング装置の作用について説明する。第7の実施の形態に係るクラスタリング装置では、図22に示すデータ分割処理ルーチンが実行される。なお、図22に示すデータ分割処理ルーチンにおける、第1〜第6の実施の形態におけるデータ分割処理ルーチンと同一の処理については、同一符号を付して、詳細な説明を省略する。
ステップS1000において、中心間距離算出部745によって、複数のクラスタの中心のペアの各々について、当該中心と他の中心との間の距離を算出し、算出された距離を、中心間距離記憶部735へ記憶させる。
ステップS112において、所属変更判定部746によって、所属変更判定処理が行われる。ステップS112は、図23に示す所属変更判定処理ルーチンによって実現される。
ステップS1002において、ステップS402で取得した中心cXと、ステップS408で設定された中心cYとに基づいて、中心cXと中心cYとの間の距離d(cX,cY)を中心間距離記憶部735から取得する。
ステップS1004において、ステップS406で算出したデータ点xと中心cXとの間の距離d(x,cX)と、上記ステップS1002で取得した中心cXと中心cYとの間の距離d(cX,cY)とに基づいて、d(x,cX)>d(cX,cY)/2であるか否かを判定する。d(x,cX)>d(cX,cY)/2である場合には、ステップS420へ進む。一方、d(x,cX)>d(cX,cY)/2でない場合には、ステップS428へ進む。
なお、第7の実施の形態に係るクラスタリング装置の他の構成及び作用については、第6の実施の形態と同様であるため、説明を省略する。
以上説明したように、第7の実施の形態に係るクラスタリング装置によれば、複数のデータ点の各々について、複数のクラスタの各々に対し、当該データ点と当該データ点が所属するクラスタの中心と、当該データ点が所属するクラスタ以外のクラスタの中心との間の距離に基づいて、当該データ点と複数のクラスタの中心の各々との間の距離を計算するか否かを判定することにより、データ点の数及びクラスタの数が大きな値であっても、少ない記憶容量で複数のデータ点を高速にクラスタリングすることができる。
また、データ点が所属するクラスタの中心cXと、データ点が所属するクラスタ以外のクラスタの中心cYとの間の距離d(cX,cY)の計算コストは、メモリ、計算量共にO(k2)であり、Elkanの手法の計算コストO(k×N)に比べて、高効率である。
なお、本発明は、上記実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
例えば、上記第6及び第7の実施の形態では、ピボットを用いずに、データ点の所属するクラスタの中心を変更するか否かを判定する場合を例に説明したが、これに限定されるものではなく、ピボットを用いた処理と組み合わせてもよい。
なお、上記第6又は第7の実施の形態においてピボットを用いた処理と組み合わせる場合には、ピボットによる距離計算の省略の判定処理と、クラスタの中心間の情報に基づく距離計算の省略の判定処理とは、何れを先に実行してもよい。
また、ピボットによる距離計算の省略の判定処理とクラスタの中心間の情報に基づく距離計算の省略の判定処理との2つの処理を適応的に組み合わせてもよい。
例えば、ピボットがj個存在する場合に、ピボットによる距離計算の省略の判定処理の回数は、最小1回最大j回であり、クラスタの中心間の情報に基づく距離計算の省略の判定処理は1回であるという性質に基づいて、クラスタの中心間の情報に基づく判定処理を行った後にピボットによる判定処理を行ってもよい。
また、例えば、クラスタリングの繰り返し計算の前半ではクラスタの中心の移動が頻繁に起こり、後半ではクラスタの中心の移動が収束に向かうというクラスタリング処理の性質に基づいて、繰り返し計算の前半では、ピボットによる判定処理を行った後にクラスタの中心間の情報に基づく判定処理を行い、繰り返し計算の後半では、クラスタの中心間の情報に基づく判定処理を行った後にピボットによる判定処理を行ってもよい。
また、ピボットを用いた処理を組み合わせる場合には、データ点xと中心cXとの間の距離d(x,cX)は、ピボットを用いた処理において算出されるため、再度算出しなくともよい。
また、本実施の形態では、ユークリッド空間を対象としたが、他の空間を対象としてもよい。
また、上記実施の形態では、データ点座標記憶部26、中心座標記憶部28、ピボット座標記憶部32、中心ID記憶部34、ピボットデータ点距離記憶部38、及びピボット中心距離記憶部44を備えている場合について説明したが、例えばデータ点座標記憶部26、中心座標記憶部28、ピボット座標記憶部32、中心ID記憶部34、ピボットデータ点距離記憶部38、及びピボット中心距離記憶部44の少なくとも1つがクラスタリング装置の外部装置に設けられ、クラスタリング装置は、外部装置と通信手段を用いて通信することにより、データ点座標記憶部26、中心座標記憶部28、ピボット座標記憶部32、中心ID記憶部34、ピボットデータ点距離記憶部38、及びピボット中心距離記憶部44の少なくとも1つを参照するようにしてもよい。
また、上述のクラスタリング装置は、内部にコンピュータシステムを有しているが、コンピュータシステムは、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
また、本願明細書中において、プログラムが予めインストールされている実施の形態として説明したが、外部の記憶装置や記録媒体等に格納されたプログラムを随時読み込んで、またインターネットを介してダウンロードして実行するようにしてもよい。また、当該プログラムを、コンピュータ読み取り可能な記録媒体に格納して提供することも可能である。