(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-04-14
(45)【発行日】2023-04-24
(54)【発明の名称】クラスタリング装置及びクラスタリング方法
(51)【国際特許分類】
G06F 16/906 20190101AFI20230417BHJP
【FI】
G06F16/906
(21)【出願番号】P 2020570278
(86)(22)【出願日】2019-02-06
(86)【国際出願番号】 JP2019004315
(87)【国際公開番号】W WO2020161845
(87)【国際公開日】2020-08-13
【審査請求日】2022-01-25
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成28年度、国立研究開発法人科学技術振興機構、研究成果展開事業 産学共創プラットフォーム共同研究推進プログラム、産業技術力強化法第17条の適用を受ける特許出願
(73)【特許権者】
【識別番号】504157024
【氏名又は名称】国立大学法人東北大学
(74)【代理人】
【識別番号】110002675
【氏名又は名称】弁理士法人ドライト国際特許事務所
(72)【発明者】
【氏名】遠藤 哲郎
(72)【発明者】
【氏名】沈 暉
(72)【発明者】
【氏名】馬 奕涛
【審査官】松尾 真人
(56)【参考文献】
【文献】特開平05-205058(JP,A)
【文献】米国特許出願公開第2012/0303623(US,A1)
【文献】特開平11-219374(JP,A)
【文献】特開2018-120320(JP,A)
【文献】中国特許出願公開第106383695(CN,A)
【文献】Olatz Arbelaitz et al.,An extensive comparative study of cluster validity indices,Pattern Recognition,Elsevier Science,2013年01月,Vol.46, Issue 1,pp.243-256
【文献】S. Saitta et al.,A comprehensive validity index for clustering,Intelligent Data Analysis,IOS Press,2008年,Vol.12, No.6,pp.529-548
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
複数の要素データを分類するクラスタリング装置において、
前記複数の要素データを記憶するデータ記憶部と、
分類結果を評価する評価値を算出する評価値算出部と、
設定されるクラスタ数の複数のクラスタに前記複数の要素データを分類することで得られる前記評価値に基づき、最適なクラスタ数の前記複数のクラスタに前記複数の要素データを分類する一括処理部と、
追加される新規の要素データを、前記一括処理部によって前記複数の要素データが分類されている前記複数のクラスタのうちの前記新規の要素データに最も近いクラスタに分類する更新処理部と、
前記更新処理部が前記新規の要素データを分類することで得られる前記評価値と、当該新規の要素データを分類する前の前記評価値とを比較することによって、前記新規の要素データの分類後の分類結果の妥当性を判断する判断部と
を備えることを特徴とするクラスタリング装置。
【請求項2】
前記評価値算出部は、
クラスタ内の要素データの分散の程度を示す各々の前記クラスタについての第1指標値を当該クラスタの要素データのデータ数に基づく第1の値で規格化した値の各前記クラスタの第1総和値である内的結合度と、クラスタ間の距離の指標となる各々の前記クラスタについての第2指標値の第2総和値をクラスタ数に基づく第2の値で規格化した外的分離度とをそれぞれ求め、前記内的結合度と前記外的分離度とを変数とする所定の演算式から前記評価値を算出する
ことを特徴とする請求項1に記載のクラスタリング装置。
【請求項3】
前記評価値算出部は、
X:要素データ
Nc:クラスタ数
C
i:クラスタIDが「i」のクラスタ(i=1,2・・・Nc)
n
i:クラスタC
iの要素データの個数
V
i:クラスタC
iの重心
GG:全データの基準点
d(X,V
i):要素データXと重心V
iとの間のデータ重心間距離またはデータ重心間距離の二乗
d(V
i,GG):重心V
iと基準点GGとの間の重心距離または重心距離の二乗
として、以下の式(A)で表される前記評価値または式の逆数で表される前記評価値を算出する
ことを特徴とする請求項1に記載のクラスタリング装置。
【数1】
【請求項4】
前記評価値算出部は、
X:要素データ
Nc:クラスタ数
C
i:クラスタIDが「i」のクラスタ(i=1,2・・・Nc)
n
i:クラスタC
iの要素データの個数
V
i:クラスタC
iの重心
GG:全データの基準点
d(X,V
i):要素データXと重心V
iとの間のデータ重心間距離またはデータ重心間距離の二乗
d(V
i,V
j):1のクラスタC
iの重心V
iと他のクラスタC
jの重心V
jとの間のクラスタ間距離またはクラスタ間距離の二乗
として、以下の式(B)で表される前記評価値または式の逆数で表される前記評価値を算出する
ことを特徴とする請求項1に記載のクラスタリング装置。
【数2】
【請求項5】
前記一括処理部は、前記複数の要素データの分類されるクラスタ情報を保持するレジスタ部とデータ計算を行なう計算回路とを含み、
前記評価値算出部は、前記一括処理部が前記複数の要素データを分類する際に得られる前記評価値を計算するためのデータを保持する評価レジスタ部と前記評価値を計算するロジック部とを有し、
電源供給が独立して制御される複数のパワードメインが形成され、少なくとも前記データ記憶部と、前記計算回路と、前記更新処理部と、前記ロジック部とが異なる前記パワードメインに分けられるとともに、これら前記パワードメインとは別の前記パワードメインに前記レジスタ部及び評価レジスタ部が分けられている
ことを特徴とする請求項1ないし4のいずれか1項に記載のクラスタリング装置。
【請求項6】
前記一括処理部は、前記複数の要素データの分類されるクラスタID及びクラスタ重心間距離を保持するレジスタユニットと、データ計算を行なう計算回路とを含み、
前記更新処理部は、前記複数のクラスタの各々の重心を記憶する重心メモリと、前記複数のクラスタのうちから前記最も近いクラスタを特定し、前記新規の要素データを前記最も近いクラスタに分類する近隣探索回路部とを含み、
前記評価値算出部は、前記一括処理部が前記複数の要素データを分類する際に得られる前記評価値を計算するためのデータを保持する評価レジスタ部と前記評価値を計算するロジック部とを有し、
電源供給が独立して制御される複数のパワードメインが形成され、少なくとも前記データ記憶部と、前記計算回路と、前記重心メモリと、前記近隣探索回路部と、前記ロジック部とが互いに異なる前記パワードメインに分けられるとともに、これらの前記パワードメインとは別の1の前記パワードメインに前記レジスタユニット及び評価レジスタ部が分けられている
ことを特徴とする請求項1ないし4のいずれか1項に記載のクラスタリング装置。
【請求項7】
前記判断部は、分類結果が妥当ではない場合に、前記一括処理部による前記新規の要素データを含む全ての要素データの分類を実行させることを特徴とする請求項1ないし6のいずれか1項に記載のクラスタリング装置。
【請求項8】
前記データ記憶部は、不揮発性メモリで構成されることを特徴とする請求項1ないし7のいずれか1項に記載のクラスタリング装置。
【請求項9】
1または複数の新規の要素データの追加に応答して、前記新規の要素データを含む複数の要素データを分類した状態にするクラスタリング部と、
分類結果を評価する評価値を算出する評価値算出部と
を備え、
前記評価値算出部は、
X:要素データ
Nc:クラスタ数
C
i:クラスタIDが「i」のクラスタ(i=1,2・・・Nc)
n
i:クラスタC
iの要素データの個数
V
i:クラスタC
iの重心
GG:全データの基準点
d(X,V
i):要素データXと重心V
iとの間のデータ重心間距離またはデータ重心間距離の二乗
d(V
i,GG):重心V
iと基準点GGとの間の重心距離または重心距離の二乗
として、以下の式(A)で表される前記評価値または式の逆数で表される前記評価値を算出する
ことを特徴とするクラスタリング装置。
【数3】
【請求項10】
1または複数の新規の要素データの追加に応答して、前記新規の要素データを含む複数の要素データを分類した状態にするクラスタリング部と、
分類結果を評価する評価値を算出する評価値算出部と
を備え、
前記評価値算出部は、
X:要素データ
Nc:クラスタ数
C
i:クラスタIDが「i」のクラスタ(i=1,2・・・Nc)
n
i:クラスタC
iの要素データの個数
V
i:クラスタC
iの重心
GG:全データの基準点
d(X,V
i):要素データXと重心V
iとの間のデータ重心間距離またはデータ重心間距離の二乗
d(V
i,V
j):1のクラスタC
iの重心V
iと他のクラスタC
jの重心V
jとの間のクラスタ間距離またはクラスタ間距離の二乗
として、以下の式(B)で表される前記評価値または式の逆数で表される前記評価値を算出する
ことを特徴とするクラスタリング装置。
【数4】
【請求項11】
複数の要素データを分類するクラスタリング装置において、
前記複数の要素データを記憶するデータ記憶部と、
分類結果を評価する評価値を算出する評価値算出部と、
設定されるクラスタ数の複数のクラスタに前記複数の要素データを分類することで得られる前記評価値に基づき、最適なクラスタ数の前記複数のクラスタに前記複数の要素データを分類する一括処理部と、
追加される新規の要素データを、前記一括処理部によって前記複数の要素データが分類されている前記複数のクラスタのうちの前記新規の要素データに最も近いクラスタに分類する更新処理部と、
前記更新処理部が前記新規の要素データを分類することで得られる前記評価値に基づき、前記新規の要素データの分類後の分類結果の妥当性を判断する判断部と
を備え、
前記一括処理部は、前記複数の要素データの分類されるクラスタ情報を保持するレジスタ部とデータ計算を行なう計算回路とを含み、
前記評価値算出部は、前記一括処理部が前記複数の要素データを分類する際に得られる前記評価値を計算するためのデータを保持する評価レジスタ部と前記評価値を計算するロジック部とを有し、
電源供給が独立して制御される複数のパワードメインが形成され、少なくとも前記データ記憶部と、前記計算回路と、前記更新処理部と、前記ロジック部とが異なる前記パワードメインに分けられるとともに、これら前記パワードメインとは別の前記パワードメインに前記レジスタ部及び評価レジスタ部が分けられている
ことを特徴とするクラスタリング装置。
【請求項12】
複数の要素データを分類するクラスタリング装置において、
前記複数の要素データを記憶するデータ記憶部と、
分類結果を評価する評価値を算出する評価値算出部と、
設定されるクラスタ数の複数のクラスタに前記複数の要素データを分類することで得られる前記評価値に基づき、最適なクラスタ数の前記複数のクラスタに前記複数の要素データを分類する一括処理部と、
追加される新規の要素データを、前記一括処理部によって前記複数の要素データが分類されている前記複数のクラスタのうちの前記新規の要素データに最も近いクラスタに分類する更新処理部と、
前記更新処理部が前記新規の要素データを分類することで得られる前記評価値に基づき、前記新規の要素データの分類後の分類結果の妥当性を判断する判断部と
を備え、
前記一括処理部は、前記複数の要素データの分類されるクラスタID及びクラスタ重心間距離を保持するレジスタユニットと、データ計算を行なう計算回路とを含み、
前記更新処理部は、前記複数のクラスタの各々の重心を記憶する重心メモリと、前記複数のクラスタのうちから前記最も近いクラスタを特定し、前記新規の要素データを前記最も近いクラスタに分類する近隣探索回路部とを含み、
前記評価値算出部は、前記一括処理部が前記複数の要素データを分類する際に得られる前記評価値を計算するためのデータを保持する評価レジスタ部と前記評価値を計算するロジック部とを有し、
電源供給が独立して制御される複数のパワードメインが形成され、少なくとも前記データ記憶部と、前記計算回路と、前記重心メモリと、前記近隣探索回路部と、前記ロジック部とが互いに異なる前記パワードメインに分けられるとともに、これらの前記パワードメインとは別の1の前記パワードメインに前記レジスタユニット及び評価レジスタ部が分けられている
ことを特徴とするクラスタリング装置。
【請求項13】
クラスタリング装置によって実行されるクラスタリング方法であって、
クラスタ数を変化させながら、全ての要素データを用いた分類を行なうことで得られる各クラスタ数についての分類結果を評価する評価値から最適なクラスタ数を求め、求めた前記最適なクラスタ数で前記要素データを分類した分類結果を得る一括処理工程と、
前記一括処理工程後に新規の要素データが追加された際に、前記新規の要素データを既存のクラスタのいずれかに分類し、分類後に前記評価値を求める更新処理工程と、
前記更新処理工程で前記新規の要素データの分類後に得られる前記評価値と、当該新規の要素データの分類前の前記評価値とを比較することによって、前記更新処理工程による前記新規の要素データの分類後の分類結果の妥当性を判断する判断工程と
を有
し、
前記クラスタリング装置が、前記一括処理工程、前記更新処理工程、及び前記判断工程を実行する
ことを特徴とするクラスタリング方法。
【請求項14】
クラスタリング装置によって実行されるクラスタリング方法であって、
1または複数の新規の要素データの追加に応答して、新規の要素データを含む複数の要素データを分類した状態にするクラスタリング工程と、
分類結果を評価する評価値を算出する評価値算出工程と
を有し、
前記評価値算出工程は、
X:要素データ
Nc:クラスタ数
C
i:クラスタIDが「i」のクラスタ(i=1,2・・・Nc)
n
i:クラスタC
iの要素データの個数
V
i:クラスタC
iの重心
GG:全データの基準点
d(X,V
i):要素データXと重心V
iとの間のデータ重心間距離またはデータ重心間距離の二乗
d(V
i,GG):重心V
iと基準点GGとの間の重心距離または重心距離の二乗
として、以下の式(A)で表される前記評価値または式の逆数で表される前記評価値を算出
し、
前記クラスタリング装置が、前記クラスタリング工程、及び前記評価値算出工程を実行する
ことを特徴とするクラスタリング方法。
【数5】
【請求項15】
クラスタリング装置によって実行されるクラスタリング方法であって、
1または複数の新規の要素データの追加に応答して、新規の要素データを含む複数の要素データを分類した状態にするクラスタリング工程と、
分類結果を評価する評価値を算出する評価値算出工程と
を有し、
前記評価値算出工程は、
X:要素データ
Nc:クラスタ数
C
i:クラスタIDが「i」のクラスタ(i=1,2・・・Nc)
n
i:クラスタC
iの要素データの個数
V
i:クラスタC
iの重心
GG:全データの基準点
d(X,V
i):要素データXと重心V
iとの間のデータ重心間距離またはデータ重心間距離の二乗
d(V
i,V
j):1のクラスタC
iの重心V
iと他のクラスタC
jの重心V
jとの間のクラスタ間距離またはクラスタ間距離の二乗
として、以下の式(B)で表される前記評価値または式の逆数で表される前記評価値を算出
し、
前記クラスタリング装置が、前記クラスタリング工程、及び前記評価値算出工程を実行する
ことを特徴とするクラスタリング方法。
【数6】
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、クラスタリング装置及びクラスタリング方法に関する。
【背景技術】
【0002】
分類対象の複数の要素データの集合を複数のクラスタ(データ群)に分類するクラスタリング(クラスタ分析)が知られており、近年、画像解析、データマイニング、ビッグデータの解析等で頻繁に利用されている。また、このようなクラスタリングは、機械学習のうちの教師なし学習となる。クラスタリングでは、類似する要素データ同士を同じクラスタに分類し、クラスタ間では要素データができるだけ類似しないように分類することによって、その分類結果から要素データの傾向や特徴の抽出等を行うものである。
【0003】
複数の要素データをクラスタに分類するクラスタリング手法としては、種々の方法が知られており、代表的なクラスタリングの手法の1つとしてk-means法が知られている。k-means法では、予めクラスタ数kが設定され、例えばN個の全要素データのうちから任意のk個の要素データが選択され、それらをk個のクラスタの重心の初期値とする(手順1)。次に、各要素データのそれぞれについて、当該要素データとの距離が最も短い重心のクラスタに分類する(手順2)。各クラスタについて、クラスタ内の要素データの平均を新たなクラスタの重心に設定する(手順3)。そして、各クラスタの重心が変化しなくなるまで、手順2と手順3とを繰り返し行う。
【0004】
上記のようなクラスタリング手法は、予め設定されたクラスタ数のクラスタに要素データを分類するものであって、クラスタ数を予め設定する必要がある。通常、最適なクラスタ数を決定するために、クラスタ数を変化させてクラスタリングした各結果のそれぞれについての評価値を求め、評価値が極値、あるいは最大値ないし最小値のクラスタ数を最適なクラスタ数としている。
【0005】
分類すべき新規要素データが追加された場合に、新規要素データを含む全要素データを用いて、上記のように最適なクラスタ数を決定し、最適なクラスタ数でクラスタリングを行う手法が知られている(非特許文献1を参照)。また、新規要素データが追加された場合に、新規要素データとの距離が最小となるクラスタ重心を特定し、その特定したクラスタ重心のクラスタに新規要素データを分類する手法が知られている(非特許文献2を参照)。
【先行技術文献】
【非特許文献】
【0006】
【文献】Z. Hou et.al., “ Real-Time Very Large-Scale Integration Recognition System with an On-Chip Adaptive K-Means Learning Algorithm”, JJAP, Vol. 52,04CE11
【文献】Chen, Tse-Wei, and Makoto Ikeda. "Design and implementation of low-power hardware architecture with single-cycle divider for on-line clustering algorithm." IEEE Transactions on Circuits and Systems I: Regular Papers60.8 (2013): 2165-2176.
【発明の概要】
【発明が解決しようとする課題】
【0007】
ところで、新規要素データが追加された場合に、新規要素データを含む全要素データを用いて、最適なクラスタ数を求めてクラスタリングを行う手法は、高精度な分類結果が期待できる反面、演算負荷が大きいため、効率が悪かった。また、クラスタリング結果について高速な応答が要求される用途には不向きである。一方、新規要素データが追加された場合に、新規要素データとの距離が最小となるクラスタ重心のクラスタに新規要素データを分類する手法は、クラスタリング結果について高速な応答性が得られるが、分類結果の精度が低くなる場合がある。これは、要素データの追加前におけるクラスタ数を要素データの追加後においても適正とみなしているためである。
【0008】
本発明は、上記事情を鑑みてなされたものであり、効率良く高精度なクラスタリングに資するクラスタリング装置及びクラスタリング方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明のクラスタリング装置は、複数の要素データを分類するクラスタリング装置において、前記要素データを記憶するデータ記憶部と、分類結果を評価する評価値を算出する評価値算出部と、設定されるクラスタ数のいずれかのクラスタに前記複数の要素データを分類することで得られる前記評価値に基づき、最適なクラスタ数の前記クラスタに前記複数の要素データを分類する一括処理部と、追加される新規の要素データを、前記一括処理部によって前記複数の要素データが分類されている複数の前記クラスタのうちの前記新規の要素データに最も近い前記クラスタに分類する更新処理部と、前記更新処理部が前記新規の要素データを分類することで得られる前記評価値に基づき、前記新規の要素データの分類後の分類結果の妥当性を判断する判断部とを備えるものである。
【0010】
本発明のクラスタリング装置は、複数のいずれかのクラスタに複数の要素データを分類するクラスタリング部と、前記複数の要素データを分類する前記クラスタリング部の計算過程の計算値を用いて、前記クラスタ内の前記要素データの分散の程度を示す各々の前記クラスタについての第1指標値を当該クラスタのデータ数に基づく第1の値で規格化した値の各前記クラスタの第1総和値である内的結合度と、前記クラスタ間の距離の指標となる各々の前記クラスタについての第2指標値の第2総和値を前記クラスタ数に基づく第2の値で規格化した外的分離度とをそれぞれ求め、前記内的結合度と前記外的分離度とを変数とする所定の演算式から、前記クラスタリング部による分類結果を評価する評価値を算出する前記評価値算出部とを備えるものである。
【0011】
また、本発明のクラスタリング方法は、クラスタ数を変化させながら、全ての要素データを用いた分類を行なうことで得られる各クラスタ数についての分類結果を評価する評価値から最適なクラスタ数を求め、求めた前記最適なクラスタ数で前記要素データを分類した分類結果を得る一括処理工程と、前記一括処理工程後に新規の要素データが追加された際に、前記新規の要素データを既存の前記クラスタのいずれかに分類し、分類後に前記評価値を求める更新処理工程と、前記更新処理工程で得られる前記評価値に基づき、前記更新処理工程による分類結果の妥当性を判断する判断工程とを有するものである。
【発明の効果】
【0012】
本発明によれば、全ての要素データを用いて求められる最適なクラスタ数で要素データを分類した後に、新規の要素データが追加された際には、新規の要素データを既存の複数のクラスタのうちの最も近いクラスタに分類し、この分類後に得られる評価値に基づいて分類結果の妥当性を判断するので、効率良く高精度なクラスタリングを行なうことができるようになる。
【0013】
また、本発明によれば、前記複数の要素データを分類する前記クラスタリング部の計算過程の計算値を用いて、クラスタ内の前記要素データの分散の程度を示す内的結合度と、クラスタ間の分離の程度を示す外的分離度とに基づく評価値を算出するので、過剰な分類を抑制した高精度な評価値を効率良く求めることができ、結果として効率良く高精度なクラスタリングを行なうことができるようになる。
【図面の簡単な説明】
【0014】
【
図1】本発明を実施したクラスタリング装置の構成を示すブロック図である。
【
図2】メインメモリ及び遅延回路の構成を示す説明図である。
【
図3】距離レジスタ部のセルの構成を示す回路図である。
【
図5】CIDマスク回路の構成を示す回路図である。
【
図8】評価値算出回路の構成を示すブロック図である。
【
図9】CIDレジスタのセルに接続されたイネーブル信号回路を示す回路図である。
【
図10】MIDレジスタに接続されたイネーブル信号回路を示す回路図である。
【
図11】演算ユニットのパワードメインを示す説明図である。
【
図12】一括処理における各パワードメインに対する電力供給のタイミングを示すタイミングチャートである。
【
図13】更新処理における各パワードメインに対する電力供給を示すタイミングチャートである。
【
図14】一括処理の手順の概略を示すフローチャートである。
【
図15】更新処理の手順の概略を示すフローチャートである。
【
図16】検証における更新処理の前後における一例を示す説明図である。
【
図17】検証における更新処理の前後における別の例を示す説明図である。
【
図18】検証における更新処理の前後におけるさらに別の例を示す説明図である。
【発明を実施するための形態】
【0015】
図1において、クラスタリング装置10は、複数の要素データを対象にクラスタリングを行う。このクラスタリング装置10は、一括処理(バッチ処理)、更新処理(オンライン処理)を行なう。
【0016】
一括処理は、クラスタ数を変化させながら、全ての要素データを用いたクラスタリングを行なうことで得られる各クラスタ数に対する評価値から最適なクラスタ数を求め、求めた最適なクラスタ数で要素データを分類したクラスタリング結果(分類結果)を得る処理である。この例では、一括処理におけるクラスタリング手法としてk-means法を用い、また評価値が最大(極大)となるクラスタ数を最適なクラスタ数としている。
【0017】
更新処理は、一括処理後に新規要素データが追加された場合に、その追加された新規要素データを既存のクラスタに効率的かつ高速に分類する処理である。また、この更新処理では、追加された新規要素データのクラスタへの分類後に評価値を求め、その評価値を用いて更新処理の妥当性判断を行なう。この更新処理で求められる評価値は、一括処理で求める評価値と同等のものである。妥当性判断は、更新処理によるクラスタリング結果が妥当である否かを判断し、妥当である場合には更新処理による結果を最終結果とし、妥当でない場合には一括処理を実行させる。
【0018】
一括処理及び更新処理で求めるクラスタ数Ncについての評価値をE(Nc)としたとき、この例で求める評価値E(Nc)は、式(1)のように表される。なお、iは、1,2・・・Ncであり、この例ではクラスタIDとしている。
【0019】
【0020】
上記式(1)中の各値は、次の通りである。
SWD:第1総和値である内的結合度(規格化済み)
SBS/Nc:外的分離度(規格化済み)
SBS:第2総和値
X:要素データ
GG:全要素データの重心であるデータ重心
Ci:クラスタIDが「i」のクラスタ
Vi:クラスタCiの重心であるクラスタ重心
ni:クラスタCiの要素データの個数であるデータ数
d(Vi,GG):クラスタ重心Viとデータ重心GGとの間の距離である重心距離
d(X,Vi):要素データXとクラスタ重心Viとの間の距離であるデータ重心間距離
【0021】
なお、以下の説明では、重心距離d(Vi,GG)を重心距離DGVi、データ重心間距離d(X,Vi)をデータ重心間距離DXViと称する。データ重心間距離DXViのうち、クラスタCi内の要素データXと当該クラスタCiのクラスタ重心Viとの距離を特に区別する際にはクラスタ内距離DXViと称することがある。さらに、個々の要素データXを特に区別する場合には、要素データX1、X2・・・等と称して説明する。
【0022】
要素データXは、q(qは、1以上の整数)次元ベクトルであり、例えば画像の色や濃淡、色の分布等の各特徴量を表す。要素データXの各次元は、Nビット(例えば8ビット)で表される。データ重心GGは、全ての要素データXの相加平均として求められ、クラスタ重心Viは、クラスタ内の各要素データXの相加平均として求められる。データ重心GG及びクラスタ重心Viは、要素データXと同じq次元ベクトルである。重心距離DGVi及びデータ重心間距離DXViは、この例ではマンハッタン距離として求められる。
【0023】
式(1)の右辺の分母の値SWDは、クラスタCi内における要素データXの分散(要素データ同士の類似)の程度を全クラスタについて示す内的結合度になっている。式(1)における内的結合度は、クラスタCiごとの第1指標値SDiを当該クラスタ内のデータ数niで除することで規格化した結合指標値SWDiの各クラスタCiについての総和である第1総和値として求められる。第1指標値SDiは、クラスタCi内の各要素データXについてのクラスタ内距離DXViの総和としている。
【0024】
また、式(1)の右辺の分子は、クラスタCiの分離の程度を全クラスタについて示す外的分離度になっている。式(1)における外的分離度は、クラスタ指標値SBSをクラスタ数Ncで除算して規格化したものになっている。この例における、クラスタ指標値SBSは、クラスタ間の距離の指標となる各々のクラスタCiについての第2指標値SBSiの総和である第2総和値として求められる。第2指標値SBSiは、クラスタCiのデータ数niで重み付けした重心距離DGViとしている。このように、第2指標値SBSiとして、重心距離DGViを用いることは、クラスタ相互間の距離を用いるよりも計算数を少なくする上で有利である。なお,重心距離DGViに重み付けをする場合、重み付けする値は、データ数niに限定されず、データ数niに基づく値で重み付けしてもよい。
【0025】
内的結合度SWDは、結合指標値SWDiを用いて、式(2)のように表され、クラスタ指標値SBSは、第2指標値SBSiを用いて、式(3)のように表される。また、クラスタCiにおける結合指標値SWDi及び第2指標値SBSiは、それぞれ式(4)、式(5)のように表される。
【0026】
【0027】
上記のように、評価値E(Nc)では、クラスタ指標値SBSをクラスタ数Ncで規格化した値を外的分離度とし、クラスタCiのデータ数niで規格化した結合指標値SWDiの第1総和値を内的結合度としている。このため、全要素データXにおいて、他の要素データXのまとまりに対して、範囲の大きな要素データXのまとまりがある場合や、要素データXの分布密度が高い要素データXのまとまりがある場合等であっても、個々のクラスタCi内における要素データXの分散の程度が内的結合度に適正に反映される。すなわち、過剰な分類がされた場合に、評価値E(Nc)がより大きくなるようなことがなく、過剰な分類が抑制される。
【0028】
クラスタリング装置10は、システムコントローラ11と、演算ユニット12とを備えている。演算ユニット12は、メインメモリ14、重心メモリ15、クラスタリング演算部16、近隣探索回路部17、評価値算出回路18を備えている。
【0029】
システムコントローラ11は、演算ユニット12に対する要素データXの入力、一括処理のクラスタリング及び更新処理の実行指示、クラスタ数Ncの設定や、演算ユニット12から取得した評価値E(Nc)による最適なクラスタ数Ncの判断、上述の妥当性判断、演算ユニット12に対するパワーゲーティングの制御等を行なう。パワーゲーティングについては後述する。また、システムコントローラ11は、クラスタリング結果として演算ユニット12から各要素データXに割り当てられるクラスタID、追加された新規要素データXnewが分類されたクラスタCiのクラスタIDの取得等を行なう。この例では、システムコントローラ11が判断部となる。
【0030】
さらに、システムコントローラ11は、演算ユニット12によるクラスタリングの実行時に重心メモリ15の内容すなわち各クラスタ重心Viを監視し、各クラスタ重心Viの変動がなくなったとき、すなわちクラスタ重心Viが収束したときにクラスタリングを終了させる。なお、クラスタ重心Viが収束することに代えて、予め設定した回数の後述する分類計算を行なったときにクラスタリングを終了させてもよい。
【0031】
システムコントローラ11は、一括処理の際のクラスタ数Ncごとの復元用データを記憶する。復元用データは、演算ユニット12に保持されるクラスタID、クラスタ内距離DXVi、クラスタ重心Vi,データ数ni等を最適なクラスタ数Ncでクラスタリングした状態に復元するためのデータである。この例では、復元用データとして、各要素データXに割り当てられるクラスタIDを記憶する。復元用データとしては、この他に、各クラスタ重心Vi等としてもよく、クラスタIDとクラスタ重心Viとしてもよい。
【0032】
最適なクラスタ数Ncによるクラスタリングを再度実行することでも、演算ユニット12に保持されるデータを復元できるが、クラスタIDやクラスタ重心Viを用いることで、少ない計算量で高速に復元することができる。k-means法のようなクラスタリングでは、そのクラスタリングに要する計算時間のほとんどがクラスタ重心を収束させるための反復計算の時間である。計算の反復回数は、要素データXの総データ数にもよるが、数十~数百回、多い場合には1000回程度にも達する。しかしながら、上記のように、一度収束したクラスタ重心Viやそれによって決まったクラスタIDを用いれば、反復計算をすることなく、高速(短時間)かつ高精度にクラスタリングした状態にすることができる。
【0033】
演算ユニット12は、上記の一括処理、更新処理を行なうASIC(Application Specific Integrated Circuit)として作製され、演算ユニット12の各部はクロック発生器(図示省略)からのクロックに基づいて同期動作するように構成されている。この演算ユニット12は、システムコントローラ11による一括処理のクラスタリング及び更新処理の指示をトリガにして作動する。
【0034】
クラスタリング演算部16は、k-means法によるクラスタリングを行なう回路であり、一括処理のクラスタリングの各種計算や各要素データXのクラスタCiへの分類等を行なう。このクラスタリング演算部16は、遅延回路21、距離算出回路22、距離レジスタ部24とCID(クラスタID)レジスタ部25とからなるメインレジスタユニット26、最大値検出回路27、CID(クラスタID)マスク回路28、重心算出回路29を有している。クラスタリング演算部16は、システムコントローラ11とともに一括処理部を構成する。
【0035】
データ記憶部としてのメインメモリ14は、システムコントローラ11によって書き込まれる複数の要素データXを記憶する。
図2に一例を示すように、メインメモリ14は、1個の要素データXの各次元の成分(以下、ベクトル成分という)と同じNビットの容量を持つ単位ブロック14aをq×Mの行列状に並べたものであり、各列に要素データXの次元と同じq個の単位ブロック14aが並べられている。行方向に並ぶ単位ブロック14aの個数Mは、分類する要素データXの最大個数以上である。メインメモリ14は、1つの単位ブロック14aに1個のベクトル成分を記憶し1個の要素データXが同一列の各単位ブロック14aに記憶するようにして、各要素データXを記憶する。
図2では、要素データXpの各ベクトル成分Xp1、Xp2・・・Xpqが書き込まれた状態を描いてある。
【0036】
メインメモリ14は、要素データXを読み出す際には、行方向に並ぶM個の単位ブロック14aを1単位として順次に読み出す。これにより、各要素データXのベクトル成分が一次元分ずつ並列的にメインメモリ14から出力される。なお、要素データXが書かれていない列からも同様に読み出しが行なわれ、この場合には例えば「0」の成分ベクトルが読み出される。なお、メインメモリ14は、要素データXの書き込みについては、例えば単位ブロック14aごとのように少容量ずつ書き込みを行なうものであってもよい。なお、重心メモリ15についても同様である。
【0037】
重心メモリ15は、各クラスタのクラスタ重心Viを記憶するものであり、図示を省略するが、メインメモリ14と同様な構成である。すなわち、重心メモリ15は、Nビットの単位ブロックを列方向にq個の並べるようにして単位ブロックを行列状に設けたものであり、各列にq次元のクラスタ重心Viを記憶する。重心メモリ15は、メインメモリ14よりも小容量である。重心メモリ15からは、クラスタ重心Viごとに読み出され、1つのクラスタ重心Viについては、1列分のベクトル成分が順次に読み出される。
【0038】
この例では、メインメモリ14及び重心メモリ15には、不揮発性メモリが用いられている。これにより、要素データX、クラスタ重心Viの読み出し、書き込みを行なわないときには、これらへの電力供給を停止することができ、より一層の省電力化を図ることができる。メインメモリ14及び重心メモリ15に用いる不揮発性メモリとしては、MTJ素子等を記憶素子としたものが好ましく用いられる。
【0039】
遅延回路21は、メインメモリ14と距離算出回路22との間に設けられている。この遅延回路21は、メインメモリ14から読み出されて距離算出回路22に入力される要素データXの入力タイミングと、当該要素データXから重心算出回路29によって算出されて距離算出回路22に入力されるクラスタ重心V
iの入力タイミングとを同期させる。
図2に示されるように、遅延回路21は、複数段に接続されたレジスタ部31から構成される。各レジスタ部31は、それぞれM個のセル31aで構成されている。各セル31aは、それぞれNビットの容量を持つレジスタである。1つのレジスタ部31の各セル31aから次段のレジスタ部31の各セル31aに順次にベクトル成分を送ることで、要素データXの距離算出回路22への入力を遅延させる。遅延回路21による遅延時間すなわちレジスタ部31の段数は、データ重心GG、クラスタ重心V
iの計算に必要なクロック数等から予め決められている。
【0040】
距離算出回路22は、一括処理の際には、遅延回路21を介してメインメモリ14から入力される各要素データXと重心算出回路29で算出されるクラスタ重心Viとが入力される。また、更新処理では、クラスタ重心Viとして、重心算出回路29からのものに代えて重心メモリ15からのものが入力される。この距離算出回路22は、入力される各要素データXについてのデータ重心間距離DXViを並列的に算出する。なお、要素データX及びクラスタ重心Vi等のベクトルデータの回路に対する入力は、ベクトル成分が順次に入力されることを意味する。
【0041】
距離レジスタ部24は、距離算出回路22で算出される各データ重心間距離DXViを保持し、CIDレジスタ部25は、クラスタID(クラスタ情報)を保持する。距離レジスタ部24の内容は、対応する距離算出回路22で算出される新たなデータ重心間距離DXViがその時点で記憶されているデータ重心間距離DXViよりも小さい場合に、その新たなデータ重心間距離DXViに更新される。クラスタリング時に最終的にCIDレジスタ部25に保持している各クラスタIDが、各要素データの分類されるクラスタを示し、距離レジスタ部24に保持しているデータ重心間距離DXViがクラスタ内距離を示す。
【0042】
図3(A)に示すように、距離算出回路22は、データ重心間距離DXV
iを計算するM個のセル22aを有している。同様に、距離レジスタ部24は、
図3(C)に示すように、データ重心間距離DXV
iを保持するM個のセル24aを、CIDレジスタ部25は、クラスタIDを保持するM個のセル25aをそれぞれ有している。セル24a、25aは、それぞれ複数ビットの容量を持つレジスタである。上述のように、要素データXがq次元ベクトルであり、各次元がNビットである場合には、データ重心間距離DXV
iが(N+q)ビットのデータであるので、セル24aは、少なくとも(N+q)ビットの容量を持つ。メインメモリ14の各列にそれぞれ1個のセル22a、24a、25aが対応している。後述するCIDマスク回路28のセル28a(
図5参照)についても同様である。これにより、メインメモリ14に記憶されている各々の要素データXは、それぞれ1個のセル22a、24a、25a、28aに対応し、要素データX、セル22a、24a、25a、28aの各内容が相互に対応付けられる。なお、
図3及び後述の
図4ないし
図7では、要部の構成及び信号のみを示してある。
【0043】
距離算出回路22のセル22aは、
図3(B)に一例が示されるように、全加算器32、XOR(排他的論理和)回路33、セレクタ34、全加算器35、計算レジスタ36で構成されている。全加算器32は、その一方の入力端に遅延回路21からの要素データXが、他方の入力端に重心算出回路29または重心メモリ15からのクラスタ重心V
iが反転入力され、その加算結果と桁上げ信号(負論理)とをXOR回路33に入力している。これにより、要素データXとクラスタ重心V
iとの次元ごとの距離がXOR回路33から順次に出力される。
【0044】
XOR回路33からの各次元の距離は、セレクタ34を介して全加算器35の一方の入力端に順次に入力される。XOR回路33からの1次元分の距離が全加算器35に入力されるごとに、これに同期して計算レジスタ36の内容が読み出されて全加算器35の他方の入力端に入力され、これにより得られる全加算器35の計算結果で計算レジスタ36の内容が更新される。計算レジスタ36の内容は、初期値は「0」である。これにより、全加算器35へのq次元分の距離の入力により、計算レジスタ36には、データ重心間距離(マンハッタン距離)DXViが保持される。
【0045】
セレクタ34は、上記のように計算レジスタ36がデータ重心間距離を記憶した後、すなわちデータ重心間距離DXViが計算された後に、セル24aの内容を全加算器35の一方の入力端に反転入力する。この後に、計算レジスタ36の内容とセル24aの内容とが同期して読み出され、全加算器35にそれぞれ入力される。セル24aには、計算レジスタ36の内容が入力データとして与えられるとともに、更新信号として全加算器35の桁上げ信号が与えられている。これにより、全加算器35で桁上げが発生したときに、セル24aの内容が計算レジスタ36の内容に更新される。このような動作が距離算出回路22に入力されるクラスタ重心Viごとに行なわれることで、各クラスタ重心Viに対するデータ重心間距離DXViのうちで最小のものがセル24aに保持される。各セル24aは、独立してその内容が更新されるため、距離レジスタ部24には、各要素データXのそれぞれについてのデータ重心間距離DXViが保持される。
【0046】
CIDレジスタ部25の各セル25aは、距離算出回路22がデータ重心間距離DXViの計算を行なっているときに、処理対象としているクラスタCiのクラスタIDが指定CIDとして入力されている。このセル25aは、セル24aと同様に、全加算器35で桁上げが発生したときに、入力されているクラスタIDに保持している内容が更新される。これにより、セル25aには、データ重心間距離DXViが最小となるクラスタCiが保持される。すなわち、セル25aが保持するクラスタIDによって、対応する要素データXが分類されているクラスタのクラスタIDが示される。
【0047】
なお、演算ユニット12における各種データを伝送するバスは、伝送するデータに応じたバス幅(ビット数)のものが用いられている。例えば、距離レジスタ部24の全加算器32の各入力端は、要素データX、クラスタ重心V
iのNビットのベクトル成分をパラレルに入力するので、それら各入力端にはそれぞれバス幅がNビットのバスが接続されている。また、全加算器35と計算レジスタ36との間では、(N+q)ビットになるデータ重心間距離DXV
iの伝送をパラレルに行なうので、バス幅が(N+q)ビットのバスが用いられている。CIDマスク回路28のセレクタ37cのように、要素データX及びクラスタ重心V
iの両方を選択的に出力するバスでは、ビット数が大きなもの、この例ではクラスタ重心V
iに応じた(N+q)ビットのバス幅にされている。なお、
図3、
図5、
図7では、図中に要部のバス幅を記してある。
【0048】
距離レジスタ部24及びCIDレジスタ部25には、対となるセル24aとセル25aごとに、それらセル24a、25aのラッチ動作の有効/無効を切り替えるイネーブル信号回路71(
図9参照)が設けられている。このイネーブル信号回路71からのイネーブル信号をセル24a、25aに入力することで、セル24a及びセル25aのラッチ動作の有効と無効とが各種動作に応じたタイミングで切り替えられる。このようなイネーブル信号回路71を設けることにより、システムコントローラ11での個別のセル24a、25aの制御を不要にしている。また、セル25aと対応するセル28aとの間では、互いに一方の内容を他方がラッチ可能にされている。
【0049】
最大値検出回路27は、クラスタC
iのクラスタ重心V
iを初期設定する際に、距離レジスタ部24に保持されている各データ重心間距離DXV
iを比較し、最大となるデータ重心間距離DXV
iを検出する。最大値検出回路27は、M個のセル24aに対応したM個の最大フラグ(1ビット)を出力する。
図4に一例を示すように、最大値検出回路27は、Mビット入力のAND回路27aと、距離レジスタ部24のM個の各セル24aにそれぞれ対応したOR回路27b、NAND回路27c及び1ビットのレジスタ27dとが設けられている。OR回路27b、NAND回路27c、レジスタ27dは、セル24aに対応するもの同士で接続されている。セル24aは、最大値検出回路27に対して、保持しているクラスタ重心間距離DXV
iのデータを上位ビットから1ビットずつ順番に送り出す。
【0050】
OR回路27bの一方の入力端に,対応するセル24aからの1ビット信号が反転入力され、他方の入力端にレジスタ27dの出力が反転入力される。NAND回路27cの一方の入力端にOR回路27bの出力が入力され、他方の入力端にAND回路27aの出力が反転入力される。レジスタ27dは、NAND回路27cの出力の論理(「1」または「0」を保持し、保持している論理を出力する。この構成により、セル24aからクラスタ重心間距離DXViの全ビットの送出完了後には、距離レジスタ部24に保持されているクラスタ重心間距離DXViのうちで最大のクラスタ重心間距離DXViを保持しているセル24aに対応したレジスタ27dの保持する論理のみが「1」となる。各レジスタ27dの内容は、クラスタ重心間距離DXViが最大であるか否かを示す最大フラグとして、CIDマスク回路28の対応するセル28aにそれぞれ出力される。
【0051】
CIDマスク回路28は、メインメモリ14から入力される各要素データXまたは距離レジスタ部24から入力される各データ重心間距離DXViのうちから処理に必要なものだけを出力するように構成される。
【0052】
CIDマスク回路28は、
図5(A)に示すように、M個のセル28aを有している。
図5(B)に一例を示すように、セル28aは、セレクタ37a~37c、MIDレジスタ37d、コンパレータ37e等で構成される。各MIDレジスタ37dには、セル24a、25aと同様に、イネーブル信号回路75(
図10参照)がそれぞれ設けられており、システムコントローラ11での各MIDレジスタ37dの個別の制御を不要にしている。イネーブル信号回路75からのイネーブル信号をMIDレジスタ37dに入力することで、MIDレジスタ37dのラッチ動作の有効と無効とが各種動作に応じたタイミングで切り替えられる。
【0053】
セレクタ37aは、要素データXとデータ重心間距離DXViとのいずれか一方を入力データとして選択し、セレクタ37cに出力する。セレクタ37bは、CIDレジスタ部25のセル24aからのクラスタIDとシステムコントローラ11からの外部設定ID(クラスタID)のいずれか一方を選択してMIDレジスタ37dに入力する。
【0054】
MIDレジスタ37dは、セレクタ37bからのクラスタIDをラッチ動作で保持し、保持しているクラスタIDをコンパレータ37eに入力する。コンパレータ37eは、指定CIDとMIDレジスタ37dからのクラスタIDとを比較し、その比較結果を示す1ビットの比較フラグ(C―flag)を外部に出力するとともに、セレクタ37cに入力する。比較フラグは、指定CIDとMIDレジスタ37dからのクラスタIDとが一致している場合に「1」となり、不一致の場合には「0」となる。
【0055】
セレクタ37cは、コンパレータ37eからの比較フラグが「1」の場合に入力データ(要素データXまたはデータ重心間距離DXVi)を出力し、「0」の場合に全ビットが「0」のヌルデータを出力する。これにより、例えばMIDレジスタ37dに対応するCIDレジスタ部25のセル25aのクラスタIDが保持されているときには、指定CIDと一致するクラスタIDに分類されている要素データXまたはそのデータ重心間距離DXViがセル28aから出力され、それらセル28aからの比較フラグが「1」になる。
【0056】
重心算出回路29は、CIDマスク回路28を通して入力される各要素データXと比較フラグとからデータ重心GG及びクラスタ重心Viを算出する。また、この重心算出回路29は、クラスタ重心Viの計算途中で得られるデータ数ni及びデータ加算値SSiを評価値算出回路18に入力する。データ数ni及びデータ加算値SSiは、評価値算出回路18において、第2指標値SBSiの計算等に用いられる。さらに、重心算出回路29は、CIDマスク回路28を通して入力される各要素データXと比較フラグとから、結合指標値SWDiを算出して評価値算出回路18に送る。上述のように、結合指標値SWDiは、クラスタ内距離DXViの総和である第1指標値SDiをデータ数niで除した値として求められる。
【0057】
上記のデータ加算値SSiは、式(6)に示されるように、クラスタCiの各要素データXを次元ごとに加算したデータであり、要素データXと同じq次元ベクトルである。クラスタ重心Viは、式(7)に示されるように、データ加算値SSiをデータ数niで除することにより求められる。また、全要素データXについてのデータ加算値を全データ数で除することによりデータ重心GGを求める。重心算出回路29は、クラスタ重心Viを重心メモリ15と距離算出回路22とに送る。
【0058】
【0059】
重心算出回路29は、
図6に一例を示すように、M個のセレクタ38aからなるセレクタ部38と、加算器39と、第1レジスタ41及び第2レジスタ42と、除算器43とを備えている。各セレクタ38aは、CIDマスク回路28からの出力データ(要素データXまたはデータ重心間距離DXV
i)と比較フラグ(C-flag)とを順番に選択して加算器39に出力するように動作する。加算器39は、入力されるデータを加算する。
【0060】
第1レジスタ41は、セレクタ部38から加算器39に要素データXまたはデータ重心間距離DXViが入力される場合に、その加算器39の計算結果を保持する。これにより、加算器39に要素データXが入力されている場合には、データ加算値が第1レジスタ41に保持され、データ重心間距離DXViが入力されている場合には、第1指標値SDiが第1レジスタ41に保持される。また、セレクタ部38から比較フラグが入力される場合、比較フラグすなわち1ビットデータを加算した値を加算器39が計算し、この値が第2レジスタ42に保持される。第2レジスタ42に保持される値は、CIDマスク回路28から出力されている要素データXまたはデータ重心間距離DXViの個数になる。これにより、データ数niまたは全データ数を得ることができる。この例では、加算器39は、要素データXが入力されているときにデータ加算器として機能し、比較フラグが入力されているときに個数算出器として機能する。
【0061】
除算器43は、第1レジスタ41に保持されている値を第2レジスタ42に保持されている値で除した値を出力する。この除算器43の出力として、データ重心GG,クラスタ重心Vi、結合指標値SWDiが得られる。
【0062】
近隣探索回路部17は、システムコントローラ11及び重心メモリ15とともに、更新処理部を構成する。この更新処理部と上述の一括処理部によって、クラスタリング部を構成する。この近隣探索回路部17は、更新処理の際に、追加される新規要素データXnewとのデータ重心間距離DXViが最小となるクラスタIDを特定し、その特定したクラスタCiに新規要素データXnewを分類する。
【0063】
この近隣探索回路部17は、計算部17aと、近距離レジスタ部17bと、近距離CIDレジスタ部17cとを有する。計算部17aは、新規要素データXnewと、重心メモリ15から順次に読み出される各クラスタ重心Viとのデータ重心間距離DXViを計算する。近距離レジスタ部17b、近距離CIDレジスタ部17cは、計算部17aの計算結果に基づき、最小となるデータ重心間距離DXVi、クラスタIDを保持する。近距離CIDレジスタ部17cに最終的に保持されているクラスタIDが、新規要素データXnewの分類されるクラスタCiのクラスタIDとなる。近距離CIDレジスタ部17cに最終的に保持されているクラスタIDは、新規要素データXnewに対応するCIDレジスタ部25のセル25aに書き込まれる。また、近隣探索回路部17を構成する計算回路の一部が、更新処理の際の評価値E(Nc)を求めるために用いられる。
【0064】
図7に一例を示すように、計算部17aは、セレクタ44、全加算器45、XOR回路46、セレクタ47、全加算器48、計算レジスタ49、加算器61を有している。この計算部17aにより、新規要素データXnewと各クラスタ重心V
iとのデータ重心間距離DXV
iが順次に計算される。また、最小となるデータ重心間距離DXV
iが近距離レジスタ部17b保持され、そのデータ重心間距離DXV
iに対応するクラスタIDが近距離CIDレジスタ部17cに保持される。これらの計算部17a、近距離レジスタ部17b及び近距離CIDレジスタ部17cからなる近隣探索回路部17の回路構成は、距離算出回路22のセル22aと距離レジスタ部24のセル24a及びCIDレジスタ部25のセル25aと同様な構成であるので、詳細な説明は省略する。
【0065】
更新処理の際の評価値E(Nc)を求める際には、全加算器45、XOR回路46及び加算器61を用いて、新規要素データXnewが分類されるクラスタ重心Viとデータ重心GGとの重心距離DGViを算出する。重心距離DGViは、評価値算出回路18に送られる。なお、クラスタ重心Viは、重心メモリ15から入力される。
【0066】
評価値算出部としての評価値算出回路18は、一括処理における各クラスタリングの終了時及び更新処理の際にそれぞれ評価値E(Nc)を算出する。
図8に一例を示すように、評価値算出回路18は、ロジック部18aと評価レジスタ部18bとに大別される。ロジック部18aは、セレクタ50、乗算器51、減算器52、積算器53、並列加算器54、乗算器55、加算器56,57、分母レジスタ58、分子レジスタ59、除算器60で構成される。このロジック部18aは、評価レジスタ部18bに保持されている各種データ、システムコントローラ11から入力されるクラスタ数Nc等を用いて、上記式(1)による評価値E(Nc)を算出する。また、このロジック部18aは、更新処理の際に、新規要素データXnewが分類されたクラスタ重心V
iを計算し、これを重心メモリ15に書き込む。なお、評価値算出回路18の詳細な動作は後述する。
【0067】
評価レジスタ部18bは、GGレジスタ63、データ数レジスタ64、SBSレジスタユニット66、SWDレジスタユニット67及びセレクタ68からなる。GGレジスタ63は、重心算出回路29で算出されるデータ重心GGを保持する。データ数レジスタ64は、重心算出回路29で得られる各クラスタCiのデータ数niをそれぞれ保持する。なお、データ重心GGを重心メモリ15に記憶する構成として、GGレジスタ63を省略してもよい。また、GGレジスタ63、データ数レジスタ64、SBSレジスタユニット66、SWDレジスタユニット67をそれぞれ不揮発性レジスタとすることも好ましい。
【0068】
SBSレジスタユニット66は、第1SBSレジスタ661、第2SBSレジスタ662・・・を有する。第iSBSレジスタ66iは、データ加算値SSiから求められる第2指標値SBSiを保持する。SWDレジスタユニット67は、第1SWDレジスタ671、第2SWDレジスタ672・・・を有する。第iSWDレジスタ67iは、結合指標値SWDiを保持する。セレクタ68は、SBSレジスタユニット66、SWDレジスタユニット67の一方を選択して、選択したレジスタユニットに保持されているデータをロジック部18aに送る。
【0069】
図9に、距離レジスタ部24のセル24a及びのCIDレジスタ部25のセル25aに接続されたイネーブル信号回路71の一例を示す。イネーブル信号回路71は、上述のように対をなすセル24aとセル25aごとに設けられており、イネーブル信号回路71は、のCIDレジスタ部25のセル25aにも接続されているが、
図9ではセル25aの図示を省略している。
【0070】
イネーブル信号回路71は、AND回路71a、71c、71f、OR回路71b、71d、NAND回路71fで構成されている。OR回路71bには、第1制御信号(CIDM flag)及び第2制御信号(Fupdate_preset_N)が入力され、NAND回路71eには第3制御信号(OF)及び第4制御信号(Fset)が入力され、AND回路71fには、第1制御信号及び第5制御信号(Flag_enable)が入力される。OR回71dには、NAND回路71eの出力とAND回路71fの出力とが入力される。AND回路71cには、OR回71dの出力と、第6制御信号(Fauto)が入力される。AND回路71aにAND回路71c及びOR回路71bの各出力が入力され、このAND回路71aの出力がイネーブル信号として、距離レジスタ部24のレジスタであるセル24aのイネーブル端子に入力されている。
【0071】
各セル24aには、セレクタ(図示省略)を介して、初期化用のデータ、計算レジスタ36の内容、セル24aが読み出したデータ(データ重心間距離)自体のいずれかが入力されるようになっている。初期化用のデータは、全ビットが「1」になったデータまたは「0」になったデータである。また、セル24aは、シフトレジスタのように、保持しているデータを上位ビット側にシフトすることで、最上位ビットから順番に1ビットずつ出力することができる。この場合に、セル24aが読み出したデータを入力に戻すことによって、全ビットの送出完了後にセル24aの内容が元の状態に戻るようにしている。
【0072】
第1~第6制御信号は、演算ユニット12内で生成されるものである。第1制御信号は、比較フラグである。第1制御信号は、CIDマスク回路28のセル28aから出力される比較フラグである。第3制御信号は、全加算器35の桁上げ信号である。第2、第4、第5、第6制御信号は、システムコントローラ11からの信号である。第2制御信号は、距離レジスタ部24の各セル24aの内容を初期化の制御するためのローアクティブの信号である。第4制御信号は、「1」または「0」にセットされるセット信号である。また、第5制御信号は、第1制御信号(比較フラグ)を有効するための信号である。第6制御信号は、分類計算時に距離レジスタ部24の各セル24aの自動的な更新をサポートする信号である。
【0073】
例えば、要素データXに対応した各セル24aのそれぞれに最大値(全ビットが「1」となったデータ)を書き込み、その他のセル24aが最小値(全ビットが「0」となったデータ)を残すようにする距離レジスタ部24を初期化する場合での、イネーブル信号回路71の動作は次のようになる。なお、この初期化では、距離レジスタ部24のセル24aに各ビットが「0」のデータが予め書き込まれ、また要素データXに対応した各セル28aのMIDレジスタ37dに「1」を、その他のMIDレジスタ37dには「0」を保持させた状態にしてCIDマスク回路28が初期化されるとともに、コンパレータ37eには「1」の指定CIDを入力した状態で行なわれる。また、CIDレジスタ部25の各セル25aの内容を「1」にした状態で行なわれる。さらに、各セル24aに全ビットが「1」になった初期化用のデータが入力される。
【0074】
上記初期化のタイミングで第2制御信号が「0」、第3制御信号が「0」、第4制御信号が「1」、第6制御信号が「1」、第5制御信号が「1(0でもよい)」になる。一方、上記のように設定されているCIDマスク回路28からの比較フラグ(第1制御信号)は、要素データXに対応したものが「1」に、その他のものが「0」になる。これにより、要素データXに対応したセル22aのイネーブル信号が「1」に、その他のセル22aのイネーブル信号が「0」になり、要素データXに対応したセル24aのみが全ビットが「1」になった初期化用のデータをラッチして保持する。
【0075】
分類計算では、第2制御信号が「1」、第4制御信号が「1」、第5制御信号が「0」、第6制御信号が「1」とされる。これにより、第1制御信号(比較フラグ)にかかわらず、全加算器35の桁上げ信号である第3制御信号の論理と同じイネーブル信号が入力される。この結果、全加算器35で桁上げが生じると、すなわちセル24aが保持するデータ重心間距離DXViよりも計算レジスタ36の保持するデータ重心間距離DXViが小さいときにイネーブル信号が「1」になり、当該セル24aが計算レジスタ36のデータ重心間距離DXViをラッチして保持する。
【0076】
また、新規要素データXnewが分類されたクラスタCiのクラスタIDをCIDレジスタ部25のセル25aに書き込む場合には、まずCIDマスク回路28の新規要素データXnewに対応するセル28aのMIDレジスタ37dの内容を分類先のクラスタIDにする。また、そのクラスタIDを指定CIDとして、各セル25a、各コンパレータ37eに入力した状態にする。この状態で、第2制御信号を「0」、第4制御信号を「1」、第5制御信号を「0」、第6制御信号を「1」にする。これにより、第1制御信号(比較フラグ)が「1」となるセル25aだけのイネーブル信号が「1」となる。比較フラグは、新規要素データXnewに対応するセル28aからのものだけが「1」となっているので、結果として、新規要素データXnewに対応するセル25aにだけその分類先のクラスタIDが書き込まれる。
【0077】
図10に、CIDマスク回路のMIDレジスタ37dに設けられたイネーブル信号回路75の一例を示す。上述のようにイネーブル信号回路75は、MIDレジスタ37dごとに設けられている。イネーブル信号回路75は、セレクタ75a、AND回路75b、NAND回路75c、NOT回路75dから構成されている。NOT回路75dには、第7制御信号(Max Detector)が入力されている。このNOT回路75dの出力と第8制御信号(i_presetMIDreg_N)とが、NAND回路75cに入力されている。AND回路75bには、NAND回路75cの出力と、第9制御信号(Disable_N)とが入力されている。セレクタ75aは、AND回路75bからの出力と、第10制御信号(Column Decoder)とが入力され、どちらか一方をイネーブル信号として、MIDレジスタ37dのイネーブル端子に入力する。
【0078】
第7制御信号は、最大値検出回路27からの最大フラグであり、新たなクラスタ重心Viの初期値を設定する際には、第7制御信号を用いてMIDレジスタ37dのラッチ動作を制御する。また、第8制御信号は、システムコントローラ11からのローアクティブの信号であり、この第8制御信号によって、初期化時にてMIDレジスタ37dのラッチ動作を制御する。第9制御信号は、システムコントローラ11からのローアクティブの信号であり、この第9制御信号によって、第8制御信号の有効/無効を切り替える。第10制御信号は、メインメモリ14のカラムデコード信号であって、メインメモリ14の列に対応するCIDマスク回路28のセル28aを制御するため信号である。この第10制御信号は、MIDレジスタ37dの内容を外部設定CIDで指定するとき等にイネーブル信号として用いられる。具体的には、例えば、将来的に追加される新規要素データXnew用のための未使用のセル28aを指定する場合に使用される。第10制御信号は、システムコントローラ11からの信号である。
【0079】
上記のように構成される演算ユニット12は、
図11に示すように、第1パワードメインPD1~第6パワードメインPD6に分けられている。第1~第6パワードメインPD1~PD6は、電源PSからの電力供給がゲート回路部PGを介してシステムコントローラ11によって独立に制御される。システムコントローラ11は、演算に必要な回路を含むパワードメインに必要なタイミングで電力供給をする。
【0080】
この例では、メインメモリ14が第1パワードメインPD1に、重心メモリ15が第2パワードメインPD2に、近隣探索回路部17が第3パワードメインPD3に、評価値算出回路18のロジック部18aが第4パワードメインPD4にそれぞれ含まれる。また、クラスタリング演算部16の距離算出回路22、最大値検出回路27、CIDマスク回路28及び重心算出回路29が第5パワードメインPD5に含まれる。さらに、クラスタリング演算部16の距離レジスタ部24及びCIDレジスタ部25と、評価値算出回路18の評価レジスタ部18bとが第6パワードメインPD6に含まれる。
【0081】
メインメモリ14への要素データXの書き込みと、それに続く一括処理における電力供給の状態を
図12に示すように、期間T1では、各要素データXを書き込むためにメインメモリ14の第1パワードメインPD1へ電力供給される。第1パワードメインPD1は、クラスタリングが完了するまで電力供給が継続される。期間T2は、クラスタリングのための初期のクラスタ重心V
iを初期設定する期間であり、第2パワードメインPD2、第5パワードメインPD5、第6パワードメインPD6への電力供給が開始されるが、この期間T2ではロジック部18aによる第2指標値SBS
iを計算しないため、第4パワードメインPD4の電力供給は停止されている。
【0082】
期間T3になると、第4パワードメインPD4への電力供給が開始される。この期間T3から期間T7までの各期間は、それぞれ演算ユニット12で実質的にクラスタリングする分類計算する期間である。この期間T3から期間T7までの各期間では、更新処理に用いられる近隣探索回路部17の第3パワードメインPD3を除いて、各パワードメインに電力供給される。
【0083】
最後の分類計算が終了して期間T8になると、第1パワードメインPD1、第2パワードメインPD2、第5パワードメインPD5への電力供給が停止される。この期間T8から期間T10まででは、評価値E(Nc)を評価値算出回路18のロジック部18aで計算するために、第4パワードメインPD4と第6パワードメインPD6への電力供給が継続される。評価値E(Nc)を計算する際の期間T10では、クラスタリング演算部16を用いて結合指標値SWDiを計算するため第5パワードメインPD5に電力供給が行なわれる。
【0084】
上記期間T2から期間T10までが1つのクラスタ数Ncに対する処理期間であり、一括処理では、最適なクラスタ数Ncを求めるために、期間T2から期間T10までと同じ電力供給の制御が繰り返し行なわれる。この例では、分類計算ごとにロジック部18aで第2指標値SBSiを求めて随時更新しているため、期間T3から第4パワードメインPD4に電力供給を行なっている。このように第2指標値SBSiを随時更新する場合では、クラスタ重心Viの収束と同時に最終値としての第2指標値SBSiが得られた状態になるので、クラスタ重心Viの収束後に第2指標値SBSiを取得するために、再度各クラスタ重心Viを求める計算が不要となり、クラスタリングの高速化に有利となる。
【0085】
なお、第2指標値SBSiは、最終値のみを取得できればよいので、例えば二点鎖線で示すように、データ重心間距離DXViが収束したことを検出してから次のクラスタ重心Viの計算開始前に第4パワードメインPD4に電力供給を行なって第2指標値SBSiを計算してもよい。このようにすれば、省電力化に有利となる。
【0086】
図13は、更新処理における電力供給の状態を示している。更新処理では、新規要素データXnewと、重心メモリ15から読み出した各クラスタ重心V
iとを用いて、近隣探索回路部17により、最小のデータ重心間距離DXV
iとなるクラスタIDを特定する。このため、最初の期間T11で重心メモリ15の第2パワードメインPD2と、近隣探索回路部17の第3パワードメインPD3とに電力供給する。第6パワードメインPD6は、期間T11から継続して電力供給する。
【0087】
近隣探索回路部17でクラスタIDを特定した後の期間T12では、第3パワードメインPD3への電力供給を停止する。代わって、ロジック部18aにより、新規要素データXnewが分類されたクラスタCiの新しいクラスタ重心Viを計算するために第4パワードメインPD4への電力供給を開始する。
【0088】
期間T13では、新規要素データXnewが分類されたクラスタCiの新しい第2指標値SBSiをロジック部18aで求めるために、第4パワードメインPD4への電力供給を継続する。この新しい第2指標値SBSiの計算に必要となる重心距離DGViを近隣探索回路部17で計算するため、期間T13では第3パワードメインPD3への電力供給を行なう。期間T14では、第2パワードメインPD2、第3パワードメインPD3への電力供給を停止し、クラスタリング演算部16を用いて新しい結合指標値SWDiを計算するために第5パワードメインPD5に電力供給する。この期間T14において、ロジック部18aにより評価値E(Nc)が計算される。期間T14の終了で第6パワードメインPD6を除き各パワードメインに電力供給が停止される。
【0089】
第6パワードメインPD6は、評価レジスタ部18bのSBSレジスタユニット66及びSWDレジスタユニット67を不揮発性の構成とした場合には、
図12及び
図13において二点鎖線で示すように、電力供給及びその停止を制御することができる。例えば、一括処理の場合には、評価値E(Nc)の計算後に、第6パワードメインPD6の電力供給を停止することができる。また、更新処理では、期間T11で電力供給を開始し、更新処理の終了後に電力供給を停止することができる。
【0090】
なお、評価レジスタ部18bのSBSレジスタユニット66及びSWDレジスタユニット67の内容を、電力供給の停止前に他の記憶装置に退避させ、また電力供給開始後に退避した内容を戻す構成として、同様に第6パワードメインPD6の電力供給及びその停止を制御してもよい。また、第6パワードメインPD6は、一括処理から更新処理を継続して行なう場合や更新処理後に継続して一括処理を行なう場合には、その電力供給を継続する。
【0091】
次に上記構成の作用について説明する。メインメモリ14には、各要素データXが書き込まれた状態にされる。メインメモリ14の各列のうち要素データXが書き込まれていない列の各単位ブロックには、「0」が書き込まれる。メインメモリ14に各要素データXが書き込まれた状態で一括処理が未実施の場合には、一括処理が行なわれる。
【0092】
この例の一括処理では、
図14に示すよう、クラスタ数Ncを1ずつ増加させながら、全要素データXを用いたクラスタ数Ncでのクラスタリング処理を行い、クラスタリング処理ごとに評価値E(Nc)を算出する。そして、評価値E(Nc)が増加から減少に転じるクラスタ数Nc、すなわち前回の評価値E(Nc)よりも今回の評価値E(Nc+1)が小さくなったときのクラスタ数Ncを最適な値とし、その最適なクラスタ数Ncでクラスタリングされた状態にする。なお、設定されたクラスタ数Ncの範囲内で最大となるクラスタ数を最適な値としてもよい。
【0093】
一括処理によるクラスタリングの実施に先立って、距離レジスタ部24は、書き込まれた要素データXに対応するセル24aに最大値が、いずれの要素データXに対応していないセル24aに「0」が書き込まれて初期化される。また、CIDレジスタ部25は、書き込まれた要素データXに対応する各セル25aに「1」が、いずれの要素データXにも対応していないセル24aには「0」が書き込まれて初期化される。この後に、CIDマスク回路28の各セル28aのMIDレジスタ37dに、対応するセル24aのクラスタIDがラッチされて保持される。
【0094】
なお、以下に説明するクラスタリングでは、メインメモリ14の全ての列からデータが読み出されるが、上記のように距離レジスタ部24、CIDレジスタ部25、CIDマスク回路28を初期化することで、要素データX以外のデータは、各種計算及びその結果に影響を与えないから、要素データX以外のデータに関する説明は省略する。
【0095】
クラスタリング装置10は、システムコントローラ11の指示により、クラスタ数Ncを「2」としたクラスタリング処理を開始する。クラスタリング処理では、まず初期設定を行う。初期設定では、データ重心GGを求めるとともに、クラスタ重心V2の初期値となる要素データXを特定する。この要素データXの特定は、クラスタ重心V2の初期値となる要素データXをクラスタC2に分類することで行ない、またデータ重心GGが暫定的なクラスタ重心V1とされる。
【0096】
まず、メインメモリ14から要素データXの読み出しが行われる。読み出された要素データXは、CIDマスク回路28に送られるとともに、遅延回路21に送られる。このときに、CIDマスク回路28は、指定CIDとして「1」が入力され、また入力データとしてメインメモリ14からの要素データXを選択している。このため、MIDレジスタ37dに「1」が保持されているセル28aだけが要素データXを出力し、またそのセル28aからの比較フラグだけが「1」になる。したがって、メインメモリ14の要素データXが書き込まれていない列に対応したセル28aの比較フラグは「1」にならない。
【0097】
重心算出回路29では、セレクタ部38が、初期状態で、例えばCIDマスク回路28からの各比較フラグを選択している。これにより、「1」の比較フラグのフラグ数(信号数)が加算器39により求められる、そして、その結果が第2レジスタ42に保持される。次に、セレクタ部38が要素データXを選択して加算器39に入力する。これにより、入力される各要素データXを次元ごとに加算したq次元ベクトルであるデータ加算値が第1レジスタ41に保持される。この後に、除算器43により、第1レジスタ41に保持しているデータ加算値が第2レジスタ42に保持しているフラグ数で除算される。
【0098】
初期化により、要素データXに対応する全てのセル25aのクラスタIDが「1」になっているから、このときのデータ加算値及びフラグ数は、全要素データXについてそれぞれ求めた値になる。したがって、除算器43の除算結果としてデータ重心GGが得られる。
【0099】
上記のように除算器43で求められたデータ重心GGが、評価値算出回路18のGGレジスタ63に保持される。また、システムコントローラ11が第2レジスタ42の内容を全要素データXのデータ数として取得する。さらに、除算器43で求められたデータ重心GGが、暫定的なクラスタ重心V1として距離算出回路22に入力される。
【0100】
暫定的なクラスタ重心V1の入力に同期して、先にメインメモリ14から読み出された各要素データXが距離算出回路22に入力される。距離算出回路22の各セル22aでは、入力される要素データXと暫定的なクラスタ重心V1とからデータ重心間距離DXV1が算出される。そして、この算出されたデータ重心間距離DXV1が、その時点で距離レジスタ部24のセル24aに保持されている値よりも小さい場合には、セル24aの内容が更新される。
【0101】
現時点では、要素データXに対応した各セル24aは、最大値が保持されているから、全ての要素データXに対応した各セル24aの内容が、距離算出回路22によって今回算出されたデータ重心間距離DXV1に更新される。同時に、要素データXに対応したCIDレジスタ部25の各セル25aの内容が更新されるが、このときには指定CIDとして「1」が与えられているので、実質的に内容の変更はない。なお、要素データXに対応していないセル24aには、初期化で距離「0」が与えられているから、そのセル24aの内容及びそれに対応したセル25aの内容(クラスタID=0)は変更されることはない。
【0102】
上記のようにしてセル24aの内容が更新され、全てのセル24aに保持されているデータ重心間距離DXV1が最大値検出回路27に入力される。これにより、最大値検出回路27から出力されているM個の最大フラグのうち、入力されるデータ重心間距離DXV1のうちで最大のものに対応する最大フラグだけが「1」となる。
【0103】
CIDマスク回路28では、最大フラグが「1」に対応したセル28aのMIDレジスタ37dだけのラッチ動作が許容された状態になる。また、MIDレジスタ37dには、「2」の外部設定CIDが入力されている。このため、上記のように最大フラグが変化した後のクロックにより、「1」の最大フラグに対応したセル28aのMIDレジスタ37dの内容だけが、外部設定CIDの内容(「2」)に更新される。
【0104】
上記のように1個のMIDレジスタ37dの内容を更新した後、1回目の分類計算を行なう。1回の分類計算は、分類計算用に初期化、クラスタC1についての処理、クラスタC2についての処理を順番に行なう。
【0105】
まず、距離レジスタ部24の各セル24a、CIDレジスタ部25の各セル25aの内容が分類計算用に初期化される。すなわち、書き込まれた要素データXに対応するセル24aに最大値が、いずれの要素データXに対応していないセル24aに「0」が書き込まれて初期化される。また、CIDレジスタ部25は、書き込まれた要素データXに対応する各セル25aに「1」が、いずれの要素データXにも対応していないセル24aには「0」が書き込まれて初期化される。なお、要素データXに対応する各セル25aの内容は、引き続き行なわれる処理で必ず更新されるため、この初期化では、「1」以外の値にしてもよい。
【0106】
分類計算用の初期化の後に、クラスタC1についての処理を行なう。メインメモリ14から要素データXが読み出され、遅延回路21とCIDマスク回路28とに入力される。このときに、CIDマスク回路28では、メインメモリ14からの要素データXがコンパレータ37eに入力されるようにセレクタ37aが切り替えられるとともに、指定CIDとして「1」がコンパレータ37eに与えられている。このときのCIDマスク回路28の各MIDレジスタ37dは、クラスタ重心V2とされた要素データXに対応するMIDレジスタ37dの内容だけが「2」であり、他の要素データXに対応するMIDレジスタ37dの内容は「1」である。
【0107】
CIDマスク回路28の各セル28aに要素データXがそれぞれ入力されると、入力される要素データXのうち、対応するセル25aの内容が「1」となっているセル28aに入力された要素データXだけがCIDマスク回路28から出力され、そのセル28aからの比較フラグが「1」になる。
【0108】
上記のように要素データXと比較フラグとがCIDマスク回路28から出力された状態で、重心算出回路29では、まず比較フラグが入力された状態で加算器39が加算を行なうことにより、「1」となっている比較フラグのフラグ数が計算され、その計算結果が第2レジスタ42に保持される。すなわち、クラスタC1に分類されている要素データXのデータ数n1が第2レジスタ42に保持される。次に、要素データXが加算器39に入力され、加算器39による加算が行なわれて、その計算結果が第1レジスタ41に保持される。これにより、第1レジスタ41には、クラスタC1に分類されている各要素データXを加算したq次元ベクトルであるデータ加算値SS1が保持される。
【0109】
この後に、除算器43により、第1レジスタ41のデータ加算値SS1を第2レジスタ42のデータ数n1で除算することで、クラスタ重心V1が計算される。クラスタ重心V1は、重心メモリ15に書き込まれるとともに、距離算出回路22に入力される。また、第1レジスタ41のデータ加算値SS1及び第2レジスタ42のデータ数n1がそれぞれ評価値算出回路18に送られる。
【0110】
重心算出回路29からのデータ数n1は、データ数レジスタ64に保持され、またデータ加算値SS1は、減算器52に入力される。この後に、評価値算出回路18では、データ数レジスタ64のデータ数n1とGGレジスタ63のデータ重心GGとが読み出され、これらが乗算器51で乗算される。この乗算器51の出力値(q次元ベクトル)と、重心算出回路29からのデータ加算値SS1との差分(q次元ベクトル)を減算器52で求め、その差分の各ベクトル成分を積算器53で積算する。これによって、現時点におけるクラスタC1の第2指標値SBS1が計算される。第2指標値SBS1は、第1SBSレジスタ661に保持される。
【0111】
ここで、クラスタ重心Vi、データ数ni及びデータ加算値SSiは、上記式(7)に示される関係がある。このため、上述の式(5)で表される第2指標値SBSiは、次の式(8)のように変形できる。したがって、データ重心GG、データ加算値SSi及びデータ数niを用いた上記のような評価値算出回路18での計算により、第2指標値SBSiを求めることができる。
【0112】
【0113】
一方、距離算出回路22には、重心算出回路29からのクラスタ重心V1と同期して遅延回路21からの各要素データXが入力される。距離算出回路22の各セル22aでは、入力される各要素データXについてクラスタ重心V1とのデータ重心間距離DXV1が算出される。そして、セル22aで算出されたデータ重心間距離DXV1が、対応する距離レジスタ部24のセル24aにその時点で保持されている距離よりも短ければ、当該セル24aの内容が算出されたデータ重心間距離DXV1に更新され、対応する各セル25aのクラスタIDも更新される。このときに、要素データXに対応する全てのセル24aは、最大値を保持しているから、要素データXに対応する全てのセル24a、25aの内容が更新される。各セル25aに対しては、指定CIDとして「1」が与えられているので、要素データXに対応する全てのセル25aのクラスタIDは「1」になる。
【0114】
続いて、クラスタC2についての処理を行なう。クラスタC2についての処理は、指定CIDとして「2」を用いる他は、上記クラスタC1についての処理と同様である。すなわち、メインメモリ14から読み出されてCIDマスク回路28に入力された要素データXのうち、対応するCIDレジスタ部25のセル25aの内容が「2」になっている要素データXだけが、重心算出回路29に入力される。また、CIDマスク回路28から出力される要素データXと同じ個数の比較フラグが「1」になる。CIDマスク回路28では、上記のように、クラスタ重心V2とされている要素データXに対応するMIDレジスタ37dの内容だけが「2」なので、クラスタ重心V2とされた要素データXが重心算出回路29に入力されるとともに、1個の比較フラグだけが「1」になる。
【0115】
そして、重心算出回路29によって、CIDマスク回路28から出力される要素データXと各比較フラグとから、クラスタC2についてのデータ数n2と、クラスタC2についてのデータ加算値SS2が求められ、これらよりクラスタ重心V2が計算される。なお、この1回目のクラスタC2についての処理では、クラスタ重心V2とされた要素データXだけが重心算出回路29に入力されるから、算出されるクラスタ重心V2は、その1個の要素データXと同じである。除算器43で得られるクラスタ重心V2は、重心メモリ15に書き込まれるとともに、距離算出回路22に入力される。また、第1レジスタ41のデータ加算値SS2及び第2レジスタ42のデータ数n2がそれぞれ評価値算出回路18に送られる。
【0116】
重心算出回路29からのデータ数n2は、先に書き込まれたデータ数n1とは別にデータ数レジスタ64に保持され、またデータ加算値SS2が減算器52に入力される。この後に、データレジスタ65のデータ数n2と、GGレジスタ63のデータ重心GGとが読み出され、上記の第2指標値SBS1と同様にして、第2指標値SBS2が算出される。この第2指標値SBS2が第2SBSレジスタ662に保持される。
【0117】
重心算出回路29からのクラスタ重心V2と同期して、遅延回路21からの各要素データXが距離算出回路22に入力される。距離算出回路22の各セル22aにより、入力される要素データXについてクラスタ重心V2とのデータ重心間距離DXV2が算出される。そして、算出されたデータ重心間距離DXV2が、対応する距離レジスタ部24のセル24aに保持されている距離よりも短ければ、当該セル24aの内容が算出されたデータ重心間距離DXV2に更新され、対応する各セル25aのクラスタIDも更新される。このときに、各セル25aに対して指定CIDとして「2」が与えられているから、それらセル25aのクラスタIDは「2」に更新される。したがって、それまで、クラスタC1に分類されていた要素データXのうち、クラスタ重心V1よりもクラスタ重心V2に近い要素データXは、対応するセル24aの内容と同時にセル25aの内容が更新されてクラスタC2に分類された状態になる。
【0118】
この後に、各MIDレジスタ37dの内容がそれぞれ対応するCIDレジスタ部25のセル25aの内容に更新される。ここで1回目の分類計算が終了する。
【0119】
1回目の分類計算が終了すると、2回目の分類計算が行なわれる。2回目の分類計算は、1回目の分類計算と同様な手順で、分類計算用の初期化の後にクラスタC1についての処理とクラスタC2についての処理とを順番に行なう。まず、分類計算用の初期化では、書き込まれた要素データXに対応するセル24aに最大値が、各セル25aに「1」が書き込まれる。
【0120】
次のクラスタC1についての処理では、重心算出回路29によって、新たなデータ数n1、データ加算値SS1、クラスタ重心V1が求められる。そして、重心メモリ15に保持されているクラスタ重心V1及びデータ数レジスタ64に保持されているデータ数n1が新たに算出されたものにそれぞれ更新される。また、評価値算出回路18において、新たなデータ数n1とデータ加算値SS1を用いて、新たな第2指標値SBS1が算出され、これに第1SBSレジスタ661の内容が更新される。
【0121】
さらに、距離算出回路22により、各要素データXについての新たなクラスタ重心V1とのデータ重心間距離DXV1が算出される。そして、このように算出された新たなデータ重心間距離DXV1が距離レジスタ部24のセル24aの内容よりも短ければ、そのセル24aの内容が新たなデータ重心間距離DXV1に更新されるとともに、そのセル24aに対応するCIDレジスタ部25のセル25aの内容が「1」に更新される。
【0122】
クラスタC1についての処理に続き、クラスタC2についての処理が同様に行なわれる。これにより、重心算出回路29によって算出された新たなクラスタ重心V2、データ数n2に、重心メモリ15及びデータ数レジスタ64の内容が更新される。また、重心算出回路29によって算出された新たなデータ加算値SS2及び新たなデータ数n2を用いて、新たな第2指標値SBS2が評価値算出回路18で算出され、第2SBSレジスタ662の内容が更新される。さらに、距離算出回路22により、各要素データXについての新たなクラスタ重心V2とのデータ重心間距離DXV2が算出され、算出された新たなデータ重心間距離DXV2が距離レジスタ部24のセル24aの内容よりも短ければ、そのセル24aの内容が新たなデータ重心間距離DXV2に更新されるとともに、そのセル24aに対応するCIDレジスタ部25のセル25aの内容が「2」に更新され、各要素データXの各クラスタへの分類が更新される。この後に、各MIDレジスタ37dの内容がそれぞれ対応するCIDレジスタ部25のセル25aの内容に更新され、2回目の分類計算が終了する。
【0123】
3回目以降の分類計算も同様に行なわれ、クラスタ重心V1、V2、データ数n1、n2,第2指標値SBSS1、SBS2が更新される。また、距離レジスタ部24の各セル24aの内容及びCIDレジスタ部25の各セル25aの内容が更新され、各要素データXの各クラスタへの分類された状態になる。
【0124】
システムコントローラ11は、上記のように分類計算ごとに、重心メモリ15の内容を監視している。そして、システムコントローラ11は、重心メモリ15の内容の変動がなくなると、分類計算を終了させる。分類計算の終了時において、重心メモリ15、データ数レジスタ64、SBSレジスタユニット66に保持されているクラスタ重心V1、V2、データ数n1、n2,第2指標値SBSS1、SBS2は、変動しなくなった、すなわち収束したクラスタ重心V1、V2に基づいてそれぞれ算出されたものとなっている。
【0125】
分類計算の終了後に、評価値E(Nc)の計算が行なわれる。評価値E(Nc)の計算のために、評価値算出回路18では、最初に、例えばセレクタ68によりSBSレジスタユニット66が選択され、SBSレジスタ661、662・・・の内容が並列的に読み出され、読み出されたSBSレジスタ661、662・・・の内容が並列加算器54で加算される。今回のクラスタリングではクラスタ数Ncが「2」であるから、実質的には、SBSレジスタユニット66から第2指標値SBSS1、SBS2が読み出されて並列加算器54で加算される。これにより、第2指標値SBSiの総和であるクラスタ指標値SBSが求められる。
【0126】
次に、重心算出回路29を用いてクラスタC1、C2についての結合指標値SWD1、SWD2を算出する。距離レジスタ部24の各セル24aから各クラスタ内距離DXViを読み出してCIDマスク回路28を介して重心算出回路29に入力する。このときに、まずCIDマスク回路28の各セル28aに指定CIDとして「1」を入力することで、クラスタC1に分類されている各要素データXに対応するクラスタ内距離DXV1だけを重心算出回路29に出力する。
【0127】
重心算出回路29では、「1」となっている比較フラグのフラグ数からクラスタC1に分類されている各要素データXのデータ数n1が加算器39で求められ、これが第2レジスタ42に保持される。次に、各クラスタ内距離DXV1を積算したが第1指標値SD1が加算器39で求められ、これが第1レジスタ41に保持される。この後、除算器43により、第1レジスタ41の第1指標値SD1を第2レジスタ42のデータ数n1で除することで、結合指標値SWD1が求められる。この結合指標値SWD1は、評価値算出回路18に送られ、第1SWDレジスタ671に保持される。
【0128】
続いて、クラスタC2についての結合指標値SWD2を重心算出回路29で同様にして求め、第2SWDレジスタ672に保持する。なお、この場合には、CIDマスク回路28の各セル28aに指定CIDとして「2」を入力し、CIDマスク回路28を介してクラスタC2に分類されている各要素データXに対応するクラスタ内距離DXV2だけを距離レジスタ部24から重心算出回路29に入力する。
【0129】
上記のようにして各結合指標値SWD1、SWD2を取得した後、評価値算出回路18では、セレクタ68によってSWDレジスタユニット67が選択され、SWDレジスタ671、672・・・の内容が並列的に読み出される。そして、読み出されたSWDレジスタ671、672・・・の内容が並列加算器54で加算される。第2指標値SBSiの場合と同様に、実質的にはSWDレジスタユニット67から結合指標値SWD1、SWD2が読み出されて並列加算器54で加算される。この並列加算器54の加算結果として内的結合度SWDが得られる。
【0130】
並列加算器54で得られた内的結合度SWDは、乗算器55に入力され、この乗算器55によってシステムコントローラ11から入力されるクラスタ数Nc(=2)と乗算される。乗算器55の乗算結果は、分母レジスタ58に保持される。なお、内的結合度SWDにクラスタ数Ncを乗じているのは、評価値E(Nc)を次の除算で求める際に、クラスタ指標値SBSをクラスタ数Ncで規格化して外的分離度(SBS/Nc)とするためである。続けて、除算器60によって、分子レジスタ59の内容を分母レジスタ58の内容で除算することにより、クラスタ数Ncが「2」であるときの評価値E(2)が算出される。
【0131】
上記のように、評価値算出回路18は、クラスタリング演算部16がクラスタリングを行なうための計算過程の計算値を利用して評価値E(2)を算出する。すなわち、クラスタ重心V1、V2を計算する際に、その計算途中で算出される、データ加算値SS1、SS2、データ数n1、n2を利用して得られる第2指標値SBS1、SBS2を用いて評価値E(2)を算出する。したがって、高速かつ低消費電力で効率的に評価値E(2)が求められる。この後に算出される評価値E(Nc)についても同様である。
【0132】
システムコントローラ11は、上記のようにして除算器60で得られる評価値E(2)と、この時点でCIDレジスタ部25に保持されている各セル26aの内容すなわちクラスタ数Ncが「2」のときの各要素データXに対応したクラスタIDを取得する。システムコントローラ11は、取得した評価値E(2)及び各クラスタIDを記憶部(図示省略)に保持する。
【0133】
評価値E(2)及び各クラスタIDの取得後、クラスタ数Ncを「3」としたクラスタリング処理を行なう。クラスタ数Ncの「3」クラスタリング処理においても、クラスタ数Ncが「2」の場合と同様に、初期設定、分類計算、評価値算出を行なう。
【0134】
クラスタ数Ncが「3」の初期設定では、例えばクラスタ数Ncを「2」とした場合に得られたクラスタ重心V1、V2とともに、クラスタ内距離DXV1、DXV2のうちで最大のクラスタ内距離DXViに対応する要素データXであるクラスタ重心V3を初期値とする。これにより、クラスタ重心Viの収束を早める。
【0135】
クラスタ重心V3の初期値の設定は、上述のクラスタ重心V2の初期値を設定した場合と同様な手順で行なうが、距離レジスタ部24にクラスタ内距離DXV1、DXV2が保持されているので、クラスタ重心V1、V2の計算、クラスタ内距離DXV1、DXV2の計算は行なわない。距離レジスタ部24の各セル24aから全てのクラスタ内距離DXV1、DXV2を読み出し、最大値検出回路27及びCIDマスク回路28を用いて、「1」の最大フラグすなわち最大のクラスタ内距離DXViに対応したセル28aのMIDレジスタ37dだけのラッチ動作が許容された状態にする。各MIDレジスタ37dには、「3」の外部設定CIDが入力されているので、上記のように最大フラグが変化した後のクロックにより、「1」の最大フラグに対応したセル28aのMIDレジスタ37dの内容だけが、外部設定CIDの内容(「3」)に更新される。
【0136】
上記のように初期設定を行なった後に、1回目の分類計算を行なう。1回目の分類計算は、クラスタ数Ncが「2」の場合と同様に、分類計算用の初期化をしてから、指定CIDを「1」としてクラスタC1についての処理を行なってから、指定CIDを「2」としてクラスタC2についての処理を行う。クラスタC2についての処理後に、指定CIDを「3」として、クラスタC3についての処理を、クラスタC1、C2の場合と同様に行なう。
【0137】
クラスタC3についての処理で得られるクラスタ重心V3が重心メモリ15に書き込まれ、データ数n3がデータ数レジスタ64に書き込まれる。また、データ数n3及びデータ重心GGと、データ加算値SS3とから得られる第2指標値SBS3が第3SBSレジスタ663に書き込まれる。なお、データ重心GGは、新たに算出してもよいが、この例ではクラスタ数Ncが「2」のときに求めてGGレジスタ63に保持したものをそのまま用いている。
【0138】
1回目の分類計算後には、2回目の分類計算を同様に行なう。以降、分類計算を同様に繰り返し行なう。分類計算ごとに、距離レジスタ部24の各セル24aの内容及びCIDレジスタ部25の各セル25aの内容が更新され、各要素データXの各クラスタCiへの分類が更新される。また、重心メモリ15のクラスタ重心V1~V3が更新され、データ数レジスタ64のデータ数n1~n3、第1~第3SBSレジスタ661~663の第2指標値SBS1~SBS3が更新される。
【0139】
重心メモリ15の内容(クラスタ重心V1~V3)が変動しなくなると、システムコントローラ11によって、分類計算が終了される。この後に、評価値E(3)が評価値算出回路18によって計算される。この評価値E(3)の際には、重心算出回路29を用いてクラスタC1~C3についての結合指標値SWD1~SWD3が計算される。
【0140】
システムコントローラ11は、上記のようにして得られる評価値E(3)と、この時点でCIDレジスタ部25に保持されている各セル26aの内容すなわちクラスタ数Ncが「3」のときの各要素データに対応したクラスタIDを取得する。システムコントローラ11は、取得した評価値E(3)及び各クラスタIDを記憶部に保持する。
【0141】
以降、同様にしてクラスタ数Ncを1ずつ増加させながら、クラスタリング処理を行ない、クラスタ数Ncごとの評価値E(Nc)と各要素データXに対応したクラスタIDを取得して記憶する。
【0142】
システムコントローラ11は、前回の評価値E(Nc)よりも今回の評価値E(Nc+1)が小さくなったときに、前回のクラスタ数Ncを最適な値とする。そして、この後に、演算ユニット12の状態を最適なクラスタ数Ncでのクラスタリングした状態に復元する。
【0143】
復元するために、例えば、システムコントローラ11は、演算ユニット12のメインメモリ14及びGGレジスタ63を除いて各部を初期化した状態にしてから、記憶部に記憶している最適なクラスタ数Ncに対応した各クラスタIDをCIDレジスタ部25の各セル25aに書き戻す。この後に、クラスタC1、C2・・・CNCについての分類計算を1回行ない、その後に評価値E(Nc)を算出する。
【0144】
これにより、重心メモリ15のクラスタ重心V1~VNc、距離レジスタ部24の各セル24aのクラスタ内距離DXV1~DXVNc、CIDレジスタ部25のセル25aのクラスタID、SBSレジスタユニット66の第2指標値SBS1~SBSNC、SWDレジスタユニット67の結合指標値SWD1~SWDNc、データ数レジスタ64のデータ数n1~nNcが、最適なクラスタ数Ncでクラスタリングした最終的な値にそれぞれ復元される。なお、CIDレジスタ部25に書き込まれたクラスタIDは、分類計算によって変更されることはない。
【0145】
なお、復元の手法は、上記のものに限定されない。例えば、クラスタ数Ncごとに分類計算終了後の演算ユニット12の各部が保持している内容を記憶部に記憶しておき、これのうちの最適なクラスタ数Ncのものを各部に書き戻すようにしてもよい。また、前回の評価値E(Nc)よりも今回の評価値E(Nc+1)が小さくなったときに前回のクラスタ数Ncを最適な値とする場合では、復元のために前回のクラスタ数NcによるCIDレジスタ部25の各クラスタIDだけを記憶部に記憶してもよい。
【0146】
以上のように、最適なクラスタ数Ncでのクラスタリングした状態に演算ユニット12が復元されて、一括処理が終了する。
【0147】
一括処理の終了後に、新規要素データXnewが追加されたときには、更新処理を行う。
図15に示すように、更新処理では、新規要素データXnewについてデータ重心間距離DXV
iが最小となるクラスタC
iにその新規要素データXnewを分類する。すなわち、新規要素データXnewを、それの最寄りのクラスタC
iに分類する。この分類後に、新規要素データXnewが分類されたクラスタC
iのクラスタ重心V
iを更新してから、評価値E(Nc)を算出する。そして、評価値E(Nc)に基づいて更新処理後のクラスタリング結果の妥当性を判断する。
【0148】
以下、更新処理について具体的に説明する。この例では、新規要素データXnewの追加に応答して更新処理が行なわれる。追加される新規要素データXnewは、システムコントローラ11によって、まず近隣探索回路部17に入力され、近隣探索回路部17には、クラスタ重心Viが重心メモリ15から順番に読み出されて入力される。近隣探索回路部17では、新規要素データXnewと、順番に入力されるクラスタ重心Viとのデータ重心間距離DXViが計算部17aで順次に計算される。
【0149】
計算部17aで得られる新たなデータ重心間距離DXViが近距離レジスタ部17bに保持されている内容よりも小さいときには、近距離レジスタ部17bの内容が新たなデータ重心間距離DXViに更新される。これにより、最終的に、新規要素データXnewについて最小となるデータ重心間距離DXViが近距離レジスタ部17bに保持される。一方で、近距離CIDレジスタ部17cには、近隣探索回路部17に入力されているクラスタ重心Viに対応するクラスタIDを示す指定CIDが入力される。これにより、近距離CIDレジスタ部17cには、最小となるデータ重心間距離DXViに対応したクラスタIDが保持される。このようにして、新規要素データXnewは、データ重心間距離DXViが最小となるクラスタCiに分類される。
【0150】
以下、最終的に近距離CIDレジスタ部17cに保持されているクラスタIDを「k」として説明する。なお、kは、1、2・・・Ncのいずれかの値である。
【0151】
次に、評価値算出回路18により、新規要素データXnewが追加された後のクラスタ重心Vkを式(9)により求める。式(9)中において、値VkOLD、値nkOLDは、いずれも新規要素データXnewが追加(分類)される前のクラスタCkについてのクラスタ重心及びデータ数であり、クラスタ重心VkOLDは重心メモリ15から、データ数nkOLDはデータ数レジスタ64に保持されている。
【0152】
【0153】
評価値算出回路18のデータ数レジスタ64から読み出されたデータ数nkOLDと、固定値「1」とが加算器56に入力されて値「nkOLD+1」が求められ、これが分母レジスタ58に保持される。また、重心メモリ15から読み出されたクラスタ重心VkOLDとデータ数レジスタ64から読み出されたデータ数nkOLDとが乗算器51に入力されて、値「nkOLD×VkOLD」が求められる。乗算器51からの値「nkOLD×VkOLD」と、新規要素データXnewとが加算器57に入力され、値「nkOLD×VkOLD+Xnew」が得られ、この値が分子レジスタ59に保持される。そして、除算器60により、分母レジスタ58の内容で分子レジスタ59の内容を除することで、新規要素データXnewが分類された後のクラスタ重心Vkが算出される。このように算出されたクラスタ重心Vkが重心メモリ15に書き込まれることで、クラスタCkのクラスタ重心Vkが更新される。
【0154】
クラスタ重心Vkの更新後、第2指標値SBSkと結合指標値SWDkとを更新する。まず、新たな第2指標値SBSkを求めるために、重心メモリ15からクラスタ重心Vkが、GGレジスタ63からデータ重心GGがそれぞれ読み出され、これらが近隣探索回路部17の全加算器45にそれぞれ入力される。これにより、加算器61の出力としてクラスタ重心Vkとデータ重心GGとの差分ベクトル(q次元ベクトル)が得られる。差分ベクトルは、評価値算出回路18の乗算器51にセレクタ50を介して入力される。また、この乗算器51にデータ数レジスタ64から読み出されたデータ数nkが入力される。これにより、データ数nkを乗じた差分ベクトルが得られる。このデータ数nkを乗じた差分ベクトルが、減算器52をパススルーして積算器53に入力されることによって、第2指標値SBSkが得られる。このように算出された第2指標値SBSkに、SBSレジスタユニット66の第kSBSレジスタの内容が更新される。
【0155】
続いて結合指標値SWDkを更新する。新たな結合指標値SWDkは、クラスタリング演算部16で算出される。新規要素データXnewがメインメモリ14の未使用の列に書き込まれるとともに、その列に対応したCIDレジスタ部25のセル25aにクラスタIDとして「k」が書き込まれる。このクラスタIDの書き込みでは、例えばシステムコントローラ11が近距離CIDレジスタ部17cに保持されているクラスタIDを読み出し、そのクラスタIDを指定CIDとしてCIDレジスタ部25の各セル25aに与えた状態で、新規要素データXnewに対応するセル25aだけラッチ動作を行なわせることで行なう。
【0156】
CIDレジスタ部25に新規要素データXnewのクラスタIDを書き込んだ後に、CIDマスク回路28の各MIDレジスタ37dの内容が、それぞれ対応するCIDレジスタ部25のセル25aの内容に更新される。この後、CIDマスク回路28の各セル28aのコンパレータ37eにクラスタIDとして「k」を指定する指定CIDを与える。これにより、セル25aのクラスタIDが「k」となっているセル28aからの比較フラグだけが「1」になる。
【0157】
続いて、メインメモリ14から新規要素データXnewを含む全ての要素データXが読み出されて、遅延回路21を介して距離算出回路22に入力される。また、距離算出回路22には、重心メモリ15から読み出されたクラスタ重心Vkが入力される。これにより、各セル22aの全加算器32は、その一方の入力端に要素データXが入力され、他方の入力端にクラスタ重心Vkが入力される。全加算器32によるq次元分の計算が完了すると、各セル22aの計算レジスタ36には、それぞれ対応する要素データXについてのデータ重心間距離DXVkが保持された状態になる。
【0158】
上記のようにして全加算器32による計算の完了後、「1」の比較フラグに対応したセル24a。セル25a、すなわち保持しているクラスタIDが「k」のセル25aと、これに対応するセル24aだけがラッチ動作を行なうようにされる。これにより、次のクロックが発生したタイミングで、新規要素データXnewを含むクラスタCkに分類されている各要素データXkに対応するセル24a、セル25aの内容が更新される。
【0159】
この結果、クラスタCkに分類されている各要素データXに対応するセル24aには、新規要素データXnewの分類後に求めた新たなクラスタ重心Vkを用いて算出されたデータ重心間距離(クラスタ内距離)DXVkが保持される。一方、CIDレジスタ部25には、指定CIDとして「k」を与えているから、クラスタCk分類されている各要素データXに対応するセル25aには「k」が書き込まれるため、実際には内容は変更されない。このようにして、クラスタCkに分類されている各要素データXについてのクラスタ内距離)DXVkが新しいクラスタ重心Vkに対応した値に更新される。
【0160】
続いて距離レジスタ部24から各クラスタ内距離DXViが読み出されて、CIDマスク回路28を介して重心算出回路29に入力される。各MIDレジスタ37dの内容は、対応するCIDレジスタ部25のセル25aと同じになっており、指定CIDとして「k」を指定している。このため、重心算出回路29には、各クラスタ内距離DXVkだけが入力される。また、重心算出回路29に入力されている比較フラグは、クラスタCkに分類されている各要素データXの個数と同じフラグ数が「1」となっている。このため、重心算出回路29では、分類計算の場合と同様にして、各クラスタ内距離DXVkを加算した第1指標値SDkと、クラスタCkに分類されている各要素データXのデータ数nkとが求められ、これらから新たな結合指標値SWDkが計算される。新たな結合指標値SWDkは、評価値算出回路18に送られ、この新たな結合指標値SWDkにSWDレジスタユニット67の第kSWDレジスタの内容が更新される。
【0161】
この後、評価値算出回路18によって、SBSレジスタユニット66の各内容及びSWDレジスタユニット67の各内容を用いて評価値E(Nc)が計算される。このときの評価値E(Nc)の計算手順は、一括処理におけるクラスタリング後に行なう手順と同じである。
【0162】
上記説明から分かるように、更新処理においては、新規要素データXnewが分類されるクラスタCkのクラスタ重心Vkは更新するが、データ重心GGの更新を行なわない。通常では、既存の要素データXの全データ数は非常に大きく、例えば1または数個の新規要素データXnewの追加によるデータ重心GGの移動量は非常に小さい。このため、重心距離DGViをパラメータとして含む第2指標値SBSiの変動は非常に小さく、データ重心GGを更新しないことの評価値E(Nc)への影響はかなり小さい。これに対して、1または数個の新規要素データXnewの追加によるクラスタ重心Vkの移動は、データ数nkにもよるが、データ重心GGの移動に比べてかなり大きい。このため、結合指標値SWDk及び第2指標値SBSkの変動が大きくなり、それらの変動にともなう評価値E(Nc)の変動が大きくなるためである。
【0163】
システムコントローラ11は、上記のようにして算出される評価値E(Nc)を取得し、この評価値E(Nc)に基づいて更新処理によるクラスタリング結果の妥当性を判断する。すなわち、上記のように更新処理で新規要素データXnewを分類した後にもクラスタリング状態が適正に保たれているか否かを判断する。
【0164】
この例では、更新処理の直前に行なわれた一括処理で適正とされたクラスタ数Ncに対して得られた評価値E(Nc)を基準評価値とし、この基準評価値と更新処理で得られた評価値E(Nc)とを比較する。この比較で、例えば後者が前者と同じかそれ以上になっている場合に、妥当であると判断し、処理を終了する。一方、後者が前者よりも小さくなっている場合には、妥当でないと判断し、一括処理を実施する。
【0165】
妥当でないと判断した場合の一括処理は、上記と同様な手順により行う。この場合に、前回に一括処理で得られた適正なクラスタ数Ncで得られた各クラスタ重心Vi,各要素データに対するクラスタIDあるいは更新処理で得られた各要素データに対するクラスタIDを用いて、初期設定を行なうことも好ましい。このようにすることにより、k-means法によるクラスタリングを早期に収束でき、計算回数、計算時間を短縮できる。
【0166】
以上のようにしてクラスタリングを行なうため、新規要素データXnewを効率的かつ高速に分類される。そして、この分類によるクラスタリング結果は、評価値E(Nc)によって、その妥当性が判断され、クラスタリング結果が悪くなっているような場合には、一括処理で新規要素データを含む全要素データXでクラスタリングが行なわれ、最適なクラスタ数Ncに分類されるから、クラスタリングの精度が高く保たれる。これを例えば学習機能を有する自動認識装置に用いた場合、更新処理により高速、リアルタイムな認識(分類)が実現され、状況に応じて一括処理による高精度な学習が可能になる。
【0167】
更新処理で得られる評価値E(Nc)からクラスタリング状態が適正に保たれているか否かを判断する手法は、上記の手法に限られないが、上記のように、更新処理よりも前に得られた評価値E(Nc)を基準評価値として比較することは好ましい手法である。また、基準評価値として、一括処理及び更新処理を問わず、今回の更新処理の直前に行なわれたクラスタリングによるクラスタリング結果を評価した評価値を基準評価値として用いることも可能である。さらに、更新前評価値に対する更新後評価値の低下した大きさが所定の範囲内(例えば更新前評価値の10%ないし15%以下や予め決めた値以下)である場合には、妥当であると判断し、低下値がそれ以上である場合には妥当でないと判断してもよい。また、このように、更新前評価値に対する更新後評価値の低下した大きさが所定の範囲内である場合や、僅かな低下である場合に、一括処理を実施するか否かの選択要求を出力し、それに対するオペレータにからの入力に応答して一括処理の実施の有無が決まるようにしてもよい。
【0168】
また、上記の例では、1個の新規要素データが追加されるごとに更新処理を行なうようにしているが、追加される新規要素データの個数が2以上の一定数になることに応答して更新処理を行なう構成としてもよい。さらに、新規要素データが追加された場合に、所定の条件を満たすか否かで更新処理を行なうか、更新処理を行なわず当初より一括処理を行なうように構成してもよい。例えば、新規要素データが予め設定した個数以上である場合や、クラスタリング済みの要素データに対する追加される新規要素データの個数の割合が一定値以上である場合には更新処理を行なわず当初より一括処理を行なうようにしてもよい。
【0169】
上記の例では、一括処理での分類計算における各クラスタについての処理の順番は、任意である。また、分類計算でクラスタ重心が得られるごとに、そのクラスタ重心を重心メモリに書き込んでいるが、クラスタ重心が収束してから、クラスタ重心を重心メモリに書き込んでもよい。この場合、重心算出回路で算出されるクラスタ重心を監視することによって収束を判断すればよい。第2指標値についても同様であり、クラスタ重心が収束してから、第2指標値の計算を行ない、第2指標値のSBSレジスタユニットに書き込んでもよい。データ数のデータ数レジスタへの書き込みについても同様である。
【0170】
上記、クラスタリング装置10を用いたクラスタリングの検証を下記の(1)~(3)の3ケースについて行なった。すなわち、(1)新規要素データXnewが既存の2つのクラスタのうちの一方の内部に配置される場合(
図16)、(2)新規要素データXnewが既存の2つのクラスタの遠方に配置され、既存の各クラスタとの距離に差がある場合(
図17)、及び(3)新規要素データXnewが既存の2つのクラスタのうちの一方の近辺に配置される場合(
図18)である。いずれのケースにおいても、既存の各クラスタはそれぞれ50個の要素データXが一括処理によって分類され、10個の新規要素データXnewを追加してまとめて更新処理を行なっている。評価値E(Nc)は上述の式(1)により算出した。
【0171】
(1)新規要素データXnewが既存の2つのクラスタのうちの一方の内部に配置される場合では、更新処理によって各新規要素データXnewは、それらが内部に配置された一方のクラスタに分類された。新規要素データXnewの追加前における全要素データXを用いたクラスタリングの各クラスタ数Ncにおける評価値E(Nc)を表1の一括処理(追加前)の欄に示す。また、新規要素データXnewを追加して更新処理を行なった状態での評価値E(2)を表1の更新処理の欄に示す。さらに、参考として、新規要素データXnewが追加された全要素データXを用いた各クラスタ数Ncにおける評価値E(Nc)を表1の一括処理(追加後)の欄に示す。
【0172】
【0173】
(2)新規要素データXnewが既存の2つのクラスタの遠方に配置され、既存の各クラスタとの距離に差がある場合では、更新処理によって各新規要素データXnewは、既存の2つのクラスタのうち距離の近い一方のクラスタに分類された。新規要素データXnewの追加前における全要素データXを用いたクラスタリングの各クラスタ数Ncにおける評価値E(Nc)を表2の一括処理(追加前)の欄に、また新規要素データXnewを追加して更新処理を行なった状態での評価値E(2)を表2の更新処理の欄に示す。この場合、更新処理によって評価値E(2)が大きく低下したため妥当性判断の後に一括処理が行なわれた。このときに各クラスタ数Ncにおける評価値E(Nc)を表2の一括処理(追加後)の欄に示す。
【0174】
【0175】
(3)新規要素データXnewが既存の2つのクラスタのうちの一方の近辺に配置される場合では、更新処理によって各新規要素データXnewは、それらが近辺に配置された一方のクラスタに分類された。新規要素データXnewの追加前における全要素データXを用いたクラスタリングの各クラスタ数Ncにおける評価値E(Nc)を表3の一括処理(追加前)の欄に、また新規要素データXnewを追加して更新処理を行なった状態での評価値E(2)を表3の更新処理の欄に示す。この場合、更新処理による評価値E(2)の低下が10%程度であった。参考として、更新処理後に、一括処理を行なったときの各クラスタ数Ncにおける評価値E(Nc)を表3の一括処理(追加後)の欄に示す。
【0176】
【0177】
評価値の算出式は、上記のものに限定されない。上記のように求められる内的結合度は、その値が小さいほど、クラスタ内のデータ相互の類似性が高くなるように各クラスタ内のデータがまとまったクラスタリング状態となることを意味する。一方で、上記のように求められる外的分離度は、その値が大きいほど、クラスタ相互間の類似性が低くなるように各クラスタが相互に離れたクラスタリング状態となることを意味する。このため、内的結合度と外的分離度とから評価値を求める演算は、内的結合度が小さくなる方向に変化したとき、また外的分離度が大きくなる方向に変化したときに、評価値が増加または減少の一方に変化するようにすればよく、そのような結果が得られる内的結合度と外的分離度とを変数とする演算式を用いればよい。
【0178】
例えば、式(1)に示されるクラスタ指標値SBS(第2総和値)に代えて、式(10)に示されるように、1のクラスタCiについての他のクラスタCjとの間のクラスタ距離(d(Vi,Vj))のうちの最小値の各クラスタについての総和であるクラスタ指標値SBS(第2総和値)を用いてもよい。この場合、1のクラスタCiについての他のクラスタCjとの間のクラスタ間距離(d(Vi,Vj))の最小値が第2指標値SBSiである。
【0179】
【0180】
また、データ重心間距離(クラスタ内距離)、重心距離、クラスタ間距離として、マンハッタン距離以外の、例えばユークリッド距離、ミンコフスキー距離、Point symmetry distance等を用いてもよく、各種距離の二乗した値を用いてもよい。
【0181】
この例では、第1の値としてのクラスタ内のデータ数niで第1指標値SDiを除することで規格化した結合指標値SWDiを求めているが、第1の値は、これに限定されるものではなく、クラスタCiのデータ数niに基づく値とすることができる。例えば、クラスタCiのデータ数niの冪(ni
2、ni
3、ni
1/2、ni
-2等)、データ数niを定数倍した値、データ数niに一定数を減算または加算した値、データ数niとクラスタ数Ncとを予め決めた関数F(ni,Nc)、例えば「F(ni,Nc)=ni-Nc」、kを定数とした「F(ni,Nc)=k・ni-Nc」等に適用した結果等を第1の値として用いることができる。
【0182】
また、第2の値としてのクラスタ数Ncでクラスタ指標値SBSを除算することで規格化した外的分離度(SBS/Nc)を求めているが、第2の値は、これに限定されるものではなく、クラスタ数Ncに基づく値で規格化することができる。クラスタ数Nc以外のクラスタ数Ncに基づく値としては、第1の値と同様に、例えば、クラスタ数Ncの冪、クラスタ数Ncを定数倍した値、クラスタ数Ncに一定数を減算または加算した値等を第2の値として用いることができる。
【0183】
なお、外的分離度として、例えば値「SBS/Nc」を全データ数Nnで除した値(=SBS/(Nc×Nn))を用いた評価値(以下、このような評価値E(Nn、Nc)と称する)もあるが、このような評価値E(Nn、Nc)は、要素データの増加がない場合に、各クラスタ数Ncの相互間におけるクラスタリングの状態を評価するうえでは有用である。しかしながら、評価値E(Nn、Nc)は、全データ数Nnの増加した場合に、クラスタリングの状態が良好になっても、要素データの増加にともなって評価値が全データ数Nnの増加前と比べて低下する。このため、要素データの追加が発生するように要素データの全データ数Nnが動的である場合、また上記の更新処理のように、要素データの増加の前後において評価値を比較する場合には、式(1)に示される評価値E(Nc)や式(10)に示されるクラスタ指標値SBSを用いた評価値E(Nc)のように全データ数Nnを含まないことが好ましい。
【0184】
クラスタリング状態(分類結果)を上記評価値E(Nc)を用いて評価する手法、クラスタリング演算部がクラスタリングを行なうための計算過程の計算値を利用して評価値E(Nc)を算出する手法は、新規要素データが追加された場合に更新処理を行なう場合に限定されず、例えば新規要素データが追加された場合に一括処理を行なう構成にも適用できる。
【0185】
また、上記の例では、クラスタ内距離の基点である第1代表点として、クラスタ重心を用い、クラスタ間の距離の指標となる重心距離及びクラスタ間距離の各クラスタの基点である第2代表点をクラスタ重心にしているが、第1代表点、第2代表点はこれらに限定されない。例えば、第1代表点、第2代表点を各クラスタ内において、クラスタ重心に最も近い要素データとしてもよい。また、第2代表点は、クラスタ同士または後述する基準点とクラスタとの離れた具合(距離)を測る上での基点であるから、隣接したクラスタあるいは基準点に最も近いまたは最も離れたクラスタ内の要素データ等としてもよい。さらに、第1代表点及び第2代表点を、別途定めた基準によって決まるクラスタ内の点またはデータやクラスタ内の任意の点または要素データとしてもよい。
【0186】
さらに、上記の例では、データ重心を基準点としているが、基準点は、任意の点や要素データに設定することができ、上記のようなデータ重心の他に、データ重心に最も近い要素データ、いずれかのクラスタの第2代表点、外部より指定する点や要素データ、外部から指定されたメインメモリのアドレスに格納されている要素データ、最初に入力された要素データ等のように別途定めた基準によって決まる点や要素データにしてもよい。
【0187】
評価値E(Nc)は、式(1)の逆数としてもよい。この場合には、評価値E(Nc)は、最小(極小)となるものが最適なクラスタ数Ncとなる。また、評価値を求める演算としては、内的結合度と外的分離度との比とするものの他に、例えば、次の各式に示すように、内的結合度と外的分離度の一方の逆数と他方とをそれぞれ重み付けして加算することで評価値E(Nc)を求めるもの、内的結合度と外的分離度の一方から他方をそれぞれ重み付けして減算することで評価値E(Nc)を求めるもの等を用いることができる。なお、式中の値Wa、Wbは重み付けの定数であり、Wa,Wb≠0である。
【0188】
【0189】
上記ではk-means法をも用いてクラスタリングを行なっているが、k-means法に限らず、各要素データを1つのクラスタに属するように分類するハードクラスタリングに適用することができる。このようなハードクラスタリングとしては、「k-means++」法、スペクトラルクラスタリング、単連結法、ウォード法等がある。
【符号の説明】
【0190】
10 クラスタリング装置
11 システムコントローラ
14 メインメモリ
15 重心メモリ
16 クラスタリング演算部
17 近隣探索回路部
18 評価値算出回路
18a ロジック部
18b 評価レジスタ部
25 CIDレジスタ部
29 重心算出回路
PD1~PD6 パワードメイン