特許第6039595号(P6039595)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電信電話株式会社の特許一覧

特許6039595クラスタリング装置、クラスタリング方法およびクラスタリングプログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6039595
(24)【登録日】2016年11月11日
(45)【発行日】2016年12月7日
(54)【発明の名称】クラスタリング装置、クラスタリング方法およびクラスタリングプログラム
(51)【国際特許分類】
   G06F 17/30 20060101AFI20161128BHJP
【FI】
   G06F17/30 210D
   G06F17/30 419B
【請求項の数】6
【全頁数】20
(21)【出願番号】特願2014-31317(P2014-31317)
(22)【出願日】2014年2月21日
(65)【公開番号】特開2015-156163(P2015-156163A)
(43)【公開日】2015年8月27日
【審査請求日】2016年1月13日
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】特許業務法人酒井国際特許事務所
(72)【発明者】
【氏名】塩川 浩昭
【審査官】 田中 秀樹
(56)【参考文献】
【文献】 米国特許第08606787(US,B1)
【文献】 特開2007−323385(JP,A)
【文献】 特開2013−156696(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/30
(57)【特許請求の範囲】
【請求項1】
記憶部と協働してグラフデータのノードのクラスタリング処理を実行する制御部を有するクラスタリング装置であって、
前記制御部は、
入力されたグラフデータから、いずれのクラスタにも未所属の第1ノードを選択し、
前記第1ノードおよび該ノードとエッジで接続されるノードの集合である、前記第1ノードの隣接ノード集合を前記グラフデータから取得し、
前記第1ノードの隣接ノード集合に所属する、前記第1ノードとは異なる各第2ノードの隣接ノード集合を前記グラフデータから取得し、
前記第1ノードの隣接ノード集合および前記各第2ノードの隣接ノード集合の類似度を算出し、
前記第1ノードに対して、前記類似度が第1閾値以上となる前記第2ノードの集合である第1近接ノード集合を生成し、
前記第1近接ノード集合の要素数が第2閾値以上となる場合に前記第1ノードが第1条件を満たすと判定し、前記第1近接ノード集合の要素数が第2閾値未満となる場合に前記第1ノードが前記第1条件を満たさないと判定し、
前記第1ノードが前記第1条件を満たすと判定した場合に、前記第1近接ノード集合を新たなインデックスが付与されたクラスタとし、
前記第1近接ノード集合に所属する各ノードの隣接ノード集合の和集合である第2近接ノード集合を生成し、
前記第2近接ノード集合から前記新たなインデックスが付与されたクラスタを差し引いた第1差集合に所属するノードのなかから、前記新たなインデックスが付与されたクラスタに追加所属させるノードを決定し、
前記第1ノードが前記第1条件を満たさないと判定した場合に、前記第1ノードを未分類クラスタに所属させる
一連の処理を、前記グラフデータの全ノードの所属クラスタが決定するまで繰り返す
ことを特徴とするクラスタリング装置。
【請求項2】
前記第1差集合に所属するノードのなかから、前記新たなインデックスが付与されたクラスタに追加所属させるノードを決定する処理において、
前記制御部は、
前記第1差集合から第3ノードを選択し、
前記第3ノードの隣接ノード集合を前記グラフデータから取得し、
前記第3ノードの隣接ノード集合に所属する、前記第3ノードとは異なる第4ノードの隣接ノード集合を前記グラフデータから取得し、
前記第3ノードの隣接ノード集合および各前記第4ノードの隣接ノード集合の前記類似度を算出し、
前記第3ノードに対して、前記類似度が前記第1閾値以上となる前記第4ノードの集合である第3近接ノード集合を生成し、
前記第3近接ノード集合の要素数が前記第2閾値以上となる場合に前記第3ノードが前記第1条件を満たすと判定し、前記第3近接ノード集合の要素数が前記第2閾値未満となる場合に前記第3ノードが前記第1条件を満たさないと判定し、
前記第3ノードが前記第1条件を満たすと判定した場合に、前記新たなインデックスが付与されたクラスタと前記第3近接ノード集合との和集合で前記新たなインデックスが付与されたクラスタを更新し、前記第3近接ノード集合に所属する各ノードの隣接ノード集合の和集合である第4隣接ノード集合を生成し、前記第1差集合と前記第4隣接ノード集合との和集合から前記新たなインデックスが付与されたクラスタを差し引いた第2差集合で前記第1差集合を更新し、
前記第3ノードが前記第1条件を満たさないと判定した場合に、前記第3ノードを前記未分類クラスタに所属させるとともに、前記第1差集合と、前記新たなインデックスが付与されたクラスタに所属するノードのうち該ノードの隣接ノード集合および前記第3ノードの隣接ノード集合の前記類似度が前記第1閾値以上であるノードの集合との和集合で前記第1差集合を更新する
一連の処理を、前記第1差集合が空集合になるまで繰り返して前記新たなインデックスが付与されたクラスタを構成する
ことを特徴とする請求項1記載のクラスタリング装置。
【請求項3】
前記制御部は、さらに、
前記第1差集合を1ノードに集約した集約ノードを生成し、
前記第1差集合に所属する各ノードの隣接ノード集合および前記集約ノードの隣接ノード集合の前記類似度の上限値ならびに下限値の各推定値を算出し、
前記類似度の上限値ならびに下限値の各推定値に基づく第2条件が満たされると判定した場合に、前記各ノードを前記第1条件を満たすか否かの判定対象とし、前記類似度の上限値ならびに下限値の各推定値に基づく前記第2条件が満たされないと判定した場合に、前記各ノードを前記第1条件を満たすか否かの判定対象から除外して、前記未分類クラスタへ所属させる
ことを特徴とする請求項1または2記載のクラスタリング装置。
【請求項4】
前記制御部は、さらに、
前記未分類クラスタに所属するノードを、前記グラフデータにおけるクラスタ同士を接続させるハブノードもしくはクラスタに所属する1つのノードのみと接続するアウトレイヤノードのいずれかに分類する
ことを特徴とする請求項1、2または3記載のクラスタリング装置。
【請求項5】
コンピュータが、
入力されたグラフデータから、いずれのクラスタにも未所属の第1ノードを選択し、
前記第1ノードおよび該ノードとエッジで接続されるノードの集合である、前記第1ノードの隣接ノード集合を前記グラフデータから取得し、
前記第1ノードの隣接ノード集合に所属する、前記第1ノードとは異なる各第2ノードの隣接ノード集合を前記グラフデータから取得し、
前記第1ノードの隣接ノード集合および前記各第2ノードの隣接ノード集合の類似度を算出し、
前記第1ノードに対して、前記類似度が第1閾値以上となる前記第2ノードの集合である第1近接ノード集合を生成し、
前記第1近接ノード集合の要素数が第2閾値以上となる場合に前記第1ノードが第1条件を満たすと判定し、前記第1近接ノード集合の要素数が第2閾値未満となる場合に前記第1ノードが前記第1条件を満たさないと判定し、
前記第1ノードが前記第1条件を満たすと判定した場合に、前記第1近接ノード集合を新たなインデックスが付与されたクラスタとし、
前記第1近接ノード集合に所属する各ノードおよび該各ノードとエッジで接続されるノードの集合である該各ノードの隣接ノード集合の和集合である第2近接ノード集合を生成し、
前記第2近接ノード集合から前記新たなインデックスが付与されたクラスタを差し引いた第1差集合に所属するノードのなかから、前記新たなインデックスが付与されたクラスタに追加所属させるノードを決定し、
前記第1ノードが前記第1条件を満たさないと判定した場合に、前記第1ノードを未分類クラスタに所属させる
一連の処理を、前記グラフデータの全ノードの所属クラスタが決定するまで繰り返すこと
を含むこと特徴とするクラスタリング方法。
【請求項6】
コンピュータに、
入力されたグラフデータから、いずれのクラスタにも未所属の第1ノードを選択し、
前記第1ノードおよび該ノードとエッジで接続されるノードの集合である、前記第1ノードの隣接ノード集合を前記グラフデータから取得し、
前記第1ノードの隣接ノード集合に所属する、前記第1ノードとは異なる各第2ノードの隣接ノード集合を前記グラフデータから取得し、
前記第1ノードの隣接ノード集合および前記各第2ノードの隣接ノード集合の類似度を算出し、
前記第1ノードに対して、前記類似度が第1閾値以上となる前記第2ノードの集合である第1近接ノード集合を生成し、
前記第1近接ノード集合の要素数が第2閾値以上となる場合に前記第1ノードが第1条件を満たすと判定し、前記第1近接ノード集合の要素数が第2閾値未満となる場合に前記第1ノードが前記第1条件を満たさないと判定し、
前記第1ノードが前記第1条件を満たすと判定した場合に、前記第1近接ノード集合を新たなインデックスが付与されたクラスタとし、
前記第1近接ノード集合に所属する各ノードおよび該各ノードとエッジで接続されるノードの集合である該各ノードの隣接ノード集合の和集合である第2近接ノード集合を生成し、
前記第2近接ノード集合から前記新たなインデックスが付与されたクラスタを差し引いた第1差集合に所属するノードのなかから、前記新たなインデックスが付与されたクラスタに追加所属させるノードを決定し、
前記第1ノードが前記第1条件を満たさないと判定した場合に、前記第1ノードを未分類クラスタに所属させる
一連の処理を、前記グラフデータの全ノードの所属クラスタが決定するまで繰り返して実行させるためのクラスタリングプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、クラスタリング装置などに関する。
【背景技術】
【0002】
近年、例えば、インターネット上で提供されるソーシャルメディアが普及してきている。ソーシャルメディアの一例としてソーシャルネットワーキングサービスが挙げられる。ソーシャルネットワーキングサービスにおいて、個々のユーザが、他のユーザとの関係を築いていくことを繰り返すにより、各ユーザをエッジ、各ユーザ間の関係をノードと見なしうるグラフデータが構築される。
【0003】
このようにして構築されたグラフデータは、ユーザ数、ユーザ間の関係がきわめて膨大な数である、いわゆるビッグデータである。このため、グラフ構造のビッグデータを高速にクラスタ解析することが、例えばソーシャルネットワーキングサービスの利便性に資する。そして、ソーシャルネットワーキングサービスに限らず、グラフ構造のビッグデータを高速にクラスタ解析することが求められる局面が多いため、高速クラスタ解析の手法が提案されている。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】Xiaowei Xu, Nurcan Yuruk, Zhidan Feng, Thomas A. J. Schweiger, “SCAN: A Structural Clustering Algorithm for Networks,” SIGKDD’07, August 12-15, 2007, San Jose, CA, US.
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上述の従来技術では、計算量が多く、グラフデータがより大規模化するにしたがい、クラスタ解析の処理時間が膨大になってしまう。
【0006】
本願が開示する実施形態は、上記に鑑みてなされたものであって、グラフデータのクラスタ解析を高速化することを目的とする。
【課題を解決するための手段】
【0007】
本願が開示する実施形態の一例は、記憶部と協働してグラフデータのノードのクラスタリング処理を実行する制御部を有するクラスタリング装置であって、前記制御部は、入力されたグラフデータから、いずれのクラスタにも未所属の第1ノードを選択し、前記第1ノードおよび該ノードとエッジで接続されるノードの集合である、前記第1ノードの隣接ノード集合を前記グラフデータから取得し、前記第1ノードの隣接ノード集合に所属する、前記第1ノードとは異なる各第2ノードの隣接ノード集合を前記グラフデータから取得し、前記第1ノードの隣接ノード集合および前記各第2ノードの隣接ノード集合の類似度を算出し、前記第1ノードに対して、前記類似度が第1閾値以上となる前記第2ノードの集合である第1近接ノード集合を生成し、前記第1近接ノード集合の要素数が第2閾値以上となる場合に前記第1ノードが第1条件を満たすと判定し、前記第1近接ノード集合の要素数が第2閾値未満となる場合に前記第1ノードが前記第1条件を満たさないと判定し、前記第1ノードが前記第1条件を満たすと判定した場合に、前記第1近接ノード集合を新たなインデックスが付与されたクラスタとし、前記第1近接ノード集合に所属する各ノードの隣接ノード集合の和集合である第2近接ノード集合を生成し、前記第2近接ノード集合から前記新たなインデックスが付与されたクラスタを差し引いた第1差集合に所属するノードのなかから、前記新たなインデックスが付与されたクラスタに追加所属させるノードを決定し、前記第1ノードが前記第1条件を満たさないと判定した場合に、前記第1ノードを未分類クラスタに所属させる一連の処理を、前記グラフデータの全ノードの所属クラスタが決定するまで繰り返すことを特徴とする。
【発明の効果】
【0008】
本願が開示する実施形態によれば、例えば、グラフデータのクラスタ解析を高速化することができる。
【図面の簡単な説明】
【0009】
図1図1は、実施形態1のクラスタリング装置の構成を示す機能ブロック図である。
図2-1】図2−1は、実施形態1のクラスタリング処理における入力グラフデータの一例を示すフローチャートである。
図2-2】図2−2は、実施形態1のクラスタリング処理におけるクラスタリング結果の一例を示す図である。
図3図3は、実施形態1のクラスタリング処理を示すフローチャートである。
図4図4は、ステップS260のサブルーチンを詳細に示すフローチャートである。
図5-1】図5−1は、実施形態1のクラスタリング処理の具体例を示す図である。
図5-2】図5−2は、実施形態1のクラスタリング処理の具体例を示す図である。
図5-3】図5−3は、実施形態1のクラスタリング処理の具体例を示す図である。
図5-4】図5−4は、実施形態1のクラスタリング処理の具体例を示す図である。
図6図6は、実施形態2のクラスタリング処理を示すフローチャートである。
図7図7は、ステップS360のサブルーチンを詳細に示すフローチャートである。
図8-1】図8−1は、実施形態2のクラスタリング処理の具体例を示す図である。
図8-2】図8−2は、実施形態2のクラスタリング処理の具体例を示す図である。
図8-3】図8−3は、実施形態2のクラスタリング処理の具体例を示す図である。
図8-4】図8−4は、実施形態2のクラスタリング処理の具体例を示す図である。
図9図9は、従来技術のクラスタリング処理を示すフローチャートである。
図10図10は、ステップS150のサブルーチンを詳細に示すフローチャートである。
図11図11は、ステップS170のサブルーチンを詳細に示すフローチャートである。
図12図12は、実施形態1および実施形態2のクラスタリング処理を実行するコンピュータの構成を示す機能ブロック図である。
【発明を実施するための形態】
【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からなる集合C(以降、「Cluster」と呼ぶ):
C={C,C,・・・,C}(for ∃p)
(2)Cluster間を接続するノードの集合H(以降、「Hub」と呼ぶ):
H={H,H,・・・,H}(for ∃q)
(3)ClusterでもHubでもないノードの集合O(以降、「Outlier」と呼ぶ):
O={O,O,・・・,O}(for ∃r)
【0015】
そして、制御部202は、図2−2に例示する、グラフデータをクラスタリング処理したクラスタリング結果を出力部203へ出力する。図2−2の例示では、ノード集合{0,1,2,3,4,5}がClusterCであり、ノード集合{7,8,9,10,11,12}がClusterCであり、ノード集合{6}がClusterCとClusterCを接続するHubHであり、ノード集合{13}が、OutlierOである。
【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の隣接ノード集合の類似度の一例である。
【0020】
【数1】
【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閾値の一例である。
【0022】
【数2】
【0023】
【数3】
【0024】
制御部202は、ステップS220で、ノードvがCOREであると判定した場合(ステップS220Yes)には、新たなクラスタIDとしてCを生成する(ステップS230)。なお、COREであるとは第1条件を満たすことの一例であり、COREでないとは第1条件を満たさないことの一例である。また、“i”は、0を初期値として、ステップS230の実行の都度、1インクリメントされるインデックスである。次に、制御部202は、次に∀u∈Nε(v)のクラスタをクラスタCに決定する(ステップS240)。
【0025】
次に、制御部202は、ステップS240で決定したクラスタCを基に、クラスタCの隣接ノード集合であるR=N(Nε(v))\Cを取得する(ステップS250)。なお、N(Nε(v))は、2-hop neighborhoodと呼び、以下の[定義4]で定義される。2-hop neighborhood N(Nε(v))は、第2近接ノード集合の一例である。また、N(Nε(v))\Cは、第1差集合の一例である。
【0026】
【数4】
【0027】
次に、制御部202は、2-hop neighborhoodである集合Rを取得後、集合Rから派生して取得できるクラスタを抽出し、クラスタCに組み入れて、クラスタCに所属するノードを決定する(ステップ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とNε(u)の和集合を新たなクラスタCとして更新する(ステップS265)。なお、Nε(u)は、第3近接ノード集合の一例である。
【0036】
次に、制御部202は、ステップS265でクラスタCを更新したことに応じて、2-hop neighborhood RをR={R∪N(Nε(u))}\Cとして更新する(ステップS266)。制御部202は、ステップS266の処理が終了すると、ステップS261へ処理を移す。なお、N(Nε(u))は、第4近接ノード集合の一例である。また、{R∪N(Nε(u))}\Cは、第2差集合の一例である。
【0037】
一方、制御部202は、ステップS264で、ノードuがCOREでないと判定した場合(ステップS264No)には、ノードuをクラスタnon-memberの所属とし(ステップS267)、2-hop neighborhood RをR=R∪{w|σ(w,u)≧ε∧C[w]=C}として更新する(ステップS268)。ただし、C[w]はノードwが所属するクラスタを表す。そして、制御部202は、ステップS268の処理が終了すると、ステップS261へ処理を移す。なお、R∪{w|σ(w,u)≧ε∧C[w]=C}は、前記第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が形成される(図3のステップS200−ステップS240に対応)。
【0039】
そして、図5−2を参照し、未選択のノード2に着目すると、ノード2のε-neighborhoodNε(2)は、ノード1、ノード3、ノード5なので、ノード1、ノード3、ノード5が所属するε-neighborhoodNε(2)とクラスタCの和集合を、新たなクラスタCとして更新する(図3のステップS250−ステップS260に対応)。その結果、図5−3に示すようなクラスタCが形成される。
【0040】
また、図5−3を参照し、未選択のノード6に着目すると、ノード6は、パラメータε,μに対してCOREでないので、non-memberに分類される(図3のステップS220、ステップS270に対応)。
【0041】
同様にして、図5−4に示すように、ノード7、ノード8、ノード9、ノード10、ノード11、ノード12が所属するクラスタCが形成される(図3のステップS200−ステップS240に対応)。また、図5−4において、未選択のノード13に着目すると、ノード13は、パラメータε,μに対してCOREでないので、non-memberに分類される(図3のステップS220、ステップS270に対応)。
【0042】
そして、図5−4において、non-memberに分類されたノード6はHubHと分類され、ノード13はOutlierOと分類される(図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)=|{(u,w)∈E|∀w∈C}|となる重みをノードuとクラスタC間を接続するエッジの重みとして付与する。なお、エッジの付与方法の具体例は、後述する。
【0047】
次に、制御部302は、ステップS350で集約したノードに対してStructural similarityの上限値および下限値を推定し、Structural similarityの計算対象を除外しつつ、集合Rから派生して取得可能なクラスタCを抽出する(ステップ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の下限値の推定値を算出する。
【0051】
【数5】
【0052】
【数6】
【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が形成される(図6のステップS300−ステップS340に対応)。
【0056】
そして、図8−2を参照すると、ノード0、ノード1、ノード4、ノード5が、ノード0に集約される。その際、クラスタC外へのエッジ(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は、ノード2、ノード3は、ノード0に集約されている。その際、クラスタC外へのエッジ(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が形成される(図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と分類され、ノード13はOutlierOと分類される(図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を生成する(ステップS130)。
【0067】
次に、制御部102は、v∈Nε(v)を待ち行列Queue Qに挿入し(ステップS140)、待ち行列Qに挿入されたノードに対してCに所属するノードの抽出処理を実行する(ステップ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]で定義される。
【0069】
【数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と決定する(ステップ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を生成し(ステップS173)、ノードvをHに分類する(ステップS174)。なお、“i”は、0を初期値として、ステップS173の実行の都度、1インクリメントされるインデックスである。
【0075】
一方、ノードvが一つ以下のクラスタにしか接続していない場合(ステップS172No)、新たなOutlierのIDとしてOを生成し(ステップS175)、ノードvをOに分類する(ステップS176)。なお、“i”は、0を初期値として、ステップS175の実行の都度、1インクリメントされるインデックスである。制御部102は、以上の処理により、全ノードをCluster、Hub、Outlierのいずれかに分類し、処理を終了する。
【0076】
上述の従来技術は、計算されたStructural similarityに基づいてCoreノードの選出およびクラスタリングを行うことから、事前に全てのエッジに対してStructural similarityを計算する必要がある。Structural similarityは、最大計算量となる完全グラフの場合、ノード数をVとするとエッジ数が|V|であることから、分母の計算量はO(|V|)のオーダとなる。さらに、Structural similarityは、最大計算量となる完全グラフの場合、ノード数をVとするとエッジ数が|V|であることから、分子は2つの集合の積集合を取得する処理が含まれるため計算量O(|V|)のオーダの比較計算処理が発生する。
【0077】
よって、従来技術では、Structural similarity全体の計算量はO(|V|)のオーダになる。すなわち、従来技術はグラフデータの規模がおおきくなるに伴い計算時間が急激に増加し、クラスタリング処理に膨大な時間を必要とする。
【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ならびにその変形は、本願が開示する技術に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0087】
200、300 クラスタリング装置
201、301 入力部
202、302 制御部
203、303 出力部
110 グラフデータ記憶部
120 クラスタリング結果記憶部
図1
図2-1】
図2-2】
図3
図4
図5-1】
図5-2】
図5-3】
図5-4】
図6
図7
図8-1】
図8-2】
図8-3】
図8-4】
図9
図10
図11
図12