(57)【要約】【課題】学習用データ数が多い場合であっても、短時間かつ高精度に未知データを多クラスに識別する識別器等を提供する。【解決手段】識別器２は、未知データを入力し（Ｓ１１）、未知データを次元ごとにビット列に変換し（Ｓ１２）、ビット列群の並び替えを行い（Ｓ１３）、未知データに関するビットデータを生成する。次に、識別器２は、クラスを１つずつ特定し（Ｓ１４）、学習領域３１において、特定したクラスのビットデータに対応するパスを探索し（Ｓ１５）、探索したパスに含まれるノードに係る局所密度の値を記憶する（Ｓ１６）、という処理を繰り返す。そして、識別器２は、記憶されている局所密度を参照し、局所密度の値が最大となるクラスを、未知データが属するクラスに決定する。【選択図】図９
2013152654.tif 000002
【特許請求の範囲】
【請求項１】
ｄ次元の特徴量を有する未知データを多クラスに識別する識別器であって、
クラスラベル及び前記特徴量を有する学習用データに基づいて構築されるｄ次元体の学習領域の局所密度を記憶する記憶手段と、
単一の前記未知データの特徴量が入力されると、前記局所密度を参照して、前記未知データの特徴量を含む複数のｄ次元体の識別領域におけるクラスごとの前記学習用データの密度を算出し、算出される密度が最大となるクラスを前記未知データが属するクラスとする識別処理を行う識別手段と、
を具備する識別器。
【請求項２】
前記複数のｄ次元体の識別領域は、ｄ次元直方体の入れ子構造である請求項１に記載の識別器。
【請求項３】
前記学習領域は、二分決定グラフとして構築され、
前記局所密度は、前記学習用データから生成されるビットデータのビット長をｎとしたときに、前記二分決定グラフの各ノードにおける前記最小項の数を２のｎ乗で除した値であり、
前記識別手段は、クラスごとに、前記未知データから生成されるビットデータが示すパスに含まれるノードに係る前記局所密度を参照することによって、前記識別処理を行う
請求項１又は請求項２に記載の識別器。
【請求項４】
前記学習領域は、全てのクラスの前記学習用データに係る前記ビットデータが論理和演算によって単一の前記二分決定グラフに逐次追加されることによって構築される
請求項１乃至請求項３のいずれかに記載の識別器。
【請求項５】
ｄ次元の特徴量を有する未知データを多クラスに識別する識別器を構築する識別器構築装置であって、
クラスラベル及び前記特徴量を有する学習用データから生成されるビットデータが示すｄ次元体の学習領域を二分決定グラフとして構築する構築手段と、
前記ビットデータのビット長をｎとしたときに、前記二分決定グラフの各ノードにおける前記最小項の数を２のｎ乗で除した値を前記学習領域の局所密度として算出する算出手段と、
を具備する識別器構築装置。
【請求項６】
前記構築手段は、全てのクラスの前記学習用データを論理和演算によって単一の前記二分決定グラフに逐次追加することによって前記学習領域を構築する
請求項５に記載の識別器構築装置。
【請求項７】
コンピュータを、請求項１乃至請求項４のいずれかに記載の識別器として機能させるためのプログラム。
【請求項８】
コンピュータを、請求項５又は請求項６に記載の識別器構築装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、未知データを多クラスに識別する識別器等に関するものである。
【背景技術】
【０００２】
クラスラベルがある学習用データを基に、未知データを多クラス（厳密には２クラス以上のクラス数を意味する。）に識別する識別器は、多クラス識別器と呼ばれる。多クラス識別器の代表的な手法としては、（１）Multi-Class Support Vector Machines（以下、「多クラスＳＶＭ」という。）と、（２）k-Nearest Neighbor（以下、「ｋ近傍法」という。）が知られている。
【０００３】
非特許文献１には、多クラスＳＶＭが記載されている。一般に、ＳＶＭでは、学習用データを非線形写像によって高次の特徴空間Ｆに写像し、それらのデータを分離する超平面を求める。そして、未知データが超平面のどちらに分類されるかによって、未知データのクラスを予測する。但し、通常のＳＶＭは、未知データを特定のクラスＡとクラスＢのいずれかに識別する識別器（以下、「２クラス識別器」という。）であり、クラス数が３以上の場合には、そのままでは識別できない。そこで、非特許文献１には、以下の２つの多クラスＳＶＭが記載されている。
（１−１）one-versus-the-rest・・・あるクラスとそれ以外のクラスを分けるＳＶＭをｍ個構築する（ｍ：クラス数）。
（１−２）one-versus-one・・・あるクラスとあるクラスを分けるＳＶＭをｍ（ｍ−１）／２個構築する（ｍ：クラス数）。
【０００４】
（１−１）及び（１−２）とも、複数個のＳＶＭによる識別結果から最終的な解を決定する。（１−１）であれば、１個のＳＶＭのみが「あるクラス」と識別すると、最終的な解を決定することができる。但し、複数個のＳＶＭが「あるクラス」と識別すると、最終的な解が決定できない。これに対して、（１−２）であれば、多数決によって最終的な解を決定することができる。
【０００５】
また、非特許文献２には、ｋ近傍法が記載されている。ｋ近傍法では、未知データと学習用データとの距離を計算し、距離が近い方からｋ個の学習用データを参照し、そのｋ個の学習用データがどのクラスに属するかによって、未知データのクラスを識別する。ｋ近傍法の場合、例えば、多数決によって最終的な解を決定することができる。
【０００６】
尚、本発明者らは、特許文献１に記載されているように、高精度な２クラス識別器を短時間で構築する識別器構築装置等を発明している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１１−０９５８７８号公報
【非特許文献】
【０００８】
【非特許文献１】Hsu, C.W. and Lin, C.J., “Acomparison of methods for multiclass support vector machines”, IEEETRANSACTIONS ON NEURAL NETWORKS, 13(2), 2002
【非特許文献２】Bishop, C.M., 「パターン認識と機械学習」, 2007
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、非特許文献１等に記載の多クラスＳＶＭや、非特許文献２に記載のｋ近傍法では、以下に示す問題点がある。
【００１０】
まず、多クラスＳＶＭの問題点について説明する。ＳＶＭは、チューニングすべきパラメータ（例えば、ガウシアンカーネルの場合は分散パラメータ等）が存在し、クロスバリデーション等によってパラメータの値を決定する必要がある。また、パラメータの値は識別結果の精度に大きく影響を与える。つまり、問題点の１つ目は、チューニングが必要なパラメータが存在することによって、予測精度にばらつきが生じることである。
【００１１】
また、多クラスＳＶＭでは、学習用データ数が多い場合、学習処理に必要な計算量が急激に多くなる。一般に、１個のＳＶＭを構築する為の学習処理に必要な計算量は、学習用データの数をＮとすると、Ｏ（Ｎ３）である。つまり、問題点の２つ目は、学習用データ数が多い場合には、計算に時間がかかることである。
【００１２】
次に、ｋ近傍法の問題点について説明する。ｋ近傍法でも、クロスバリデーション等によって、パラメータ「ｋ」の値を決定する必要がある。また、パラメータ「ｋ」の値は識別結果の精度に大きく影響を与える。つまり、問題点の１つ目は、チューニングが必要なパラメータが存在することによって、予測精度にばらつきが生じることである。
【００１３】
また、ｋ近傍法では、学習用データ数が多い場合、識別処理に必要な計算量が多くなる。ここで、ｋ近傍法の場合、学習処理は不要である。しかし、識別処理において、未知データごとに、全ての学習用データと未知データとの距離を計算する必要がある。一般に、１個の未知データの識別処理に必要な計算量は、学習用データの数をＮ、データの次元数をｄとすると、Ｏ（ｄＮ）である。つまり、問題点の２つ目は、学習用データ数が多い場合には、計算に時間がかかることである。
【００１４】
尚、特許文献１では、多クラス識別器について言及していない。
【００１５】
本発明は、前述した問題点に鑑みてなされたものであり、その目的とすることは、学習用データ数が多い場合であっても、短時間かつ高精度に未知データを多クラスに識別する識別器等を提供することである。
【課題を解決するための手段】
【００１６】
前述した目的を達成するために第１の発明は、ｄ次元の特徴量を有する未知データを多クラスに識別する識別器であって、クラスラベル及び前記特徴量を有する学習用データに基づいて構築されるｄ次元体の学習領域の局所密度を記憶する記憶手段と、単一の前記未知データの特徴量が入力されると、前記局所密度を参照して、前記未知データの特徴量を含む複数のｄ次元体の識別領域におけるクラスごとの前記学習用データの密度を算出し、算出される密度が最大となるクラスを前記未知データが属するクラスとする識別処理を行う識別手段と、を具備する識別器である。第１の発明によって、学習用データ数が多い場合であっても、短時間かつ高精度に未知データを多クラスに識別することができる。
【００１７】
前記複数のｄ次元体の識別領域は、ｄ次元直方体の入れ子構造であることが望ましい。これによって、識別処理に必要な計算量が少なくて済み、短時間に識別処理を実行することが可能となる。
【００１８】
また、前記学習領域は、二分決定グラフとして構築され、前記局所密度は、前記学習用データから生成されるビットデータのビット長をｎとしたときに、前記二分決定グラフの各ノードにおける前記最小項の数を２のｎ乗で除した値であり、前記識別手段は、クラスごとに、前記未知データから生成されるビットデータが示すパスに含まれるノードに係る前記局所密度を参照することによって、前記識別処理を行うことが望ましい。二分決定グラフを用いることによって、処理に必要な記憶容量を減らすことができ、計算時間を短縮することができる。特に、既約な順序付き二分決定グラフの場合、論理関数同士の演算がグラフのサイズにほぼ比例する程度の計算時間によって実行できる。
【００１９】
また、前記学習領域は、全てのクラスの前記学習用データに係る前記ビットデータが論理和演算によって単一の前記二分決定グラフに逐次追加されることによって構築されることが望ましい。これによって、全てのクラスを纏めた単一の二分決定グラフを用いることになるので、異なるクラス同士でノードを共有することができ、メモリ使用量を節約できるとともに、識別処理における計算時間も短縮することができる。
【００２０】
第２の発明は、ｄ次元の特徴量を有する未知データを多クラスに識別する識別器を構築する識別器構築装置であって、クラスラベル及び前記特徴量を有する学習用データから生成されるビットデータが示すｄ次元体の学習領域を二分決定グラフとして構築する構築手段と、前記ビットデータのビット長をｎとしたときに、前記二分決定グラフの各ノードにおける前記最小項の数を２のｎ乗で除した値を前記学習領域の局所密度として算出する算出手段と、を具備する識別器構築装置である。第２の発明によって、学習用データ数が多い場合であっても、短時間かつ高精度に未知データを多クラスに識別する識別器を構築することができる。
【００２１】
前記構築手段は、全てのクラスの前記学習用データを論理和演算によって単一の前記二分決定グラフに逐次追加することによって前記学習領域を構築することが望ましい。これによって、全てのクラスを纏めた単一の二分決定グラフを構築することになるので、異なるクラス同士でノードを共有することができ、メモリ使用量を節約できるとともに、識別処理における計算時間も短縮することができる。
【００２２】
第３の発明は、コンピュータを、第１の発明の識別器として機能させるためのプログラムである。第３の発明を汎用のコンピュータにインストールすることによって、第１の発明の識別器を得ることができる。
【００２３】
第４の発明は、コンピュータを、第２の発明の識別器構築装置として機能させるためのプログラムである。第４の発明を汎用のコンピュータにインストールすることによって、第２の発明の識別器構築装置を得ることができる。
【発明の効果】
【００２４】
本発明により、学習用データ数が多い場合であっても、短時間かつ高精度に未知データを多クラスに識別する識別器等を提供することができる。
【図面の簡単な説明】
【００２５】
【図１】識別器構築装置（識別器）のハードウエア構成図
【図２】識別器による識別処理の概要を説明する図
【図３】識別器構築装置による学習処理の流れを示すフローチャート
【図４】ビットデータの生成処理の一例を示す図
【図５】学習領域の一例を示す図
【図６】各ノードにおける最小項の数の算出処理を説明する図
【図７】最小項の数の算出結果の一例を示す図
【図８】局所密度の算出結果の一例を示す図
【図９】識別器による識別処理の流れを示すフローチャート
【図１０】識別処理を説明する図（１）
【図１１】識別処理を説明する図（２）
【図１２】識別処理を説明する図（３）
【図１３】実施例に用いるデータ例を示す図
【発明を実施するための形態】
【００２６】
以下図面に基づいて、本発明の実施形態を詳細に説明する。本発明の実施形態では、識別器が、何らかの制御システム（例えば、車両システム等）において実際に観測されるデータを多クラス（厳密には、２クラス以上）に識別することを想定している。つまり、学習用データ及び未知データは、実際のシステムにおいて観測されるデータである。尚、本発明の識別器は、学習用データを用いて未知データを多クラスに識別するものであれば、どのような用途に用いても良い。
【００２７】
図１は、識別器構築装置１（識別器２）のハードウエア構成図である。識別器構築装置１は、識別器２を構築するための装置である。識別器２は、未知データを多クラスに識別する装置である。尚、図１のハードウエア構成は一例であり、用途、目的に応じて様々な構成を採ることが可能である。
【００２８】
識別器構築装置１（識別器２）は、制御部１１、記憶部１２、メディア入出力部１３、通信制御部１４、入力部１５、表示部１６、周辺機器Ｉ／Ｆ部１７等が、バス１８を介して接続される。
【００２９】
制御部１１は、ＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）等で構成される。
【００３０】
ＣＰＵは、記憶部１２、ＲＯＭ、記録媒体等に格納されるプログラムをＲＡＭ上のワークメモリ領域に呼び出して実行し、バス１８を介して接続された各装置を駆動制御し、識別器構築装置１（識別器２）が行う後述する処理を実現する。ＲＯＭは、不揮発性メモリであり、コンピュータのブートプログラムやＢＩＯＳ等のプログラム、データ等を恒久的に保持している。ＲＡＭは、揮発性メモリであり、記憶部１２、ＲＯＭ、記録媒体等からロードしたプログラム、データ等を一時的に保持するとともに、制御部１１が各種処理を行う為に使用するワークエリアを備える。
【００３１】
記憶部１２は、ＨＤＤ（Hard Disk Drive）であり、制御部１１が実行するプログラム、プログラム実行に必要なデータ、ＯＳ（Operating System）等が格納される。プログラムに関しては、ＯＳに相当する制御プログラムや、後述する処理をコンピュータに実行させるためのアプリケーションプログラムが格納されている。これらの各プログラムコードは、制御部１１により必要に応じて読み出されてＲＡＭに移され、ＣＰＵに読み出されて各種の手段として実行される。
【００３２】
メディア入出力部１３（ドライブ装置）は、データの入出力を行い、例えば、ＣＤドライブ（−ＲＯＭ、−Ｒ、−ＲＷ等）、ＤＶＤドライブ（−ＲＯＭ、−Ｒ、−ＲＷ等）、ＵＳＢ（Universal Serial Bus）ポート等のメディア入出力装置を有する。通信制御部１４は、通信制御装置、通信ポート等を有し、コンピュータとネットワーク間の通信を媒介する通信インタフェースであり、ネットワークを介して、他のコンピュータ間との通信制御を行う。ネットワークは、有線、無線を問わない。
【００３３】
入力部１５は、データの入力を行い、例えば、キーボード、マウス等のポインティングデバイス、テンキー等の入力装置を有する。入力部１５を介して、コンピュータに対して、操作指示、動作指示、データ入力等を行うことができる。表示部１６は、ＣＲＴモニタ、液晶パネル等のディスプレイ装置、ディスプレイ装置と連携してコンピュータのビデオ機能を実現するための論理回路等（ビデオアダプタ等）を有する。尚、タッチパネル付ディスプレイのように、入力部１５及び表示部１６が一体であっても良い。
【００３４】
周辺機器Ｉ／Ｆ（Interface）部１７は、コンピュータに周辺機器を接続させるためのポートであり、周辺機器Ｉ／Ｆ部１７を介してコンピュータは周辺機器とのデータの送受信を行う。周辺機器Ｉ／Ｆ部１７は、ＵＳＢやＩＥＥＥ１３９４等で構成されており、通常複数の周辺機器Ｉ／Ｆを有する。周辺機器との接続形態は有線、無線を問わない。バス１８は、各装置間の制御信号、データ信号等の授受を媒介する経路である。
【００３５】
識別器構築装置１及び識別器２は、単一のコンピュータによって構成されても良いし、複数のコンピュータによって構成されても良い。複数のコンピュータによって構成される場合、識別器構築装置１が後述する学習処理を実行するサーバとして機能し、識別器２が後述する識別処理を実行するクライアント端末として機能しても良い。
【００３６】
例えば、識別器２が、車両システムに搭載される場合を考える。この場合、識別器構築装置１は、市場投入前の試験走行時の車両データを学習用データとして入力し、後述する学習処理を実行する。そして、識別器２は、識別器構築装置１から出力される学習結果のデータを予め記憶し、市場投入後の本番走行時の車両データを未知データとして入力し、後述する識別処理を実行する。これによって、識別器２は、市場投入直後であっても学習用データの不足が生じないので、後述する識別処理を精度良く実行することができる。
【００３７】
更に、識別器構築装置１は、市場投入後の車両システムに搭載されている複数の識別器２から、ネットワーク等を介して市場投入後の本番走行時の車両データを追加の学習用データとして入力し、再度学習処理を実行する。そして、識別器構築装置１は、ネットワーク等を介して識別器２に新たな学習結果のデータを配信する。これによって、識別器２は、様々な車両による本番走行時の車両データを用いることができるので、後述する識別処理を精度良く実行することができる。
【００３８】
尚、後述するように、本実施の形態における識別器構築装置１及び識別器２は、学習用データ数が多い場合であっても、短時間かつ高精度に、学習処理及び識別処理を実行することができる。従って、学習用データが膨大になり、ビッグデータ化しても、処理速度の低下を招くことなく、識別処理の精度を向上することができる。
【００３９】
次に、図２を参照しながら、識別器構築装置１による学習処理及び識別器２による識別処理の概要を説明する。
【００４０】
まず、本発明の実施形態において取り扱う「多クラス識別問題」について説明する。学習用データＤ及び未知データは、ｄ次元の実数値ベクトルである特徴量ｘによって定義される。未知データの特徴量は、特に、ｘｎｅｗと表記する。また、学習用データＤ及び未知データには、整数値のクラスラベルｙ＝｛１、・・・、ｍ｝が付与される。但し、未知データに付与されるクラスラベルはＮＵＬＬ値である。未知データのクラスラベルは、特に、ｙｎｅｗと表記する。ここで、「ｍ」はクラス数であり、ｍ≧３である。以上から、学習用データＤは、Ｄ＝｛（ｘｉ、ｙｉ）｜ｉ＝１、・・・、Ｎ）と表記できる。ここで、「Ｎ」は学習用データＤのデータ数である。また、未知データは、（ｘｎｅｗ、ｙｎｅｗ）と表記できる。
【００４１】
識別器構築装置１の制御部１１は、学習用データＤを用いて、未知データの特徴量ｘｎｅｗが与えられたときの未知データのクラスラベルｙｎｅｗを識別する識別器２を構築する。ここで、「識別器２を構築する」とは、識別器２が予め記憶すべきデータ（＝学習結果）を識別器２の記憶部１２に記憶させることを意味する。そして、識別器２の制御部１１は、未知データの特徴量ｘｎｅｗが与えられると、記憶部１２に記憶されているデータ（＝学習結果）を参照し、未知データのクラスラベルｙｎｅｗを識別する。
【００４２】
図２は、識別器による識別処理の概要を説明する図である。識別器２の記憶部１２には、クラスラベルｙ及び特徴量ｘを有する学習用データＤに基づいて構築されるｄ次元体の学習領域の局所密度が記憶される。そして、識別器２の制御部１１は、単一の未知データの特徴量ｘｎｅｗが入力されると、記憶部１２に記憶されている学習領域の局所密度を参照して、未知データの特徴量ｘｎｅｗを含む複数のｄ次元体の識別領域におけるクラスごとの学習用データの密度を算出し、算出される密度が最大となるクラスを未知データが属するクラスとする識別処理を行う。
【００４３】
ここで、図２（ａ）を参照しながら、「ｄ次元体の学習領域」について説明する。図２（ａ）では、ｄ次元座標空間を模式的に図示している。「○」、「△」及び「□」は、それぞれ、クラス１、クラス２及びクラス３のクラスラベルが付与されている学習用データである。ここで、ｄ＝３の場合には、学習用データは、ｄ次元座標空間における、基準とする立方体の体積を有するものと考える。ｄ＝２の場合には、基準とする正方形の面積、ｄ≧４の場合には、面積・体積の概念を拡張し、基準とする長さを次元数だけ乗じた量を考えれば良い。以下、特に断らない限り、「体積」と表記した場合には、面積や、面積・体積の概念を拡張した量を含むものとする。学習用データをこのように考えるときに、「ｄ次元体の学習領域」とは、学習用データの集合によって占められる領域を意味する。
【００４４】
また、「学習領域の局所密度」についても説明する。学習領域の一部又は全体をなす領域を「局所領域」と表記する。「学習領域の局所密度」とは、局所領域に含まれる学習用データの数を、局所領域の体積によって割った値を意味する。識別器２の記憶部１２には、学習用データＤによって構築される学習領域に対して、あらゆる局所領域の局所密度が記憶される。
【００４５】
また、「ｄ次元体の識別領域」についても説明する。図２（ａ）では、「Ａ」、「Ｂ」及び「Ｃ」の符号が付されている点線の閉領域が、「ｄ次元体の識別領域」である。「ｄ次元体の識別領域」は、図２（ａ）に示すように、未知データの特徴量ｘｎｅｗを含む任意の領域である。様々な形状を有する識別領域を基準として識別処理を行うことによって、従来技術のようにパラメータチューニングを行わなくても、学習用データＤの任意の分布形状に対して高精度に識別処理を行うことができる。つまり、本発明の実施の形態における識別器２では、識別処理の前ステップであるパラメータチューニングを行うことに代えて、識別処理の本ステップにおいて、学習領域から様々な形状を有する識別領域を切り出すことにより、識別処理の精度を確保する。尚、後述するように、本発明の実施の形態における識別処理によれば、様々な形状を有する識別領域を切り出しても、処理速度はほとんど低下しない。
【００４６】
図２（ｂ）には、図２（ａ）に示す事例に対する識別処理の結果が示されている。識別領域Ａ、Ｂ及びＣの体積は、それぞれ「１５」、「１０」及び「３０」とする。識別領域Ａ、Ｂ及びＣに含まれるクラス１、２及び３の学習用データは、「表（１）データ数」に示す通りである。また、識別領域Ａ、Ｂ及びＣにおけるクラス１、２及び３ごとの学習用データの密度は、「表（２）密度」に示す通りである。そして、「表（２）密度」の中の最大値は「０．６０」であり、そのときのクラスは「クラス２」である。従って、未知データが属するクラスは、「クラス２」と識別される。
【００４７】
図２（ｃ）は、複数のｄ次元体の識別領域が、ｄ次元直方体の入れ子構造である場合を模式的に示している。つまり、体積が最も小さい識別領域Ｄ１は、体積が２番目に小さい識別領域Ｄ２に含まれる。同様に、識別領域Ｄ２は、識別領域Ｄ３に含まれる。同様に、識別領域Ｄ３は、識別領域Ｄ４に含まれる。複数のｄ次元体の識別領域がｄ次元直方体の入れ子構造である場合、識別処理に必要な計算量が少なくて済み、短時間に識別処理を実行することが可能となる。
【００４８】
次に、図３〜図８を参照しながら、識別器構築装置１による学習処理について説明する。以下では、図３のフローチャートの流れに沿って説明し、適宜図４〜図８を参照する。
【００４９】
図３は、識別器構築装置による学習処理の流れを示すフローチャートである。図３に示すように、識別器構築装置１の制御部１１は、クラスラベル及びｄ次元の特徴量を有する実数値ベクトルの学習用データを入力し（Ｓ１）、学習用データを次元ごとにビット列に変換し（Ｓ２）、ビット列群の並び替えを行い（Ｓ３）、ビットデータを生成する。
【００５０】
図４は、ビットデータの生成処理の一例を示す図である。学習用データ２１が車両データの場合、学習用データ２１は、例えば、ある時刻に観測された車速、回転数、ＡＣＣ（Auto Cruse Control）のＯＮ／ＯＦＦなどの複数の特徴量を有する。特徴量は、車速、回転数のような数値データ、ＡＣＣのＯＮ／ＯＦＦのようなカテゴリカルデータのいずれかに区分される。最初に、識別器構築装置１の制御部１１は、学習用データ２１に含まれる特徴量に対して様々な加工処理を施して所定の範囲の整数値とする。
【００５１】
特徴量が数値データの場合、細かく区切って離散化し、デジタル化する。例えば、数値データを小数点第１位で四捨五入して整数値とし、ｉｎｔ型データに変換する。数値データの取り得る範囲が極端に狭い、または広い場合、制御部１１は、適当な係数をかけて想定するｉｎｔ型データの範囲に満遍なく収まるようにする。また、数値データの分布が極端に偏っている場合、対数変換なども行う。また、特徴量が数値データであっても、取り得る値が少ない場合、例えば、エアコンの強度を示すデータなどで０〜３の整数値しか取らない場合などは、カテゴリカルデータとして取り扱っても良い。また、特徴量がカテゴリカルデータであっても、取り得る値に何らかの距離の概念が導入できる場合などは、数値データとして取り扱っても良い。尚、クラスラベルｙは、カテゴリカルデータとして取り扱う。
【００５２】
図４（ａ）には、学習用データ２１として、６件のデータが例示されている。クラスラベルｙの取り得る値は、ｙ＝｛Ａ、Ｂ、Ｃ｝である。特徴量ｘ１の取り得る値は、ｘ１＝｛０、１、・・・、８｝である。特徴量ｘ２の取り得る値は、ｘ２＝｛０、１、・・・、８｝である。例えば、Ｎｏが「１」のデータは、（ｙ、ｘ１、ｘ２）＝（Ａ、２、３）である。これは、特徴量（ｘ１、ｘ２）＝（２、３）のデータがクラスＡに属することを意味する。
【００５３】
また、図４（ａ）には、学習用データ２１に対応するカルノー図２２ａが図示されている。カルノー図２２ａを参照すると、学習用データ２１がクラスごとに固まっていることが分かる。
【００５４】
図４（ｂ）には、学習用データ２１が次元ごとに変換されたビット列２３ａが図示されている。（ｙ１、ｙ２）は、クラスラベルｙの「Ａ」、「Ｂ」、「Ｃ」を符号化して「０」、「１」、「２」とし、更に２進数に変換したときのビット列である。（ｘ１３、ｘ１２、ｘ１１）は、特徴量ｘ１を２進数に変換したときのビット列である。（ｘ２３、ｘ２２、ｘ２１）は、特徴量ｘ２を２進数に変換したときのビット列である。例えば、Ｎｏが「１」のビット列２３ａは、（ｙ１、ｙ２、ｘ１３、ｘ１２、ｘ１１、ｘ２３、ｘ２２、ｘ２１）＝（０、０、０、１、０、０、１、１）である。
【００５５】
以下では、ビット列に対して順位の概念を導入する。そして、ｘ１３とｘ２３のように最も左端のビットを「最上位ビット」（ＭＳＢ：Most Significant Bit）、ｘ１１とｘ２１のように最も右端のビットを「最下位ビット」（ＬＳＢ：Least Significant Bit）と呼ぶこととする。
【００５６】
図４（ｃ）には、ビットデータ２４ａが図示されている。ビットデータ２４ａは、数値データのビット列を最上位ビットから最下位ビットの順に並び替えることによって生成される。図４に示す例では、（ｙ１、ｙ２）はカテゴリカルデータのビット列であるから、並び替えを行わない。また、（ｘ１３、ｘ１２、ｘ１１）及び（ｘ２３、ｘ２２、ｘ２１）は数値データのビット列であるから、並び替えを行う。ここで、最上位ビットは、ｘ１３及びｘ２３である。また、最下位ビットは、ｘ１１及びｘ２１である。従って、図４（ｃ）に示すように、「ｙ１->ｙ２->ｘ１３->ｘ２３->ｘ１２->ｘ２２->ｘ１１->ｘ２１」の順に並び替えが行われる。例えば、Ｎｏが「１」のビットデータ２４ａは、「００００１１０１」である。
【００５７】
尚、Ｓ３における並び替えの処理は、必ずしも必須ではない。Ｓ３における並び替えの処理は、全ての次元を同等に扱うことになるので、データの特性について事前に何らかの情報を持っている場合、並び替えを行わない方が良いこともある。例えば、ｘ１の次元は、データの特徴を良く表しており、ｘ２の次元は、ほとんど変化がなく、データの特徴をあまり表していないことが分かっている場合には、ｘ１のビット列をｘ２のビット列よりも上位とし、両者を同等に扱わない方が良い。Ｓ３における並び替えの処理は、データの特性について事前に何も情報を持っていない場合に有効である。
【００５８】
また、カテゴリ属性のビット列群は、数値属性のビット列群と区別することが望ましい。例えば、図４に示す数値属性のｘ１、ｘ２の他に、カテゴリ属性のｘ３を含むデータを考え、カテゴリ属性のｘ３を変換したビット列を（ｘ３３、ｘ３２、ｘ３１）とする。この場合、制御部１１は、例えば、「ｙ１->ｙ２->ｘ３３->ｘ３２->ｘ３１->ｘ１３->ｘ２３->ｘ１２->ｘ２２->ｘ１１->ｘ２１」の順に並び替える。カテゴリ属性と数値属性を分けた理由は、一般にカテゴリ属性の取り得る値に対して距離の概念を導入することができず、数値属性と一緒に取り扱うことが困難だからである。データの特性について事前に何も情報を持っていない場合、カテゴリ属性同士や数値属性同士は、どちらが上位になっても構わない。
【００５９】
また、クラスラベルｙのビット列は、Ｓ３における並び替え処理を行わない。尚、図４（ｃ）に示すように、クラスラベルｙのビット列は、特徴量ｘ１、ｘ２のビット列群よりも上位とする。
【００６０】
図３の説明に戻る。次に、識別器構築装置１の制御部１１は、Ｓ１〜Ｓ３の処理によって生成されるビットデータに基づいて、学習領域を二分決定グラフ（ＢＤＤ：Binary Decision Diagram）として構築する（Ｓ４）。尚、学習領域は、二分決定グラフに代えて、カルノー図として構築しても良い。二分決定グラフ及びカルノー図のいずれも、論理関数を表現するために使われるデータ構造の１つである。つまり、学習領域は、論理関数を表現できるデータ構造によって構築されれば良い。以下では、混乱を避ける為に、学習領域を二分決定グラフとして構築する場合について説明する。カルノー図は、必要に応じて例示する。
【００６１】
図５は、学習領域の一例を示す図である。図５に示す学習領域３１は、図４（ｃ）に示すビットデータ２４ａに基づいて二分決定グラフとして構築されたものである。
【００６２】
二分決定グラフは、コンピュータにおいてポインタの配列で表現されるので、処理に必要な記憶容量を減らすことができる。また、既約な順序付き二分決定グラフの場合、論理関数同士の演算がグラフのサイズにほぼ比例する程度の計算時間によって実行できる。ここで、グラフのサイズとはノード数のことである。
【００６３】
順序付き二分決定グラフとは、（１）ノード同士に全順序関係が定義されている、（２）最上位ノードから定数ノードに至る全てのパスについて変数の出現順序が、全順序関係に矛盾しない、二分決定グラフである。ここで、図５に示す例では、３３が最上位ノード（ルートノード）、３４が定数ノードである。図５に示す例では、定数ノードは、「１」（「真」を意味する。）である。尚、最上位ノード及び定数ノードは特別なノードである為、通常のノードと符号を区別する。既約な二分決定グラフとは、（１）冗長なノードを全て削除、（２）等価なノードを全て共有、という２つの簡約化規則がこれ以上適用できなくなるまで適用されている二分決定グラフである。図５に示す学習領域３１は、既約な順序付き二分決定グラフである。
【００６４】
図５に示す例では、楕円形状の３２ａなどがノードである。図５に示すビットデータ２４ａの各ビットは、ブーリアン変数（「真」と「偽」のいずれかを取る変数）とみなすことができる。例えば、図４（ｃ）に示すビットデータ２４ａの１番目のビットｙ１は、ブーリアン変数とみなすことができ、ノード３２ａに対応している。３３は最も上位のノード（ルートノード）、３４は定数ノードである。
【００６５】
図５に示す学習領域３１は、実線で示すＴｈｅｎ枝、間隔が広い点線で示すＥｌｓｅ枝、「＊」（アスタリスク）を付した間隔が狭い点線で示す否定Ｅｌｓｅ枝の３つを用いている。Ｔｈｅｎ枝は、ビットデータ２４ａのビットの値が「１」に対応する枝である。また、Ｅｌｓｅ枝及び否定Ｅｌｓｅ枝は、ビットデータ２４ａのビットの値が「０」に対応する枝である。例えば、枝３５ａは否定Ｅｌｓｅ枝である。否定Ｅｌｓｅ枝を用いると、否定演算が短時間で実行できる。
【００６６】
識別器構築装置１の制御部１１は、全てのクラスの学習用データをビットデータｂｉ（ｉ＝１、・・・、Ｎ）に変換し、以下に示す論理和演算によって、単一の二分決定グラフＦにビットデータｂｉを逐次追加することによって学習領域３１を構築する。
＜論理和演算＞
１．Ｆ←０
２．ｆｏｒ  ｉ＝１  ｔｏ  Ｎ  ｄｏ
Ｆ←Ｆ∨ｂｉ
【００６７】
ここで、ビットデータｂｉは、例えば図４（ｃ）の場合、Ｎｏが「１」のデータに対応するｂ１は、ｂ１＝¬ｙ１∧¬ｙ２∧¬ｘ１３∧¬ｘ２３∧ｘ１２∧ｘ２２∧¬ｘ１１∧ｘ２１となる。但し、¬ａは、論理変数ａの否定を表す。
【００６８】
このように、全てのクラスを纏めて１つの二分決定グラフを構築することによって、異なるクラス同士でノードを共有することができ、メモリ使用量を節約できるとともに、識別処理における計算時間も短縮することができる。例えば、従来技術の多クラスＳＶＭでは、one-versus-the-restの手法であってもクラス数と同じ数のＳＶＭを構築する必要がある。従って、多クラスＳＶＭよりも、本発明の方が、少なくともメモリ使用量や計算時間の面において優位であると言える。
【００６９】
図３の説明に戻る。次に、識別器構築装置１の制御部１１は、二分決定グラフの各ノードにおける最小項（Minterm）の数を算出する（Ｓ５）。最小項とは、ブーリアン変数の集合が与えられたとき、全てのブーリアン変数のリテラルを含む積項である。例えば、ブーリアン変数の集合が（ａ、ｂ、ｃ）のとき、ａ∧¬ｂ∧ｃは最小項であり、ａ∧¬ｂは最小項ではない。最小項の数の算出処理は、図６、図７を参照して説明する。
【００７０】
図６は、各ノードにおける最小項の数の算出処理を説明する図である。図７は、最小項の数の算出結果の一例を示す図である。図６に示すように、識別器構築装置１の制御部１１は、ノードごとに、Ｐｏｓｉｔｉｖｅ（以下、「Ｐｏ」と略記する。）：最上位ノードから辿って否定枝を偶数回通る場合の最小項の数、及び、Ｎｅｇａｔｉｖｅ（以下、「Ｎｅ」と略記する。）：最上位ノードから辿って否定枝を奇数回通る場合の最小項の数、を算出する。ここで、Ｐｏ＋Ｎｅ＝２のｎ乗（ｎはブーリアン変数の数、すなわち、ビットデータ２４ａのビット数）である。
【００７１】
最初に、識別器構築装置１の制御部１１は、定数ノードの最小項の数を算出する。ここで、定数ノードのＰｏは２のｎ乗、Ｎｅは０として計算する。従って、図７に示すように、定数ノード（＝ノード番号が「１」のノード）については、Ｐｏ＝２の８乗＝２５６、Ｎｅ＝０となる。
【００７２】
次に、識別器構築装置１の制御部１１は、深さ優先探索によって、定数ノード以外の各ノードの最小項の数を再帰的に算出する。具体的には、識別器構築装置１の制御部１１は、図６に示すように、（ａ）Ｅｌｓｅ枝が否定枝ではない場合と、（ｂ）Ｅｌｓｅ枝が否定枝の場合に分けて、各ノードにおける最小項の数を算出する。
【００７３】
まず、図６（ａ）の場合について説明する。図６（ａ）では、ノード３２ｄが算出対象のノード、Ｔｈｅｎ枝によって接続された下位のノード３２ｂのＰｏの値がｔ_ｐ（既知）及びＮｅの値がｔ_ｎ（既知）、並びに、Ｅｌｓｅ枝によって接続された下位のノード３２ｃのＰｏの値がｅ_ｐ（既知）及びＮｅの値がｅ_ｎ（既知）である。このとき、制御部１１は、下位のノード３２ｂと３２ｃの算出結果を用いて、Ｐｏ＝ｔ_ｐ／２＋ｅ_ｐ／２、Ｎｅ＝ｔ_ｎ／２＋ｅ_ｎ／２の式によって、ノード３２ｄの最小項の数を算出する。
【００７４】
次に、図６（ｂ）の場合について説明する。図６（ｂ）では、ノード３２ｇが算出対象のノード、Ｔｈｅｎ枝によって接続された下位のノード３２ｅのＰｏの値がｔ_ｐ（既知）及びＮｅの値がｔ_ｎ（既知）、並びに、否定Ｅｌｓｅ枝によって接続された下位のノード３２ｆのＰｏの値がｅ_ｐ（既知）及びＮｅの値がｅ_ｎ（既知）である。このとき、制御部１１は、下位のノード３２ｅと３２ｆの算出結果を用いて、Ｐｏ＝ｔ_ｐ／２＋ｅ_ｎ／２、Ｎｅ＝ｔ_ｎ／２＋ｅ_ｐ／２の式によって、ノード３２ｇの最小項の数を算出する。
【００７５】
図５を参照すると、例えば、図７におけるノード番号が「２」のノードについては、下位のノード（＝定数ノード３４）と接続されたＥｌｓｅ枝が否定枝であるから、図６（ｂ）の算出方法によって最小項の数を算出する。つまり、ノード番号が「２」のノードについては、Ｐｏ＝２５６／２＋０／２＝１２８、Ｎｅ＝２５６／２＋０／２＝１２８となる。
【００７６】
また、図５を参照すると、例えば、図７におけるノード番号が「３」のノードについては、下位のノードと接続されたＥｌｓｅ枝が否定枝であるから、図６（ｂ）の算出方法によって最小項の数を算出する。つまり、ノード番号が「３」のノードについては、Ｐｏ＝１２８／２＋０／２＝６４、Ｎｅ＝１２８／２＋２５６／２＝１９２となる。
【００７７】
また、図５を参照すると、例えば、図７におけるノード番号が「４」のノードについては、下位のノードと接続されたＥｌｓｅ枝が否定枝ではないことから、図６（ａ）の算出方法によって最小項の数を算出する。つまり、ノード番号が「４」のノードについては、Ｐｏ＝２５６／２＋１２８／２＝１９２、Ｎｅ＝０／２＋１２８／２＝６４となる。
【００７８】
このようにして、識別器構築装置１の制御部１１は、深さ優先探索によって、定数ノード以外の各ノードの最小項の数を再帰的に算出する。図７には、ノード番号が「１」〜「２４」について、最小項の数の算出結果４１が図示されている。
【００７９】
図３の説明に戻る。次に、識別器構築装置１の制御部１１は、二分決定グラフの各ノードにおける局所密度を算出する（Ｓ６）。局所密度は、「最小項の数／２のｎ乗」として計算する。局所密度の算出処理は、図８を参照して説明する。
【００８０】
図８は、局所密度の算出結果の一例を示す図である。ここで、最上位ノードから辿って着目しているノードまでに否定枝を偶数回通るパスのことを、「Ｐ接続」という。また、最上位ノードから辿って着目しているノードまでに否定枝を奇数回通るパスのことを、「Ｎ接続」という。そして、Ｄｅｎｓｉｔｙ＿Ｐｏｓｉｔｉｖｅ（以下、「Ｄ＿Ｐｏ」と略記する。）：各ノードにおけるＰ接続の局所密度、Ｄｅｎｓｉｔｙ＿Ｎｅｇａｔｉｖｅ（以下、「Ｄ＿Ｎｅ」と略記する。）：各ノードにおけるＮ接続の局所密度、とする。
【００８１】
局所密度は、「最小項の数／２のｎ乗」として計算するので、Ｄ＿Ｐｏ＝Ｐｏ／２のｎ乗、Ｄ＿Ｎｅ＝Ｎｅ／２のｎ乗、である。例えば、図８におけるノード番号が「１」のノードについては、Ｄ＿Ｐｏ＝２５６／２の８乗＝１．０００、Ｄ＿Ｎｅ＝０／２の８乗＝０．０００である。
【００８２】
このようにして、識別器構築装置１の制御部１１は、二分決定グラフの各ノードにおける局所密度を算出する。図８には、ノード番号が「１」〜「２４」について、局所密度の算出結果４２が図示されている。
【００８３】
以上、識別器構築装置１の制御部１１は、図３に示す一連の処理を行い、学習領域の局所密度を算出する。算出される学習領域の局所密度は、識別器２の記憶部１２に記憶される。当然ながら、識別器２の記憶部１２には、図５に示す学習領域３１のグラフ構造もポインタの配列として記憶される。
【００８４】
次に、図９〜図１２を参照しながら、識別器２による識別処理について説明する。以下では、図９のフローチャートの流れに沿って説明し、適宜図１０〜図１２を参照する。
【００８５】
図９は、識別器による識別処理の流れを示すフローチャートである。図９に示すように、識別器２の制御部１１は、クラスラベルがＮＵＬＬであって、ｄ次元の特徴量を有する実数値ベクトルの未知データを入力し（Ｓ１１）、未知データを次元ごとにビット列に変換し（Ｓ１２）、ビット列群の並び替えを行い（Ｓ１３）、未知データに関するビットデータを生成する。Ｓ１２では、識別器２の制御部１１は、全てのクラスラベルを符号化して未知データに付加することによって、クラス数と同じ数のビット列群を生成する。
【００８６】
図１０〜図１２は、識別処理を説明する図である。図１０（ａ）には、未知データ２５が図示されている。未知データ２５の特徴量は、（ｘ１、ｘ２）＝（２、５）である。また、未知データ２５を含むカルノー図２２ｂも図示されている。カルノー図２２ｂでは、未知データ２５を「Ｕ」で示している。
【００８７】
図１０（ｂ）には、未知データ２５に対して、３つのクラスラベルに対応するビット列２３ｂが図示されている。例えば、Ｎｏが「１」のビット列２３ｂは、クラス「Ａ」が付加されたものであり、（ｙ１、ｙ２、ｘ１３、ｘ１２、ｘ１１、ｘ２３、ｘ２２、ｘ２１）＝（０、０、０、１、０、１、０、１）である。
【００８８】
図１０（ｃ）には、未知データ２５に関するビットデータ２４ｂが図示されている。識別器２の制御部１１は、図３のＳ３において、学習用データ２１に対して並び替えの処理を行った場合、図１０のＳ１３においても、並び替えの処理を同様に行う。図１０（ｃ）に示す例では、図４（ｃ）と同様、「ｙ１->ｙ２->ｘ１３->ｘ２３->ｘ１２->ｘ２２->ｘ１１->ｘ２１」の順に並び替えが行われる。例えば、Ｎｏが「１」のビットデータ２４ｂは、「０００１１００１」である。
【００８９】
図９の説明に戻る。次に、識別器２の制御部１１は、クラスを１つ特定し（Ｓ１４）、学習領域３１において、特定したクラスのビットデータに対応するパスを探索し（Ｓ１５）、探索したパスに含まれるノードに係る局所密度の値をＲＡＭ等に記憶する（Ｓ１６）。但し、最上位ノード、及びクラスラベルを表すノードは対象から外す。図５に示す学習領域３１の例であれば、ノード番号が「Ｆ」、「２４」、「２２」、及び「２３」のノードは記憶対象から外す。更に、記憶する局所密度の値は、パスごとの最大値のみで十分である。
【００９０】
そして、識別器２の制御部１１は、全クラスの処理が終了しているか否かを確認し（Ｓ１７）、終了していない場合（Ｓ１７のＮｏ）、Ｓ１４から処理を繰り返し、終了している場合（Ｓ１７のＹｅｓ）、Ｓ１８に進む。
【００９１】
ここで、図１１を参照しながら、パスの探索について説明する。以下では、ノード番号が「Ｘ」（Ｘ＝１〜２４）のノードのことを、「ノードＸ」と表記する。
【００９２】
１例として、クラスＡのビットデータに対応するパスの探索について説明する。図１１に示すように、クラスＡのビットデータは「０００１１００１」である。パスの探索の開始点は最上位ノードＦである。最上位ノードＦの下位ノードは「ノード２４」のみであるから、「ノード２４」に進む。次に、ｙ１のビットが「０」であるから、「ノード２４」とＥｌｓｅ枝によって接続されている下位ノードである「ノード２３」に進む。次に、ｙ２のビットが「０」であるから、「ノード２３」とＥｌｓｅ枝によって接続されている下位ノードである「ノード２１」に進む。次に、ｘ１３のビットが「０」であるから、「ノード２１」とＥｌｓｅ枝によって接続されている下位ノードである「ノード１７」に進む。次に、ｘ２３のビットが「１」であるから、「ノード１７」とＴｈｅｎ枝によって接続されている下位ノードである「ノード１」に進む。つまり、クラスＡに対応するパスは、「最上位ノードＦ->ノード２４->ノード２３->ノード２１->ノード１７->ノード１」となる。
【００９３】
図９の説明に戻る。Ｓ１８では、識別器２の制御部１１は、Ｓ１６においてＲＡＭ等に記憶されている局所密度を参照し、局所密度の値が最大となるクラスを、未知データが属するクラスに決定する。
【００９４】
図１０（ｄ）には、Ｓ１６における記憶結果２６が図示されている。まず、クラスＡに対する記憶結果２６について説明する。前述した通り、クラスＡに対応するパスは、「最上位ノードＦ->ノード２４->ノード２３->ノード２１->ノード１７->ノード１」である。但し、前述した通り、「最上位ノードＦ」、「ノード２４」、及び「ノード２３」は記憶対象ではない。対象となるノードについて、図８を参照すると、「ノード２１」の局所密度は「０．０３１」、「ノード１７」の局所密度は「０．０３１」、「ノード１」の局所密度は「０．０００」である。従って、図１０（ｄ）に示すように、クラスＡに対する局所密度の最大値は「０．０３１」となる。
【００９５】
次に、クラスＢに対する記憶結果２６について説明する。図１１に示すように、クラスＢに対応するパスは、「最上位ノードＦ->ノード２４->ノード２３->ノード２０->ノード１６->ノード１２->ノード９->ノード１」である。対象となるノードについて、図８を参照すると、「ノード２０」の局所密度は「０．０３１」、「ノード１６」の局所密度は「０．０６３」、「ノード１２」の局所密度は「０．１２５」、「ノード９」の局所密度は「０．１２５」、「ノード１」の局所密度は「０．０００」である。従って、図１０（ｄ）に示すように、クラスＢに対する局所密度の最大値は「０．１２５」となる。
【００９６】
次に、クラスＣに対する記憶結果２６について説明する。図１１に示すように、クラスＣに対応するパスは、「最上位ノードＦ->ノード２４->ノード２２->ノード１９->ノード１」である。対象となるノードについて、図８を参照すると、「ノード１９」の局所密度は「０．０３１」、「ノード１」の局所密度は「０．０００」である。従って、図１０（ｄ）に示すように、クラスＣに対する局所密度の最大値は「０．０３１」となる。
【００９７】
そして、記憶結果２６を参照すると、クラスＡ〜クラスＣの中で、局所密度の最大値が最も大きいクラスは、「クラスＢ」である。従って、図１０（ａ）に示す未知データ２５が属するクラスは、「クラスＢ」と識別される。
【００９８】
図１２では、カルノー図を用いて識別処理の結果を図示している。但し、図１２では、クラスごとにカルノー図が定義されており、カルノー図の全体領域の面積は、２の６乗＝６４である。カルノー図では、未知データを「Ｕ」で図示している。
【００９９】
識別領域（１）〜（７）は、未知データの特徴量を含み、学習領域から様々な形状を有する領域として切り出したものとなっている。具体的には、識別領域（１）は、８×８の正方形である。識別領域（２）は、８×４の長方形である。識別領域（３）は、４×４の正方形である。識別領域（４）は、４×２の長方形である。識別領域（５）は、２×２の正方形である。識別領域（６）は、２×１の長方形である。識別領域（７）は、１×１の正方形である。識別領域（１）〜（７）は、ｄ次元直方体（この例では、２次元長方形）の入れ子構造となっている。
【０１００】
例えば、識別領域（１）に対するクラスＡの局所密度は、識別領域（１）に含まれるクラスＡに属するデータが２個であるから、２／６４＝０．０３１となる。
【０１０１】
識別器２の制御部１１は、識別領域（１）〜（７）の全てについて局所密度を求める必要はない。例えば、識別器２の制御部１１は、正方形の識別領域のみについて局所密度を求めても良い。つまり、識別器２の制御部１１は、識別領域（１）、（３）、（５）、及び（１）についてのみ局所密度を求めても良い。このように正方形の識別領域のみについて局所密度を求めるだけでも、識別処理において一定の精度が確保できる。
【０１０２】
また、図１２に示すカルノー図において、正方形の識別領域のみについて局所密度を求めるということは、図５に示す二分決定グラフの学習領域３１において、ｘ１３、ｘ１２、及びｘ１１に対応するノードの局所密度のみを参照することと同じである。従って、識別器２の制御部１１は、ｘ１３、ｘ１２、ｘ１１、及び定数ノードに対応するノードの局所密度のみを参照し、その中で局所密度が最大となるクラスを、未知データが属するクラスとして決定しても良い。ここで、ｘ１３及びｘ２３、ｘ１２及びｘ２２、並びにｘ１１及びｘ２１をそれぞれ同じレベルと考えると、ｘ１３、ｘ１２、及びｘ１１は、ビット列のレベルが変わるノードと言える。
【０１０３】
次に、学習領域３１を二分決定グラフとして構築する場合の計算量について説明する。学習用データ数をＮ、二分決定グラフのノード数をＭ、クラス数をｍとすると、識別器構築装置１による学習処理に必要な計算量はＯ（ＭＮ）である。従来技術の多クラスＳＶＭであれば、学習処理に必要な計算量はＯ（ｍ×Ｎ３）である。従って、多クラスＳＶＭよりも、識別器構築装置１の方が、学習処理における計算量の面において優位であると言える。
【０１０４】
また、学習用データ数をＮ、特徴量の次元数をｄ、クラス数をｍとすると、識別器２による識別処理に必要な計算量はＯ（ｄｍ）である。従来技術のｋ近傍法であれば、識別処理に必要な計算量はＯ（ｄＮ）である。一般にはｍ≪Ｎであるから、ｋ近傍法よりも、識別器２の方が、識別処理における計算量の面において優位であると言える。
【実施例】
【０１０５】
次に、図１３を参照しながら、本発明の実施形態の実施例について説明する。図１３は、実施例に用いるデータ例を示す図である。図１３に示すデータ例は、Machine learning classifier gallery（http://home.comcast.net/~tom.fawcett/public_html/ML-gallery/pages/index.html）に開示されているものである。図１３に示すデータ例では、全て２次元空間（ｘ、ｙ）において複数の領域が設けられている。
【０１０６】
本実施例及び比較例では、図１３に示すデータ例の各領域からランダムに学習用データ及び未知データを取り出した。比較例は、従来技術の多クラスＳＶＭ及びｋ近傍法である。学習用データに対しては、領域を一意に識別する番号をクラスラベルｙｉとし、入力値として用いた。未知データに対しては、領域を一意に識別する番号をクラスラベルｙｎｅｗとし、正解値として用いた。また、本実施例及び比較例では、以下に示すように、学習用データ数を３通り、未知データ数を１通りとし、それぞれ３回の評価実験を行った。
・学習用データ数：１０００、１００００、１０００００
・未知データ数：１００００
【０１０７】
以下に示す表１は、本実施例及び比較例（多クラスＳＶＭ及びｋ近傍法）の予測精度を比較するための表である。表１に示すように、比較例の多クラスＳＶＭ及びｋ近傍法は、パラメータγやｋの値によって予測精度のばらつきが生じている。一方、本実施例は、パラメータチューニングを行わないので、そもそも予測精度のばらつきが生じる要素はない。また、データ数が多い場合、本実施例の精度は、比較例の多クラスＳＶＭやｋ近傍法の精度と同程度であり、高い精度が確保できていると言える。尚、データ数が少ない場合、本実施例の精度は、データ例の分布形状に依存する。但し、本発明では、特に学習用データ数が多い場合を対象としていることから、データ数が多い場合において精度が確保できれば十分である。
【０１０８】
【表１】
2013152654.tif 000003
【０１０９】
以下に示す表２は、本実施例及び比較例（多クラスＳＶＭ）の学習時間を比較するための表である。尚、ｋ近傍法は学習処理を行わないので、学習時間の比較はできない。表２に示すように、比較例の多クラスＳＶＭの学習時間は、学習データ数が増えると、急激に増える。一方、本実施例の学習時間は、学習データ数に比例して増加する程度である。つまり、学習用データ数が多い場合、本実施例は、比較例の多クラスＳＶＭよりも、学習時間が短いと言える。
【０１１０】
【表２】
2013152654.tif 000004
【０１１１】
以下に示す表３は、本実施例及び比較例（多クラスＳＶＭ及びｋ近傍法）の識別時間を比較するための表である。表３に示すように、比較例の多クラスＳＶＭ及びｋ近傍法の識別時間は、学習データ数に比例して増加する。一方、本実施例の識別時間は、学習データ数によらす、ほぼ一定である。つまり、学習用データ数が多い場合、本実施例は、比較例の多クラスＳＶＭ及びｋ近傍法よりも、識別時間が短いと言える。
【０１１２】
【表３】
2013152654.tif 000005
【０１１３】
以上、学習用データ数が多い場合、本実施例は、比較例の多クラスＳＶＭ及びｋ近傍法と同程度の精度を確保しながら、比較例の多クラスＳＶＭ及びｋ近傍法よりも短時間に未知データを多クラスに識別することができると言える。
【０１１４】
＜変形例＞
次に、本発明の実施形態の変形例を説明する。特徴量ｘの次元数が多い場合、識別器構築装置１の制御部１１は、学習用データに対して次元縮約手法を適用し、ビットデータのビット数ｎを減らしてから、二分決定グラフを構築するようにしても良い。次元縮約手法としては、例えば、主成分分析等が考えられる。これによって、特徴量ｘの次元数が多い場合であっても、前述した本発明の実施形態における効果を損なうことが無い。尚、学習用データに対して次元縮約手法を適用する場合、識別器２の制御部１１も、未知データに対して同様の次元縮約手法を適用する。
【０１１５】
また、識別器構築装置１の制御部１１は、ビット列に対する並び替え処理において、特徴量の並び順を変えて様々なビットデータを生成することによって、様々な二分決定グラフを構築するようにしても良い。ここで、「特徴量の並び順を変える」とは、図４（ｃ）の例であれば、特徴量ｘ１とｘ２の順序を変えて、「ｙ１->ｙ２->ｘ２３->ｘ１３->ｘ２２->ｘ１２->ｘ２１->ｘ１１」とすることである。様々な二分決定グラフを構築することによって、学習領域から様々な形状を有する識別領域を切り出すことができるので、識別処理の精度を確保することができる。
【０１１６】
また、識別器２の制御部１１は、学習領域を直交回転してから、識別処理を行うようにしても良い。これによって、識別領域をｄ次元直方体の入れ子構造とし、識別処理に必要な計算量を減らしながらも、実質的には、傾きが異なるｄ次元直方体を切り出すことと同様の作用を奏することができる。つまり、計算時間を減らしつつ、学習領域から様々な形状を有する識別領域を切り出して、識別処理の精度を確保することができる。
【０１１７】
また、識別器２の制御部１１は、識別領域をｄ次元立方体に限定するようにしても良い。これによって、識別結果が特徴量の並び順に依存しないことになる。但し、前述の通り、様々な形状を有する識別領域を切り出す方が、識別処理の精度を確保することができる。従って、識別結果が特徴量の並び順に依存しないことが求められるケースにおいて、識別領域をｄ次元立方体に限定することが望ましい。
【０１１８】
以上、添付図面を参照しながら、本発明に係る識別器構築装置等の好適な実施形態について説明したが、本発明はかかる例に限定されない。当業者であれば、本願で開示した技術的思想の範疇内において、各種の変更例又は修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【符号の説明】
【０１１９】
１………識別器構築装置
２………識別器
２１………学習用データ
２２ａ、２２ｂ………カルノー図
２３ａ、２３ｂ………ビット列
２４ａ、２４ｂ………ビットデータ
２５………未知データ
３１………学習領域
【図１】
2013152654.tif 000006
【図２】
2013152654.tif 000007
【図３】
2013152654.tif 000008
【図４】
2013152654.tif 000009
【図５】
2013152654.tif 000010
【図６】
2013152654.tif 000011
【図７】
2013152654.tif 000012
【図８】
2013152654.tif 000013
【図９】
2013152654.tif 000014
【図１０】
2013152654.tif 000015
【図１１】
2013152654.tif 000016
【図１２】
2013152654.tif 000017
【図１３】
2013152654.tif 000018