(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
以下に、本願が開示するクラスタリング装置などの実施形態を図面に基づいて説明する。なお、以下に複数の実施形態を例示するが、同一の開示事項について、後述の際には説明を省略する。また、以下に示す複数の実施形態は、一例を示すに過ぎず、本願が開示する技術を限定するものではない。また、以下に示す複数の実施形態は、適宜組合せてもよい。
【0011】
[実施形態1]
(実施形態1のクラスタリング装置の構成)
図1は、実施形態1のクラスタリング装置の構成を示す機能ブロック図である。
図1に示す実施形態1のクラスタリング装置200は、入力部201、制御部202、出力部203を有する。また、クラスタリング装置200は、グラフデータ記憶部110、クラスタリング結果記憶部120と接続される。
【0012】
入力部201は、グラフデータ記憶部110から、
図2−1に例示する入力グラフデータを読み込み、制御部202へ出力する。
図2−1に例示すように、グラフデータGは、例えば、ノード集合V={0,1,・・・,12,13}と、各ノード間を接続するエッジ集合Eを含む。すなわち、G={V,E}である。
【0013】
制御部202は、主記憶装置および処理装置を有する。制御部202は、グラフデータ記憶部110から入力されたグラフデータを主記憶装置に展開する。そして、制御部202は、主記憶装置に展開したグラフデータに対して、後述するクラスタリング処理を実行する。
【0014】
制御部202が実行するクラスタリング処理は、グラフデータのノード集合Vを次の(1)−(3)の3つの集合のいずれかへ分類する処理である。
(1)エッジで密に接続されたノード集合C
kからなる集合C(以降、「Cluster」と呼ぶ):
C={C
1,C
2,・・・,C
p}(for ∃p)
(2)Cluster間を接続するノードの集合H(以降、「Hub」と呼ぶ):
H={H
1,H
2,・・・,H
q}(for ∃q)
(3)ClusterでもHubでもないノードの集合O(以降、「Outlier」と呼ぶ):
O={O
1,O
2,・・・,O
r}(for ∃r)
【0015】
そして、制御部202は、
図2−2に例示する、グラフデータをクラスタリング処理したクラスタリング結果を出力部203へ出力する。
図2−2の例示では、ノード集合{0,1,2,3,4,5}がClusterC
1であり、ノード集合{7,8,9,10,11,12}がClusterC
2であり、ノード集合{6}がClusterC
1とClusterC
2を接続するHubH
1であり、ノード集合{13}が、OutlierO
1である。
【0016】
出力部203は、制御部202から出力された処理結果を、クラスタリング結果記憶部120へ出力する。なお、
図2−1、
図2−2に示すグラフデータは、あくまで一例を示すに過ぎない。
【0017】
(実施形態1のクラスタリング処理)
図3は、実施形態1のクラスタリング処理を示すフローチャートである。制御部202は、クラスタリング処理開始に先立ち、
図2−1に例示するようなグラフデータG={V,E}と、パラメータε,μを入力とする。グラフデータGは、入力部201から入力され、パラメータε,μは、図示しない入力装置もしくは設定ファイルなどから入力される。
【0018】
制御部202は、グラフデータGおよびパラメータε,μの入力後、グラフデータGのノードのうち、いずれのクラスタにも未所属の1つのノードvを、ランダムに選択する(ステップS200)。なお、ステップS200におけるノードvの選択方法は、ランダムに選択することに限らず、最小次数で選択もしくは最大次数で選択のいずれかの方法であってもよい。ここで、次数とは、ノードに接続されるエッジの数をいう。
【0019】
次に、制御部202は、Γ(v)に含まれる全てのノードuに対してのみStructural similarity σ(u,v)を計算する(ステップS210)。なお、Γ(x)およびStructural similarity σ(u,v)は、以下の[定義1]で定義される。なお、Γ(x)は、ノードxの隣接ノード集合の一例である。また、σ(u,v)は、ノードuの隣接ノード集合およびノードvの隣接ノード集合の類似度の一例である。
【0021】
次に、制御部202は、Structural similarity σ(u,v)の計算結果を元に、ノードvがパラメータε,μに対してCOREであるか否かを判定する(ステップS220)。なお、ノードv(v∈V)がCOREであるとは、パラメータε,μに対して、以下の[定義2]で定義されるε-neighborhood N
ε(v)が、以下の[定義3]で定義される所定条件を満たすことである。ノードvがパラメータε,μに関してCOREであることを、CORE
ε,μ(v)と表す。なお、ε-neighborhood N
ε(v)は、第1近接ノード集合の一例である。また、εは、最小クラスタサイズを示す、第1閾値の一例である。また、μは第2閾値の一例である。
【0024】
制御部202は、ステップS220で、ノードvがCOREであると判定した場合(ステップS220Yes)には、新たなクラスタIDとしてC
iを生成する(ステップS230)。なお、COREであるとは第1条件を満たすことの一例であり、COREでないとは第1条件を満たさないことの一例である。また、“i”は、0を初期値として、ステップS230の実行の都度、1インクリメントされるインデックスである。次に、制御部202は、次に∀u∈N
ε(v)のクラスタをクラスタC
iに決定する(ステップS240)。
【0025】
次に、制御部202は、ステップS240で決定したクラスタC
iを基に、クラスタC
iの隣接ノード集合であるR=N(N
ε(v))\C
iを取得する(ステップS250)。なお、N(N
ε(v))は、2-hop neighborhoodと呼び、以下の[定義4]で定義される。2-hop neighborhood N(N
ε(v))は、第2近接ノード集合の一例である。また、N(N
ε(v))\C
iは、第1差集合の一例である。
【0027】
次に、制御部202は、2-hop neighborhoodである集合Rを取得後、集合Rから派生して取得できるクラスタを抽出し、クラスタC
iに組み入れて、クラスタC
iに所属するノードを決定する(ステップS260)。なお、ステップS260の処理は、後に詳述する。制御部202は、ステップS260の終了後、ステップS280へ処理を移す。
【0028】
一方、制御部202は、ステップS220で、ノードvがCOREでないと判定した場合(ステップS220No)には、ノードvをクラスタnon-memberの所属とし(ステップS270)、ステップS280へ処理を移す。なお、non-memberは、COREでないノードが所属するクラスタであり、未分類クラスタの一例である。
【0029】
ステップS280では、制御部202は、入力されたグラフデータGの全ノードの所属クラスタが決定したか否かを判定する(ステップS280)。制御部202は、ステップS280で、入力されたグラフデータGの全ノードの所属クラスタが決定したと判定した場合(ステップS280Yes)には、ステップS290へ処理を移す。
【0030】
ステップS290では、制御部202は、全てのノードのクラスタが決定された後、non-memberとされたノードをHubまたはOutlierへ分類する処理をおこなう。なお、ステップS290の処理は、後述する
図9のステップS170と同一である。
【0031】
一方、制御部202は、ステップS280で、入力されたグラフデータGの全ノードの所属クラスタが決定されていない、すなわち、クラスタに未所属のノードがあると判定した場合(ステップS280No)には、ステップS200へ処理を移す。そして、制御部202は、ステップS200で、クラスタに未所属のノードv∈Vを、ランダムに選択する。
【0032】
(ステップS260の詳細)
図4は、ステップS260のサブルーチンを詳細に示すフローチャートである。まず、制御部202は、集合Rが空集合φであるか否かを判定する(ステップS261)。制御部202は、集合Rが空集合φであると判定した場合(ステップS261Yes)には、
図3のステップS280へ処理を移す。
【0033】
一方、制御部202は、集合Rが空集合φでないと判定した場合(ステップS261No)には、集合Rから1つのノードuを、ランダムに選択する(ステップS262)。なお、ステップS262におけるノードuの選択方法は、ランダムに選択することに限らず、最小次数で選択もしくは最大次数で選択のいずれかの方法であってもよい。
【0034】
次に、制御部202は、Γ(u)に含まれる全てのノードvに対してのみStructural similarity σ(u,v)を計算する(ステップS263)。なお、Γ(x)(x=u,v∈V)およびStructural similarity σ(u,v)(u,v∈V)は、上述の[定義1]と同様である。
【0035】
次に、制御部202は、ノードuがパラメータε,μに対してCOREであるか否かを判定する(ステップS264)。制御部202は、ステップS264で、ノードuがCOREであると判定した場合(ステップS264Yes)には、クラスタC
iとN
ε(u)の和集合を新たなクラスタC
iとして更新する(ステップS265)。なお、N
ε(u)は、第3近接ノード集合の一例である。
【0036】
次に、制御部202は、ステップS265でクラスタC
iを更新したことに応じて、2-hop neighborhood RをR={R∪N(N
ε(u))}\C
iとして更新する(ステップS266)。制御部202は、ステップS266の処理が終了すると、ステップS261へ処理を移す。なお、N(N
ε(u))は、第4近接ノード集合の一例である。また、{R∪N(N
ε(u))}\C
iは、第2差集合の一例である。
【0037】
一方、制御部202は、ステップS264で、ノードuがCOREでないと判定した場合(ステップS264No)には、ノードuをクラスタnon-memberの所属とし(ステップS267)、2-hop neighborhood RをR=R∪{w|σ(w,u)≧ε∧C[w]=C
i}として更新する(ステップS268)。ただし、C[w]はノードwが所属するクラスタを表す。そして、制御部202は、ステップS268の処理が終了すると、ステップS261へ処理を移す。なお、R∪{w|σ(w,u)≧ε∧C[w]=C
i}は、前記第1差集合と、前記新たなインデックスが付与されたクラスタに所属するノードのうち該ノードの隣接ノード集合および前記第3ノードの隣接ノード集合の前記類似度が前記第1閾値以上であるノードの集合との和集合の一例である。
【0038】
(実施形態1のクラスタリング処理の具体例)
図5−1、
図5−2、
図5−3、
図5−4は、実施形態1のクラスタリング処理の具体例を示す図である。まず、
図5−1を参照し、ノード0に着目すると、ノード0の隣接ノードは、ノード1、ノード4、ノード5、ノード6だが、COREであるノード1、ノード4、ノード5が所属するクラスタC
1が形成される(
図3のステップS200−ステップS240に対応)。
【0039】
そして、
図5−2を参照し、未選択のノード2に着目すると、ノード2のε-neighborhoodN
ε(2)は、ノード1、ノード3、ノード5なので、ノード1、ノード3、ノード5が所属するε-neighborhoodN
ε(2)とクラスタC
1の和集合を、新たなクラスタC
1として更新する(
図3のステップS250−ステップS260に対応)。その結果、
図5−3に示すようなクラスタC
1が形成される。
【0040】
また、
図5−3を参照し、未選択のノード6に着目すると、ノード6は、パラメータε,μに対してCOREでないので、non-memberに分類される(
図3のステップS220、ステップS270に対応)。
【0041】
同様にして、
図5−4に示すように、ノード7、ノード8、ノード9、ノード10、ノード11、ノード12が所属するクラスタC
2が形成される(
図3のステップS200−ステップS240に対応)。また、
図5−4において、未選択のノード13に着目すると、ノード13は、パラメータε,μに対してCOREでないので、non-memberに分類される(
図3のステップS220、ステップS270に対応)。
【0042】
そして、
図5−4において、non-memberに分類されたノード6はHubH
1と分類され、ノード13はOutlierO
1と分類される(
図3のステップS280−ステップS290に対応)。以上のようにして、G={V,E}が、クラスタリングされる。
【0043】
[実施形態2]
(実施形態2のクラスタリング装置の構成)
実施形態2のクラスタリング装置300は、
図1に示すように、実施形態1のクラスタリング装置200の構成と同様である。クラスタリング装置300は、クラスタリング装置200の入力部201に対応する入力部301、制御部202に対応する制御部302、出力部203に対応する出力部303を有する。また、クラスタリング装置300は、グラフデータ記憶部110、クラスタリング結果記憶部120と接続される。
【0044】
(実施形態2のクラスタリング処理)
図6は、実施形態2のクラスタリング処理を示すフローチャートである。
図6の実施形態2のクラスタリング処理におけるステップS300−ステップS340、ステップS370−ステップS390は、
図3の実施形態1のクラスタリング処理におけるステップS200−ステップS240、ステップS270−ステップS290と同一である。
【0045】
実施形態2のクラスタリング処理では、ステップS340に続くステップS350、ステップS360が、実施形態1のクラスタリング処理におけるステップS240に続くステップS250、ステップS260と異なる。
【0046】
ステップS350では、制御部302は、同一のクラスタと既に判定されたN
ε(v)および{∀(u,w)∈E|u∈{V\N
ε(v)}∧w∈N
ε(v)}をそれぞれ1つのノードおよび1本のエッジに集約する。エッジの集約において、クラスタ外のノードをノードuとすると、weight(u,C
i)=|{(u,w)∈E|∀w∈C
i}|となる重みをノードuとクラスタC
i間を接続するエッジの重みとして付与する。なお、エッジの付与方法の具体例は、後述する。
【0047】
次に、制御部302は、ステップS350で集約したノードに対してStructural similarityの上限値および下限値を推定し、Structural similarityの計算対象を除外しつつ、集合Rから派生して取得可能なクラスタC
iを抽出する(ステップS360)。なお、ステップS360の処理は、後に詳述する。制御部302は、ステップS360の終了後、ステップS380へ処理を移す。
【0048】
(ステップS360の詳細)
図7は、ステップS360のサブルーチンを詳細に示すフローチャートである。
図7のステップS360のサブルーチンにおけるステップS361、ステップS362、ステップS365、ステップS367−ステップS370は、
図3のステップS260のサブルーチンにおけるにおけるステップS261、ステップS262、ステップS263、ステップS265−ステップS268と同一である。
【0049】
実施形態2のステップS360のサブルーチンでは、ステップS362に続いてステップS363、ステップS364が、実施形態2のステップS260のサブルーチンと比較して追加になる。
【0050】
ステップS363では、制御部302は、ステップS362で選択したノードuと集約されたクラスタv間のエッジ(u,v)に対して、以下の[定義5]に基づきStructural similarityの上限値の推定値を算出し、[定義6]に基づきStructural similarityの下限値の推定値を算出する。
【0053】
次に、制御部302は、σ(u,v)
max、σ(u,v)
minを用いて、ノードuがCOREであるか否かの判定対象から除外するか否かを判定する(ステップS364)。具体的には、制御部302は、σ(u,v)
max<εの場合で|Γ(u)|−weight(u,v)<μのとき、ノードuをクラスタのメンバからの除外対象と判定し(ステップS364Yes)、ノードuをクラスタnon-memberの所属とする(ステップS369)。
【0054】
また、制御部302は、σ(u,v)
max<εの場合で|Γ(u)|−weight(u,v)≧μのとき、ノードuをCOREであるか否かの判定対象と判定し(ステップS364No)、Γ(u)\{v}に含まれる全てのノードtに対してのみStructural similarity σ(t,u)を計算する(ステップS365)。そして、制御部302は、ノードuがパラメータε,μに対してCOREか否かを判定する(ステップS366)。なお、制御部302は、σ(t,u)
min≦ε≦σ(t,u)
maxのときは、ノードuをCOREであるか否かの判定対象から除外しない(ステップS364No)。
【0055】
(実施形態2のクラスタリング処理の具体例)
図8−1、
図8−2、
図8−3、
図8−4は、実施形態2のクラスタリング処理の具体例を示す図である。まず、
図8−1を参照し、ノード0に着目すると、ノード0の隣接ノードは、ノード1、ノード4、ノード5、ノード6だが、COREであるノード1、ノード4、ノード5が所属するクラスタC
1が形成される(
図6のステップS300−ステップS340に対応)。
【0056】
そして、
図8−2を参照すると、ノード0、ノード1、ノード4、ノード5が、ノード0に集約される。その際、クラスタC
1外へのエッジ(2,0)、(3,0)、(6,0)に対して、weight(2,0)=|{(2,1),(2,5)}|=2、weight(3,0)=|{(3,4),(3,5)}|=2、weight(6,0)=|{(6,0),(6,4)}|=2の重みがそれぞれ与えられる。この際、集約されたノードごとに、Structural similarityの上限値および下限値の推定値が算出される。
【0057】
また、
図8−3を参照すると、クラスタC
1は、ノード2、ノード3は、ノード0に集約されている。その際、クラスタC
1外へのエッジ(6,0)、(6,3)に対して、weight(6,0)=|{(6,0),(6,3)}|であるが、(6,0)に対しては既にweight(6,0)=2の重みが与えられているので、weight(6,0)=3となる。このようにして、ノード0、ノード1、ノード2、ノード3、ノード4、ノード6は、ノード0に集約される。
【0058】
この際、集約されたノードのStructural similarityの上限値および下限値の推定値が算出される。そして、集約されたノードは、Structural similarityの上限値および下限値の推定値に基づき、COREであるか否かの判定対象に含められる、もしくはCOREであるか否かの判定対象から除外される。
【0059】
そして、
図8−3において、未選択のノード6に着目すると、ノード6は、パラメータε,μに対してCOREでないので、non-memberに分類される(
図6のステップS320、ステップS370に対応)。
【0060】
同様にして、
図8−4に示すように、ノード7、ノード8、ノード9、ノード10、ノード11、ノード12がノード12に集約されて所属するクラスタC
2が形成される(
図6のステップS300−ステップS340に対応)。この際、集約されたノードのStructural similarityの上限値および下限値の推定値が算出される。そして、集約されたノードは、Structural similarityの上限値および下限値の推定値に基づき、COREであるか否かの判定対象に含められる、もしくはCOREであるか否かの判定対象から除外される。
【0061】
また、
図8−4において、未選択のノード13に着目すると、ノード13は、パラメータε,μに対してCOREでないので、non-memberに分類される(
図6のステップS320、ステップS370に対応)。
【0062】
そして、
図8−4において、non-memberに分類されたノード6はHubH
1と分類され、ノード13はOutlierO
1と分類される(
図6のステップS380−ステップS390に対応)。以上のようにして、G={V,E}が、クラスタリングされる。
【0063】
[比較例としての従来技術]
(従来技術のクラスタリング装置の構成)
従来技術のクラスタリング装置100は、
図1に示すように、実施形態1のクラスタリング装置200の構成と同様である。クラスタリング装置100は、クラスタリング装置200の入力部201に対応する入力部101、制御部202に対応する制御部102、出力部203に対応する出力部103を有する。また、クラスタリング装置100は、グラフデータ記憶部110、クラスタリング結果記憶部120と接続される。
【0064】
(従来技術のクラスタリング処理)
図9は、従来技術のクラスタリング処理を示すフローチャートである。まず、制御部102は、グラフデータG={V,E}およびパラメータε,μを入力とする。制御部102は、これらのデータが入力されると、全てのグラフのエッジについて、上述したStructural similarity σ(u,v)を計算する(ステップS100)。
【0065】
次に、制御部102は、全てのエッジに対してStructural similarity σ(u,v)を計算した後、乱数などを用いて任意のノードv∈Vを選択する(ステップS110)。次に、制御部102は、ノードvに対してパラメータε,μを用いて、ノードvがCOREであるかどうかの判定を行う(ステップS120)。
【0066】
制御部102は、ノードvがCOREと判定されなかった場合は(ステップS120No)、ノードvをクラスタnon-memberの所属とする(ステップS180)。一方、制御部102は、ノードvがCOREと判定された場合は(ステップS120Yes)、ノードvを起点としたクラスタの抽出処理に移行する。まず、新たなクラスタIDとして、C
iを生成する(ステップS130)。
【0067】
次に、制御部102は、v∈N
ε(v)を待ち行列Queue Qに挿入し(ステップS140)、待ち行列Qに挿入されたノードに対してC
iに所属するノードの抽出処理を実行する(ステップS150)。ステップS150の詳細は、後述する。制御部102は、ステップS110−ステップS160の処理を全てのノードの所属クラスタが決定するまで継続し(ステップS160)、全てのノードのクラスタが決定された後(ステップS160Yes)、クラスタnon-memberの所属ノードをHubまたはOutlierへ分類する処理をおこなう(ステップS170)。
【0068】
(ステップS150の詳細)
図10は、ステップS150のサブルーチンを詳細に示すフローチャートである。まず、制御部102は、待ち行列Qが空集合φか否かを判定する(ステップS151)。制御部102は、待ち行列Qが空集合φでない場合(ステップS151No)に、待ち行列Qの先頭にあるノードyを取り出し(ステップS152)、ノードyからDirREACH
ε,μ(y,x)で定義されるノード集合Rを取得する(ステップS153)。ここで用いるDirREACH
ε,μ(y,x)は、以下の[定義7]で定義される。
【0070】
次に、制御部102は、集合R:R={x∈V|DirREACH
ε,μ(y,x)}を取得する(ステップS153)。次に、制御部102は、集合Rが空集合φでない場合(ステップS154No)、集合Rから任意のノードxを選択する(ステップS155)。一方、制御部102は、集合Rが空集合φである場合(ステップS154Yes)、ステップS151へ処理を移す。そして、制御部102は、ステップS156において、ノードxの所属クラスタが未決定の場合(ステップS156Yes)、ノードxを待ち行列Queue Qへ挿入する(ステップS157)。一方、制御部102は、ステップS156において、ノードxの所属クラスタが決定済の場合(ステップS156No)、ステップS158へ処理を移す。
【0071】
次に、制御部102は、ノードxの所属クラスタが未決定もしくはnon-memberの所属とされている場合(ステップS158Yes)、ノードxのクラスタをC
iと決定する(ステップS159)。一方、制御部102は、ノードxの所属クラスタが決定かつnon-memberの所属とされていない場合(ステップS158No)、ステップS154へ処理を移す。集合Rと待ち行列Queue Qに含まれる全てのノードに対してこれらの処理が終了した後、すなわち待ち行列Queue Qが空集合φになったとき(ステップS151Yes)、ステップS160へ処理を移す。
【0072】
なお、制御部102は、待ち行列Queue Qが空集合φである場合(ステップS151Yes)に、ステップS160へ処理を移す。
【0073】
(ステップS170の詳細)
図11は、ステップS170のサブルーチンを詳細に示すフローチャートである。先ず、制御部102は、クラスタnon-memberに、未分類のノードvが存在するか否かを判定する(ステップS171)。制御部102は、クラスタnon-memberに、未分類のノードが存在場合に(ステップS171Yes)、クラスタnon-memberから任意のノードvを一つ選択し、二つ以上のクラスタとエッジで接続しているか判定する(ステップS172)。制御部102は、クラスタnon-memberに、未分類のノードが存在しない場合に(ステップS171No)、処理を終了する。
【0074】
制御部102は、ノードvが二つ以上のクラスタと接続している場合(ステップS172Yes)には、新たなHubのIDとしてH
iを生成し(ステップS173)、ノードvをH
iに分類する(ステップS174)。なお、“i”は、0を初期値として、ステップS173の実行の都度、1インクリメントされるインデックスである。
【0075】
一方、ノードvが一つ以下のクラスタにしか接続していない場合(ステップS172No)、新たなOutlierのIDとしてO
iを生成し(ステップS175)、ノードvをO
iに分類する(ステップS176)。なお、“i”は、0を初期値として、ステップS175の実行の都度、1インクリメントされるインデックスである。制御部102は、以上の処理により、全ノードをCluster、Hub、Outlierのいずれかに分類し、処理を終了する。
【0076】
上述の従来技術は、計算されたStructural similarityに基づいてCoreノードの選出およびクラスタリングを行うことから、事前に全てのエッジに対してStructural similarityを計算する必要がある。Structural similarityは、最大計算量となる完全グラフの場合、ノード数をVとするとエッジ数が|V|
2であることから、分母の計算量はO(|V|
2)のオーダとなる。さらに、Structural similarityは、最大計算量となる完全グラフの場合、ノード数をVとするとエッジ数が|V|
2であることから、分子は2つの集合の積集合を取得する処理が含まれるため計算量O(|V|
2)のオーダの比較計算処理が発生する。
【0077】
よって、従来技術では、Structural similarity全体の計算量はO(|V|
4)のオーダになる。すなわち、従来技術はグラフデータの規模がおおきくなるに伴い計算時間が急激に増加し、クラスタリング処理に膨大な時間を必要とする。
【0078】
(実施形態1および2の効果)
以上から、実施形態1および2は、Structural similarityの計算を一部のエッジに対してのみおこなうが、従来技術と同様にクラスタ構造を抽出することができる。そして、実施形態1およびでは、部分的なノードのみを計算対象とすることで、ノード間で共有される隣接ノードの数に比例してStructural similarityの計算を削減することが可能になる。すなわち、実施形態1および2では、計算対象とするノードの一部のみを効率的に選択することで、エッジに対するStructural similarityの計算回数を大幅に削減する。このため、クラスタリング処理時間の大幅な短縮を実現する。
【0079】
さらに、実施形態2では、エッジの集約と、Structural similarityの推定によるエッジの計算除外により、Structural similarityの計算回数をさらに削減するができる。すなわち、実施形態2では、ノードの逐次集約と、Structural similarityの推定手法を用いたエッジの計算対象除外により、Structural similarityの計算回数をさらに削減し、処理時間の短縮を図ることができる。
【0080】
以上の実施形態1および2は、Structural similarityに基づく従来の様々な技術に対して適用可能であり、いずれの技術に対しても結果として得られるクラスタの質を劣化させずにクラスタリングの処理時間を削減させることができる。
【0081】
(クラスタリング処理を実行するコンピュータの構成)
図12は、実施形態1および実施形態2のクラスタリング処理を実行するコンピュータの構成を示す機能ブロック図である。
図12示すように、コンピュータ1000は,CPU(Central Processing Unit)1100、内部記憶装置である主記憶装置1200、外部記憶装置である二次記憶装置1300、入出力装置1400、バス1500を有する。バス1500は、CPU(Central Processing Unit)1100、内部記憶装置である主記憶装置1200、外部記憶装置である二次記憶装置1300、入出力装置1400を接続する。
【0082】
上述の実施形態1または実施形態2のクラスタリングの処理手順を規定するクラスタリングプログラムが、入出力装置1400を経由して二次記憶装置1300に展開され、CPU1100により実行される。これにより、実施形態1および2のクラスタリング装置200および300が実現される。クラスタリング装置200および300は、二次記憶装置1300に格納されたグラフデータを入力とし、主記憶装置1200に展開し、CPU1100により、入力されたグラフデータのクラスタリング処理を実行する。CPU1100は、並列処理命令により、入力されたグラフデータのクラスタリング処理を実行してもよい。
【0083】
なお、グラフデータは、二次記憶装置1300に格納されるものに限られない。すなわち、グラフデータは、クラスタリング装置200または300としてのコンピュータ1000に所定のインターフェースを介して接続された記憶装置あるいは通信回線を介して通信可能な遠隔の記憶装置から入力されてもよい。例えば、クラスタリング装置200または300としてのコンピュータ1000は、
図1に示すグラフデータ記憶部110またはクラスタリング結果記憶部120が、外部装置としてネットワーク経由で接続されてもよい。
【0084】
以上、複数の実施形態を説明したが、本願が開示する技術はこれらの実施形態に限定されるものではない。すなわち、これらの実施形態は、その他の様々な形態で実施されることが可能であり、種々の省略、置き換え、変更を行うことができる。例えば、各装置の分散もしくは統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散または統合することができる。
【0085】
また、実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。
【0086】
実施形態1および2ならびにその変形は、本願が開示する技術に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。