JP2017204161A - クラスタリング装置、クラスタリング方法およびクラスタリングプログラム - Google Patents

クラスタリング装置、クラスタリング方法およびクラスタリングプログラム Download PDF

Info

Publication number
JP2017204161A
JP2017204161A JP2016095846A JP2016095846A JP2017204161A JP 2017204161 A JP2017204161 A JP 2017204161A JP 2016095846 A JP2016095846 A JP 2016095846A JP 2016095846 A JP2016095846 A JP 2016095846A JP 2017204161 A JP2017204161 A JP 2017204161A
Authority
JP
Japan
Prior art keywords
unit
node
nodes
thread
classification
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.)
Granted
Application number
JP2016095846A
Other languages
English (en)
Other versions
JP6638919B2 (ja
Inventor
淳也 新井
Junya Arai
淳也 新井
鬼塚 真
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
Osaka University NUC
Original Assignee
Nippon Telegraph and Telephone Corp
Osaka University NUC
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, Osaka University NUC filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2016095846A priority Critical patent/JP6638919B2/ja
Publication of JP2017204161A publication Critical patent/JP2017204161A/ja
Application granted granted Critical
Publication of JP6638919B2 publication Critical patent/JP6638919B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】グラフデータに対し、高速かつ処理結果のモジュラリティが大きいクラスタリングを行う。
【解決手段】割当部131は、グラフのノードをN個の群に分割し、N個のスレッドの各スレッドを割り当てる。選択部132は、各スレッドで、割当部131によって割り当てられた群からノードを選択する。変更部133は、各スレッドで、選択ノードに関する情報を所定の状態に変更する。抽出部135は、各スレッドで、選択ノードの隣接クラスタの中から、選択ノードと同じクラスタに分類された場合にモジュラリティが最大となるクラスタである分類先を抽出する。分類部136は、各スレッドで、分類先に関する情報が所定の状態に変更されているか否かを判定し、変更されていないと判定した場合、選択ノードと分類先を同一のクラスタに分類する。集約部134は、各スレッドで、同一クラスタのノードを集約する。
【選択図】図1

Description

本発明は、クラスタリング装置、クラスタリング方法およびクラスタリングプログラムに関する。
従来、グラフのクラスタリング手法として、逐次ノード集約によるクラスタリングが知られている(例えば特許文献1参照)。このような逐次ノード集約によるクラスタリングでは、例えば、まず、グラフに含まれる全てのノードとエッジが入力される。そして、任意のノードが1つ選択され、選択されたノードは隣接するノードの1つへ集約される。このとき、集約先のノードとしては、集約によって生じるモジュラリティ向上量を最大化するものが選択される。
また、マルチCPUまたはマルチコアCPUを用いた並列計算機で行われるクラスタリング手法として、グラフ分割による並列クラスタリングが知られている(例えば特許文献2参照)。このようなグラフ分割による並列クラスタリングでは、例えば、まず、グラフは複数の部分グラフに分割される。そして、それぞれの部分グラフは、並列に動作する各スレッドへ割り当てられる。ここで、各スレッドは、割り当てられた部分グラフについてモジュラリティを最大化するような分類を行う。そして、全てのスレッドにおいて分類が完了した後、同じクラスタに分類されたノードは1つのノードに集約される。
特開2013−156698号公報 特開2014−160336号公報
しかしながら、従来のクラスタリング手法には、グラフデータに対し、高速かつ処理結果のモジュラリティが大きいクラスタリングを行うことができない場合があるという問題があった。
例えば、逐次ノード集約によるクラスタリングは、1スレッドで行われるため、複数のスレッドでクラスタリングを行う場合と比べると、大規模グラフのクラスタリングを高速に行うことができない場合がある。
また、例えば、グラフ分割による並列クラスタリングは、分割された複数の部分グラフのそれぞれの中でのモジュラリティを大きくするものであるため、グラフ全体としてのモジュラリティが大きくならない場合がある。仮に、第1のノードと、第2のノードがそれぞれ異なる部分グラフへ分割されてしまった場合、第2のノードが第1のノードに集約された場合に最もモジュラリティが大きくなるとしても、第1のノードと第2のノードが集約されることはない。
本発明のクラスタリング装置は、複数のノードを有するグラフデータの入力を受け付ける入力部と、前記複数のノードをN個(Nは2以上の整数)の群に分割し、前記N個の群のそれぞれに、処理を実行する単位であるN個のスレッドの各スレッドを割り当てる割当部と、前記各スレッドで、前記割当部によって割り当てられた群に含まれるノードから所定の順番でノードを選択する選択部と、前記各スレッドで、前記選択部によってノードが選択されるたびに、前記選択部によって選択されたノードである選択ノードに関する情報を所定の状態に変更する変更部と、前記各スレッドで、前記変更部によって前記選択ノードに関する情報が変更されるたびに、前記選択ノードに隣接するノードまたはクラスタの中から、前記選択ノードと同じクラスタに分類された場合にクラスタリング処理結果の精度を表すモジュラリティが最大となるノードまたはクラスタである分類先を抽出する抽出部と、前記各スレッドで、前記抽出部によって前記分類先が抽出されるたびに、前記分類先に関する情報が他スレッドによって前記所定の状態に変更されているか否かを判定し、変更されていないと判定した場合、前記選択ノードと前記分類先を同一のクラスタに分類する分類部と、前記各スレッドで、前記分類部によって分類されたノードのうち、クラスタが同一である複数のノードを、1つのノードに集約する集約部と、を有することを特徴とする。
また、本発明のクラスタリング方法は、クラスタリング装置で実行されるクラスタリング方法であって、複数のノードを有するグラフデータの入力を受け付ける入力工程と、前記複数のノードをN個の群に分割し、前記N個の群のそれぞれに、処理を実行する単位であるN個のスレッドの各スレッドを割り当てる割当工程と、前記各スレッドで、前記割当工程によって割り当てられた群に含まれるノードから所定の順番でノードを選択する選択工程と、前記各スレッドで、前記選択工程によってノードが選択されるたびに、前記選択工程によって選択されたノードである選択ノードに関する情報を所定の状態に変更する変更工程と、前記各スレッドで、前記変更工程によって前記選択ノードに関する情報が変更されるたびに、前記選択ノードに隣接するノードまたはクラスタの中から、前記選択ノードと同じクラスタに分類された場合にクラスタリング処理結果の精度を表すモジュラリティが最大となるノードまたはクラスタである分類先を抽出する抽出工程と、前記各スレッドで、前記抽出工程によって前記分類先が抽出されるたびに、前記分類先に関する情報が他スレッドによって前記所定の状態に変更されているか否かを判定し、変更されていないと判定した場合、前記選択ノードと前記分類先を同一のクラスタに分類する分類工程と、前記各スレッドで、前記分類工程によって分類されたノードのうち、クラスタが同一である複数のノードを、1つのノードに集約する集約工程と、を含んだことを特徴とする。
本発明によれば、グラフデータに対し、高速かつ処理結果のモジュラリティが大きいクラスタリングを行うことができる。
図1は、第1の実施形態に係るクラスタリング装置の構成の一例を示す図である。 図2は、ノード群のスレッドへの割り当てについて説明するための図である。 図3は、ノードの選択およびクラスタの抽出について説明するための図である。 図4は、ノードの分類およびノードの集約について説明するための図である。 図5は、第1の実施形態に係るクラスタリング装置の処理の流れの一例を示すフローチャートである。 図6は、第1の実施形態に係るクラスタリング装置における各スレッドでの処理の流れの一例を示すフローチャートである。 図7は、クラスタのメンバリストのデータ構造の一例を示す図である。 図8は、第1の実施形態に係るクラスタリング装置における分類部の処理の流れの一例を示すフローチャートである。 図9は、モジュラリティが小さいクラスタリングが行われる場合の例について説明する図である。 図10は、プログラムが実行されることにより、クラスタリング装置が実現されるコンピュータの一例を示す図である。
以下に、本願に係るクラスタリング装置、クラスタリング方法およびクラスタリングプログラムの実施形態を図面に基づいて詳細に説明する。なお、この実施形態は本発明を限定するものではない。
[第1の実施形態の構成]
まず、図1を用いて、第1の実施形態に係るクラスタリング装置の構成について説明する。図1は、第1の実施形態に係るクラスタリング装置の構成の一例を示す図である。図1に示すように、クラスタリング装置10は、入力されたグラフデータ20に対してクラスタリング処理を行い、クラスタリング結果21を出力する。ここで、グラフデータ20は、複数のノード、およびノードごとのエッジに関する情報を表すデータである。また、クラスタリング結果21は、例えば、グラフデータ20に含まれるノードごとの分類されたクラスタを表すデータである。また、図1に示すように、クラスタリング装置10は、入力部11、出力部12、制御部13および記憶部14を有する。
入力部11は、グラフデータ20の入力を受け付ける。例えば、入力部11は、外部の記憶装置に記憶されているグラフデータ20を受信することによって入力を受け付けてもよい。この場合、入力部11は、例えば、NIC(Network Interface Card)である。また、入力部11は、ユーザによるグラフデータ20の入力を受け付けてもよい。この場合、入力部11は、例えば、マウスやキーボード等の入力装置である。
出力部12は、クラスタリング結果21を出力する。出力部12は、外部の記憶装置にクラスタリング結果21を送信するようにしてもよい。この場合、出力部12は、例えば、NICである。また、出力部12は、クラスタリング結果21を画面に表示するようにしてもよい。この場合、出力部12は、例えば、ディスプレイ等の表示装置である。
制御部13は、クラスタリング装置10を制御する。制御部13は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)等の電子回路や、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)等の集積回路である。また、制御部13は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、内部メモリを用いて各処理を実行する。また、制御部13は、各種のプログラムが動作することにより各種の処理部として機能する。
また、本実施形態において、制御部13は、複数のスレッドで処理を実行することで、クラスタリング装置10を並列計算機として機能させる。例えば、制御部13は、複数のCPUで構成されるマルチCPUや、複数のコアを有するマルチコアCPUによって実現される。また、制御部13は、割当部131、選択部132、変更部133、集約部134、抽出部135および分類部136を有する。
割当部131は、複数のノードをN個(Nは2以上の整数)の群に分割し、N個の群のそれぞれに、処理を実行する単位であるN個のスレッドの各スレッドを割り当てる。割当部131による処理は、処理全体に要する時間と比べて極めて短い時間で完了するため、割当部131は、1つのスレッドで処理を実行してもよい。
例えば、グラフデータ20に含まれるノードの数がn個(nは2以上の整数)、スレッドの数がN個である場合、割当部131は、先頭のn/N個のノードをV群、次のn/N個のノードをV群、というようにノードを分割してもよい。さらに、この場合、割当部131は、例えば、V群のノードを1個目のスレッド、V群のノードを2個目のスレッドというように割り当てる。
ここで、Nは、この後のステップで行われる処理の並列度に相当し、一般的にはCPUが持つコア数、すなわち総ハードウェアスレッド数と同一である。また、スレッドが増加するほど、各スレッドに割り当てられるノードの数は少なくなり、各スレッドおよび装置全体における処理時間が短縮される。
図2を用いて、割当部131による、ノード群のスレッドへの割り当てについて説明する。図2は、ノード群のスレッドへの割り当てについて説明するための図である。図2に示すように、グラフデータ20は、ノード101〜103、201〜203、301〜303および401〜403を有する。また、制御部13は、スレッドt1〜t4の4個のスレッドで処理を行う。このとき、割当部131は、例えば、ノード101〜103をスレッドt1に割り当て、ノード201〜203をスレッドt2に割り当て、ノード301〜303をスレッドt3に割り当て、ノード401〜403をスレッドt4に割り当てる。なお、図2に示す通り、各ノード群のノードのそれぞれは、隣接していなくてもよい。
選択部132、変更部133、集約部134、抽出部135および分類部136は、各スレッドで並列処理を行う。すなわち、例えばスレッドt1で選択部132、変更部133、集約部134、抽出部135および分類部136による処理が行われている間に、スレッドt2でも選択部132、変更部133、集約部134、抽出部135および分類部136による処理が行われる。
各ノードは、分類されるクラスタを識別するラベルが付けられることによって分類される。また、割当部131によって各スレッドに割り当てられた時点ではクラスタへの分類は行われていないため、各ノードにはそれぞれ異なるラベルが付けられていることとする。すなわち、各ノードは、1個のノードからなるクラスタに分類されていることになる。
選択部132は、各スレッドで、割当部131によって割り当てられた群に含まれるノードから所定の順番でノードを選択する。割り当てられたノード群の中に、未選択のノードがある場合、選択部132は、ノード群からノードを選択する。選択部132がノードを選択する順番は、任意に設定することができる。
変更部133は、各スレッドで、選択部132によってノードが選択されるたびに、選択部132によって選択されたノードである選択ノードに関する情報を所定の状態に変更する。例えば、変更部133は、選択部132によって選択ノードが分類されているクラスタを、所定の状態、すなわち変更禁止状態にする。変更部133は、例えばクラスタを表すデータの所定のフラグをオンにすること等により、当該クラスタが変更禁止であることを示す変更禁止マークを付ける。
集約部134は、各スレッドで、分類部136によって分類されたノードのうち、クラスタが同一である複数のノードを、1つのノードに集約する。集約部134は、例えば、変更部133によって選択ノードに関する情報が変更された後、かつ抽出部135によって分類先が抽出される前に、選択ノードと、選択ノードと分類されたクラスタが同一であるノードとを1つのノードに集約する。
集約部134は、選択ノードが分類されているクラスタに複数のノードが含まれている場合、当該複数のノードを選択ノードに集約する。具体的に、集約部134は、当該クラスタの選択ノード以外のノードを削除し、削除したノードのエッジを選択ノードに付け替える。
抽出部135は、各スレッドで、変更部133によって選択ノードに関する情報が変更されるたびに、選択ノードに隣接するノードまたはクラスタの中から、選択ノードと同じクラスタに分類された場合にクラスタリング処理結果の精度を表すモジュラリティが最大となるノードまたはクラスタである分類先を抽出する。
なお、抽出部135は、集約部134による処理が行われる場合、ノードの集約が行われた後に処理を実行する。また、抽出部135による抽出の対象となる、選択ノードに隣接するノード、および選択ノードに隣接するクラスタに含まれるノードは、選択ノードと同じ群のノードであってもよいし、異なる群のノードであってもよい。
図3を用いて、ノードの選択およびクラスタの抽出について説明する。図3は、ノードの選択およびクラスタの抽出について説明するための図である。図3に示すように、選択ノードがノード101である場合、選択ノードに隣接するクラスタは、クラスタc1〜c4である。なお、ノード102および203は、1つのノードから構成されるクラスタc3およびc5とみなされる。なお、図中のuが付されたノードは、選択ノードである。
抽出部135は、クラスタc1〜c4の中から、ノード101を同じクラスタとした場合に、最もモジュラリティが大きくなるクラスタを抽出する。このとき、抽出部135は、式(1)によって、クラスタc1〜c4のそれぞれが1つのノードに集約された場合、当該集約されたノードと選択ノードと同じクラスタに分類された際のモジュラリティの向上量ΔQ(u,v)を計算することで、結果的に最もモジュラリティが大きくなるクラスタを抽出する。
Figure 2017204161
ただし、式(1)において、uは選択ノード、vは隣接するクラスタのいずれかを集約したノードである。例えば、図3の例では、uはノード101、vはクラスタc1〜c4のいずれかを集約した1つのノードである。ただし、クラスタc3については、vは、ノード102そのものである。また、mは初期状態のグラフのエッジ数、wuvはノードu、v間のエッジの重み、d(u)およびd(v)はそれぞれノードu、vの重み付き次数である。
分類部136は、各スレッドで、抽出部135によって分類先が抽出されるたびに、分類先に関する情報が他スレッドによって所定の状態に変更されているか否かを判定し、変更されていないと判定した場合、選択ノードと分類先を同一のクラスタに分類する。
分類部136は、下記の一連の処理によって分類を行う。まず、抽出部135によって抽出された分類先には、他スレッドで実行される変更部133によって変更禁止マークが付けられている場合があるため、分類部136は、分類先に変更禁止マークが付けられているか否かを判定する。そして、分類部136は、分類先に変更禁止マークが付けられていない場合、選択ノードを当該分類先のクラスタのメンバに追加する。そして、分類部136は、選択ノードのラベルをメンバとして追加されたクラスタと同じラベルに変更し、分類を完了する。
このとき、分類部136は、変更禁止マークが付けられているか否かの判定、および選択ノードのクラスタのメンバへの追加をアトミックな処理によって行う。例えば、分類部136は、CAS(Compare And Swap)命令によって、選択ノードに関する情報が変更されているか否かを判定し、変更されていないと判定した場合、選択ノードを分類先と同一のクラスタのメンバに追加する。
図4を用いて、ノードの分類およびノードの集約について説明する。図4は、ノードの分類およびノードの集約について説明するための図である。例えば、図4の(a)におけるノード202、301、302および401〜403は、既に選択部132によって選択ノードとして選択されたノードである。
図4の(a)に示すように、まず、選択部132は、ノード101を選択ノードとして選択する。そして、変更部133は、ノード101をクラスタとみなし、変更禁止マークを付ける。このとき、ノード101とクラスタが同一であるノードは、ノード101以外に存在しないため、集約部134は集約を行わない。そして、抽出部135は、ノード101に隣接するクラスタc1〜c4の中から、ノード101が同じクラスタに分類された場合に、モジュラリティの向上量が最大となるクラスタを抽出する。図4の(a)の例では、抽出部135は、クラスタc3を抽出することとする。
図4の(b)に示すように、分類部136は、クラスタc3に変更禁止マークが付けられていない場合、ノード101をクラスタc3に分類する。次に、図4の(c)に示すように、選択部132は、ノード102を選択ノードとして選択する。そして、変更部133は、ノード102のクラスタc3に変更禁止マークを付ける。このとき、図4の(d)に示すように、集約部134は、クラスタc3のノードをノード102に集約する。そして、抽出部135は、ノード102に隣接するクラスタc1、c2、c4、c5の中から、ノード101が同じクラスタに分類された場合に、モジュラリティの向上量が最大となるクラスタを抽出する。図4の(d)の例では、抽出部135は、クラスタc4を抽出することとする。
図4の(e)に示すように、分類部136は、クラスタc4に変更禁止マークが付けられていない場合、ノード102をクラスタc4に分類する。そして、最終的に、図4の(f)に示すクラスタリング結果が得られる。なお、抽出部135によって計算されるモジュラリティの向上量は、0以下になる場合がある。その場合、抽出部135は分類先の抽出を行わないため、分類部136による選択ノードの分類は行われない。例えば、図4の(f)の例では、ノード103が選択された場合に、クラスタc4のノード、すなわちノード103をクラスタc1およびc2のいずれに分類したとしても、モジュラリティが向上しないことが考えられる。
[第1の実施形態の処理]
図5を用いて、クラスタリング装置10の処理の流れについて説明する。図5は、第1の実施形態に係るクラスタリング装置の処理の流れの一例を示すフローチャートである。図5に示すように、クラスタリング装置10の割当部131は、入力されたグラフデータ20のノードを、N個のノード群V、V、…、Vに分割する(ステップS100)。このとき、割当部131は、分割したノード群をN個のスレッドのそれぞれに割り当てる。
次に、選択部132、変更部133、集約部134、抽出部135および分類部136は、N個のノード群の集約処理およびクラスタを示すラベル付けを各スレッドで並列に行う(ステップS110)。
ここで、図5のステップS110において、i個目のノード群Vに対して行われる処理を図6を用いて説明する。図6は、第1の実施形態に係るクラスタリング装置における各スレッドでの処理の流れの一例を示すフローチャートである。図6に示すように、ノード群Vが空でない場合(ステップS200、Yes)、選択部132は、ノード群Vから任意のノードuを選択する(ステップS210)。また、ノード群Vが空である場合(ステップS200、No)、クラスタリング装置10は処理を終了する。
そして、変更部133は、ノードuのクラスタCに変更禁止マークを付ける(ステップS220)。変更禁止マークによって、ノードuの処理中に他スレッドからクラスタCが変更されてしまうことが防止される。次に、集約部134は、クラスタCに含まれるノードをノードuへ集約する(ステップS230)。
抽出部135は、ノードuの隣接クラスタの中で最もモジュラリティ向上量が大きい隣接クラスタをCとおく(ステップS240)。なお、本実施形態では、集約タイミングの遅延により、各ノードにクラスタを示すラベルを付けた直後にノードを集約しないため、隣接クラスタの中には、1つのノードに集約されたノードで構成されるクラスタと、集約されていない複数のノードで構成されるクラスタの両方が含まれる。また、集約されていない複数のノードで構成されるクラスタについては、1つのノードに集約されたものと仮定してモジュラリティの向上量を計算する。
分類部136は、ノードuをクラスタCへ分類したときにモジュラリティが向上するか否かを判定する(ステップS250)。分類部136は、モジュラリティが向上しないと判定した場合(ステップS250、No)、ノード群Vからノードuを削除し(ステップS300)、クラスタCの変更禁止マークを除去し(ステップS310)、処理をステップS200へ戻す。なお、分類部136は、例えば、モジュラリティの向上量が0より大きい場合、モジュラリティが向上すると判定する。
分類部136は、モジュラリティが向上すると判定した場合(ステップS250、Yes)、「クラスタCに変更禁止マークがなければ、ノードuをクラスタCのメンバに追加」をアトミックに実行する(ステップS260)。そして、分類部136は、アトミックな変更に成功しなかった場合(ステップS270、No)、クラスタCの変更禁止マークを除去し(ステップS310)、処理をステップS200へ戻す。なお、アトミックな変更は、他スレッドの処理等により成功しない場合がある。
一方、分類部136は、アトミックな変更に成功した場合(ステップS270、Yes)、ノードuをクラスタCのノードと同じクラスタに分類するようなラベル付けを行う(ステップS280)。そして、分類部136は、ノード群Vからノードuを削除し(ステップS290)、処理をステップS200へ戻す。その後、ノード群Vの未選択のノードについて、さらに分類処理が行われる。
ここで、CPUにおいて、CAS命令で書き換え可能なデータの量は、16バイトまでに限られている場合がある。この場合、ロックを用いることなく、アトミックな処理をCAS命令によって実現するためには、クラスタのメンバの変更を16バイト以下の書き換えで実行できるようなデータ構造を採用する必要がある。
そこで、本実施形態では、クラスタのメンバを表すためのデータ構造として、図7に示すような、アトミック操作可能な単方向リスト構造を用いる(参考文献:Timothy L Harris. A Pragmatic Implementation of Non-blocking Linked-Lists. In Proceedings of the 15th Inter-national Conference on Distributed Computing, DISC '01,pages 300-314, London, UK, 2001. Springer-Verlag.)。図7は、クラスタのメンバリストのデータ構造の一例を示す図である。
図7に示すように、単方向リストの先頭を表すダミー要素(head)は、リストの次要素へのポインタ(next)と、変更禁止フラグ(is_readonly)とを持つ。また、後続の各リスト要素は、次要素へのポインタと、ノード識別子等任意の情報を持つ。headはクラスタを表し、後続の各リスト要素は当該クラスタのメンバであるノードを表している。また、変更部133は、変更禁止フラグを1にすることで、クラスタに対し変更禁止マークを付ける。
現在、パーソナルコンピュータやサーバ装置で一般的に採用されている、インテル社のx86−64アーキテクチャを想定すれば、ポインタは8バイトであり、変更禁止フラグは0(変更可)または1(変更禁止)を表せればよいことから、次要素へのポインタと変更禁止フラグを合わせても、クラスタのメンバ変更の際に書き換えられるデータの量は、CASで変更可能な16バイト以下とすることができる。
図7のデータ構造を用いた、図6のステップS260の処理について、図8を用いて説明する。図8は、第1の実施形態に係るクラスタリング装置における分類部の処理の流れの一例を示すフローチャートである。
図8に示すように、分類部136は、headのコピーを2つ作成し、それぞれを変数head_oldおよびhead_newとおく(ステップS400)。次に、分類部136は、新しいリスト要素のメモリ領域を確保し、確保したメモリ領域を変数elemとおく(ステップS410)。
分類部136は、変数head_oldとhead_newのis_readonlyに0を代入し、さらに変数head_newのnextに変数elemのアドレスを代入する(ステップS420)。そして、分類部136は、変数elemに、クラスタに追加されるノードのノード識別子等の情報を設定し、さらにnextに変数head_oldのnextの値を代入する(ステップS430)。
ここで、分類部136は、「もしhead=head_oldならhead_newを代入」をCAS命令でアトミックに実行する(ステップS440)。このとき、head_oldはheadのコピーであるため、headのis_readonlyが他スレッドで実行される変更部133によって1にされていなければ、head=head_oldが成り立つ。一方、headのis_readonlyが他スレッドで実行される変更部133によって1にされている場合、head=head_oldは成り立たない。
[第1の実施形態の効果]
入力部11は、複数のノードを有するグラフデータの入力を受け付ける。また、割当部131は、複数のノードをN個の群に分割し、N個の群のそれぞれに、処理を実行する単位であるN個のスレッドの各スレッドを割り当てる。また、選択部132は、各スレッドで、割当部131によって割り当てられた群に含まれるノードから所定の順番でノードを選択する。また、変更部133は、各スレッドで、選択部132によってノードが選択されるたびに、選択部132によって選択されたノードである選択ノードに関する情報を所定の状態に変更する。また、抽出部135は、各スレッドで、変更部133によって選択ノードに関する情報が変更されるたびに、選択ノードに隣接するノードまたはクラスタの中から、選択ノードと同じクラスタに分類された場合にクラスタリング処理結果の精度を表すモジュラリティが最大となるノードまたはクラスタである分類先を抽出する。また、分類部136は、各スレッドで、抽出部135によって分類先が抽出されるたびに、分類先に関する情報が他スレッドによって所定の状態に変更されているか否かを判定し、変更されていないと判定した場合、選択ノードと分類先を同一のクラスタに分類する。また、集約部134は、各スレッドで、分類部136によって分類されたノードのうち、クラスタが同一である複数のノードを、1つのノードに集約する。
これにより、グラフデータに対し、高速かつ処理結果のモジュラリティが大きいクラスタリングを行うことができる。すなわち、ノードを複数のノード群に分割し、マルチスレッドによる処理が行われるため、処理が高速になる。また、各ノードの分類先のクラスタは、同一の群のノードで構成されている必要がないため、同一の群の中でのみクラスタリングを行う場合と比べて、モジュラリティが大きくなる。
ここで、図9を用いて、従来のグラフ分割による並列クラスタリングの問題点について説明する。図9は、モジュラリティが小さいクラスタリングが行われる場合の例について説明する図である。図9の(a)に示すようなグラフに対してクラスタリングを行う場合、図9の(b)のようなクラスタリング結果となった場合にモジュラリティが大きくなると考えられる。しかしながら、従来の手法により、図9の(c)に示すような部分グラフに群分けがされた場合、図9の(d)のようなモジュラリティの小さいクラスタリング結果が得られる。従来の手法では、例えば、同じ群に含まれるノードuとノードvを、他の群のクラスタに含めることができない。
これに対し、本実施形態の抽出部135は、群とは無関係に、選択ノードに隣接するノードまたはクラスタの中から分類先を抽出するため、従来の手法と比べてモジュラリティの大きいクラスタリング結果を得ることができる。
また、従来の逐次ノード集約によるクラスタリング、およびグラフ分割による並列クラスタリングを単純に合わせた手法、すなわち、並列処理により群ごとに逐次ノード集約によるクラスタリングを行う手法が考えられる。しかしながら、このような手法には、並列処理を行うスレッドが同じノードに対する処理を行おうとして、衝突が発生するという問題がある。この問題に対して、処理対象のノードにロックをかけておくことが考えられるが、ロックによって同時に処理を進めることができないスレッドが発生し、処理の並列度が低下してしまう。このため、ロックをかける方法は、CPUのコア数の増加に対する性能向上率、すなわちスケーラビリティが低い。
これに対し、本実施形態の分類部136は、処理対象のノードに関する情報が変更されているか否かを判定したうえで変更を確定する楽観的並列処理による処理を行っているため、ロックによる並列度の低下を発生させない。
また、集約部134は、変更部133によって選択ノードに関する情報が変更された後、かつ抽出部135によって分類先が抽出される前に、選択ノードと、選択ノードと分類されたクラスタが同一であるノードとを1つのノードに集約する。このように、集約部134は、分類部136による分類の直後ではなく、分類が行われたノードが選択ノードとして選択された際に集約を行っている。これによって、分類部136におけるアトミックな処理による処理量を少なくすることができる。
また、分類部136は、CAS命令によって、選択ノードに関する情報が変更されているか否かを判定し、変更されていないと判定した場合、選択ノードを分類先と同一のクラスタのメンバに追加することで分類を行う。このように、分類部136は、CAS命令によって、アトミックな処理を実現することができる。また、分類部136はノードの集約を行わないため、書き換え可能なデータが16バイトまでに限定されているCAS命令であっても処理の実行が可能となる。
出力部12は、分類部136によって複数のノードが分類されたクラスタを示す情報を出力する。このように、クラスタリング結果に例えばエッジ等に関する情報を含めないようにすることで、クラスタリング結果のデータ量を小さくすることができる。
[システム構成等]
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行われる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
[プログラム]
一実施形態として、クラスタリング装置は、パッケージソフトウェアやオンラインソフトウェアとして上記のクラスタリングを実行するクラスタリングプログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、上記のクラスタリングプログラムを情報処理装置に実行させることにより、情報処理装置をクラスタリング装置として機能させることができる。ここで言う情報処理装置には、デスクトップ型またはノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やPHS(Personal Handyphone System)等の移動体通信端末、さらには、PDA(Personal Digital Assistant)等のスレート端末等がその範疇に含まれる。
また、クラスタリング装置は、ユーザが使用する端末装置をクライアントとし、当該クライアントに上記のクラスタリングに関するサービスを提供するサーバ装置として実装することもできる。例えば、クラスタリング装置は、グラフデータを入力とし、クラスタリング結果を出力とするクラスタリングサービスを提供するサーバ装置として実装される。この場合、クラスタリング装置は、Webサーバとして実装することとしてもよいし、アウトソーシングによって上記のクラスタリングに関するサービスを提供するクラウドとして実装することとしてもかまわない。
図10は、プログラムが実行されることにより、クラスタリング装置が実現されるコンピュータの一例を示す図である。コンピュータ1000は、例えば、メモリ1010、CPU1020を有する。また、コンピュータ1000は、ハードディスクドライブインタフェース1030、ディスクドライブインタフェース1040、シリアルポートインタフェース1050、ビデオアダプタ1060、ネットワークインタフェース1070を有する。これらの各部は、バス1080によって接続される。また、CPU1020は、複数のスレッドで処理の実行が可能なCPUである。CPU1020は、例えば、複数のCPUで構成されるマルチCPUや、複数のコアを有するマルチコアCPUである。
メモリ1010は、ROM(Read Only Memory)1011およびRAM(Random Access Memory)1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1100に挿入される。シリアルポートインタフェース1050は、例えばマウス1110、キーボード1120に接続される。ビデオアダプタ1060は、例えばディスプレイ1130に接続される。
ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、クラスタリング装置の各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール1093として実装される。プログラムモジュール1093は、例えばハードディスクドライブ1090に記憶される。例えば、クラスタリング装置における機能構成と同様の処理を実行するためのプログラムモジュール1093が、ハードディスクドライブ1090に記憶される。なお、ハードディスクドライブ1090は、SSD(Solid State Drive)により代替されてもよい。
また、上述した実施形態の処理で用いられる設定データは、プログラムデータ1094として、例えばメモリ1010やハードディスクドライブ1090に記憶される。そして、CPU1020が、メモリ1010やハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して実行する。
なお、プログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、プログラムモジュール1093およびプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール1093およびプログラムデータ1094は、他のコンピュータから、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
10 クラスタリング装置
11 入力部
12 出力部
13 制御部
14 記憶部
20 グラフデータ
21 クラスタリング結果
101、102、103、201、202、203、301、302、303、401、402、403 ノード
131 割当部
132 選択部
133 変更部
134 集約部
135 抽出部
136 分類部
c1、c2、c3、c4、c5 クラスタ
t1、t2、t3、t4 スレッド

Claims (6)

  1. 複数のノードを有するグラフデータの入力を受け付ける入力部と、
    前記複数のノードをN個(Nは2以上の整数)の群に分割し、前記N個の群のそれぞれに、処理を実行する単位であるN個のスレッドの各スレッドを割り当てる割当部と、
    前記各スレッドで、前記割当部によって割り当てられた群に含まれるノードから所定の順番でノードを選択する選択部と、
    前記各スレッドで、前記選択部によってノードが選択されるたびに、前記選択部によって選択されたノードである選択ノードに関する情報を所定の状態に変更する変更部と、
    前記各スレッドで、前記変更部によって前記選択ノードに関する情報が変更されるたびに、前記選択ノードに隣接するノードまたはクラスタの中から、前記選択ノードと同じクラスタに分類された場合にクラスタリング処理結果の精度を表すモジュラリティが最大となるノードまたはクラスタである分類先を抽出する抽出部と、
    前記各スレッドで、前記抽出部によって前記分類先が抽出されるたびに、前記分類先に関する情報が他スレッドによって前記所定の状態に変更されているか否かを判定し、変更されていないと判定した場合、前記選択ノードと前記分類先を同一のクラスタに分類する分類部と、
    前記各スレッドで、前記分類部によって分類されたノードのうち、クラスタが同一である複数のノードを、1つのノードに集約する集約部と、
    を有することを特徴とするクラスタリング装置。
  2. 前記集約部は、前記変更部によって前記選択ノードに関する情報が変更された後、かつ前記抽出部によって前記分類先が抽出される前に、前記選択ノードと、前記選択ノードと分類されたクラスタが同一であるノードとを1つのノードに集約することを特徴とする請求項1に記載のクラスタリング装置。
  3. 前記分類部は、CAS命令によって、前記選択ノードに関する情報が変更されているか否かを判定し、変更されていないと判定した場合、前記選択ノードを前記分類先と同一のクラスタのメンバに追加することで分類を行うことを特徴とする請求項2に記載のクラスタリング装置。
  4. 前記分類部によって前記複数のノードが分類されたクラスタを示す情報を出力する出力部をさらに有することを特徴とする請求項1から3のいずれか1項に記載のクラスタリング装置。
  5. クラスタリング装置で実行されるクラスタリング方法であって、
    複数のノードを有するグラフデータの入力を受け付ける入力工程と、
    前記複数のノードをN個の群に分割し、前記N個の群のそれぞれに、処理を実行する単位であるN個のスレッドの各スレッドを割り当てる割当工程と、
    前記各スレッドで、前記割当工程によって割り当てられた群に含まれるノードから所定の順番でノードを選択する選択工程と、
    前記各スレッドで、前記選択工程によってノードが選択されるたびに、前記選択工程によって選択されたノードである選択ノードに関する情報を所定の状態に変更する変更工程と、
    前記各スレッドで、前記変更工程によって前記選択ノードに関する情報が変更されるたびに、前記選択ノードに隣接するノードまたはクラスタの中から、前記選択ノードと同じクラスタに分類された場合にクラスタリング処理結果の精度を表すモジュラリティが最大となるノードまたはクラスタである分類先を抽出する抽出工程と、
    前記各スレッドで、前記抽出工程によって前記分類先が抽出されるたびに、前記分類先に関する情報が他スレッドによって前記所定の状態に変更されているか否かを判定し、変更されていないと判定した場合、前記選択ノードと前記分類先を同一のクラスタに分類する分類工程と、
    前記各スレッドで、前記分類工程によって分類されたノードのうち、クラスタが同一である複数のノードを、1つのノードに集約する集約工程と、
    を含んだことを特徴とするクラスタリング方法。
  6. コンピュータを、請求項1に記載のクラスタリング装置として機能させるためのクラスタリングプログラム。
JP2016095846A 2016-05-12 2016-05-12 クラスタリング装置、クラスタリング方法およびクラスタリングプログラム Active JP6638919B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016095846A JP6638919B2 (ja) 2016-05-12 2016-05-12 クラスタリング装置、クラスタリング方法およびクラスタリングプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016095846A JP6638919B2 (ja) 2016-05-12 2016-05-12 クラスタリング装置、クラスタリング方法およびクラスタリングプログラム

Publications (2)

Publication Number Publication Date
JP2017204161A true JP2017204161A (ja) 2017-11-16
JP6638919B2 JP6638919B2 (ja) 2020-02-05

Family

ID=60322948

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016095846A Active JP6638919B2 (ja) 2016-05-12 2016-05-12 クラスタリング装置、クラスタリング方法およびクラスタリングプログラム

Country Status (1)

Country Link
JP (1) JP6638919B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019153309A (ja) * 2018-03-05 2019-09-12 株式会社アールティ 画像処理装置、ビンピッキングシステム、画像処理方法、画像処理プログラム
JP2020101893A (ja) * 2018-12-20 2020-07-02 ヤフー株式会社 情報処理装置、情報処理方法、及び情報処理プログラム
JP7077387B1 (ja) 2020-11-25 2022-05-30 ヤフー株式会社 情報処理装置、情報処理方法、及び情報処理プログラム
JP2022083920A (ja) * 2020-11-25 2022-06-06 ヤフー株式会社 情報処理装置、情報処理方法、及び情報処理プログラム

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019153309A (ja) * 2018-03-05 2019-09-12 株式会社アールティ 画像処理装置、ビンピッキングシステム、画像処理方法、画像処理プログラム
JP7373700B2 (ja) 2018-03-05 2023-11-06 株式会社アールティ 画像処理装置、ビンピッキングシステム、画像処理方法、画像処理プログラム、制御方法及び制御プログラム
JP2020101893A (ja) * 2018-12-20 2020-07-02 ヤフー株式会社 情報処理装置、情報処理方法、及び情報処理プログラム
JP7077387B1 (ja) 2020-11-25 2022-05-30 ヤフー株式会社 情報処理装置、情報処理方法、及び情報処理プログラム
JP2022083920A (ja) * 2020-11-25 2022-06-06 ヤフー株式会社 情報処理装置、情報処理方法、及び情報処理プログラム
JP2022083919A (ja) * 2020-11-25 2022-06-06 ヤフー株式会社 情報処理装置、情報処理方法、及び情報処理プログラム
JP7109522B2 (ja) 2020-11-25 2022-07-29 ヤフー株式会社 情報処理装置、情報処理方法、及び情報処理プログラム

Also Published As

Publication number Publication date
JP6638919B2 (ja) 2020-02-05

Similar Documents

Publication Publication Date Title
EP3786795A1 (en) Memory allocation method and apparatus for neural network
JP6638919B2 (ja) クラスタリング装置、クラスタリング方法およびクラスタリングプログラム
US11349824B2 (en) Block sequencing method and system based on tree-graph structure, and data processing terminal
JP2010092222A (ja) 更新頻度に基づくキャッシュ機構
JP2021533499A (ja) 不均衡標本データの前処理方法、装置及びコンピュータ機器
CN114416310A (zh) 一种多处理器负载均衡方法、计算设备及存储介质
CN115391023A (zh) 多任务容器集群的计算资源优化方法及装置
CN111767023A (zh) 数据排序方法和数据排序系统
EP4012573A1 (en) Graph reconstruction method and apparatus
CN114594954A (zh) 一种代码优化方法、装置、计算设备及计算机存储介质
CN111625367A (zh) 一种动态调整文件系统读写资源的方法
US20130031048A1 (en) Data partitioning apparatus and data partitioning method
CN113672375A (zh) 资源分配预测方法、装置、设备及存储介质
JP6581155B2 (ja) 不要ファイル検出装置、不要ファイル検出方法および不要ファイル検出プログラム
CN109800775B (zh) 文件聚类方法、装置、设备及可读介质
WO2015143708A1 (zh) 后缀数组的构造方法及装置
CN112130977B (zh) 一种任务调度方法、装置、设备及介质
CN112764935B (zh) 大数据处理方法、装置、电子设备及存储介质
JP6285850B2 (ja) プロセスマイグレーション方法及びクラスタシステム
JP2021018711A (ja) タスク実行管理装置、タスク実行管理方法、および、タスク実行管理プログラム
US20230283570A1 (en) Resource allocation apparatus and allocating resource method
US20240020154A1 (en) Management device, arithmetic processing device, and load distribution method and computer-readable recording medium storing program of arithmetic processing device
JP6676590B2 (ja) レイヤ最適化装置、レイヤ最適化方法およびレイヤ最適化プログラム
US11481130B2 (en) Method, electronic device and computer program product for processing operation commands
WO2023015567A1 (zh) 任务调度架构和方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20160513

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180724

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20180724

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190702

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190628

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190826

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191210

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191212

R150 Certificate of patent or registration of utility model

Ref document number: 6638919

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250