(57)【要約】【課題】  グラフクラスタリング処理結果に対して、細かい精度でのクラスタリング精度向上を可能にする。【解決手段】  本発明は、グラスデータのクラスタリング処理対象ノードを任意の順番で選択し、クラスタリングを行った中間結果を生成し、該中間結果を集約し、集約されたクラスタに対して繰り返しクラスタリング処理を行う際に、中間結果を集約する際に設定された、クラスタリング精度向上量が最大となる隣接ノードと該隣接ノードに対して付与したクラスタラベルの組を記憶手段のクラスタ対応表から取得し、該隣接ノードと該クラスタラベルを分解して新たなクラスタを生成し、精度向上の余地があるかを判定し、精度向上の余地がなくなるまで、新たなクラスタを生成する処理を繰り返し、精度向上の余地がなくなった場合には、未検証の新たなクラスタの対でクラスタリング境界面を更新する。【選択図】  図４
2013156697.tif 000002
【特許請求の範囲】
【請求項１】
入力されたグラスデータをクラスタリングして出力するクラスタリング装置であって、
前記グラスデータのクラスタリング処理対象ノードを任意の順番で選択し、クラスタリングを行った中間結果を生成し、該中間結果を集約し、集約されたクラスタに対して繰り返しクラスタリング処理を行う制御手段において、
集約されたクラスタ集合から未検証の新たなクラスタを生成する新クラスタ生成手段と、
生成された前記新たなクラスタについて、精度向上の余地があるかを判定する判定手段と、
前記判定手段で精度向上の余地がなくなるまで、前記新クラスタ生成手段、前記判定手段を繰り返し、精度向上の余地がなくなった場合には、未検証の新たなクラスタの対でクラスタリング境界面を更新するクラスタリング境界面更新手段と、
を有することを特徴とするクラスタリング装置。
【請求項２】
前記新クラスタ生成手段は、
前記中間結果を集約する際に設定された、クラスタリング精度向上量が最大となる隣接ノードと該隣接ノードに対して付与したクラスタラベルの組を記憶手段のクラスタ対応表から取得し、該隣接ノードと該クラスタラベルを分解して新たなクラスタを生成する
請求項１記載のクラスタリング装置。
【請求項３】
入力されたグラスデータをクラスタリングして出力するクラスタリング方法であって、
前記グラスデータのクラスタリング処理対象ノードを任意の順番で選択し、クラスタリングを行った中間結果を生成し、該中間結果を集約し、集約されたクラスタに対して繰り返しクラスタリング処理を行う際に、
集約されたクラスタ集合から未検証の新たなクラスタを生成する新クラスタ生成ステップと、
生成された前記新たなクラスタについて、精度向上の余地があるかを判定し、精度向上の余地がなくなるまで、前記新クラスタ生成ステップを繰り返し、精度向上の余地がなくなった場合には、未検証の新たなクラスタの対でクラスタリング境界面を更新するクラスタリング境界面更新ステップと、
を行うことを特徴とするクラスタリング方法。
【請求項４】
前記新クラスタ生成ステップにおいて、
前記中間結果を集約する際に設定された、クラスタリング精度向上量が最大となる隣接ノードと該隣接ノードに対して付与したクラスタラベルの組を記憶手段のクラスタ対応表から取得し、該隣接ノードと該クラスタラベルを分解して新たなクラスタを生成する
請求項３記載のクラスタリング方法。
【請求項５】
コンピュータを、
請求項１または２に記載のクラスタリング装置の各手段として機能させるためのクラスタリングプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クラスタリング装置及び方法及びプログラムに係り、特に、グラフに含まれるエッジデータを用いてグラフに含まれるノードデータをクラスタリングするためのクラスタリング装置及び方法及びプログラムに関する。
【背景技術】
【０００２】
グラフクラスタリング処理として、グラフデータが入力されると、グラフに含まれる全てのエッジデータを用いてクラスタリング処理対象ノードを任意の順番で選択し、クラスタリングの中間結果を生成し、集約する。さらに、集約されたクラスタに対して繰り返しクラスタリング処理を行うことにより、クラスタサイズの均一化及び処理対象ノードの削減が可能な技術がある（例えば、非特許文献1参照）。
【０００３】
図１は、クラスタリング装置の構成を示し、図２は、従来のクラスタリング装置におけるクラスタリングのフローチャートである。
【０００４】
クラスタリング装置２１０は、入力部２１１、制御部２１２、出力部２１３から構成される。入力部２１１は、グラフデータ記憶装置２００から読み込んだグラフデータを主記憶装置上に展開し、制御部２１２は、図２に示すフローの処理を行い、出力部２１３に渡す。出力部２１３は、制御部２１２により得られたクラスタリング結果を任意の装置、例えば、クラスタリング結果記憶装置２２０等に出力する。
【０００５】
以下に制御部２１２における処理について説明する。図３に従来技術の集約イメージを示す。
【０００６】
まず、制御部２１２は、図３（Ａ）に示すようなグラフデータが入力されると、乱数を用いてグラフデータから任意のノードを一つ選択し、そのノードに隣接するノードの一覧を主記憶装置上の隣接ノードキューに挿入する（ステップ１００）。
【０００７】
次に、隣接ノードキューの中から乱数を用いて隣接ノードを選択し、当該隣接ノードキューから当該ノードを削除する（ステップ１１０）。
【０００８】
ステップ１００で選択されたノードとステップ１１０において選択された隣接ノードの２つのノードを同じクラスタに分類した際のクラスタリング精度向上量を算出し、隣接ノードとクラスタリング精度向上量からなる組（｛隣接ノード：クラスタリング精度向上量｝）を生成し、主記憶装置上の処理済キューに挿入する（ステップ１２０）。クラスタリング精度向上量は、非特許文献１に示されるように、以下の式で求められる。
【０００９】
［定義１］クラスタリング精度向上量ΔQを以下のように計算する。
【００１０】
【数１】
2013156697.tif 000003
ただし、ΔQはクラスタリング精度向上量、eijはクラスタｉとクラスタjの間に存在するエッジの数、ｍはグラフ内に存在する全エッジ数、Cはクラスタの集合である。
【００１１】
隣接ノードキューに隣接ノードが存在する場合はステップ１１０の処理に戻り、存在しない場合は、クラスタリング精度向上量が最大となる隣接ノードを主記憶装置上の処理済キューから選択し、ノードと隣接ノードに対して同一のクラスタラベルを付与し、主記憶装置上のクラスタ対応表に格納する。なお、クラスタラベル名については任意のクラスタラベルを付与するものとする。主記憶装置上のクラスタ対応表には、ノードａ、隣接ノードｂであった場合は、ハッシュマップの形式で｛クラスタラベル：ノードａ，ノードｂ｝の組が格納される（ステップ１４０）。
【００１２】
次に、主記憶装置上に展開していたグラフデータを取得し、主記憶装置上のクラスタ対応表を読み込み、ノード同士のペアでグラフデータ全体のクラスタリング精度を算出する。グラフデータ全体のクラスタリング精度は、非特許文献１に示されるように、以下の式で求められる。
【００１３】
［定義２］クラスタリング精度Qを以下のように算出する。
【００１４】
【数２】
2013156697.tif 000004
により求められる。
【００１５】
そして、前回当該処理を実行したときのクラスタリング精度との差分を求める。なお、初回実行時は前回のクラスタリング精度を０と見做して判定するものとする。上記のステップ１００からステップ１５０の処理イメージを図３（Ｂ）に示す。差分がある場合、つまり、ノード同士のペアでクラスタリング精度向上の余地がある場合は（ステップ１５０、No）、ステップ１００に戻る。一方、当該差分がない場合、つまり、ノード同士のペアでクラスタリング精度向上の余地がない場合には（ステップ１５０,Yes）、各クラスタに対して、図３（Ｃ）に示すように、クラスタに含まれるノードとエッジを1ノードに集約し、主記憶装置のグラフデータを更新する（ステップ１６０）。さらに、クラスタ同士のペアでグラフデータ全体のクラスタリング精度を算出し、前回の当該処理を実行した時の差分を判定する。なお、初回実行時は前回のクラスタリング精度を０と見做して判定するものとする。差分がある場合は（ステップ１７０、No）ステップ１００に戻り、差分がない場合は（ステップ１７０,Yes）最終的なクラスタ対応表をクラスタリング結果記憶装置２２０に出力して当該処理を終了する。
【００１６】
上記の従来の技術は、クラスタサイズの均一化と、処理に利用するエッジ数・ノード数の削減により、中間結果の集約による処理量を削減することが可能であり、1億ノード規模のグラフのクラスタリングを2時間半程度で処理可能である。
【先行技術文献】
【非特許文献】
【００１７】
【非特許文献１】Louvain method [Vincent D Blondel, Journal of Statistical Mechanics: Theory and Experiment, 2008年10月9日]
【発明の概要】
【発明が解決しようとする課題】
【００１８】
しかしながら、上記従来技術は、集約されたクラスタ同士のみを再帰的にクラスタリング処理するため、細かい粒度（ノード単位）でのクラスタリング精度向上ができない。
【００１９】
また、クラスタリング処理終了時に、クラスタの境界面を修正し、クラスタリング精度を向上させる処理を持たないため、クラスタリング精度を向上させることができない。
【００２０】
本発明は、上記の点に鑑みなされたもので、グラフクラスタリング処理結果に対して、細かい精度でのクラスタリング精度向上を可能とするクラスタリング装置及び方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００２１】
上記の課題を解決するため、本発明（請求項１）は、入力されたグラスデータをクラスタリングして出力するクラスタリング装置であって、
前記グラスデータのクラスタリング処理対象ノードを任意の順番で選択し、クラスタリングを行った中間結果を生成し、該中間結果を集約し、集約されたクラスタに対して繰り返しクラスタリング処理を行う制御手段において、
集約されたクラスタ集合から未検証の新たなクラスタを生成する新クラスタ生成手段と、
生成された前記新たなクラスタについて、精度向上の余地があるかを判定する判定手段と、
前記判定手段で精度向上の余地がなくなるまで、前記新クラスタ生成手段、前記判定手段を繰り返し、精度向上の余地がなくなった場合には、未検証の新たなクラスタの対でクラスタリング境界面を更新するクラスタリング境界面更新手段と、を有する。
【００２２】
また、本発明（請求項２）は、前記新クラスタ生成手段において、前記中間結果を集約する際に設定された、クラスタリング精度向上量が最大となる隣接ノードと該隣接ノードに対して付与したクラスタラベルの組を記憶手段のクラスタ対応表から取得し、該隣接ノードと該クラスタラベルを分解して新たなクラスタを生成する。
【発明の効果】
【００２３】
クラスタリング処理では、クラスタリングされたもの同士を更にクラスタリングするといった処理を行うことにより、未検証のクラスタ対が多く存在し、未検証のクラスタ対がさらにクラスタリング精度を向上させる可能性を有する。本発明では、クラスタリング処理より集約されたクラスタリング結果を分解して、新たなクラスタを生成し、そのクラスタリング精度を評価し、クラスタリング精度が向上する場合のみクラスタ境界面を修正することにより、クラスタリングの精度が向上する。ここで、クラスタ境界面とは、図４に示すように、クラスタ対応表における各クラスタに所属するノードの組み合わせであり、例えば、クラスタ対応表に２つのクラスタC1とC2のみが存在するとき、グラフに含まれる各ノードがC1とC2のどちらにどのように所属するかに依存して、クラスタ境界面が存在する。本発明では、クラスタに含まれるノードとエッジを１つのノードに集約した後、当該クラスタ境界面を修正することにより、クラスタリング精度がさらに向上する。
【図面の簡単な説明】
【００２４】
【図１】クラスタリング装置の構成図である。
【図２】従来のクラスタリング装置におけるクラスタリングのフローチャートである。
【図３】従来技術の集約イメージである。
【図４】本発明のクラスタ境界面の更新を示す図である。
【図５】本発明のクラスタリング装置のハードウェア構成図である。
【図６】本発明の一実施の形態におけるグラフデータ及びそのスパースベクトルの例である。
【図７】本発明の一実施の形態における同一クラスタに属するノードのラベル付けの例である。
【図８】本発明の一実施の形態におけるクラスタリング処理のフローチャートである。
【図９】本発明の一実施の形態におけるクラスタ対応表の分解・統合検証例である。
【発明を実施するための形態】
【００２５】
以下、図面と共に本発明の実施の形態を説明する。
【００２６】
以下の実施の形態では、図１の構成及び図２のフローチャートをベースとして説明する。
【００２７】
図５は、本発明のクラスタリング装置のハードウェア構成を示す。クラスタリング装置として用いられるコンピュータは、ＣＰＵ１００、主記憶装置１１０、二次記憶装置１２０、入出力装置１３０から構成され、図１における制御部２１２は、ＣＰＵ１００によって実行される。また、入力部２１１より入力されたグラフデータは主記憶装置１１０上の隣接ノードキューに展開される。図６に、グラフデータ及びそのスパースベクトルの例を示す。入力されるグラフデータは、図６（Ｂ）に示すようにノード間のエッジで表現されたものであり、主記憶装置１１０上に図６（Ｃ）に示すように展開される。また、処理済みキューも主記憶装置１１０上に配置される。グラフデータ記憶装置２００及びクラスタリング結果記憶装置２２０は、二次記憶装置１２０に含まれるハードディスクやフラッシュメモリドライブ等の記録媒体である。また、入力部２１１、出力部２１３は、入出力装置１３０に含まれる。
【００２８】
以下の実施の形態におけるクラスタリング装置の構成は、図１と同様であるが、制御部２１２の動作が異なる。
【００２９】
図７（Ａ）に示すようなデータが入力されると、ノード集約が行われ、同図（Ｂ）に示すように、ノード"１"と"２"が同一クラスタ（C9）に属するノードとしてラベル付けされ、｛c9：1,2｝が対応表に設定されている。本発明では、この状況からさらに、クラスタリング精度が向上する余地があるか否かを判定し、ある場合にはクラスタ対応表の結果を分解して、更に新たなクラスタを作成する。
【００３０】
図８は、本発明の一実施の形態におけるクラスタリング処理のフローチャートである。
【００３１】
ステップ２００〜ステップ２６０までは、図２のステップ１００〜１６０と同様の処理であるので、その説明を省略する。
【００３２】
図８のステップ２７０において、制御部２１２は、これまでの処理において未検証であったクラスタ対を統合した際のクラスタリング精度向上量を計算し、ステップ２６０が終了した時点におけるクラスタリング精度を上回るか否かを試算する。具体的には、主記憶装置１１０上のクラスタ対応表の示す結果｛クラスタラベル：ノードａ,ノードｂ｝を分解して、これまでの処理において未検証であった新たなクラスタを作成し、精度向上が見られるか検証する。なお、クラスタリング精度向上量の算出方法は、従来の技術と同様である。クラスタリング情報を上回った場合（ステップ２７０,Yes）、つまり、クラスタ同士のペアでクラスタリング精度向上の余地がない場合は、それらのクラスタ対を同一のクラスタとして統合・ラベル付けし、クラスタ境界面を更新する（ステップ２８０）。
【００３３】
図９は、本発明の一実施の形態におけるクラスタ対応表の分解・統合検証例を示す。図９に示すように、ステップ２６０終了時点において、｛C1：1,2,3,4｝と｛C2：5,6｝の２つのクラスタの間にクラスタ境界面が設定されているものとする。
【００３４】
クラスタ対応表（図９（Ａ））から任意のクラスタを選択し、選択したクラスタ（C1）に含まれるノード｛1,2,3,4｝を、同一のクラスタとして統合し、ラベル付けする前の状態に戻すことにより分割を行う（図９（Ｂ））。なお、クラスタ対応表はクラスタが統合され同一のクラスタとしてラベル付けされる前の状態を任意の記憶装置（主記憶装置または二次記憶装置）に保持し、状態を遡ることができるものとする。
【００３５】
次に、分割されたクラスタに対して統合検証を行う。図９（Ｂ）に示すように、対応表には、{C0：1,2,3}、ノード４、｛C2：5,6｝が設定されている。クラスタリング精度が向上する場合は、それらのクラスタ対を同一のクラスタとして統合・ラベル付けを行い（｛C0：1,2,3｝，{C3：4,5,6}）、クラスタ対応表を更新することにより、クラスタC0とクラスタC3を新たなクラスタ境界面として更新する（図９（Ｃ））。
【００３６】
一方、クラスタ同士のペアでクラスタリング精度向上の余地がある場合は（ステップ２７０,No）、ステップ２００に移行する。
【００３７】
なお、上記の実施の形態における図１に示す制御部の動作をプログラムとして構築し、クラスタリング装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
【００３８】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。
【符号の説明】
【００３９】
１００  ＣＰＵ
１１０  主記憶装置
１２０  二次記憶装置
１３０  入出力装置
２００  グラフデータ記憶装置
２１０  クラスタリング装置
２１１  入力部
２１２  制御部
２１３  出力部
２２０  クラスタリング結果記憶装置
【図１】
2013156697.tif 000005
【図２】
2013156697.tif 000006
【図３】
2013156697.tif 000007
【図４】
2013156697.tif 000008
【図５】
2013156697.tif 000009
【図６】
2013156697.tif 000010
【図７】
2013156697.tif 000011
【図８】
2013156697.tif 000012
【図９】
2013156697.tif 000013