(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025008642
(43)【公開日】2025-01-20
(54)【発明の名称】クラスタ分析装置、および、クラスタ分析方法
(51)【国際特許分類】
G06F 18/23213 20230101AFI20250109BHJP
【FI】
G06F18/23213
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2023110975
(22)【出願日】2023-07-05
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001807
【氏名又は名称】弁理士法人磯野国際特許商標事務所
(72)【発明者】
【氏名】高畑 宜史
(72)【発明者】
【氏名】友部 修
(72)【発明者】
【氏名】足立 昌宏
(57)【要約】
【課題】入力条件の精度に影響されず、高い出力精度のクラスタを出力可能な非階層クラスタ分析を提供すること。
【解決手段】クラスタ分析装置100のCPU13は、各回ランダムに設定した重心初期位置を第1入力条件として、複数回の非階層クラスタ分析を実行することで、複数のランダムクラスタを取得し、複数のランダムクラスタに共通して所属するデータ点群をもとに共通クラスタを形成し、その共通クラスタの数と、各共通クラスタに所属するデータ点群の重心初期位置とを第2入力条件として作成し、作成した第2入力条件をもとに非階層クラスタ分析を実行することで取得した出力クラスタを出力する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
クラスタ分析装置は、データ点群をクラスタに分類する非階層クラスタ分析を実行する処理部を有しており、
前記処理部は、
各回ランダムに設定した重心初期位置を第1入力条件として、複数回の前記非階層クラスタ分析を実行することで、複数の第1クラスタを取得し、
前記複数の第1クラスタに共通して所属する前記データ点群をもとに共通クラスタを形成し、その共通クラスタの数と、前記各共通クラスタに所属する前記データ点群の重心初期位置とを第2入力条件として作成し、
作成した前記第2入力条件をもとに前記非階層クラスタ分析を実行することで取得した第2クラスタを出力することを特徴とする
クラスタ分析装置。
【請求項2】
前記処理部は、前記非階層クラスタ分析として、k-means法を用いたクラスタリングを実行することを特徴とする
請求項1に記載のクラスタ分析装置。
【請求項3】
前記処理部は、前記複数の第1クラスタから前記共通クラスタを形成する処理において、前記複数の第1クラスタ間の類似度が所定値よりも低い場合には、その複数の第1クラスタ間の前記共通クラスタを形成対象から除外することを特徴とする
請求項1に記載のクラスタ分析装置。
【請求項4】
前記処理部は、母集団の中心極限定理から母平均の信頼区間を用いることで、前記複数の第1クラスタ間の類似度を計算することを特徴とする
請求項3に記載のクラスタ分析装置。
【請求項5】
クラスタ分析装置は、データ点群をクラスタに分類する非階層クラスタ分析を実行する処理部を有しており、
前記処理部は、
各回ランダムに設定した重心初期位置を第1入力条件として、複数回の前記非階層クラスタ分析を実行することで、複数の第1クラスタを取得するステップと、
前記複数の第1クラスタに共通して所属する前記データ点群をもとに共通クラスタを形成し、その共通クラスタの数と、前記各共通クラスタに所属する前記データ点群の重心初期位置とを第2入力条件として作成するステップと、
作成した前記第2入力条件をもとに前記非階層クラスタ分析を実行することで取得した第2クラスタを出力するステップとを実行することを特徴とする
クラスタ分析方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、クラスタ分析装置、および、クラスタ分析方法に関する。
【背景技術】
【0002】
クラスタ分析は、複数のサンプル(データ点群)が与えられると、類似性を持った集合(クラスタ)に分類する手法であり、ビックデータの解析などに有用である。クラスタ分析の手法は、以下の2種類が代表的である。
・階層クラスタ分析は、データ点群から最も近いデータ同士でクラスタを形成し、徐々にクラスタの数を少なくしていく手法である。
・非階層クラスタ分析は、最終的なクラスタ数を決めてから、自動的にグルーピングを行う手法である。
【0003】
非階層クラスタ分析の1つであるk-means法を用いたクラスタリング(以下「k-meansクラスタリング」)を用いる場合は、分類後のクラスタ数と、各クラスタの重心初期位置(以下「重心初期位置」)とが入力条件(初期条件)として指定される。また、特許文献1には、クラスタを構成するデータ数の下限値のみを入力条件として指定するクラスタ分析装置が記載されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
k-meansクラスタリングなどの非階層クラスタ分析は、入力条件の良し悪しによって、出力されるクラスタの精度が大きく変動する。よって、ユーザは、個別のデータ点群に適した入力条件を試行錯誤で設定する手間がかかっていた。
【0006】
図13は、k-meansクラスタリングの対象となるデータ点群が配置されたデータ空間の説明図である。
データ点群300は、黒丸で図示する各データ点が、データ空間内に点在する集合体である。
【0007】
図14は、
図13のデータ点群300に対するk-meansクラスタリングの結果の第1例を示す説明図である。
クラスタ数=3の入力条件に従い、クラスタリング結果310のデータ点群を構成する各データ点は、各クラスタ311,312,313のいずれかに含まれる。また、入力条件として指定された各クラスタ重心の重心初期位置311H,312H,313Hが、互いにほぼ等距離の間隔で適切な位置である。
よって、重心初期位置311Hから形成されるクラスタ311と、重心初期位置312Hから形成されるクラスタ312と、重心初期位置313Hから形成されるクラスタ313とは、それぞれクラスタ間でのデータ点数のバラツキが少なく、良好な結果と言える。
【0008】
図15は、
図13のデータ点群300に対するk-meansクラスタリングの結果の第2例を示す説明図である。
クラスタ数=3の入力条件に従い、クラスタリング結果320のデータ点群を構成する各データ点は、各クラスタ321,322,323のいずれかに含まれる。しかし、入力条件として指定された各クラスタ重心の重心初期位置321H,322H,323Hの配置に偏りがあり、重心初期位置322H,323H間の距離が短すぎる。
よって、クラスタ321はデータ数が多すぎる一方、クラスタ322はデータ数が少ないので、不良な結果と言える。
【0009】
このように、k-meansクラスタリングという同じ手法を用いても出力精度がばらつくので、その入力条件の精度に精度されないような非階層クラスタ分析の手法が求められる。しかし、従来のk-meansクラスタリングでは、各クラスタの重心初期位置を入力条件にする必要上、入力条件の精度に左右されてしまう。
また、特許文献1の手法では、各クラスタの重心初期位置は入力条件として求められないが、代わりにクラスタを構成するデータ数の下限値を入力条件にする必要上、入力条件の精度に左右されてしまう。例えば、入力条件であるデータ数の下限値よりも1つ少ないクラスタの個数が多く形成できるようなデータ点群では、うまくクラスタを形成できない。
【0010】
そこで、本発明は、入力条件の精度に影響されず、高い出力精度のクラスタを出力可能な非階層クラスタ分析を提供することを、主な課題とする。
【課題を解決するための手段】
【0011】
上記課題を解決するために、本発明のクラスタ分析装置は、以下の特徴を有する。
本発明は、クラスタ分析装置が、データ点群をクラスタに分類する非階層クラスタ分析を実行する処理部を有しており、
前記処理部が、
各回ランダムに設定した重心初期位置を第1入力条件として、複数回の前記非階層クラスタ分析を実行することで、複数の第1クラスタを取得し、
前記複数の第1クラスタに共通して所属する前記データ点群をもとに共通クラスタを形成し、その共通クラスタの数と、前記各共通クラスタに所属する前記データ点群の重心初期位置とを第2入力条件として作成し、
作成した前記第2入力条件をもとに前記非階層クラスタ分析を実行することで取得した第2クラスタを出力することを特徴とする。
その他の手段は、後記する。
【発明の効果】
【0012】
本発明によれば、入力条件の精度に影響されず、高い出力精度のクラスタを出力可能な非階層クラスタ分析を提供することができる。
【図面の簡単な説明】
【0013】
【
図1】本実施形態に関する本発明に係るクラスタ分析装置の一例の概略を示すブロック図である。
【
図2】本実施形態に関するクラスタ分析装置のメイン処理を示すフローチャートである。
【
図3】本実施形態に関するランダムクラスタリングおよび出力クラスタリングの対象となるデータ点群が配置されたデータ空間の説明図である。
【
図4】比較例として、
図3のデータ点群に対するk-meansクラスタリングの結果を示す説明図である。
【
図5】本実施形態に関する
図3のデータ点群に対する1回目のランダムクラスタリングの結果を示す説明図である。
【
図6】本実施形態に関する
図3のデータ点群に対する2回目のランダムクラスタリングの結果を示す説明図である。
【
図7】本実施形態に関する
図5および
図6のランダムクラスタリングの結果をもとに、共通クラスタを形成した結果を示す説明図である。
【
図8】本実施形態に関する
図7の共通クラスタから作成された出力クラスタリングの入力条件および出力クラスタリングの処理の結果を示す説明図である。
【
図9】本実施形態に関するランダムクラスタリング処理の詳細を示すフローチャートである。
【
図10】本実施形態に関するランダムクラスタから共通クラスタを形成する処理の詳細を示すフローチャートである。
【
図11】本実施形態に関するの共通クラスタを用いた重心初期位置によるクラスタリング処理の詳細を示すフローチャートである。
【
図12】本実施形態に関するk-meansクラスタリングの処理を示すフローチャートである。
【
図13】k-meansクラスタリングの対象となるデータ点群が配置されたデータ空間の説明図である。
【
図14】
図13のデータ点群に対するk-meansクラスタリングの結果の第1例を示す説明図である。
【
図15】
図13のデータ点群に対するk-meansクラスタリングの結果の第2例を示す説明図である。
【発明を実施するための形態】
【0014】
以下、本発明の一実施形態を図面を用いて説明する。
【0015】
図1は、本発明に係るクラスタ分析装置100の一例の概略を示すブロック図である。クラスタ分析装置100は、以下の構成要素を備える。
・入力データ22を与えるための入力装置11。
・入力データ22やクラスタリング結果を保存する記録装置12。
・入力データ22のデータ点群をクラスタに分類する非階層クラスタ分析を実行するCPU13。
・クラスタリング結果を出力するための出力装置14。
・プログラムデータ21、入力データ22、計算結果データ23を保存するためのメモリ15。
【0016】
CPU13は、メモリ15に読み込んだプログラム(アプリケーションや、その略称のアプリとも呼ばれる)を実行することにより、処理部を制御する。そして、このプログラムは、通信回線を介して配布したり、CD-ROM等の記録媒体に記録して配布したりすることも可能である。
また、メモリ15内の各データ(プログラムデータ21、入力データ22、計算結果データ23)は、クラスタ分析装置100の内部の記録装置12に格納してもよいし、クラスタ分析装置100の外部の記憶部に格納してもよい。
【0017】
クラスタ分析装置100は、以下の(手順1)~(手順3)でクラスタリングを実行することで、ユーザからの入力パラメータの精度が低くても、出力されるクラスタリング結果の精度を向上させることとする。
(手順1)各回ランダムに設定した重心初期位置を第1入力条件として、複数回の非階層クラスタ分析(以下「ランダムクラスタリング」)を実行することで、複数のランダムクラスタを取得する。
(手順2)複数のランダムクラスタに共通して所属するデータ点群(以下「共通点群」)をもとに共通クラスタを形成し、その共通クラスタの数と、各共通クラスタに所属するデータ点群の重心初期位置とを第2入力条件として作成する。
(手順3)作成した第2入力条件をもとに非階層クラスタ分析(以下「出力クラスタリング」)を実行することで取得した出力クラスタを出力する。
つまり、ランダムクラスタリングは、出力クラスタリングの処理に必要なパラメータを用意するための準備処理(事前分類処理)である。
【0018】
なお、以下の説明では、CPU13は、ランダムクラスタリングおよび出力クラスタリングのための非階層クラスタ分析として、k-means法を用いたクラスタリングを実行する例を記載する。
これにより、計算量は少ないが入力条件の精度に出力結果が大きく影響される特性を有するk-means法を用いたクラスタリングに対して、前記した出力クラスタリングの入力条件をユーザから直接入力させる代わりに、クラスタ分析装置100が自動生成することで、弱点をカバーできる。
一方、クラスタ分析装置100は、ランダムクラスタリングおよび出力クラスタリングのうちの片方または両方について、k-meansクラスタリング以外のランダム性を伴う非階層型なクラスタリング手法を用いて計算してもよい。
【0019】
出力クラスタリングの入力条件として、クラスタ分析装置100は、ランダムクラスタから以下の処理を行うことで、パラメータを抽出する。
・共通クラスタのクラスタ数を、出力クラスタリングの入力条件であるクラスタ数とする。
・各共通クラスタに属する共通点群の重心位置を、出力クラスタリングの入力条件である重心初期位置とする。
【0020】
図2は、クラスタ分析装置100のメイン処理を示すフローチャートである。
フローチャートの各ステップにおける演算結果はメモリ15または記録装置12に保存され、後続のステップにおいて参照することが可能である。またフローチャートの各ステップの実行順序は、
図2で示した手順に限らず、記録装置12からデータを読み込むことでステップごとに独立して、手順を実行することが可能である。
【0021】
S11として、CPU13は、ランダムクラスタリングを複数回実行することで、複数のランダムクラスタを得る(詳細は
図9)。一例として事前分類回数N1=2回が入力された場合、ランダムクラスタリングを2回実行する。ランダムクラスタリングの実行回数は、多いほど出力クラスタの外れ値が減るが、出力クラスタの数も減る。
【0022】
S12として、CPU13は、S11によるランダムクラスタから共通点群を取り出し、その共通点群ごとに共通クラスタを形成する(詳細は
図10)。そして、CPU13は、共通クラスタから出力クラスタリングの入力条件を決定する。一例としてあるデータ点が2つのランダムクラスタに所属する場合、その所属する各ランダムクラスタの重心位置が所定距離以内(例えば、母平均の信頼区間)に含まれる場合は、共通点群とする。そして、共通点群ごとに、その共通点群が属する共通クラスタを形成する。
【0023】
S13として、CPU13は、S12で抽出された出力クラスタリングの入力条件を用いて出力クラスタリングを実行し(詳細は
図11)、その結果の出力クラスタを計算結果データ23として保存および出力する。
【0024】
以下、
図2のメイン処理について、データ空間を用いた具体例をもとに、
図3~
図8で説明する。
図3は、ランダムクラスタリングおよび出力クラスタリングの対象となるデータ点群が配置されたデータ空間の説明図である。
入力データ22のデータ点群200は、黒丸で図示する各データ点が、データ空間内に点在する集合体である。以下、説明をわかりやすくするために図示するデータ空間を2次元空間としたが、もちろんn次元空間(n≧1)にも適用可能である。
【0025】
図4は、比較例として、
図3のデータ点群200に対するk-meansクラスタリングの結果を示す説明図である。
クラスタを構成するデータ数の下限値=6として、特許文献1の手法を適用することで、4つのクラスタ211~214が出力される。ここで、クラスタ211は上側のデータ点群215は、下側のデータ点群と離れた位置にあり、さらに別のクラスタに分割することが期待される。しかし、データ点群215のデータ数=5なので、入力条件「データ数の下限値=6」を満たさないため、別のクラスタに分割できない。
一方、
図5~
図8で説明するクラスタ分析装置100が実行するクラスタ分析方法では、このようなデータ点群215でもクラスタにできる。
【0026】
図5は、
図3のデータ点群200に対する1回目のランダムクラスタリング(S11)の結果を示す説明図である。
CPU13は、入力条件であるクラスタ数N2=4つをもとに、4つのランダムな重心初期位置(図示では星印)を入力条件に設定する。CPU13は、これらの入力条件をもとに、k-meansクラスタリングを実行することで、4つのクラスタ221~224をクラスタリング結果220として出力する。今回は、データ空間の右上に重心初期位置が1つしか配置されなかったので、右上のクラスタ223がやや大きい範囲になってしまった。
【0027】
図6は、
図3のデータ点群200に対する2回目のランダムクラスタリング(S11)の結果を示す説明図である。
CPU13は、入力条件であるクラスタ数N2=4つをもとに、4つのランダムな(1回目とは異なる位置の)重心初期位置(図示では星印)を入力条件に設定する。CPU13は、これらの入力条件をもとに、k-meansクラスタリングを実行することで、4つのクラスタ231~234をクラスタリング結果230として出力する。今回は、4つの重心初期位置の配置が、データ空間内に適度に分散されており、各クラスタの範囲にばらつきが少ない良好な結果となった。
【0028】
図7は、
図5および
図6のランダムクラスタリングの結果をもとに、共通クラスタを形成した(S12)結果を示す説明図である。
図7では、クラスタリング結果220のクラスタ221~224を実線のだ円で図示し、クラスタリング結果230のクラスタ231~234を波線細線のだ円で図示する。CPU13は、クラスタリング結果220とクラスタリング結果230とで、各ランダムクラスタに共通で属する共通点群を抽出する。
例えば、データ空間左上の5つのデータ点群(共通クラスタ241に属するデータ点群)は、ともに、クラスタ221とクラスタ231とに属する共通点があるので、同じ共通クラスタ241に属する共通点群として抽出される。同様に、CPU13は、共通クラスタ242~245に属する各共通点群を抽出する。
【0029】
図8は、
図7の共通クラスタから作成された出力クラスタリングの入力条件および出力クラスタリングの処理(S13)の結果を示す説明図である。
CPU13は、共通クラスタ241に属する共通点群(データ空間左上の5つのデータ点群)から、出力クラスタリングの入力条件である重心初期位置241Hを求める。同様に、CPU13は、共通クラスタ242~245についても、重心初期位置242H~245Hを求める。また、CPU13は、共通クラスタ241~245の合計数=5を、出力クラスタリングの入力条件であるクラスタ数とする。
そして、CPU13は、計算した出力クラスタリングの入力条件をもとに、k-meansクラスタリングを実行することで、5つのクラスタ251~255をクラスタリング結果250として出力する。
これにより、
図4で説明したようなデータ点群215でもクラスタ251にできる。つまり、入力条件の精度に影響されず、高い出力精度のクラスタを出力可能な非階層クラスタ分析を提供できる。
【0030】
以下、
図9~
図12を参照して、
図2のメイン処理の詳細を説明する。
図9は、ランダムクラスタリング処理(
図2のS11)の詳細を示すフローチャートである。
S101として、CPU13は、入力条件として以下の各パラメータについて、入力装置11を介して設定する。各パラメータは入力装置11を用いてユーザが設定するだけでなく、記録装置12から予め設定した値を読み込むことも可能である。
・ランダムクラスタリングを行うための入力条件として、ランダムクラスタリングを行う回数を示す事前分類回数N1。
・ランダムクラスタリングを行うための入力条件として、各回のランダムクラスタリングで生成されるクラスタ数N2。
・各回のランダムクラスタリングで実行される、k-meansクラスタリング1回あたりの試行回数上限値N3。
【0031】
S102として、CPU13は、記録装置12からクラスタリングを実行する対象のデータ点群p[1]~p[N](ここでp[i]はi番目のデータ点、Nはデータ数)を読み込む。そして、CPU13は、入力データ22のデータ点群p[1]~p[N]から以下の標準化を行った結果のデータ点群P[1]~P[N]を入力データ22に保存する。
平均M=Σp[i]/N
分散S^2=Σ(p[i]-M)^2/N (ここでS^2はSの2乗)
データ点P[i]=(p[i]-M)/S
この標準化処理は、データの各次元の値の大小によってクラスタ重心からの距離に重み付けがなされないよう、読み込んだ各次元のデータに対し平均=0、分散=1となるように、データ値を変換する処理である。
【0032】
S103として、CPU13は、J回目のランダムクラスタリングを実行中であることを示すループ変数Jを、J=1で初期化する。
S104として、CPU13は、J回目の重心初期位置をランダムに設定する。ランダムな設定方法の一例としてデータ点群P[1]~P[N]からランダムにクラスタ数N2個のデータ点を選択し、重心初期位置とする。このとき重心初期位置を設定するための際の乱数は、ループ変数Jごとに変更可能である。
S105として、CPU13は、S104でランダムに設定した重心初期位置と、試行回数上限値N3とを引数に含めて
図12のk-meansクラスタリングを実行することで、クラスタ数N2個のランダムクラスタを得る。
【0033】
S106として、CPU13は、S105によるJ回目のクラスタリング結果として、以下を記録装置12に保存する。
・ループ変数J回目における「J」、および、そのJ回目におけるランダムクラスタリングにより生成された各ランダムクラスタのクラスタID。
・データ点群P[1]~P[N]の各データ点群P[i]が所属するクラスタID(例えば、データ点P[1]は、1回目にはA1のランダムクラスタに属し、2回目にはB2のランダムクラスタに属する)
・各ランダムクラスタに含まれるデータ点の個数N
・各ランダムクラスタに含まれるデータ点群の重心位置M=ΣP[i]/N
・クラスタ数N2個のランダムクラスタから計算される不偏分散S^2=Σ(P[i]-M)^2/(N-1)
【0034】
ここでクラスタIDとは、各ランダムクラスタ間を区別するためのIDである。例えば、クラスタID=「A1」は、J=1回目のランダムクラスタリングの結果を示す「A」と、その中の1番目のクラスタを示す「1」との組み合わせである。
同様に、クラスタID=「B2」は、J=2回目のランダムクラスタリングの結果を示す「B」と、その中の2番目のクラスタを示す「2」との組み合わせである。つまり、事前分類回数N1=2とし、クラスタ数N2=5とすると、「A1~A5」および「B1~B5」という合計10個(2×5=10)のクラスタIDが発行される。
【0035】
S107として、CPU13は、ループ変数Jが事前分類回数N1に到達した場合は
図9の処理を終了する。そうでない場合は、CPU13は、ループ変数Jを+1加算し(S108)、処理をS104に戻す。
【0036】
図10は、ランダムクラスタから共通クラスタを形成する処理(
図2のS12)の詳細を示すフローチャートである。
S201として、CPU13は、ランダムクラスタ間の類似度を判断するための類似度閾値N4を、入力手段を介して設定する。類似度閾値N4は、データ点群P[1]~P[N]のデータ数Nには依存しないパラメータである。
【0037】
S202として、CPU13は、S11のランダムクラスタリングの結果として、記録装置12から以下を読み込む。
・S101で設定された、ランダムクラスタリングの入力条件である事前分類回数N1と、クラスタ数N2。
・S106で記録装置12に保存された、各回のランダムクラスタリング結果。
【0038】
S211として、CPU13は、データ点群P[1]~P[N]のデータ点P[K]を1つずつ選択するためのループ変数Kを、K=1で初期化する。また、ここで、共通クラスタ数を示す共通クラスタ数カウンタを0に初期化する。
S212として、CPU13は、S202にて読み込んだ各回のランダムクラスタリング結果から、データ点[K]が所属するクラスタIDの組合せを取得する。一例として、データ点[K]が所属するクラスタIDの組合せ=A1、B2を取得する。
【0039】
S213として、CPU13は、S212にて取得したクラスタIDの組合せが計算結果データ23に登録済みであれば、S219に移動する。そうでない場合はクラスタIDの組合せを計算結果データ23に登録してS214に移動する。
【0040】
S214として、CPU13は、S212にて取得したクラスタIDの組合せ(A1、B2間)が類似するか否かを判定する。クラスタ間(A1、B2間)が類似しない(類似度が類似度閾値N4未満)なら(S214でNo)、クラスタ間(A1、B2間)に共通クラスタが存在しないものとして、S219に移動する。
つまり、CPU13は、複数のランダムクラスタから共通クラスタを形成する処理において、複数のランダムクラスタ間の類似度が所定値よりも低い場合には、その複数のランダムクラスタ間の共通クラスタを形成対象から除外する。
これにより、複数のランダムクラスタに共通する共通クラスタとして抽出されても、そのデータ数が極端に少ないなどのノイズとなるクラスタを適切に除外できる。
【0041】
S214でYesなら、クラスタ間に共通クラスタが存在するものとして、S215に移動する。
一例としてクラスタIDの組合せ(A1、B2間)の共通クラスタを共通クラスタCとし、以下の統計値を計算する。
・ランダムクラスタA1、B2の標本平均をMA1、MB2とする。ここで標本平均は、重心初期位置と等しく該当するクラスタに含まれるデータ点群P[i]とデータ数Nを用いてM=ΣP[i]/Nと表現できる。
・共通クラスタCの標本平均をMCとする。
・ランダムクラスタA1、B2の不偏分散をSA1^2、SB2^2とする。
【0042】
CPU13は、母集団の中心極限定理から母平均の信頼区間を用いることで、複数のランダムクラスタ間の類似度を計算する。
つまり、CPU13は、母集団の中心極限定理に則り、ランダムクラスタA1、B1に含まれるデータ数NA1、NB2とする。そして、以下の(判定式1)および(判定式2)をともに満たす場合(AND条件)に、S214でYesと判定し、ランダムクラスタA1、B2の両クラスタと優位に一致する共通クラスタCを新規に作成して(S215)、S216に移動する。
(判定式1) |MC-MA1|<=類似度閾値N4*SA1/sqrt(NA1)
(判定式2) |MC-MB2|<=類似度閾値N4*SB2/sqrt(NB2)
なお、sqrt(NA1)とは、NA1の平方根であり、「*」は乗算記号である。
または、CPU13は、複数のランダムクラスタ間の類似度を計算する場合に、データ空間におけるランダムクラスタ間の重複領域の広さが広いほど類似度を高くするなど、別の計算手法を用いてもよい。
【0043】
S216として、CPU13は、新規に作成した共通クラスタCの分により、共通クラスタ数カウンタを1加算し、その共通クラスタ数カウンタを計算結果データ23に登録する。
S217として、CPU13は、S215で新規に作成した共通クラスタの重心位置を算出し、計算結果データ23に登録する。一例として、共通クラスタCの重心位置M=Σ_{C}P[i]/N_{C}を計算する。ここでΣ_{C}P[i]は共通クラスタCに含まれるデータ点群P[i]の総和、N_{C}は共通クラスタCに含まれるデータ数を表す。
【0044】
S218として、CPU13は、ループ変数K=データ数Nに到達したか否かを判定する。S218でYesとなり、データ点群P[1]~P[N]の全データ点に対してS212からS217までのループ処理を終えた場合は、S221に移動する。そうでない場合はS219に移動する。
S219として、CPU13は、ループ変数Kを+1加算する。
【0045】
S221として、CPU13は、計算結果データ23から、S216で計算した共通クラスタ数カウンタの最新値と、S217で計算した各共通クラスタの重心位置とを、出力クラスタリングの入力条件として記録装置12に保存する。
このように、CPU13は、複数回のランダムクラスタリング結果の共通項(共通要素)を用いて、出力クラスタリングの入力条件を算出する。また、S212からS217までのループ処理で説明した共通クラスタおよびそのパラメータの算出方法は、あくまで一例であり、前記の手順に限定されるものでは無い。
【0046】
図11は、S13の共通クラスタを用いた重心初期位置によるクラスタリング処理(
図2のS13)の詳細を示すフローチャートである。
S301として、CPU13は、各回の出力クラスタリングで実行される、k-meansクラスタリング1回あたりの試行回数上限値N3を入力装置11を介して設定する。試行回数上限値N3は入力装置11を用いてユーザが設定するだけでなく、記録装置12から予め設定した値を読み込むことも可能である。
【0047】
S302として、CPU13は、記録装置12から出力クラスタリングを実行する対象のデータ点群p[1]~p[N]を読み込み、S102と同様に、データ点群P[1]~P[N]へと標準化を行った結果を入力データ22に登録する。
【0048】
S303として、CPU13は、S221で保存された出力クラスタリングの入力条件(クラスタ数および重心初期位置)を読み込み、S304の出力クラスタリングの入力条件として設定する。
S304として、CPU13は、S303の入力条件を引数に含めて、
図12のk-meansクラスタリングを実行することで、入力条件で設定されたクラスタ数の出力クラスタを得る。
【0049】
S305として、CPU13は、S304の出力クラスタリングの結果として、データ点群P[1]~P[N]それぞれが所属する出力クラスタのクラスタIDと、各出力クラスタの重心位置とを、計算結果データ23として記録装置12に保存する。
S306として、CPU13は、S305で保存された計算結果データ23を、出力装置14に出力する。
【0050】
図12は、S105およびS304から呼び出されるk-meansクラスタリングの処理を示すフローチャートである。
S401として、CPU13は、
図12の呼出時に通知された引数から、クラスタ数N2と、N2個の重心初期位置Mと、試行回数上限値N3とを、今回のk-meansクラスタリングの入力条件として設定する。
S402として、CPU13は、L回目のk-meansクラスタリングを実行中であることを示すループ変数L=1で初期化する。
S403として、CPU13は、各データ点P[i]と、各クラスタ重心M[j]との間の距離L[i][j]=√(P[i]-M[j])^2を算出する。
【0051】
S404として、CPU13は、各データ点P[i]に対し、距離L[i][j]が最も近いクラスタjに分類されるよう、各データ点P[i]の所属クラスタを設定する。
S405として、CPU13は、S404の結果として、各データの所属クラスタをk-meansクラスタリング結果として計算結果データ23に登録する。
【0052】
S406として、CPU13は、クラスタjに含まれるデータ数N[j]を用いて、各クラスタ重心M[j]=Σ_{j}P[i]/N[j]を更新する。
S407として、CPU13は、ループ変数Lが試行回数上限値N3に到達した場合は、処理を終了する。そうでない場合は、CPU13は、S408に処理を移行させる。
【0053】
S408として、CPU13は、クラスタリング結果が前回と一致(全てのデータの所属クラスタに変化がない)なら、処理を終了する。そうでない場合は、CPU13は、S409に処理を移行させる。なお、ループ変数L=1の場合、前回のk-meansクラスタリング結果が存在しないので、CPU13は、S409に処理を移行させる。
S409として、CPU13は、ループ変数Lを+1加算し、処理をS403に戻す。
【0054】
以上説明した本実施形態のクラスタ分析装置100は、非階層型な手法を用いたクラスタ分析について、ランダムクラスタリングなどの事前分類処理により、その後に実行される出力クラスタリングの入力条件を求めることとした。
クラスタ分析装置100は、入力データ22に対してランダムに設定した重心初期位置の入力条件に基づくランダムクラスタリングを複数回実行することで、複数のランダムクラスタに共通する共通クラスタを取得する。そして、クラスタ分析装置100は、共通クラスタから出力クラスタリングの入力条件を求め、出力クラスタリングを実行する。
【0055】
これにより、クラスタ分析装置100は、以下の効果が得られる。
(効果1)k-meansクラスタリング処理と、共通クラスタの算出処理とはともに計算量の小さいので、高速にクラスタリングを実行できる。
(効果2)共通クラスタの算出には、人間系による恣意的なパラメータを必要としない。そのため、データ数や次元数が変化した場合にも、その変化に追従するような高精度の入力条件を人間が用意する必要が無く、適切に計算された入力条件を用いることで出力クラスタリングの精度が向上する。
(効果3)ランダムクラスタリングの入力条件として人間が設定したクラスタ数N2の精度が悪くても、出力クラスタのクラスタ数は、N2から変化することもあるので、出力クラスタリングの精度が低下しない。
【0056】
一方、特許文献1では適切なクラスタ数及び重心初期位置を決定するにあたり、以下の(処理1)~(処理5)を実行する必要があり、k-meansクラスタリングの利点である計算量の低減効果が小さくなってしまう。
(処理1)データの並び替え
(処理2)データ点間距離の算出
(処理3)データ点間距離からの空間分割幅決定
(処理4)解析空間から小格子空間への分割
(処理5)小格子空間を用いたクラスタ中心位置の算出
しかし、本実施形態では、(効果1)で説明したように、計算量の低減効果が得られる。
【0057】
さらに、本発明は上述した各実施形態に限られるものではなく、特許請求の範囲に記載した本発明の要旨を逸脱しない限りにおいて、その他種々の応用例、変形例を取り得ることは勿論である。例えば、上述した各実施形態は本発明を分かりやすく説明するためにクラスタ分析装置100の構成を詳細かつ具体的に説明したものであり、必ずしも説明した全ての構成要素を備えるものに限定されない。また、ある実施形態の構成の一部を他の実施形態の構成要素に置き換えることが可能である。また、ある実施形態の構成に他の実施形態の構成要素を加えることも可能である。また、各実施形態の構成の一部について、他の構成要素の追加又は置換、削除をすることも可能である。
【0058】
また、上記の各構成、機能、処理部等は、それらの一部又は全部を、例えば集積回路で設計するなどによりハードウェアで実現してもよい。ハードウェアとして、FPGA(Field Programmable Gate Array)やASIC(Application Specific Integrated Circuit)などの広義のプロセッサデバイスを用いてもよい。
また、上述した実施形態にかかるクラスタ分析装置100の各構成要素は、それぞれのハードウェアがネットワークを介して互いに情報を送受信できるならば、いずれのハードウェアに実装されてもよい。また、ある処理部により実行される処理が、1つのハードウェアにより実現されてもよいし、複数のハードウェアによる分散処理により実現されてもよい。
【符号の説明】
【0059】
11 入力装置
12 記録装置
13 CPU
14 出力装置
15 メモリ
21 プログラムデータ
22 入力データ
23 計算結果データ
100 クラスタ分析装置
221~224,231~234 クラスタ(第1クラスタ)
241~245 共通クラスタ
251~255 クラスタ(第2クラスタ)