以下に、図面を参照して、本発明にかかるクラスタリング方法、クラスタリングプログラム、および情報処理装置の実施の形態を詳細に説明する。
(実施の形態にかかるクラスタリング方法の一実施例)
図1は、実施の形態にかかるクラスタリング方法の一実施例を示す説明図である。情報処理装置100は、クラスタリングを実行するコンピュータである。情報処理装置100は、例えば、サーバ、PC(Personal Computer)、ノートPC、タブレット端末、スマートフォン、ウェアラブル端末などである。
クラスタリングの技術は、画像処理、音声認識、自然言語処理、センサデータ処理、DNAのシーケンスマイニング、人の位置データ解析などのように、人工知能的な情報処理に用いられており、クラスタリングの最適化が求められる傾向がある。クラスタリングの技術は、例えば、Bags of Feature法による画像特徴量の生成や、生活傾向把握、生活音からの異変検出などに用いられている。また、クラスタリングの技術は、例えば、地震解析、建物内の人口分布解析などにも用いられている。
ここで、クラスタリングの技術としては、例えば、確率モデルであるノンパラメトリックベイズ法に基づいて、データの複雑さに応じてクラスタ数を自動的に決定するDP−means法を用いるものが考えられる。ノンパラメトリックベイズ法は、例えば、下記参考文献1を参照することができる。DP−means法は、例えば、上記非特許文献1を参照することができる。
参考文献1:上田, “ノンパラメトリックベイズ入門”, 情報処理学会研究報告 2009−CVIM−166, 2009年.
しかしながら、DP−means法を用いても、適切なクラスタリングを実行することが難しいことがある。
例えば、DP−means法では、クラスタに分類されたデータのまとまりのよさを評価する目的関数が最小化されるように、漸近的にクラスタ数を更新しつつクラスタの代表点のデータを更新し、データをクラスタに分類する。目的関数は、例えば、値が小さいほど、クラスタリングが適切であることを示している。目的関数は、例えば、クラスタ粒度パラメータを有する。クラスタ粒度パラメータは、クラスタとして許容する粒度を意味し、クラスタが含むデータの範囲を意味する。
DP−means法では、目的関数を最小化する際、クラスタ粒度パラメータに基づいて、クラスタ間の距離が一定以上離れるように複数のクラスタを作成するようにする性質がある。この性質により、比較的狭い範囲に複数のデータが存在する場合に、データを複数のクラスタに分類した方が好ましくても、1つのクラスタにまとめて分類してしまうことがあり、目的関数が最小値ではなくなってしまうことがある。
このため、クラスタリングにより分類した結果が、好ましくない解に収束してしまうことがある。好ましくない解は、例えば、目的関数が最小値ではなく、好ましい粒度のクラスタが作成されていない場合に対応する解である。好ましくない解は、例えば、局所解と呼ばれる。具体的には、人の位置データから人の位置分布を解析するために、新宿、原宿、六本木、多摩地方などの大きさのクラスタに位置データを分類したい場合であっても、東京、神奈川などの大きさのクラスタに分類してしまうことがある。
これに対し、クラスタ粒度パラメータを小さくして、粒度の比較的小さいクラスタにデータを分類するようにすることが考えられる。しかしながら、依然として、適切なクラスタリングを実行することが難しいことがある。例えば、外れ値のデータについて1つのクラスタを作成してしまうことがある。具体的には、東京都のほか、八丈島、父島、母島などのような大きさのクラスタに分類してしまうことがある。
これに対し、k−means法を用いて、1から順にクラスタ数を変動させながら目的関数の値を算出し、目的関数の値が増加する前のクラスタ数で、データをクラスタに分類する、Grid k−means法が考えられる。Grid k−means法は、例えば、上記非特許文献2を参照することができる。
しかしながら、Grid k−means法を用いても、適切なクラスタリングを実行することが難しいことがある。例えば、Grid k−means法を用いた場合には、下記の2つの問題点がある。
1点目の問題点は、クラスタリングにかかる計算量が増大化してしまうという問題点である。Grid k−means法では、クラスタ数をインクリメントしながらk−means法によりクラスタリングを実行することになる。このため、Grid k−means法では、クラスタ数の2乗オーダの計算量になり、分類するデータの数が多いほど、クラスタリングにかかる計算量や計算時間の増大化を招いてしまう。
具体的には、1回のk−means法でO(n・k・l)の計算量になるため、Grid k−means法で、クラスタ数をインクリメントしながらk−means法を繰り返すと、O(n・k2・l)の計算量になってしまう。nは、データ数である。kは、クラスタ数である。lは、繰り返し回数である。
2点目の問題点は、クラスタリングにより分類した結果が、好ましくない解に収束してしまうという問題点である。好ましくない解は、例えば、目的関数が最小値ではなく、一時的に極小値になった場合に対応する解である。好ましくない解は、例えば、局所解と呼ばれる。例えば、Grid k−means法では、クラスタ数を変動させる際、ランダムにクラスタを作成するため、クラスタの増加に伴って目的関数の値が単調減少するとは限らず、振動してしまう傾向がある。このため、Grid k−means法では、目的関数の値が最小値になる解に収束することが難しい。
このように、利用者が、粒度が小さいクラスタが作成され、かつ、外れ値についてクラスタが作成されないようにすることを求める場合であっても、クラスタリングにおいて局所解に収束してしまうことがある。このため、クラスタリングにおいて局所解に収束しにくい性質を実現することが求められる。
そこで、本実施の形態では、いずれかのクラスタを2つのクラスタに分割した方が好ましい場合に、他のクラスタを固定したまま、いずれかのクラスタを2つのクラスタに分割してデータを分類し直すことができるクラスタリング方法について説明する。これによれば、本実施の形態は、局所解になりにくいクラスタリングを実行することができる。
図1において、情報処理装置100は、複数のデータを含む1つのクラスタを、2つのクラスタに分割した方が好ましい場合に、1つのクラスタを2つのクラスタに分割し、複数のデータを分類し直すことを繰り返すことにより、クラスタリングの最適化を図る。
図1の例では、情報処理装置100は、例えば、座標空間110上の複数のデータが、第1クラスタds1と第2クラスタds2と第3クラスタds3とに分類されている場合に、いずれかのクラスタをさらに分割するか否かを判定する。第1クラスタds1は、代表点のデータとしてデータc1が設定されたクラスタである。第2クラスタds2は、代表点のデータとしてデータc2が設定されたクラスタである。第3クラスタds3は、代表点のデータとしてデータc3が設定されたクラスタである。
情報処理装置100は、いずれかのクラスタに属する複数のデータのいずれかのデータを選択する。情報処理装置100は、例えば、第2クラスタds2に属する複数のデータのいずれかのデータを選択する。これにより、情報処理装置100は、第1クラスタds1や第3クラスタds3を固定したまま、第2クラスタds2を2つのクラスタに分割する場合に、新たに作成されるクラスタの代表点のデータになりうるデータを選択することができる。
情報処理装置100は、選択したいずれかのデータを新たなクラスタの代表点のデータに設定し、複数のデータをクラスタと新たなクラスタとに分類した場合の目的関数の値が、分類前よりも評価が高いことを示すか否かを判定する。目的関数は、クラスタに分類されたデータのまとまりのよさを評価する。また、目的関数は、クラスタ数の増加を抑制するペナルティ項を有する。ペナルティ項は、例えば、利用者の操作入力に基づいて固定される。
情報処理装置100は、例えば、選択したいずれかのデータc4を、新たな第4クラスタds4の代表点のデータとして設定する。そして、情報処理装置100は、第2クラスタds2に分類された複数のデータを、第2クラスタds2と第4クラスタds4とに分類し直した場合の目的関数の値が、分類前よりも評価が高いことを示すか否かを判定する。これにより、情報処理装置100は、第2クラスタds2を2つのクラスタに分割した方が好ましいかを判定することができる。
情報処理装置100は、分類前よりも評価が高いことを示す場合、複数のデータをクラスタと新たなクラスタとに分類する。情報処理装置100は、例えば、分類前よりも評価が高いことを示す場合、第2クラスタds2に分類された複数のデータを、第2クラスタds2と第4クラスタds4とに分類し直す。これにより、情報処理装置100は、クラスタリングの最適化を図ることができる。結果として、情報処理装置100は、クラスタリングを利用する、画像処理、音声認識、自然言語処理、センサデータ処理、DNAのシーケンスマイニング、人の位置データ解析などの精度向上を図ることができる。
上述したように、DP−means法では、目的関数を最小化する際、クラスタ粒度パラメータに基づいて、クラスタ間の距離が一定以上離れるように複数のクラスタを作成するようにする性質がある。この性質により、比較的狭い範囲に複数のデータが存在する場合に、データを複数のクラスタに分類した方が好ましくても、1つのクラスタにまとめて分類してしまうことがある。一方で、情報処理装置100は、いずれかのクラスタを2つのクラスタに分割する方が好ましいか否かを、2つのクラスタにおけるクラスタ間の距離に関わらず判定することができる。このため、情報処理装置100は、比較的狭い範囲に複数のデータが存在する場合にも、クラスタリングの最適化を図ることができる。
また、上述したように、クラスタ粒度パラメータを小さくして、粒度の比較的小さいクラスタにデータを分類するようにした場合、外れ値のデータについて1つのクラスタを作成してしまうことがある。一方で、情報処理装置100は、クラスタを分割する際、クラスタに属する外れ値のデータを選択してしまっても、外れ値のデータを新たなクラスタの代表点のデータに設定することが好ましいか否かを判定することができる。このため、情報処理装置100は、外れ値のデータについてクラスタが作成されにくくし、クラスタリングの最適化を図ることができる。
また、上述したように、Grid k−means法では、クラスタリングにかかる計算量が増大化してしまう。一方で、情報処理装置100は、クラスタ粒度パラメータを変動させなくてもよいため、クラスタリングにかかる計算量の増大化を抑制することができる。
また、上述したように、Grid k−means法では、ランダムにクラスタを作成するため、クラスタリングにより分類した結果が、局所解に収束してしまう。一方で、情報処理装置100は、既にあるクラスタを分割して2つのクラスタに増やすため、ランダムにクラスタを作成する場合に比べて、クラスタの増加に伴って目的関数の値が単調減少しやすく、局所解に収束しにくくすることができる。
以上により、情報処理装置100は、バッチクラスタリングを実現することができる。バッチクラスタリングは、複数のデータ点を読み出してクラスタリングを実行すること、または、複数のデータ点を読み出してクラスタリングを実行することを複数回繰り返すことを意味する。
バッチクラスタリングは、例えば、一定数のデータごとに読み出し、一定数のデータごとにクラスタリングを実行することを繰り返すようなミニバッチクラスタリングを含んでもよい。バッチクラスタリングは、例えば、コアセットを抽出する際にクラスタリングを実行すること、または、コアセット集合に対してクラスタリングを実行することを含んでもよい。コアセットは、データセットのうちから抽出した一部の代表点である。
ここでは、情報処理装置100が、ペナルティ項を固定し、クラスタを分割しながら、データをクラスタに分類していく場合について説明したが、これに限らない。例えば、情報処理装置100が、ペナルティ項を変更しつつ、異なるペナルティ項においてクラスタを分割しながら、データをクラスタに分類する場合があってもよい。
(情報処理装置100のハードウェア構成例)
次に、図2を用いて、情報処理装置100のハードウェア構成例について説明する。
図2は、情報処理装置100のハードウェア構成例を示すブロック図である。図2において、情報処理装置100は、CPU(Central Processing Unit)201と、メモリ202と、ネットワークI/F(Interface)203と、記録媒体I/F204と、記録媒体205とを有する。また、各構成部は、バス200によってそれぞれ接続される。
ここで、CPU201は、情報処理装置100の全体の制御を司る。メモリ202は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU201のワークエリアとして使用される。メモリ202に記憶されるプログラムは、CPU201にロードされることで、コーディングされている処理をCPU201に実行させる。
ネットワークI/F203は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータに接続される。そして、ネットワークI/F203は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F203には、例えば、モデムやLANアダプタなどを採用することができる。
記録媒体I/F204は、CPU201の制御に従って記録媒体205に対するデータのリード/ライトを制御する。記録媒体I/F204は、例えば、ディスクドライブ、SSD(Solid State Drive)、USB(Universal Serial Bus)ポートなどである。記録媒体205は、記録媒体I/F204の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体205は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体205は、情報処理装置100から着脱可能であってもよい。
情報処理装置100は、上述した構成部のほか、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、情報処理装置100は、記録媒体I/F204や記録媒体205を有していなくてもよい。
(データ点集合Xの記憶内容)
次に、図3を用いてデータ点集合Xの記憶内容について説明する。データ点集合Xは、例えば、図2に示した情報処理装置100のメモリ202や記録媒体205などの記憶領域により実現される。
図3は、データ点集合Xの記憶内容の一例を示す説明図である。図3に示すように、データ点集合Xは、データIDのフィールドに対応付けて、特徴量のフィールドを有する。データ点集合Xは、データ点ごとに各フィールドに情報を設定することにより、データ点がレコードとして記憶される。
データIDのフィールドには、データ点を特定するデータIDが設定される。特徴量のフィールドには、データ点の座標を示す多次元の特徴量が設定される。データ点集合Xは、データIDを用いず、データ数n分の行と次元数d分の列とを有する行列として、データ点の座標を示す多次元の特徴量を記憶するようにしてもよい。ここで、行列のそれぞれの要素の位置が、データIDに対応する。
データ点集合Xは、さらに、データIDのフィールドに対応付けて、クラスタIDのフィールドを有してもよい。クラスタIDのフィールドには、データIDが特定するデータ点が属するクラスタを特定するクラスタIDが設定される。データIDと、クラスタIDとの対応関係は、例えば、データIDに対応する要素を有する配列を用いて実現されてもよい。具体的には、配列の要素の通し番号が、データIDに対応する。
(クラスタ集合Cの記憶内容)
次に、図4を用いてクラスタ集合Cの記憶内容について説明する。クラスタ集合Cは、例えば、図2に示した情報処理装置100のメモリ202や記録媒体205などの記憶領域により実現される。
図4は、クラスタ集合Cの記憶内容の一例を示す説明図である。図4に示すように、クラスタ集合Cは、クラスタIDのフィールドに対応付けて、クラスタ代表座標のフィールドを有する。クラスタ集合Cは、クラスタごとに各フィールドに情報を設定することにより、クラスタ情報がレコードとして記憶される。
クラスタIDのフィールドには、クラスタを特定するクラスタIDが設定される。クラスタ代表座標のフィールドには、クラスタの代表点の座標を示す多次元の特徴量が設定される。クラスタの代表点の座標の次元は、データ点の次元と同一である。また、クラスタ集合Cは、クラスタIDを用いず、クラスタ数k分の行と次元数d分の列とを有する行列として、クラスタの代表点の座標を示す多次元の特徴量を記憶するようにしてもよい。ここで、行列のそれぞれの要素の位置が、クラスタIDに対応する。
(情報処理装置100の機能的構成例)
次に、図5を用いて、情報処理装置100の機能的構成例について説明する。
図5は、情報処理装置100の機能的構成例を示すブロック図である。情報処理装置100は、記憶部500と、取得部501と、設定部502と、選択部503と、判定部504と、分類部505と、出力部506とを含む。
記憶部500は、例えば、図2に示したメモリ202や記録媒体205などの記憶領域によって実現される。取得部501〜出力部506は、制御部となる機能である。取得部501〜出力部506は、具体的には、例えば、図2に示したメモリ202や記録媒体205などの記憶領域に記憶されたプログラムをCPU201に実行させることにより、または、ネットワークI/F203により、その機能を実現する。各機能部の処理結果は、例えば、図2に示したメモリ202や記録媒体205などの記憶領域に記憶される。
記憶部500は、目的関数を記憶する。目的関数は、クラスタに分類されたデータのまとまりのよさを評価する。目的関数は、例えば、値が小さいほど、クラスタリングが適切であることを示すペナルティ項は、例えば、クラスタ粒度パラメータによって規定される。クラスタ粒度パラメータは、クラスタとして許容する粒度を意味し、クラスタが含むデータの範囲を意味する。クラスタ粒度パラメータは、例えば、利用者の操作入力に基づいて固定される。クラスタ粒度パラメータは、可変であってもよい。
記憶部500は、ペナルティ項を規定するために用いることができる、複数のクラスタ粒度パラメータを記憶してもよい。記憶部500は、クラスタと、クラスタに属するデータとを対応付けて記憶してもよい。これにより、記憶部500は、目的関数、クラスタ粒度パラメータ、クラスタに属するデータなどを制御部が参照可能にすることができる。
取得部501は、分類対象になる複数のデータを取得する。取得部501は、例えば、まだクラスタに分類されていない複数のデータを取得し、記憶部500に記憶する。取得部501は、例えば、既に1以上のクラスタに分類された複数のデータを取得し、記憶部500に記憶してもよい。これにより、取得部501は、分類対象になる複数のデータを記憶部500に記憶させ、判定部504や分類部505が参照可能にすることができる。
設定部502は、分割対象になるクラスタを設定する。設定部502は、例えば、分割対象になるクラスタとして、取得部501が取得した複数のデータが属する1つのクラスタを作成して設定する。設定部502は、例えば、分割対象になるクラスタとして、取得部501が取得した既に複数のデータを分類された1以上のクラスタのいずれかのクラスタを設定してもよい。これにより、設定部502は、いずれのクラスタについて、2つのクラスタに分割する方が好ましいか否かを判定するかを、判定部504が参照可能にすることができる。
選択部503は、設定部502が設定した分割対象になるクラスタに属する複数のデータのいずれかのデータを選択する。選択部503は、例えば、分割対象になるクラスタに属する複数のデータのそれぞれのデータからランダムにいずれかのデータを選択する。これにより、選択部503は、仮に作成される新たなクラスタの代表点のデータとして設定されるデータを選択することができる。
選択部503は、設定部502が設定した分割対象になるクラスタに属する複数のデータのそれぞれのデータの、分割対象になるクラスタの代表点のデータからの距離に比例する確率で、複数のデータのいずれかのデータを選択してもよい。これにより、選択部503は、複数のデータのうち、分割対象になるクラスタの代表点のデータから遠いデータほど、選択されやすくすることができる。このため、選択部503は、分割対象になるクラスタの代表点のデータに近く、分割対象になるクラスタに属するままの方が好ましいデータを選択せず、新たなクラスタに属する方が好ましいデータを選択しやすくすることができる。結果として、選択部503は、判定部504が分割対象になるクラスタを分割した方が好ましいか否かを精度よく判定可能にし、分類した結果が局所解になることを抑制することができる。
判定部504は、選択部503が選択したいずれかのデータを新たなクラスタの代表点のデータに設定し、複数のデータを分割対象になるクラスタと新たなクラスタとに分類した場合の目的関数の値が、分類前よりも評価が高いことを示すか否かを判定する。判定部504は、例えば、分割対象になるクラスタに複数のデータを分類した場合の目的関数の値より、分割した2つのクラスタに複数のデータを分類した場合の目的関数の値の方が小さければ、評価が高いことを示すと判定する。これにより、判定部504は、分割対象になるクラスタを分割した方が好ましいか否かを判定することができ、クラスタ数の最適化を図ることができる。
分類部505は、分類前よりも評価が高いことを示す場合、複数のデータを分割対象になるクラスタと新たなクラスタとに分類する。分類部505は、例えば、複数のデータを、2つのクラスタのうち代表点のデータからの距離が近い方のクラスタに分類する。これにより、分類部505は、複数のデータを分類し直すことができ、クラスタ数を増加させることができる。
分類部505は、複数のデータを分割対象になるクラスタと新たなクラスタとに分類した場合、分割対象になるクラスタの代表点のデータと、新たなクラスタの代表点のデータとを更新する。分類部505は、例えば、k−means法を用いて、分割対象になるクラスタの代表点のデータと、新たなクラスタの代表点のデータとを更新する。これにより、分類部505は、それぞれのクラスタの代表点のデータの精度の向上を図ることができる。
設定部502は、複数のデータを分割対象になるクラスタと新たなクラスタとに分類した場合、分割対象として分類後のクラスタと分類後の新たなクラスタとの少なくともいずれかを設定する。そして、設定部502は、選択部503に、分割対象になるクラスタに属する複数のデータのいずれかのデータを選択させる。これにより、設定部502は、クラスタを繰り返し分割させ、クラスタ数の最適化を図り、クラスタリングの最適化を図ることができる。
設定部502は、複数のデータを分割対象になるクラスタと新たなクラスタとに分類した場合、ペナルティ項をクラスタ数の増加を抑制する度合いが小さくなるように変更してもよい。そして、設定部502は、分割対象として分類後のクラスタと分類後の新たなクラスタとの少なくともいずれかを設定してもよい。
設定部502は、例えば、ペナルティ項に用いるクラスタ粒度パラメータを、クラスタ数の増加を抑制する度合いが小さくなるように変更してから、分割対象として分類後のクラスタと分類後の新たなクラスタとの少なくともいずれかを設定する。これにより、設定部502は、クラスタ数の増加を抑制する度合いを順に小さくし、粒度が大きいクラスタを作成した後に、粒度が大きいクラスタに含まれるように粒度が小さいクラスタも作成して、複数のデータを分類させることができる。このため、設定部502は、階層的なクラスタを作成することができる。
設定部502は、分類前よりも評価が高いことを示さない場合、ペナルティ項をクラスタ数の増加を抑制する度合いが小さくなるように変更し、選択部503に、分割対象になるクラスタに属する複数のデータのいずれかのデータを選択し直させる。
設定部502は、例えば、分類前よりも評価が高いことを示さない場合、ペナルティ項に用いるクラスタ粒度パラメータを、クラスタ数の増加を抑制する度合いが小さくなるように変更する。そして、設定部502は、選択部503に、分割対象になるクラスタに属する複数のデータのいずれかのデータを選択し直させる。これにより、設定部502は、クラスタ数の増加を抑制する度合いを順に小さくし、粒度が大きいクラスタを作成した後に、粒度が大きいクラスタに含まれるように粒度が小さいクラスタも作成して、複数のデータを分類させることができる。このため、設定部502は、階層的なクラスタを作成することができる。
出力部506は、複数のデータを1以上のクラスタに分類した結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F203による外部装置への送信、または、メモリ202や記録媒体205などの記憶領域への記憶である。
出力部506は、例えば、変更前のペナルティ項に対応付けて変更前のペナルティ項を有する目的関数を用いて分類した結果を出力し、変更後のペナルティ項に対応付けて変更後のペナルティ項を有する目的関数を用いて分類した結果を出力する。
出力部506は、具体的には、ペナルティ項に用いたクラスタ粒度パラメータごとに分類した結果を、クラスタ粒度パラメータと対応付けて出力することができる。これにより、出力部506は、それぞれの粒度でどのようなクラスタが作成され、複数のデータが分類されたのかを、粒度ごとに利用者に把握させることができる。このため、利用者は、画像処理、音声認識、自然言語処理、センサデータ処理、DNAのシーケンスマイニング、人の位置データ解析などの精度向上を図ることができる。
(情報処理装置100の実施例1)
次に、図6〜図11を用いて、情報処理装置100の実施例1について説明する。
まず、図6を用いて、実施例1における情報処理装置100の1回目の割り当ての流れについて説明する。
図6は、実施例1における情報処理装置100の1回目の割り当ての流れを示す説明図である。図6において、情報処理装置100は、利用者の操作入力に基づいて、複数のデータ点を取得する。情報処理装置100は、複数のデータ点のいずれかのデータ点c1を選択し、最初のクラスタds1の代表点になるデータ点に設定する。情報処理装置100は、最初のクラスタds1に複数のデータ点を割り当てる。情報処理装置100は、最初のクラスタds1を、分割対象になる初期クラスタとして設定する。
次に、図7〜図9を用いて、実施例1における情報処理装置100の2回目の割り当ての流れについて説明する。
図7〜図9は、実施例1における情報処理装置100の2回目の割り当ての流れを示す説明図である。図7において、情報処理装置100は、初期クラスタに設定したクラスタds1を分割するとした場合に、新たなクラスタの代表点のデータ点になる、複数のデータ点のいずれかのデータ点を選択する。情報処理装置100は、例えば、クラスタds1を分割するとした場合に、目的関数の値が小さくなると判断されるデータ点を選択する。
ここで、複数のデータ点のうち、クラスタds1の代表点のデータ点c1から比較的遠い距離にあるデータ点c2−1は、代表点のデータ点c1と同じクラスタに分類されにくく、代表点のデータ点c1と異なるクラスタに分類されやすい性質がある。一方で、複数のデータ点のうち、クラスタds1の代表点のデータ点c1から比較的近い距離にあるデータ点c2−2は、代表点のデータ点c1と同じクラスタに分類されやすい性質がある。
このため、情報処理装置100は、具体的には、クラスタds1に属する複数のデータ点のうち、クラスタds1の代表点のデータ点c1からの距離に比例する確率で、いずれかのデータ点を選択することが好ましい。図7の例では、情報処理装置100は、新たなクラスタの代表点のデータ点c2として、複数のデータ点のいずれかのデータ点c2−2を選択したとする。次に、図8の説明に移行する。
図8において、情報処理装置100は、代表点のデータ点c1のクラスタds1と、代表点のデータ点c2の新たなクラスタとに、クラスタds1に属する複数のデータ点を割り当て直した場合に、目的関数の値が小さくなるか否かを判定する。目的関数は、例えば、下記式(1)である。
ここで、X∈R^(d×n)は、情報処理装置100が取得したd次元×n点のデータ点集合である。xは、データ点である。k∈Rは、クラスタ数である。C∈R^(d×k)は、クラスタ集合であり、クラスタの代表点のデータ点を集めたデータ点集合である。μは、いずれかのクラスタの代表点のデータ点である。λは、クラスタ数を決定するハイパーパラメータであり、クラスタ数の増加を抑制する。λ^2を、ハイパーパラメータとしてもよい。D(x,μ)は、距離関数である。距離関数は、例えば、下記式(2)である。
上記式(2)は、二乗ユークリッド距離を算出する距離関数である。ここで、距離関数は、二乗ユークリッド距離の代わりに、例えば、マンハッタン距離やL∞距離のような対称性を満たすものや、KLダイバージェンスやマハラノビス距離、板倉斎藤距離などの対称性を満たさないものを算出してもよい。また、距離関数は、二乗ユークリッド距離の代わりに、例えば、コサイン類似度などの類似度指標を算出してもよい。
上記式(1)の目的関数は、第1項としてデータ点とクラスタの代表点のデータ点との誤差の和を示す項と、第2項としてクラスタ数の増加を抑制するペナルティを示す項とを有している。上記式(1)の目的関数は「データ点の複雑さに応じたクラスタを作成する」という働きを有している。上記式(1)の目的関数は、具体的には、データ点が少なく信頼度が低い場合にはクラスタ数を減らすが、データ点が増えていき信頼度が高くなった場合にはクラスタを増やすような働きを有している。この働きにより、クラスタリングが外れ値の影響を受けにくくすることができる。
また、上記式(1)の目的関数は、ハイパーパラメータλにより、クラスタとして許容する粒度を規定し、クラスタが含むデータの範囲を規定している。このため、上記式(1)の目的関数は、外れ値の影響を受けず、クラスタの粒度を小さくしたい場合にはクラスタの粒度が小さくなる場合に、値が大きくなる性質がある。したがって、上記式(1)の目的関数の値が小さいほど、クラスタリングが最適化されることになる。
情報処理装置100は、上記式(1)に基づく下記式(3)の分割条件を満たす場合に、クラスタds1を分割して、クラスタds1に属する複数のデータ点を割り当て直した方が、目的関数の値が小さくなると判定する。下記式(3)は、クラスタds1の分割前に対応する上記式(1)と、クラスタds1の分割後に対応する上記式(1)との大小比較の式を変形した式である。
ここで、Xc∈R^(d×m)は、分割対象のクラスタに属するd次元×m点のデータ点集合である。C∈R^dは、分割対象のクラスタの代表点のデータ点である。C’∈R^dは、新たなクラスタの代表点のデータ点として設定されたデータ点である。
図8の例では、情報処理装置100は、上記式(3)の分割条件を満たすと判定し、クラスタds1を分割して、クラスタds1に属する複数のデータ点を割り当て直した方が好ましいと判定したとする。次に、図9の説明に移行する。
図9において、情報処理装置100は、代表点のデータ点c1のクラスタds1と、代表点のデータ点c2のクラスタds2とに、クラスタds1に属する複数のデータ点を割り当て直す。情報処理装置100は、初期クラスタとして、クラスタds1と、クラスタds2とを設定し、図7〜図9と同様に分割を試みる。
これにより、情報処理装置100は、クラスタ数と、データ点をクラスタに分類した結果とを、図6の状態に比べて比較的好ましい状態にすることができる。また、情報処理装置100は、図6の状態のクラスタds1と、図9の状態のクラスタds1およびクラスタds2との包含関係を特定することができる。このため、情報処理装置100は、階層的なクラスタを作成することができる。
ここで、情報処理装置100は、代表点のデータ点c1のクラスタds1と、代表点のデータ点c2のクラスタds2とに、クラスタds1に属する複数のデータ点を割り当て直す際、他のクラスタに属するデータも割り当て直してもよい。
次に、図10を用いて、実施例1における情報処理装置100の割り当て結果の一例について説明する。
図10は、実施例1における情報処理装置100の割り当て結果の一例を示す説明図である。図10において、情報処理装置100は、図7〜図9と同様にして、代表点のデータ点c3のクラスタds3と、代表点のデータ点c4のクラスタds4とを作成し、データ点を割り当て直している。図10の例では、情報処理装置100は、分割により目的関数の値が小さくなるクラスタがなくなったと判定する。
このため、情報処理装置100は、クラスタds1と、クラスタds2と、クラスタds3と、クラスタds4とのそれぞれにデータ点を分類した結果を、最終的な結果として出力する。これにより、情報処理装置100は、クラスタ数と、データ点をクラスタに分類した結果とを、図9の状態に比べてさらに好ましい状態にすることができ、クラスタリングの最適化を図ることができる。
以下の説明では、図6〜図10に示した、分割対象になる初期クラスタについて分割した方が好ましいか判定し、分割した2つのクラスタのそれぞれのクラスタを新たな初期クラスタに設定する処理を、「初期化処理」と表記する場合がある。
次に、図11を用いて、実施例1における情報処理装置100がクラスタの代表点のデータ点を更新する流れについて説明する。
図11は、実施例1における情報処理装置100がクラスタの代表点のデータ点を更新する流れを示す説明図である。図11に示すように、情報処理装置100は、いずれかのクラスタが分割される都度、分割された2つのクラスタのそれぞれのクラスタについて、クラスタの代表点のデータ点の更新を行ってもよい。
図11の例では、情報処理装置100は、クラスタds1の代表点のデータ点c1と、クラスタds2の代表点のデータ点c2と、クラスタds3の代表点のデータ点c3と、クラスタds4の代表点のデータ点c4を更新する。情報処理装置100は、例えば、クラスタds2に属する複数のデータ点に基づいて、k−means法を用いて、クラスタds2の代表点のデータ点c2を更新する。
また、情報処理装置100は、k−means法のほか、DP−means法、Minibatch k−means法、k−Median法などを用いてもよい。Minibatch k−means法は、例えば、下記参考文献2を参照することができる。
参考文献2:D. Sculley, “Web−Scale K−Means Clustering”, In WWW2010.
これにより、情報処理装置100は、それぞれのクラスタの代表点のデータ点について精度向上を図ることができる。また、情報処理装置100は、分割されたクラスタについてクラスタの代表点のデータ点の更新を行ってから、再び初期化処理を実行することができる。このため、情報処理装置100は、比較的偏りが小さい代表点のデータ点を初期化処理に用いることができ、さらにクラスタリングの最適化を図ることができる。
以下の説明では、図11に示した、分割した2つのクラスタのそれぞれのクラスタについて、クラスタの代表点のデータ点を更新する処理を、「改善処理」と表記する場合がある。情報処理装置100は、初期化処理を実行し、改善処理を実行しない場合があってもよい。
また、情報処理装置100は、上述したクラスタリングの結果に基づいて、1つのデータ点が複数のクラスタに属することを許容するソフトクラスタリングをさらに実行してもよい。ソフトクラスタリングは、例えば、EM(Expectation Maximization)法、マルコフ連鎖モンテカルロ法、変分ベイズ法などにより実現される。
ここでは、情報処理装置100が、上記式(1)の目的関数を用いる場合について説明したが、これに限らない。目的関数は、例えば、第1項としてデータ点とクラスタの代表点のデータ点との誤差の和を示す項と、第2項としてクラスタ数の増加を抑制するペナルティを示す項とを有するものである。情報処理装置100は、HDP−means法、Combinational Topic Model、Dependent DP−means法、BP−means法などに規定された目的関数を用いてもよい。
HDP−means法は、例えば、上記非特許文献1を参照することができる。Combinational Topic Modelは、例えば、下記参考文献3を参照することができる。Dependent DP−means法は、例えば、下記参考文献4を参照することができる。BP−means法は、例えば、下記参考文献5を参照することができる。
参考文献3:K. Jiang et al., “Combinational Topic Models using Small−Variance Asymptotics”, AISTATS2017.
参考文献4:T. Campbell et al., “Dynamic Clustering via Asymptotics of the Dependent Dirichlet Process Mixture”, NIPS2013.
参考文献5:T. Broderick et al, “MAD−Bayes: MAP−based Asymptotic Derivations from Bayes”, ICML2013.
情報処理装置100は、時間情報を含む複数のデータに対するクラスタリングを実現するために用いられてもよい。時間情報を含む複数のデータに対するクラスタリングは、例えば、ノンパラメトリックベイズHMM(infinite Hidden Markov Model)法を用いたクラスタリングである。時間情報を含む複数のデータに対するクラスタリングは、例えば、ノンパラメトリックベイズSLDS(Switching Linear Dynamical System)法を用いたクラスタリングである。ノンパラメトリックベイズHMM法は、例えば、下記参考文献6を参照することができる。
参考文献6:A. Roychowdhury et al., “Small−Variance Asymptotics for Hidden Markov Models”, NIPS2013.
また、情報処理装置100は、教師付き学習の認識器とクラスタリングとモデル数の決定を同時に行う手法を実現するために用いられてもよい。かかる手法は、例えば、infinite SVM(Support Vector Machine)に基づくハードクラスタリング近似を行った手法である。かかる手法は、例えば、下記参考文献7を参照することができる。
参考文献7:Y. Wang et al., “Small−Variance Asymptotics for Dirichlet Process Mixture of SVMs”, AAAI2014.
また、情報処理装置100は、内部的に複数モデルをもち、モデル数の動的決定プロセスをデータとモデルとの誤差関数項とモデル数へのペナルティ項の2つを含む目的関数を用いて、モデル数の最適化を行う手法を実現するために用いられてもよい。かかる手法は、例えば、強化学習、逆強化学習、行列分解やテンソル分解、協調フィルタリング、主成分分析、独立成分分析、信頼度付き線形判別機、カーネルSVMなどのカーネル関数に基づく教師付き学習の識別器などで複数モデルを有する手法がある。かかる手法は、例えば、ランキング学習、Structured PerceptronやConditional Random FieldやStructured SVM等の構造化識別器などで複数モデルを有する手法がある。かかる手法は、例えば、ブースティング、決定木やランダムフォレスト、ニューラルネットワークなどで複数モデルを有する手法がある。
(実施例1における出力例)
次に、図12を用いて、実施例1における情報処理装置100の出力例について説明する。
図12は、実施例1における情報処理装置100の出力例を示す説明図である。図12において、情報処理装置100は、複数のUSGSデータを含むUSGSデータ集合に対してクラスタリングを実行する。USGSデータは、地震震源の座標データであり、3次元の位置情報データである。USGSデータは、例えば、下記参考文献8を参照することができる。
参考文献8:“global−earthquakes”, https://mldata.org/repository/data/viewslug/global−earthquakes/
ここで、DP−means法では、USGSデータ集合に対してクラスタリングを実行した場合、目的関数の値が「6757.4 ± 469.6」程度になり、計算時間が「39.2 ± 4.6」程度になってしまう傾向がある。したがって、DP−means法では、局所解に収束してしまい、好ましい解を得ることが難しい。
また、Grid k−means法では、USGSデータ集合に対してクラスタリングを実行した場合、目的関数の値が「1496.9 ± 2448.0」程度になり、計算時間が「7563.2 ± 2206.8 」程度になってしまう傾向がある。したがって、Grid k−means法でも、局所解に収束してしまい、好ましい解を得ることが難しい。
一方で、情報処理装置100は、λ^2=1と固定し、USGSデータ集合に対して、図6〜図10に示した初期化処理を繰り返した場合、目的関数の値を「342.5±9.0」程度にまで小さくすることができる。また、情報処理装置100は、計算時間を「5.4±0.1」程度にまで小さくすることができる。
このように、Grid k−means法ではO(n・k2・l)の計算量がかかる一方で、情報処理装置100は、O(n・logk)の計算量で初期化処理を実行することができ、計算量の増大化を抑制しつつ、目的関数の最小化を図ることができる。したがって、情報処理装置100は、Grid k−means法に比べ、同程度のクラスタ数でクラスタリングを実行した場合でも、1/kの計算量で済み、計算量の抑制と解の好ましさの向上とを両立させることができる。情報処理装置100は、例えば、目的関数の値の分散を小さくし、局所解に収束する確率を低減することができ、局所解ではない、好ましい解を求める確率を向上させることができる。
さらに、情報処理装置100は、USGSデータ集合に対して、図6〜図10に示した初期化処理と図11に示した改善処理とを繰り返した場合、目的関数の値を「286.3 ± 3.0」程度にまで小さくすることができる。また、情報処理装置100は、計算時間を「1598.2 ± 159.1」程度にまで小さくすることができる。
このように、情報処理装置100は、O(n・logk)の計算量で初期化処理を実行し、かつ、O(n・k・l)の計算量で改善処理を実行することができ、計算量の増大化を抑制しつつ、目的関数の最小化を図ることができる。したがって、情報処理装置100は、Grid k−means法に比べ、同程度のクラスタ数でクラスタリングを実行した場合でも、1/kの計算量で済み、計算量の抑制と解の好ましさの向上とを両立させることができる。情報処理装置100は、例えば、目的関数の値の分散を小さくし、局所解に収束する確率を低減することができ、局所解ではない、好ましい解を求める確率を向上させることができる。
図12に示す地図画面1200は、情報処理装置100が、USGSデータ集合に対して、図6〜図10に示した初期化処理と図11に示した改善処理とを繰り返した結果であり、作成されたクラスタの代表点のデータ点を示している。
図12に示すように、地図画面1200では、火山帯を示す場所に、クラスタの代表点のデータ点が設定されている。また、地図画面1200では、火山帯を示す場所以外に、外れ値のデータ点eがあっても、クラスタの代表点のデータ点として設定されていない。このように、情報処理装置100は、外れ値のデータ点のみについてクラスタを作成してしまうことがなく、「外れ値に強い」という性質を実現することができる。このため、利用者は、地震震源の解析にとって比較的有用な情報を把握することができる。
(実施例1における初期化処理手順)
次に、図13を用いて、実施例1における初期化処理手順の一例について説明する。
図13は、実施例1における初期化処理手順の一例を示すフローチャートである。図13において、まず、情報処理装置100は、データ点集合Xと、クラスタ粒度パラメータλとの入力を受け付ける(ステップS1301)。
次に、情報処理装置100は、データ点集合Xのいずれかのデータ点を、クラスタの代表点c0として等確率でサンプリングし、クラスタ集合C←{c0}を設定する(ステップS1302)。そして、情報処理装置100は、テータ点群Xのそれぞれのデータ点を割り当てたクラスタを特定するためのクラスタ割り当てインデックスとしてI={c0,c0,・・・,c0}を設定する(ステップS1303)。さらに、情報処理装置100は、探索キューとしてQ={c0}を設定する(ステップS1304)。
次に、情報処理装置100は、探索キューQから、いずれかのクラスタの代表点cを取り出し、クラスタ割り当てインデックスIに基づいて、データ点集合Xから、取り出した代表点cに対応付けられたデータ点部分集合Xcを取り出す(ステップS1305)。そして、情報処理装置100は、データ点部分集合Xcのいずれかのデータを、クラスタの代表点cからの距離に比例する確率でサンプリングし、新たなクラスタの代表点の候補点c’に設定する(ステップS1306)。
次に、情報処理装置100は、データ点部分集合Xcに基づいて、代表点cと代表点の候補点c’との2点でクラスタを作成した方が、目的関数の値が改善するか否かを判定する(ステップS1307)。ここで、目的関数の値が改善しない場合(ステップS1307:No)、情報処理装置100は、ステップS1310の処理に移行する。
一方で、目的関数の値が改善する場合(ステップS1307:Yes)、情報処理装置100は、クラスタ集合C←C∪{c’}を設定し、探索キューQ←Q∪{c,c’}を設定する(ステップS1308)。次に、情報処理装置100は、データ点部分集合Xcのそれぞれのデータ点を、代表点cのクラスタと代表点c’のクラスタとに割り当て直し、クラスタ割り当てインデックスIを更新する(ステップS1309)。
そして、情報処理装置100は、Q=Φであるか否かを判定する(ステップS1310)。ここで、Q=Φではない場合(ステップS1310:No)、情報処理装置100は、ステップS1305の処理に戻る。
一方で、Q=Φである場合(ステップS1310:Yes)、情報処理装置100は、クラスタ集合Cを、それぞれのクラスタの代表点の初期値を示す情報として出力する(ステップS1311)。そして、情報処理装置100は、初期化処理を終了する。これにより、情報処理装置100は、クラスタ数を増やしながら、クラスタリングの最適化を図ることができる。
(実施例1における改善処理手順)
次に、図14を用いて、実施例1における改善処理手順の一例について説明する。
図14は、実施例1における改善処理手順の一例を示すフローチャートである。図14において、まず、情報処理装置100は、データ点集合Xと、クラスタ粒度パラメータλと、図13の初期化処理によって出力されたクラスタ集合Cとを取得する(ステップS1401)。
次に、情報処理装置100は、クラスタ集合Cを、それぞれのクラスタの代表点の初期値を示す情報として設定し、k−means法を用いて、それぞれのクラスタの代表点を更新する(ステップS1402)。そして、情報処理装置100は、改善処理を終了する。これにより、情報処理装置100は、初期化処理を精度よく実行しやすくし、効率よくクラスタリングの最適化を図ることができる。
(情報処理装置100の実施例2)
次に、図15〜図17を用いて、情報処理装置100の実施例2について説明する。ここで、実施例1では、クラスタ粒度パラメータを固定した場合について説明した。これに対し、複数のクラスタ粒度パラメータを用いて、クラスタの粒度が比較的大きい場合からクラスタの粒度が比較的小さい場合までに、作成されるクラスタがどのように変化するのかを解析することが求められる場合がある。
このため、実施例2では、情報処理装置100が、複数のクラスタ粒度パラメータλ1,λ2,・・・,λlを用意しておき、クラスタ粒度パラメータを可変にする場合について説明する。これにより、情報処理装置100は、利用者に「比較的大きい粒度で作成されたクラスタが、比較的小さい粒度で作成されたいずれのクラスタに遷移したか」の情報を把握させることができる。まず、図15を用いて、実施例2における情報処理装置100の1回目の割り当ての流れについて説明する。
図15は、実施例2における情報処理装置100の1回目の割り当ての流れを示す説明図である。図15において、情報処理装置100は、利用者の操作入力に基づいて、複数のデータ点を取得する。情報処理装置100は、複数のデータ点のいずれかのデータ点を選択し、最初のクラスタ1500の代表点になるデータ点に設定する。情報処理装置100は、最初のクラスタ1500に複数のデータ点を割り当てる。情報処理装置100は、最初のクラスタ1500を、分割対象になる初期クラスタとして設定する。
次に、図16を用いて、実施例2における情報処理装置100のクラスタ粒度パラメータを設定した際の割り当ての流れについて説明する。
図16は、実施例2における情報処理装置100のクラスタ粒度パラメータを設定した際の割り当ての流れを示す説明図である。図16において、情報処理装置100は、用意した複数のクラスタ粒度パラメータλ1,λ2,・・・,λlのうち最大値λ1を、図6〜図10に示した初期化処理に用いるクラスタ粒度パラメータとして設定し、初期化処理を実行する。これにより、情報処理装置100は、クラスタ1500に包含されるクラスタ1601とクラスタ1602とを作成することができる。情報処理装置100は、クラスタ1601とクラスタ1602とについては分割しないと判定したとする。
ここで、初期化処理では上記式(3)の分割条件が用いられる。上記式(3)の分割条件は、いずれかのクラスタ粒度パラメータで満たされる場合、そのクラスタ粒度パラメータより小さく、クラスタの粒度をより小さくするようなクラスタ粒度パラメータでも満たされるという性質がある。したがって、比較的大きいクラスタ粒度パラメータで作成されたクラスタは、比較的小さいクラスタ粒度パラメータで作成されるクラスタを包含する性質があり、クラスタ間で階層構造を形成する性質がある。
このため、情報処理装置100が、最大値λ1を用いた初期化処理によって作成されたクラスタを、2番目に大きいクラスタ粒度パラメータλ2を用いて、さらに分割することが好ましいか否かを判定し、階層的なクラスタを作成することが考えられる。
次に、図17を用いて、実施例2における情報処理装置100のクラスタ粒度パラメータを変更した際の割り当ての流れについて説明する。
図17は、実施例2における情報処理装置100のクラスタ粒度パラメータを変更した際の割り当ての流れを示す説明図である。図17において、情報処理装置100は、2番目に大きいクラスタ粒度パラメータλ2を、図6〜図10に示した初期化処理に用いるクラスタ粒度パラメータとして設定し、初期化処理を実行する。これにより、情報処理装置100は、クラスタ1601に包含されるクラスタ1701とクラスタ1702とを作成することができ、クラスタ1602に包含されるクラスタ1703とクラスタ1704とを作成することができる。情報処理装置100は、クラスタ1701〜1704については分割しないと判定したとする。
このように、情報処理装置100は、クラスタ粒度パラメータを変更しながら初期化処理を実行することにより、粒度が異なるクラスタを階層構造を保持しつつ作成することができる。そして、情報処理装置100は、クラスタ粒度パラメータごとに、作成されたクラスタを対応付けて出力することができる。これにより、利用者は、粒度の異なる階層的なクラスタを把握し、解析処理などに用いることができる。
具体的には、利用者が、人の位置データに基づいて、人の位置分布を解析しようとする場合が考えられる。この場合、情報処理装置100は、東京、神奈川などの都道府県程度の大きさのクラスタを作成し、かつ、都道府県程度の大きさのクラスタに包含される、新宿、原宿、六本木などの市区町村程度の大きさのクラスタを、階層構造を保持しつつ作成することができる。これにより、利用者は、粒度の異なるクラスタを把握し、クラスタ間の階層構造を把握することができ、人の位置分布を解析する際に有用な情報を把握しやすくなる。
(実施例2における初期化処理手順)
次に、図18を用いて、実施例2における初期化処理手順の一例について説明する。
図18は、実施例2における初期化処理手順の一例を示すフローチャートである。図18において、情報処理装置100は、変数i=0を用意する。
まず、情報処理装置100は、データ点集合Xと、クラスタ粒度パラメータ集合Λとの入力を受け付ける(ステップS1801)。次に、情報処理装置100は、クラスタ粒度パラメータΛを降順にソートし、Λ={λ1,λ2,・・・,λl}と設定する(ステップS1802)。そして、情報処理装置100は、初期クラスタ集合C(0)←{データ点集合Xの重心点}を設定する(ステップS1803)。
次に、情報処理装置100は、変数i=i+1を設定する(ステップS1804)。そして、情報処理装置100は、クラスタ粒度パラメータλiを用いて、クラスタ集合C(i−1)に対して実施例1における初期化処理と同様の処理を実行することにより、クラスタ集合C(i)を出力する(ステップS1805)。
次に、情報処理装置100は、i>lであるか否かを判定する(ステップS1806)。ここで、i>lではない場合(ステップS1806:No)、情報処理装置100は、ステップS1804の処理に戻る。
一方で、i>lである場合(ステップS1806:Yes)、情報処理装置100は、クラスタ集合C(0)、C(1)、・・・、C(l)を出力する(ステップS1807)。そして、情報処理装置100は、初期化処理を終了する。これにより、情報処理装置100は、クラスタ粒度パラメータλを変えつつ、クラスタ数を増やしながら、クラスタリングの最適化を図ることができる。
(実施例2における改善処理手順)
次に、図19を用いて、実施例2における改善処理手順の一例について説明する。
図19は、実施例2における改善処理手順の一例を示すフローチャートである。図19において、まず、情報処理装置100は、データ点集合Xと、クラスタ粒度パラメータ集合Λと、図18の初期化処理によって出力されたクラスタ集合C(0)、C(1)、・・・、C(l)とを取得する(ステップS1901)。
次に、情報処理装置100は、クラスタ集合C(0)、C(1)、・・・、C(l)を、それぞれのクラスタの代表点の初期値を示す情報として設定し、k−means法を用いて、それぞれのクラスタの代表点を更新する(ステップS1902)。そして、情報処理装置100は、改善処理を終了する。これにより、情報処理装置100は、初期化処理を精度よく実行しやすくし、効率よくクラスタリングの最適化を図ることができる。
以上説明したように、情報処理装置100によれば、クラスタに属する複数のデータのいずれかのデータを選択することができる。情報処理装置100によれば、選択したいずれかのデータを新たなクラスタの代表点のデータに設定し、複数のデータをクラスタと新たなクラスタとに分類した場合の目的関数の値が、分類前よりも評価が高いことを示すか否かを判定することができる。情報処理装置100によれば、分類前よりも評価が高いことを示す場合、複数のデータをクラスタと新たなクラスタとに分類することができる。これにより、情報処理装置100は、クラスタリングの最適化を図ることができる。
情報処理装置100によれば、複数のデータをクラスタと新たなクラスタとに分類した場合、分割対象として分類後のクラスタと分類後の新たなクラスタとの少なくともいずれかを設定することができる。これにより、情報処理装置100は、クラスタを繰り返し分割させ、クラスタ数の最適化を図り、クラスタリングの最適化を図ることができる。
情報処理装置100によれば、複数のデータのそれぞれのデータの、クラスタの代表点のデータからの距離に比例する確率で、複数のデータのいずれかのデータを選択することができる。これにより、情報処理装置100は、新たなクラスタに属する方が好ましいデータを選択しやすくし、クラスタを分割した方が好ましいか否かを精度よく判定可能にすることができる。
情報処理装置100によれば、複数のデータをクラスタと新たなクラスタとに分類した場合、k−means法を用いて、クラスタの代表点のデータと、新たなクラスタの代表点のデータとを更新することができる。これにより、情報処理装置100は、初期化処理を精度よく実行しやすくし、効率よくクラスタリングの最適化を図ることができる。
情報処理装置100によれば、分類前よりも評価が高いことを示さない場合、ペナルティ項をクラスタ数の増加を抑制する度合いが小さくなるように変更し、クラスタに属する複数のデータのいずれかのデータを選択し直すことができる。これにより、情報処理装置100は、クラスタ数の増加を抑制する度合いを順に小さくし、粒度が大きいクラスタを作成した後に、粒度が大きいクラスタに含まれるように粒度が小さいクラスタも作成して、複数のデータを分類させることができる。このため、情報処理装置100は、階層的なクラスタを作成することができる。
情報処理装置100によれば、変更前のペナルティ項に対応付けて変更前のペナルティ項を有する目的関数を用いて分類した結果を出力し、変更後のペナルティ項に対応付けて変更後のペナルティ項を有する目的関数を用いて分類した結果を出力することができる。これにより、情報処理装置100は、それぞれの粒度でどのようなクラスタが作成され、複数のデータが分類されたのかを、粒度ごとに利用者に把握させることができる。このため、利用者は、画像処理、音声認識、自然言語処理、センサデータ処理、DNAのシーケンスマイニング、人の位置データ解析などの精度向上を図ることができる。
情報処理装置100によれば、複数のデータをクラスタと新たなクラスタとに分類した場合、ペナルティ項をクラスタ数の増加を抑制する度合いが小さくなるように変更することができる。これにより、情報処理装置100は、クラスタ数の増加を抑制する度合いを順に小さくし、粒度が大きいクラスタを作成した後に、粒度が大きいクラスタに含まれるように粒度が小さいクラスタも作成して、複数のデータを分類させることができる。このため、情報処理装置100は、階層的なクラスタを作成することができる。
なお、本実施の形態で説明したクラスタリング方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本実施の形態で説明したクラスタリングプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本実施の形態で説明したクラスタリングプログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータが、
クラスタに属する複数のデータのいずれかのデータを選択し、
選択した前記いずれかのデータを新たなクラスタの代表点のデータに設定し、前記複数のデータを前記クラスタと前記新たなクラスタとに分類した場合の、クラスタ数の増加を抑制するペナルティ項を有する目的関数の値が、分類前よりも評価が高いことを示すか否かを判定し、
分類前よりも評価が高いことを示す場合、前記複数のデータを前記クラスタと前記新たなクラスタとに分類する、
処理を実行することを特徴とするクラスタリング方法。
(付記2)前記コンピュータが、
分割対象になる前記クラスタに属する前記複数のデータのいずれかのデータを選択し、
選択した前記いずれかのデータを前記新たなクラスタの代表点のデータに設定し、前記複数のデータを前記クラスタと前記新たなクラスタとに分類した場合の、前記目的関数の値が、分類前よりも評価が高いことを示すか否かを判定し、
分類前よりも評価が高いことを示す場合、前記複数のデータを前記クラスタと前記新たなクラスタとに分類し、
前記複数のデータを前記クラスタと前記新たなクラスタとに分類した場合、前記分割対象として分類後の前記クラスタと分類後の前記新たなクラスタとの少なくともいずれかを設定する、
処理を実行することを特徴とする付記1に記載のクラスタリング方法。
(付記3)前記選択する処理は、
前記複数のデータのそれぞれのデータの、前記クラスタの代表点のデータからの距離に比例する確率で、前記複数のデータのいずれかのデータを選択する、ことを特徴とする付記1または2に記載のクラスタリング方法。
(付記4)前記コンピュータが、
前記複数のデータを前記クラスタと前記新たなクラスタとに分類した場合、k−means法を用いて、前記クラスタの代表点のデータと、前記新たなクラスタの代表点のデータとを更新する、処理を実行することを特徴とする付記1〜3のいずれか一つに記載のクラスタリング方法。
(付記5)前記コンピュータが、
分類前よりも評価が高いことを示さない場合、前記ペナルティ項をクラスタ数の増加を抑制する度合いが小さくなるように変更する、処理を実行し、
前記選択する処理は、
前記クラスタに属する前記複数のデータのいずれかのデータを選択し直す、ことを特徴とする付記1〜4のいずれか一つに記載のクラスタリング方法。
(付記6)前記コンピュータが、
変更前の前記ペナルティ項に対応付けて変更前の前記ペナルティ項を有する前記目的関数を用いて分類した結果を出力し、変更後の前記ペナルティ項に対応付けて変更後の前記ペナルティ項を有する前記目的関数を用いて分類した結果を出力する、処理を実行することを特徴とする付記5に記載のクラスタリング方法。
(付記7)前記コンピュータが、
前記複数のデータを前記クラスタと前記新たなクラスタとに分類した場合、前記ペナルティ項をクラスタ数の増加を抑制する度合いが小さくなるように変更する、処理を実行することを特徴とする付記2に記載のクラスタリング方法。
(付記8)コンピュータに、
クラスタに属する複数のデータのいずれかのデータを選択し、
選択した前記いずれかのデータを新たなクラスタの代表点のデータに設定し、前記複数のデータを前記クラスタと前記新たなクラスタとに分類した場合の、クラスタ数の増加を抑制するペナルティ項を有する目的関数の値が、分類前よりも評価が高いことを示すか否かを判定し、
分類前よりも評価が高いことを示す場合、前記複数のデータを前記クラスタと前記新たなクラスタとに分類する、
処理を実行させることを特徴とするクラスタリングプログラム。
(付記9)クラスタに属する複数のデータのいずれかのデータを選択し、
選択した前記いずれかのデータを新たなクラスタの代表点のデータに設定し、前記複数のデータを前記クラスタと前記新たなクラスタとに分類した場合の、クラスタ数の増加を抑制するペナルティ項を有する目的関数の値が、分類前よりも評価が高いことを示すか否かを判定し、
分類前よりも評価が高いことを示す場合、前記複数のデータを前記クラスタと前記新たなクラスタとに分類する、
制御部を有することを特徴とする情報処理装置。