(57)【要約】【課題】自己組織化マップに基づいたデータのクラスタリングが、より精度よく行えるようにする。【解決手段】入力データを、自己組織化マップを用いてコードベクトルにフィッティングさせる自己組織化マップ処理と、その処理で得られたコードベクトルが、所定状態に収束したかを判断する判断処理と、判断処理で収束していないと判断した場合に、各コードベクトルのコードベクトル間の距離を、設定した閾値と比較して、閾値より距離が長い場合に分離し、閾値より距離が短い場合に結合する分離・結合処理とを行い、分離・結合処理で分離と結合によりクラスタリングされたコードベクトルに対して自己組織化マップ処理を行ってコードベクトルを得る処理を繰り返し、判断処理で所定状態に収束したと判断したクラスタリング状態を出力させる。【選択図】図１
2008250848.tif 000002
【特許請求の範囲】
【請求項１】
入力した複数のデータを、自己組織化マップに基づいてクラスタリングするクラスタリング方法において、
前記複数のデータが配置された座標軸上にコードベクトルを設定するコードベクトル設定処理と、
前記コードベクトル設定処理で設定したコードベクトルを、自己組織化マップのアルゴリズムを用いて、前記複数のデータにフィッティングさせる自己組織化マップ処理と、
前記自己組織化マップ処理で得られたコードベクトルが、所定状態に収束したかを判断する判断処理と、
前記判断処理で収束していないと判断した場合に、前記自己組織化マップ処理で得られた各コードベクトル間の距離を、設定した閾値と比較して、閾値より距離が長い場合に分離し、閾値より距離が短い場合に結合する分離・結合処理とを行い、
前記分離・結合処理で分離と結合によりクラスタリングされたコードベクトルに対して前記自己組織化マップ処理を行って前記複数のデータにフィッティングさせる処理を繰り返し、前記判断処理で所定状態に収束したと判断したクラスタリング状態に基づいて、前記複数のデータをクラスタリングすることを特徴とするクラスタリング方法。
【請求項２】
請求の範囲第１項記載のクラスタリング方法において、
前記閾値は、コードベクトル間の距離の最大値と平均値を使用した演算で算出される値である
クラスタリング方法。
【請求項３】
請求の範囲第１項記載のクラスタリング方法において、
前記入力した複数のデータは個人識別用の画像データであり、前記自己組織化マップに基づいたクラスタリングで、画像から個人を特定することを特徴とする
クラスタリング方法。
【請求項４】
請求の範囲第１項記載のクラスタリング方法において、
前記入力した複数のデータは文字画像データであり、前記自己組織化マップに基づいたクラスタリングで、画像から文字認識を行うことを特徴とする
クラスタリング方法。
【請求項５】
入力した複数のデータを、自己組織化マップに基づいてクラスタリングするデータ処理装置において、
前記複数のデータが配置された座標軸上にコードベクトルを設定するコードベクトル設定手段と、
前記コードベクトル設定手段で設定したコードベクトルを、自己組織化マップのアルゴリズムを用いて、前記複数のデータにフィッティングさせる自己組織化マップ処理手段と、
前記自己組織化マップ処理手段での処理で得られたコードベクトルが、所定状態に収束したかを判断する判断手段と、
前記判断手段での判断処理で収束していないと判断した場合に、前記自己組織化マップ処理で得られた各コードベクトル間の距離を、設定した閾値と比較して、閾値より距離が長い場合に分離し、閾値より距離が短い場合に結合する分離・結合処理手段とを備え、
前記分離・結合処理手段で分離と結合によりクラスタリングされたコードベクトルに対して前記自己組織化マップ処理手段での自己組織化マップ処理を行ってコードベクトルを得る処理を繰り返し、前記判断手段での判断処理で所定状態に収束したと判断したクラスタリング状態に基づいて、前記複数のデータをクラスタリングした結果を出力させることを特徴とするデータ処理装置。
【請求項６】
入力した複数のデータを、自己組織化マップに基づいてクラスタリングする処理を、データ処理装置に実装して実行するプログラムにおいて、
前記複数のデータが配置された座標軸上にコードベクトルを設定するコードベクトル設定処理と、
前記コードベクトル設定処理で設定したコードベクトルを、自己組織化マップのアルゴリズムを用いて、前記複数のデータにフィッティングさせる自己組織化マップ処理と、
前記自己組織化マップ処理で得られたコードベクトルが、所定状態に収束したかを判断する判断処理と、
前記判断処理で収束していないと判断した場合に、前記自己組織化マップ処理で得られた各コードベクトルのコードベクトル間の距離を、設定した閾値と比較して、閾値より距離が長い場合に分離し、閾値より距離が短い場合に結合する分離・結合処理とを行い、
前記分離・結合処理で分離と結合によりクラスタリングされたコードベクトルに対して前記自己組織化マップ処理を行ってコードベクトルを得る処理を繰り返し、前記判断処理で所定状態に収束したと判断したクラスタリング状態に基づいて、前記複数のデータをクラスタリングさせる処理を実行することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、各種データを自己組織化マップ（Self-organizing maps,ＳＯＭ）を利用して分類する処理を行うクラスタリング方法、及びそのクラスタリングの処理を行うデータ処理装置、並びにその処理をコンピュータ装置などのデータ処理装置に実装して行うプログラムに関する。
【背景技術】
【０００２】
従来、各種データをクラスタリングする手法として、ｋ−ｍｅａｎｓ法、ｆｕｚｚｙ−ｃ平均法などが知られている。これらの手法は、クラスタリングするデータの分布が正規分布であることが前提となっている。これに対して、クラスタリングするデータの分布が任意の形状であっても、高精度にクラスタリングする手法として、任意形状クラスタリング法が提案されている。しなしながら、従来提案されている任意形状クラスタリングでは、クラスタリングの精度があまり良くなかった。即ち異なるクラスタが接近している場合、任意形状クラスタリング手法を用いても、本来異なるクラスタが同じクラスタに分類されしまうことがある。
【非特許文献１】「クラスタ間距離の昇順によるラベリングに基づくノイズにロバストな任意形状クラスタリング」映像情報学会誌、Vol.60,N0.4,618頁−620頁,2006年発行
【発明の開示】
【発明が解決しようとする課題】
【０００３】
本願の発明者は、非特許文献１において、上記問題を解決するクラスタリング手法を提案した。
この提案したクラスタリング手法は、コードベクトルをランダムに生成させた後、その生成されたコードベクトルを、自己組織化マップ(ＳＯＭ)を用いてデータにフィッティングさせ、このコードベクトルの連続性に基づき、クラスタリングする手法である。この手法では、まず、フィッティングさせたコードベクトルをつなぐ角度が大きく変化する毎にコードベクトルを分け、ラベリングを行う。次に、それぞれのデータが最小距離となるコートベクトルを探索し、そのコードベクトルのラベルをデータに割り当てることにより、各データをクラスタリングしている。
【０００４】
図８及び図９は、この従来の自己組織化マップを用いたクラスタリング手法による処理例を示したものである。図８の例は、クラスタリングが成功した場合を想定したものである。順に説明すると、図８の左端に示すように複数のデータが２次元上に分布しているとする。ここでも分布としては、［ｕ］字状の分布と、［ｎ］字状の分布が上下に近接して、［ｘ］字状にも見える状態であるとする。
【０００５】
このとき、自己組織化マップを用いてコードベクトルを各データをフィッティングさせ、図８の中央に示すコードベクトルのデータを得る。次に、フィッティングさせたコードベクトルをつなぐ角度が大きく変化する毎に、コードベクトルを分け、ラベリングを行い、ラベルをデータに割り当てて、割り当てが適正であれば、図８の右端に示すような、上側の［ｕ］字状の分布のクラスタ（黒丸で示す）と、下側の［ｎ］字状の分布のクラスタ（三角で示す）とが、別のものにクラスタリングされる。
【０００６】
これに対して、図９に示す例では、図９の左端に示す同じデータに対してコードベクトルを自己組織化マップを用いて各データにフィッティングさせ、図９の中央に示すコードベクトルのデータを得て、図９の右端に示すような、黒丸と三角と四角の３つのクラスタに分割された結果となった例である。この例では、三角で示すクラスタが、上下に跨った状態であり、本来は異なるクラスタであるデータが、同じクラスタとしてクラスタリングされている。また、それとは別に、黒丸で示すクラスタと四角で示すクラスタとに分類されて、本来は同じクラスタであるデータが、異なるクラスタに分類されている。
【０００７】
図８、図９の例では、クラスタリングするデータが何のデータであるのか特に示していないが、例えば図８、図９の左端に丸印で示す各データが、顔画像のデータであることを想定すると、その顔画像による個人認証が可能になる。例えば、図８、図９の左端に丸印で示す各データの内の、上側の［ｕ］字状に分布したデータが、Ａさんを撮影した様々な顔画像であり、下側の［ｎ］字状に分布したデータが、Ｂさんを撮影した様々な顔画像であるとする。このとき、画像データからＡさんの識別とＢさんの識別を行う際に、図８に示すようにクラスタリングできれば良いが、図９に示すようにクラスタリングされてしまうと、ＡさんとＢさんを正しく識別できなく、個人認証エラーが発生してしまう。一人の人物の顔画像が複数存在するということは、例えば一人の人物の顔の表情の変化による変化要因、照明などの撮影条件による変化要因など、様々の要因が考えられ、画像認識時には、正確なクラスタリングが要求される。
なお、ここでの説明はクラスタリングの原理を示したものであり、実際の顔画像の場合には、図８、図９に示すような２次元データとは異なる、より高い次元数のデータである可能性が高い。
【０００８】
個人認証を行うための画像認証としては、顔画像以外にも、指紋、虹彩、血管などを画像化して認証するものが各種提案され、実用化されつつあるが、いずれの場合でも、入力された多数の画像を正確にクラスタリングすることは、正確な認証を行う上で非常に重要である。画像以外でも、例えば音声から個人認証を行うような場合でも、入力音声の周波数特性などをクラスタリングすれば、個人認証が可能であるが、そのような場合もクラスタリングを行う場合も、クラスタリングの原理は同じである。さらに、筆跡などを利用して認証を行う場合も同様である。
従来の自己組織化マップを用いたクラスタリング手法では、上述したように必ずしも適切なクラスタリングが行われているとは言えず、クラスタリング結果の信頼性が高くないという問題があった。例えば顔画像を例にすると、顔の表情に変化があった場合にも、同一人物か否か正確に判断するためには、非常に高度なクラスタリングが要求されるが、従来のクラスタリング手法では十分ではなかった。
【０００９】
本発明はかかる点に鑑みてなされたものであり、自己組織化マップに基づいたデータのクラスタリングが、より精度よく行えるようにすることを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、入力した複数のデータを、自己組織化マップのアルゴリズムに基づいてクラスタリングする場合において、複数のデータが配置された座標軸上にコードベクトルを設定するコードベクトル設定処理と、そのコードベクトル設定処理で設定したコードベクトルを、自己組織化マップを用いて、データにフィッティングさせる自己組織化マップ処理と、自己組織化マップ処理で得られたコードベクトルが、所定状態に収束したかを判断する判断処理と、判断処理で収束していないと判断した場合に、自己組織化マップ処理で得られた各コードベクトルのコードベクトル間の距離を、設定した閾値と比較して、閾値より距離より距離が長い場合に分離し、閾値より距離が短い場合に結合する分離・結合処理とを行い、分離・結合処理で分離と結合によりクラスタリングされたコードベクトルに対して自己組織化マップ処理を行ってコードベクトルを得る処理を繰り返し、判断処理で所定状態に収束したと判断したクラスタリング状態に基づいて、入力した複数のデータをクラスタリングするものである。
【発明の効果】
【００１１】
本発明によると、コードベクトル間の距離に基づいた分離・結合を行うことで、データを適正にクラスタリングすることが可能となる。例えば、クラスタリングするデータとして画像データに適用することで、画像データで示される人物や物体を正確に識別できるようになる。例えば、画像データで示されている顔画像などから個人認証を行う際に、その画像データが誰の顔を撮影した画像であるのか、正確に分類することが可能となる。或いは、画像データで示された文字を認識する際に、その文字認識を正確に行うことが可能となる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の一実施の形態を、図１〜図７を参照して説明する。本発明においては、各種データを自己組織化マップを利用して分類するものに適用したものである。
図１は、本実施の形態による処理例を示したフローチャートであり、図２はその処理を行う装置構成の例を示した図である。
【００１３】
装置としては、例えばコンピュータ装置とその周辺機器で構成してあり、コンピュータ装置に接続されたカメラ、ビデオキャプチャなど構成される画像取り込み部１１で、画像データを取り込むことで、データを入力させるようにしてあり、クラスタリングされた結果に基づいた識別結果をディスプレイ２１に表示するようにしてある。コンピュータ装置には、画像識別装置として機能させるためのソフトウェア（プログラム）がインストールしてある。そのソフトウェアは、図１のフローチャートに示す動作処理などを実行させるものである。操作については、例えばコンピュータ装置に接続されたキーボード１７を使用する。
【００１４】
画像取り込み部１１で取り込まれた画像データは、データ処理部１２に送られ、制御部１５の制御で、クラスタリングを行うためのデータとされる。
【００１５】
クラスタリングを行うためのデータは、データメモリ１３に記憶されて、制御部１５の制御でクラスタリングが行われる。このクラスタリングされた各クラスタを、識別結果として出力させる際には、そのままクラスタリングされたデータとして出力させてもよいが、例えば各クラスタが、データベース１４に蓄積された参照用画像と同じクラスタであるか否かなどを判断して、各種認証処理などが行うようにしてもよい。認識処理結果は、例えば表示制御部１８に送られて、ディスプレイ２１に認識結果を表示させる。
【００１６】
次に、このように構成されるデータ処理装置で実行される本例のクラスタリング処理の詳細について説明する。
まず、図１のフローチャートを参照して、本例のクラスタリング処理の概要について説明すると、クラスタリングさせる複数のデータが入力すると、その複数のデータをｎ次元（ｎは２以上の整数）の座標軸に配置し、その座標軸上のデータに対して、コードベクトルをランダムに生成させる。その生成させるコードベクトルの数は、予め設定した数とする。或いは、入力した複数のデータの数に応じて、コードベクトルの数を設定するようにしてもよい。また本例の場合には、後述するようにクラスタの分離や結合を行うために、ラベルと称する値を設定して、ラベル値を更新するようにしてある。
【００１７】
コードベクトルが生成されると、その生成されたコードベクトルを、入力した複数のデータにフィッティングさせる自己組織化マップ処理(ＳＯＭ処理)が行われる（ステップＳ１）。自己組織化マップ処理では、一定の条件を満たすコードベクトルを勝利ベクトルとし、その勝利ベクトルとその周辺のコードベクトルとの関係で、コードベクトルを更新する処理が行われる。自己組織化マップ処理については、既に従来から行われている処理手法であり、コードベクトルをデータに近づけさせる処理である。
【００１８】
そして、その自己組織化マップ処理で、コードベクトルが十分に収束したか否か判断し（ステップＳ２）、収束している場合には、コードベクトルの処理を終了し、コードベクトルのラベルに基づいて各データをクラスタリングして（ステップＳ６）、クラスタリング処理を終了する。ここでの収束とは、コードベクトルが、入力したデータに近似したベクトルになっている状態のことである。
コードベクトルが収束していない場合には、現在のコードベクトル間の値に基づいて閾値Ｔｈを設定する（ステップＳ３）。閾値Ｔｈの設定については後述するが、例えば、現在のコードベクトルの長さの最大値と平均値を使用して、適正な値を設定する。
【００１９】
閾値Ｔｈを設定すると、現在のそれぞれのコードベクトル間の距離を、その設定した閾値Ｔｈと比較する。その比較で、閾値Ｔｈより距離が大きい場合に（後述する式では距離が等しい場合も含む）、そのとき判断した２つのコードベクトルを、別のクラスタに分離する（ステップＳ４）。別のクラスタに分離することで、別のラベル値を設定する。また、閾値Ｔｈより距離が小さい場合に、そのとき判断した２つのコードベクトルを、同じクラスタに結合する（ステップＳ５）。同じクラスに結合することで、同じラベル値を持つようにしてある。
【００２０】
そして、ステップＳ４での分離とステップＳ５での結合が行われた各クラスタのコードベクトルに対して、ステップＳ１に戻って、自己組織化マップ処理を行って、コードベクトルを更新させて、さらに入力データに近似させる。以後、ステップＳ２でコードベクトルが十分に収束したと判断されるまで、ステップＳ１での自己組織化マップ処理から、ステップＳ４，Ｓ５での分離・結合処理が繰り返される。
【００２１】
ステップＳ６で、コードベクトルのラベルに基づいて各データをクラスタリングする処理としては、座標軸上のデータに最も近いコードベクトルを判断する。そして、そのコードベクトルのラベル値に対応したクラスタを設定する。そのため、例えばラベル値が２つであれば、データが２つにクラスタリングされ、ラベル値が３つであれば３つにクラスタリングされる。
【００２２】
次に、実際にクラスタリングした例を、図３〜図６に示す。図３，図５は本例の処理でクラスタリングした例であり、図４，図６は、図３，図５と同じデータに対して、従来処理でクラスタリングした例である。
【００２３】
まず図３の例について説明する。図３（ａ）は、２次元の座標軸上に人工的に生成させた入力データの分布である。この例では、図３（ａ）から判るように、データが２つの群に分かれている。このデータが配置された座標軸上に、ランダムにコードベクトルを生成させたのが図３（ｂ）である。この図３（ｂ）の初期状態では、コードベクトルは１つに繋がった状態である。この図３（ｂ）の様態から、自己組織化マップ処理を行って、コードベクトルを更新させて、入力データ点に近づける処理が行われる。
【００２４】
この自己組織化マップ処理を繰り返し行うことで、図３（ｃ）及び（ｄ）に示すように順次データに近づいて行くが、本例の場合には、各コードベクトルの距離に応じて、コードベクトルの分離及び結合の処理が行われる。図３（ｄ）の例では、２つに分離された例であるが、まだ分離状態が不完全である。
【００２５】
これに対して、コードベクトルの更新が十分に行われた計算の終了時の状態では、図３（ｅ）に示すように、ほぼ座標軸上のデータ点を結ぶような形状にコードベクトルが設定されている。そして、そのコードベクトルが、データの配置状態に対応して２つに分割された状態となっている。
この図３（ｅ）に示す状態にラベル分けされたコードベクトルに基づいて、各データをクラスタリングすることで、図３（ｆ）に示すように、各データが正確に２つにクラスタリングされた状態となる。図３（ｆ）では、○印で示すデータと、×印で示すデータとにクラスタリングされた状態を示している。
【００２６】
これに対して、図３と同じデータに対して従来処理を行った図４の例について説明すると、図４（ａ）は、２次元の座標軸上に人工的に生成させた入力データの分布であり、図３（ａ）と同じである。このデータが配置された座標軸上に、ランダムにコードベクトルを生成させたのが図４（ｂ）である。この図４（ｂ）の様態から、自己組織化マップ処理を行って、コードベクトルを更新させて、データ点に近づける処理が行われ、図４（ｃ），（ｄ），（ｅ）に示すように順に、データ点に近づけさせる。この従来処理では、自己組織化マップ処理を行っている間は、コードベクトルが１つに繋がった状態であり、図４（ｅ）に示した繰り返し演算終了時でも、コードベクトルは１つに繋がっている。
図４（ｅ）に示したコードベクトルが得られると、各コードベクトルをなす角度に応じて、コードベクトルを分割する処理が行われることで、最終的に得られるデータのクラスタリング状態としては、図４（ｆ）に示すように、実際のデータ分布とは全く異なる４つにクラスタリングされた状態になってしまう。図４（ｆ）の状態は、○印と×印と△印と□印に分割された状態を示す。
【００２７】
図５は、本例の処理を行った別の例である。図５（ａ）は、２次元の座標軸上に人工的に生成させた入力データの分布である。この例では、図５（ａ）から判るように、データが３つの群に分かれている。このデータが配置された座標軸上に、ランダムにコードベクトルを生成させたのが図５（ｂ）である。この図５（ｂ）の初期状態では、コードベクトルは１つに繋がった状態である。この図５（ｂ）の様態から、自己組織化マップ処理を行って、コードベクトルを更新させて、入力データ点に近づける処理が行われる。
【００２８】
この自己組織化マップ処理を繰り返し行うことで、図５（ｃ）及び（ｄ）に示すように順次データに近づいて行くが、本例の場合には、各コードベクトルの距離に応じて、コードベクトルの分離及び結合の処理が行われる。このため、コードベクトルの更新が十分に行われた計算の終了時の状態では、図５（ｅ）に示すように、ほぼ座標軸上のデータ点を結ぶような形状にコードベクトルが設定されていると同時に、そのコードベクトルが、データの配置状態に対応して３つに分割された状態となっている。
この図５（ｅ）に示す状態にラベル分けされたコードベクトルに基づいて、各データをクラスタリングすることで、図５（ｆ）に示すように、各データが正確に３つにクラスタリングされた状態となる。図３（ｆ）では、○印で示すデータと、×印で示すデータと、△印で示すデータとにクラスタリングされた状態を示している。
【００２９】
これに対して、図５と同じデータに対して従来処理を行った図６の例について説明すると、図６（ａ）は、２次元の座標軸上に人工的に生成させた入力データの分布であり、図５（ａ）と同じである。このデータが配置された座標軸上に、ランダムにコードベクトルを生成させたのが図６（ｂ）である。この図６（ｂ）の様態から、自己組織化マップ処理を行って、コードベクトルを更新させて、データ点に近づける処理が行われ、図６（ｃ），（ｄ），（ｅ）に示すように順に、データ点に近づけさせる。この従来処理では、自己組織化マップ処理を行っている間は、コードベクトルが１つに繋がった状態であり、図６（ｅ）に示した繰り返し演算終了時でも、コードベクトルは１つに繋がっている。
図６（ｅ）に示したコードベクトルが得られると、各コードベクトルをなす角度に応じて、コードベクトルを分割する処理が行われるが、この例では、分割できる角度の違いがないため、最終的に得られるデータのクラスタリング状態としては、図６（ｆ）に示すように、実際のデータ分布とは全く異なる状態である、全て同じクラスタに分類された状態になっている。
【００３０】
次に、本例のアルゴリズムの詳細を、数式を用いて説明する。ここでは、１次の自己組織化マップ処理を用いることとする。
［１．］  まず、ｋ次元のコードベクトルｍｐｌを定義域内においてランダムに生成する。ここでのｋ次元とは、例えばデータが［ｎ×ｎ］の画素数であるとき、［ｎ×ｎ］次元であることを示す次元数である。コードベクトルｍｐｌは、クラスｌ（１≦ｌ≦Ｃｌ）におけるｐ（１≦ｐ≦ｎｕｍｌ）番目におけるコードベクトルを表す。
［２．］  コードベクトルｍｐｌの以下の更新処理を、ｔ＝１，２，・・，Ｔ；ｊ＝１，２，・・，ｎについて繰り返す。
［３．］  式（１）を満たすコードベクトルｍｐｌを得る。
【００３１】
【数１】
2008250848.tif 000003
【００３２】
この式（１）をデータｘｊに対する勝利コードベクトルとする。
［４．］  勝利コードベクトルとその周辺のコードベクトルを、式（２）により更新する。
【００３３】
【数２】
2008250848.tif 000004
【００３４】
但し、α（ｔ）と、Ｎｃ（ｔ）は、式（３）及び式（４）より求める。
【００３５】
【数３】
2008250848.tif 000005
【００３６】
【数４】
2008250848.tif 000006
【００３７】
なお、［ｑ］は、ｑを超えない最大の整数を表す。
ここまでが、図１のフローチャートでのステップＳ１での自己組織化マップ処理に相当する。
【００３８】
［５．］  ｌ１＝１，２，・・・、Ｃｌ；ｐ＝１，２，・・・，ｎｕｍｌ１について、次の処理を繰り返す。ｎｕｍｌ１は、クラスｌ１に含まれるコードベクトルの数である。また、ｄtotai＝０，ｄcnt＝０とする。ｄtotaiは、クラス内のコードベクトルの隣との差の総和である。ｄcnt は、クラス内のコードベクトル間の個数（即ちコードベクトル数−１）である。
【００３９】
［５．１］  もし、ｍl1p+1が存在するならば、（５）式を算出し、ｄtotai＝ｄtotai＋ｄdiff，ｄcnt＝ｄcnt＋１とする。
【００４０】
【数５】
2008250848.tif 000007
【００４１】
［５．２］  ｄcnt≠０ならば、閾値Ｔｈ＝（ｄtotai／ｄcnt）＋αｄ（ｍａｘ）ｄｉｆｆとする。但し、ｄ（ｍａｘ）ｄｉｆｆは、ｄｄｉｆｆの最大値である。また、［ｄtotai／ｄcnt］として、コードベクトルの総和を数で割っていることで、各コードベクトルの平均を求めていることになる。このように、閾値Ｔｈは、各コードベクトルの平均に、最大値に係数αを乗算した値を加算して設定している。
［６．］  ｌ１＝１，２，・・・，Ｃｌ；ｐ＝１，２，・・・，ｎｕｍｌ１について、［５．１］を繰り返す。
ここまでがステップＳ３の閾値Ｔｈを設定する処理である。
【００４２】
［６．１］  閾値Ｔｈとの比較で、もし、（６）式の条件を満たす場合に、ｅｌ１ｐ＝２，ｅｌ１ｐ＋１＝１とし、ｌ１に含まれるｐ＋１からｎｕｍｌ１までのコードベクトルのラベルを１つインクリメントする。
【００４３】
【数６】
2008250848.tif 000008
【００４４】
［７．］  ｌ１＝１，２，・・・，Ｃｌ；ｌ２＝ｌ１＋２，・・・，Ｃｌ；ｐ＝１，２，・・・，ｍｕｎｌ１；ｑ＝１，２，・・・，ｎｕｍｌ２について、以下の処理を繰り返す。但し、ｍｕｎｌ１及びｎｕｍｌ２は、それぞれクラスｌ１及びｌ２に含まれるコードベクトルの数である。
【００４５】
［７．１］  もし、ｅｌ１ｐ＝１又は２、かつｅｌ２ｐ＝１又は２ならば、（７）式を算出する。
【００４６】
【数７】
2008250848.tif 000009
【００４７】
その（７）式で、コードベクトル間の距離ｄと閾値Ｔｈとの関係が、ｄ＜Ｔｈならば、
もし、ｅｌ１ｐ＝１、かつ、ｅｌ２ｐ＝１ならば、
【００４８】
【数８】
2008250848.tif 000010
【００４９】
とし、
【００５０】
【数９】
2008250848.tif 000011
【００５１】
として、ｌ２のラベル値を持つコードベクトルの順番を入れ換える。さらに、
【００５２】
【数１０】
2008250848.tif 000012
【００５３】
とすることにより、クラスｌ１、ｌ２に含まれるコードベクトルの結合を行い、［７］へ移行する。
・  もし、ｅｌ１ｐ＝２、かつ、ｅｌ２ｐ＝２ならば、
【００５４】
【数１１】
2008250848.tif 000013
【００５５】
とし、
【００５６】
【数１２】
2008250848.tif 000014
【００５７】
とする。さらに、
【００５８】
【数１３】
2008250848.tif 000015
【００５９】
とし、
【００６０】
【数１４】
2008250848.tif 000016
【００６１】
とすることにより、クラスｌ１、ｌ２に含まれるコードベクトルの結合を行い、［７］へ移行する。
・  もし、ｅｌ１ｐ＝１、かつ、ｅｌ２ｐ＝２ならば、
【００６２】
【数１５】
2008250848.tif 000017
【００６３】
とし、
【００６４】
【数１６】
2008250848.tif 000018
【００６５】
とする。さらに、
【００６６】
【数１７】
2008250848.tif 000019
【００６７】
とし、
【００６８】
【数１８】
2008250848.tif 000020
【００６９】
とすることにより、クラスｌ１、ｌ２に含まれるコードベクトルの結合を行い、［７］へ移行する。
・    もし、ｅｌ１ｐ＝２、かつ、ｅｌ２ｐ＝１ならば、
【００７０】
【数１９】
2008250848.tif 000021
【００７１】
とし、
【００７２】
【数２０】
2008250848.tif 000022
【００７３】
とする。さらに、
【００７４】
【数２１】
2008250848.tif 000023
【００７５】
とし、
【００７６】
【数２２】
2008250848.tif 000024
【００７７】
とすることにより、クラスｌ１、ｌ２に含まれるコードベクトルの結合を行い、［７］へ移行する。
【００７８】
ここまで説明したアルゴリズムにおいて、［４］はコードベクトルを更新する処理である。［５］では、閾値Ｔｈを計算する処理を行っており、［６］では、閾値に応じてコードベクトルを分離している。［７］では、閾値に応じてコードベクトルを結合している。
【００７９】
このようにして処理を行うことで、図３或いは図５に示した分離及び結合が行われながらの自己組織化マップ処理が行われ、良好にデータのクラスタリングが行える。
【００８０】
図３や図５の例では、２次元座標上にデータが配置される例について説明したが、画像データなどのより複雑なデータを、次元数の高い座標軸上に配置して、その配置されたデータをクラスタリングする際にも、同様の手法が適用可能である。
例えば、図７に示すようなドット配列で「Ａ」という文字が示された画像の場合、その画像の水平方向及び垂直方向の画素配列に基づいて多数の組のベクトルを生成して、そのベクトルを入力データとして扱って、上述した分離及び結合を行いながらの自己組織化マップ処理を行うことで、画像データの正確なクラスタリングが可能となる。
【００８１】
画像データとしては、例えば顔を撮影した画像から、個人を識別する処理に適用することが可能である。この場合には、各個人を撮影した画像をデータベースとして保持しておき、そのデータベースの顔画像と、撮影した画像データとを比較して、撮影した画像データが、データベース中のどの顔画像と同じクラスタに属するかクラスタリングさせることで、正確なクラスタリングが可能となる。例えば、撮影された顔画像の表情が、データベースの顔画像と異なっていたり、或いは、撮影時の明るさや影の発生条件などが、データベースの顔画像と異なっている場合でも、顔からの正確な個人認証が可能となる。データベース化する顔画像として、一人の個人ごとに、表情や撮影条件の異なる複数の画像がある場合には、より個人認証精度が向上する。
【００８２】
また、画像認識の別の適用例として、例えば、手書き文字を撮影（入力）した画像を、データベース中に用意された文字パターンと比較する場合にも適用可能である。手書き文字認識に適用することで、手書き文字の識別率を向上させることができる。
【００８３】
さらにまた、顔画像や手書き文字以外のその他のデータ識別のためのクラスタリングに適用してもよい。
例えば、個人を認証する画像として、顔以外に、指紋，虹彩，血管（静脈）などの体の特定の部分を撮影した画像を本発明の手法でクラスタリングして、認証するようにしてもよい。
また、話し声などの音声の特性（周波数特性など）を解析した結果を本発明の手法でクラスタリングして、個人認証するようにしてもよい。
【００８４】
また、クラスタリングを行うデータ処理装置として、上述した実施の形態では図２に示したように、汎用の情報処理装置であるパーソナルコンピュータ装置を使用して構成させるようにしたが、クラスタリング処理を行う専用の情報処理装置として構成させるようにしてもよい。或いは、本発明の処理をプログラム化して、そのプログラム（ソフトウェア）を、各種情報処理装置にインストールさせることで、本発明の処理を行う装置として構成させることも可能である。本発明の処理をプログラムは、光ディスクや半導体メモリなどの記憶媒体に記憶させて配布する他に、インターネットなどの伝送手段を介してダウンロードさせるようにしてもよい。
【図面の簡単な説明】
【００８５】
【図１】本発明の一実施の形態による処理例を示すフローチャートである。
【図２】本発明の一実施の形態による処理を実行する装置の構成例を示すブロック図である。
【図３】本発明の一実施の形態による処理例（例１）を示す説明図である。
【図４】図３の例と同じデータに対して、従来処理を行った例を示す説明図である。
【図５】本発明の一実施の形態による処理例（例２）を示す説明図である。
【図６】図５の例と同じデータに対して、従来処理を行った例を示す説明図である。
【図７】本発明の一実施の形態の処理を画像データに対して適用した例を示す説明図である。
【図８】従来の自己組織化マップに基づいたクラスタリングの例を示す原理図である。
【図９】従来の自己組織化マップに基づいたクラスタリングの例を示す原理図である。
【符号の説明】
【００８６】
１１…画像取り込み部、１２…データ処理部、１３…データメモリ、１４…データベース、１５…制御部、１６…プログラムメモリ、１７…キーボード、１８…表示制御部、１９…ディスプレイ
【図１】
2008250848.tif 000025
【図２】
2008250848.tif 000026
【図３】
2008250848.tif 000027
【図４】
2008250848.tif 000028
【図５】
2008250848.tif 000029
【図６】
2008250848.tif 000030
【図７】
2008250848.tif 000031
【図８】
2008250848.tif 000032
【図９】
2008250848.tif 000033