(57)【要約】      （修正有）【課題】入力データ記録のセットについてアンサンブル・モデル・ベースの予測を行う。【解決手段】複数の処理ユニットおよびデータ・スライスを制御するデータベース管理システムであって、アンサンブル・モデル中の各ツリーに対する割り当てテーブルを生成するステップ５０２と、割り当てテーブルの各々を互いに素なサブテーブルに分割するステップ５０４と、サブテーブルの各々をそれぞれデータ・スライスの一つに格納するステップ５０６と、全てのツリーのルート・ノードを全ツリーの現在レベルに対応する現在ノードのセットとして用いるステップ５１０と、それぞれ自分のデータ・スライスが一つ以上のサブテーブルを含む一回以上の反復を並行して実行し、データ記録をツリーの現在ノードに割り当て、またはそれらを割り当て解除し、全てのツリーの葉ノードへのデータ記録の割り当てから予測結果を計算するステップ５１２と、を含む。【選択図】図５
2015026372.tif 000002
【特許請求の範囲】
【請求項１】
入力データ記録のセット（ＩＤＳ）についてアンサンブル・モデル（１００）ベースの予測を行うための、コンピュータにより実行される方法であって、前記アンサンブル・モデルは複数のツリー（Ｔ１〜Ｔ３）を含み、前記ツリーはディシジョン・ツリーまたは回帰ツリーであり、前記方法は、複数の処理ユニット（ＣＰＵ１〜ＣＰＵ１０）および複数のデータ・スライスを（ＤＳＬ１〜ＤＳＬ１０）を制御するデータベース管理システムの態様で実装されており、前記データベース管理システムは、前記データ・スライスのいずれか一つに格納されているデータをそれぞれ前記処理ユニットの一つによって処理するよう動作可能であり、前記方法は、
−  前記アンサンブル・モデル中の前記ツリー（Ｔ１〜Ｔ３）の各々について割り当てテーブル（ＡＴ１〜ＡＴ３）を生成するステップ（５０２）であって、各割り当てテーブルは、前記入力データ・セット中の全てのデータ記録を前記ツリーのルート・ノード（ＮＯＴ１、ＮＯＴ２、ＮＯＴ３）に割り当てる、前記生成するステップと、
−  前記割り当てテーブルの各々を、互いに素なサブテーブル（ＡＸＴ１．１〜ＡＸＴ１．１０；ＡＸＴ２．１〜ＡＸＴ２．１０；ＡＸＴ３．１〜ＡＸＴ３．１０）に分割するステップ（５０４）と、
−  前記サブテーブルの各々をそれぞれ前記データ・スライスの一つに格納するステップ（５０６）と、
−  全てのツリーの前記ルート・ノード（ＮＯＴ１、ＮＯＴ２、ＮＯＴ３）を、前記全ツリーの現在レベルに対応する現在ノードのセットとして用いるステップ（５１０）と、
−  それぞれ自分のデータ・スライスが一つ以上の前記サブテーブルを含む、全ての前記処理ユニットによって、
ａ）前記処理ユニットの前記データ・スライス中に格納された前記サブテーブルを通して単一パスを実施し（５１４）、これにより、前記データ・スライスの一つ以上の前記データ記録に割り当てられている一つ以上の前記現在ノードを識別するステップ、
ｂ）前記識別された現在ノード各々に割り当てられた前記データ記録に対し、前記現在ノードの分岐条件を評価するステップ（５１６）、
ｃ）前記評価に基づいて、入力データ記録を前記現在ノードの各々から割り当て解除し（５１８）、前記入力データ記録を前記現在ノードの一つ以上の子ノードの一つに再割り当てするステップ、
ｄ）全現在ノードの前記子ノードを、全ての前記ツリーの現在レベルに対応する現在ノードのセットとして用いるステップ（５２０）、および
ｅ）全ての前記割り当てテーブルの全ての入力データ記録が、前記ツリーの葉ノードに割り当てられるまで、ステップａ）〜ｄ）を繰り返すステップ、
を並行して実行するステップ（５１２）と、
−  全ての前記ツリーの前記葉ノードへのデータ記録の前記割り当てから予測結果を計算するステップ（５２４）と、
を含む、
コンピュータにより実行される方法。
【請求項２】
前記割り当てテーブルの各々が、データ記録識別子と関連するポインタとだけを含み、各割り当てテーブルの前記データ記録識別子群が、前記入力データ・セット（ＩＤＳ）の全入力データ記録の前記識別子から成り、前記関連するポインタの各々が、前記ツリーのうちの一つのツリーの、前記一つ以上の現在ノードの一つをポイントし、前記識別子の一つに関連付けられた前記ポインタの各々が、前記識別子の前記データ記録を前記ポインタによって参照される前記現在ノードに割り当てる、請求項１に記載のコンピュータにより実行される方法。
【請求項３】
前記互いに素なサブテーブルの各々が、入力データ記録の前記セット（ＩＤＳ）の前記データ記録識別子の互いに素なサブセットを含む、請求項１または２に記載のコンピュータにより実行される方法。
【請求項４】
前記データベース管理システムによって、前記サブテーブルを前記データ・スライスに転送し、それらを前記データ・スライスに格納するステップをさらに含む、請求項１〜３のいずれか一項に記載のコンピュータにより実行される方法。
【請求項５】
前記転送するステップがネットワーク接続を介して実行される、請求項４に記載のコンピュータにより実行される方法。
【請求項６】
同一の前記割り当てテーブルから導出された全てのサブテーブル（ＡＸＴ１．１〜ＡＸＴ１．１０；ＡＸＴ２．１〜ＡＸＴ２．１０；ＡＸＴ３．１〜ＡＸＴ３．１０）を、前記データ・スライスの相異なるものに格納するステップをさらに含み、前記ステップｃ）の実行は、前記同一の割り当てテーブルから導出された前記サブテーブルの各々の中に包含された、データ記録の前記割り当ておよび現在ノードを並行して更新するステップを含む、請求項１〜５のいずれか一項に記載のコンピュータにより実行される方法。
【請求項７】
前記データ・スライス中の前記データ記録の一つ以上を割り当てられている前記一つ以上の前記現在ノードを識別することは、前記それぞれのデータ・スライスの前記処理ユニットにより、前記データ・スライス中に格納された前記サブテーブル（ＡＸＴ１．１〜ＡＸＴ３．１０）を並行して評価することによって実施される、請求項１〜６のいずれか一項に記載のコンピュータにより実行される方法。
【請求項８】
前記予測結果を計算するステップが、
−  前記ツリーの各々について、前記ツリーの前記葉ノードへの入力データ記録の前記割り当ての派生として、ツリー固有の予測を計算するステップと、
−  前記ツリー固有の予測から最終的予測結果を計算するステップと、
を含む、請求項１〜７のいずれか一項に記載のコンピュータにより実行される方法。
【請求項９】
前記ツリーの前記葉ノードが、割り当てられたクラス・ラベルまたはクラス確率分布を有し、前記ツリーはディシジョン・ツリーであり、前記ツリー固有の予測を計算するステップは、
−  前記葉ノードの前記クラス・ラベルまたは前記クラス確率分布を、前記葉ノード群に割り当てられた全ての入力データ記録に割り当てるステップ、
を含み、
前記最終的予測結果を計算するステップは、前記入力データ・セット（ＩＤＳ）の前記データ記録の各々について、
−  前記割り当てテーブルに従って、前記データ記録が割り当てられた前記ツリーの各々の中の一つの葉ノードを識別するステップと、
−  前記識別された葉ノード群の全クラス・ラベルまたは全クラス確率分布から、予測されるクラスを計算するステップであって、前記予測されるクラスは複数の所定クラスのうちの一つであり、他の所定のクラスのいずれよりも高い確率を有する前記データ記録を含むように計算されるものである、前記計算するステップと、
−  前記予測されるクラスのクラス・ラベルを前記入力データ記録に割り当てるステップと、
を含み、
前記入力データ・セットの全入力データ記録の、それらのそれぞれに計算されたクラス・ラベルへの前記割り当てが、前記最終的予測結果として返される、
請求項８に記載のコンピュータにより実行される方法。
【請求項１０】
前記ツリーの前記葉ノードが、割り当てられた数値ターゲット属性値を有し、前記ツリーは回帰ツリーであり、前記ツリー固有の予測を計算するステップは、
−  前記葉ノードの前記数値ターゲット属性値を、前記葉ノードに割り当てられた全ての入力データ記録に割り当てるステップ、
を含み、
前記最終的予測結果を計算するステップは、前記入力データ・セット（ＩＤＳ）の前記データ記録の各々について、
−  前記割り当てテーブルに従って、前記データ記録が割り当てられたツリーの各々の中の一つの葉ノードを識別するステップと、
−  全ての識別された葉ノードの前記数値ターゲット属性値から派生属性値を計算するステップと、
−  前記派生属性値を前記入力データ・セットの前記データ記録に割り当てるステップと、
を含み、
前記入力データ・セットの全入力データ記録の、それらのそれぞれに計算された派生属性値への割り当てが、前記最終的予測結果として返される、
請求項８に記載のコンピュータにより実行される方法。
【請求項１１】
前記方法が、前記データベース管理システムのモジュールによって実行され、前記モジュールは、並列のデータベース・エンジンまたはデータ・マイニング・モジュールである、請求項１〜１０のいずれか一項に記載のコンピュータにより実行される方法。
【請求項１２】
前記識別された現在ノードの一つに割り当てられた前記データ記録について前記現在ノードの前記分岐条件を評価するステップが、
−  前記割り当てテーブルまたは前記割り当てテーブルのサブテーブルにアクセスすることにより、前記入力データ・セット（ＩＤＳ）中の、前記現在ノードに現在割り当てられている全データ記録を識別するステップと、
−  前記識別されたデータ記録の各々の一つ以上の属性値について前記分岐条件を評価するステップと、
を含む、請求項１〜１１のいずれか一項に記載のコンピュータにより実行される方法。
【請求項１３】
ストレージ媒体上に具現化されたコンピュータ可読プログラム・コードを含むストレージ媒体であって、前記プログラム・コードは、複数の処理ユニット（ＣＰＵ１〜ＣＰＵ１０）によって実行されると、前記処理ユニットに請求項１〜１２のいずれか一項に記載の方法を実行させる、ストレージ媒体。
【請求項１４】
−  複数の処理ユニット（ＣＰＵ１〜ＣＰＵ１０）と、
−  それぞれがデータ・スライス（ＤＳＬ１〜ＤＳＬ１０）を含む複数のストレージ・ユニットであって、前記データ・スライスのいずれか一つに格納されたデータは、前記処理ユニットの一つによってそれぞれ選択的に処理される、前記ストレージ・ユニットと、
−  前記処理ユニットを制御しているデータベース管理システム（３１０）と、
を含むコンピュータ・システム（３００）であって、
前記データベース管理システムは、入力データ記録のセット（ＩＤＳ）についてアンサンブル・モデル（１００）ベースの予測を行うための方法を実行するよう動作可能であり、前記アンサンブル・モデルは複数のツリー（Ｔ１〜Ｔ３）を含み、前記ツリーはディシジョン・ツリーまたは回帰ツリーであり、前記方法は、
−  前記アンサンブル・モデル中の前記ツリー（Ｔ１〜Ｔ３）の各々について割り当てテーブル（ＡＴ１〜ＡＴ３）を生成するステップ（５０２）であって、各割り当てテーブルは、前記入力データ・セット中の全てのデータ記録を前記ツリーのルート・ノード（ＮＯＴ１、ＮＯＴ２、ＮＯＴ３）に割り当てる、前記生成するステップ（５０２）と、
−  前記割り当てテーブルの各々を、互いに素なサブテーブル（ＡＸＴ１．１〜ＡＸＴ１．１０；ＡＸＴ２．１〜ＡＸＴ２．１０；ＡＸＴ３．１〜ＡＸＴ３．１０）に分割するステップ（５０４）と、
−  前記サブテーブルの各々をそれぞれ前記データ・スライスの一つに格納するステップ（５０６）と、
−  全てのツリーの前記ルート・ノード（ＮＯＴ１、ＮＯＴ２、ＮＯＴ３）を、前記全ツリーの現在レベルに対応する現在ノードのセットとして用いるステップ（５１０）と、
−  それぞれ自分のデータ・スライスが一つ以上の前記サブテーブルを含む、全ての前記処理ユニットによって、
ａ）前記処理ユニットの前記データ・スライス中に格納された前記サブテーブルを通して単一パスを実施し（５１４）、これにより、前記データ・スライスの一つ以上の前記データ記録に割り当てられている一つ以上の前記現在ノードを識別するステップ、
ｂ）前記識別された現在ノード各々に割り当てられた前記データ記録について、前記現在ノードの分岐条件を評価するステップ（５１６）、
ｃ）前記評価に基づいて、入力データ記録を前記現在ノードの各々から割り当て解除し（５１８）、前記入力データ記録を前記現在ノードの一つ以上の子ノードの一つに再割り当てするステップ、
ｄ）全現在ノードの前記子ノードを、前記全ツリーの現在レベルに対応する現在ノードのセットとして用いるステップ（５２０）、および
ｅ）全ての前記割り当てテーブルの全ての入力データ記録が、前記ツリーの葉ノードに割り当てられるまで、ステップａ）〜ｄ）を繰り返すステップ、
を並行して実行するステップ（５１２）と、
−  全ての前記ツリーの前記葉ノードへのデータ記録の前記割り当てから予測結果を計算するステップ（５２４）と、
を含む、
コンピュータ・システム（３００）。
【請求項１５】
前記入力データ・セットは、前記データベース管理システムによって管理されるデータベース中に一元的に格納され、前記データ・スライスの一つをそれぞれ含む前記ストレージ・ユニットの少なくとも一部は、ネットワークを介して前記データ管理システムに接続され、前記サブテーブルの少なくとも一部は、前記ネットワークを介して前記データ・スライスに転送される、請求項１４に記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示はコンピュータ実装による予測アプローチの分野に関する。さらに具体的には、本開示は、自動予測のためのディシジョン・ツリーまたは回帰ツリーの使用に関する。
【背景技術】
【０００２】
ディシジョン・ツリーおよび回帰ツリーは広範に使われている予測モデルである。ディシジョン・ツリーは、入力データを、相異なる所定のクラスに分類するため使うことができるデータ構造体である。回帰ツリーは、入力データから、例えば整数などのデータ値の形で予測結果を計算するため使うことができるデータ構造体である。ある入力データからの結果データ値の計算および所定のクラスへの分類は、以降「予測」という。
【０００３】
正確さを向上させるため、予測の計算には、複数のディシジョン・ツリーまたは回帰ツリーの組み合わせを用いるのが一般的アプローチである。前記のツリーの集合体は、「ツリー・アンサンブル・モデル」または「アンサンブル・モデル」として知られる。アンサンブル・モデル中の各ツリーの予測は、例えば、ディシジョン・ツリー・アンサンブルに対しては、重み付け無しまた有りの投票関数、回帰ツリー・アンサンブルに対しては、重み付け無しまた有りの平均計算など、適切な組み合わせスキームを用いてそれら予測を組み合わせる必要がある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
予測のために単一のツリー・モデルを適用することは、通常、精巧なツリー・モデルに対してさえも高速な処理である。残念ながら、数千もの個別ツリーを含み得るアンサンブル・モデルではそうはいかない。Ｎ個のツリーのアンサンブルを用いて結果を予測するのに必要な時間は、単一ツリーのモデルを用いるときに必要な予測時間のＮ倍多い。かくして、複数のツリーを使って達成される正確さの利得は、高い計算コストによる不利益と結びついている。
【０００５】
また、アンサンブル・ツリー・ベースの予測の多大な計算コストは、かかるアルゴリズムを（解析）データベース中に実装するための障害となっており、データベースは、複数のデータベース・テーブルに亘る複雑な結合および他の計算的に厳しいタスクを実行するために十分な処理容量を備えなければならず、したがって、ツリー・ベースの予測に過剰なＣＰＵパワーを消費する訳にはいかない。
【０００６】
ＩＢＭ（ＩＢＭ社の登録商標）のＮｅｔｅｚｚａ（Ｒ）Ａｎａｌｙｔｉｃｓなど、一部のデータベース内解析環境は、既に、ある種のディシジョンおよび回帰ツリー・ベースの予測ロジックを含む。前記ロジックは、格納された手順およびユーザ定義の関数または集合体に基づいて実行される。前記ツリー・ベースの予測ロジックを適用することは、アンサンブル・モデルの相異なるツリー群のオペレーション対象の入力データのセットを重複して格納する必要があるので、相当なオーバーヘッドを要する。さらに、各ツリーに対する一時テーブルの生成、および格納された手順の呼び出しが計算のオーバーヘッドを増やす。また、後者の類のオーバーヘッドは、同じ入力データ・セットに対しツリー群が逐次的に処理される際にも発生し得る。結果として、入力データ・セットに対するテーブルおよびインデックス構造を、重複して作成、維持する必要がある。現在のデータベース内解析ソリューションでは、これが、処理コストを増加させ、ツリー・ベースの予測の速度を遅くしている。多くの場合、使われる入力データ・セットは小さなまたは中程度のサイズである。こうした場合、実際の予測の計算コストと比較して、入力データ・セットおよびそのコピーの処理コストがメモリおよびＣＰＵ消費の点で特にコスト高となる。
【課題を解決するための手段】
【０００７】
本発明の実施形態の目的は、自動予測のためにアンサンブル・モデルを使用するための改良されたアプローチを提供することである。前記の目的は、独立請求項の主題によって解決される。有益な実施形態が従属請求項に記載されている。明示的に別途述べられている場合を除き、本発明の諸実施形態は、相互に自由に組み合せることができる。
【０００８】
本明細書で用いる「データベース（ｄａｔａｂａｓｅ）」とは、データベース・マネジメント・システム（ＤＢＭＳ：ｄａｔａｂａｓｅ  ｍａｎａｇｅｍｅｎｔ  ｓｙｓｔｅｍ）によって管理される系統的なデータの集積である。具体的には、このＤＢＭＳは、列指向または関係ＤＢＭＳとすることができる。ＤＢＭＳの例には、ＭｙＳＱＬ（Ｒ）、ＰｏｓｔｇｒｅＳＱＬ（Ｒ）、ＳＱＬｉｔｅ（Ｒ）、およびＩＢＭ（ＩＢＭ社の登録商標）ＤＢ２（ＩＢＭ社の登録商標）など周知のＤＢＭＳがある。ＤＢＭＳは、ＥＲＰシステム、またはＩＢＭ（ＩＢＭ社の登録商標）のＮｅｔｅｚｚａ（Ｒ）Ａｎａｌｙｔｉｃｓのような解析プラットフォームに内蔵することが可能である。
【０００９】
本明細書で用いる「分岐基準（ｓｐｌｉｔ  ｃｒｉｔｅｒｉｏｎ）」とは、入力データ記録の一つ以上の属性の属性値を評価するために用いられる、ディシジョン・ツリーまたは回帰ツリー中のあるノードに関連付けられた、任意の型のプログラム・ロジックであり得る。評価の結果に基づいて、前記入力データ記録は、前記ノードの一つ以上の子ノードの一つに割り当てられ（「引き渡され（ｈａｎｄｅｄ  ｄｏｗｎ）」または「ディスパッチされ（ｄｉｓｐａｔｃｈｅｄ）」）てよい。分岐基準は、例えば、特定の属性固有の閾値に基づいて作動する比較関数として実装することが可能である。入力記録の属性値が、前記閾値を超えている、それに等しい、あるいはそれを下回るかどうかによって、そのデータ記録を子ノードの一つに割り当てることができる。分岐基準は、例えば、等価条件、サブセット成員条件、離散型属性値に対する値条件（各属性値が各ノードに対応する）、不等条件、区間分割条件などとすればよい。例えば、分岐基準は、マッチング関数と組み合わせた、一つ以上の基準値または一つ以上の互いに素な基準値範囲とすることも可能である。このマッチング関数は、入力データ記録の属性値をその属性値固有の基準値または値範囲と比較することが可能である。各々の基準値または値範囲は、当該分岐基準を含む現在ノードの子ノードの一つを表わし、入力データ記録は、その入力データ記録の属性値に一致する基準値または基準値範囲を有する一つの子ノードに再割り当てされることになる。これに換えて、分岐基準は、例えば、指数もしくは対数関数、サポート・ベクター・マシン（ＳＶＭ：ｓｕｐｐｏｒｔ  ｖｅｃｔｏｒ  ｍａｃｈｉｎｅ）、ニューラル・ネットワーク、統計関数、または任意の他の適切な関数など、一つ以上の属性値を評価し、どの子ノードにデータ記録を割り当てるべきかの判定を返してくれる、さらに複雑な関数とすることもできる。
【００１０】
本明細書で用いる「並列データベース・システム（ｐａｒａｌｌｅｌ  ｄａｔａｂａｓｅ  ｓｙｓｔｅｍ）」とは、そのオペレーション、具体的には、データをストレージからロードする、インデックスを構築する、およびクエリを評価するなどのオペレーションの少なくとも一部の並列化を用いるＤＢＭＳである。並列ＤＢＭＳは、データおよび処理を自動的に複数のストレージ・デバイスとＣＰＵとに分配するよう動作可能である。このデータおよび処理の分配は、並列ＤＢＭＳによって、パフォーマンスの考慮に基づき自動的に管理することができる。並列ＤＢＭＳは、例えば、マルチプロセッサ・アーキテクチャまたはハイブリッド・アーキテクチャに基づくものとすることが可能である。
【００１１】
本明細書で用いる「データ・スライス（ｄａｔａ  ｓｌｉｃｅ）」とは、例えばハード・ドライブなど専用のストレージ・ユニット上に所在するデータ・コンテナであり、前記ストレージ・ユニットは、１対１の関係で処理ユニットに関連付けられている。この関係は、処理ユニットが、それが関連付けられたストレージ・ユニットのデータ・コンテナ中のデータだけを処理し、他のストレージ・ユニットに所在する他のデータ・コンテナのデータは処理しないことを意味する。マルチプロセッサ環境では、各プロセッサは、割り当てられた、厳密に一つのストレージ・ユニットおよびそれぞれのデータ・スライスを有することができる。
【００１２】
本明細書で用いる「入力データ・セット（ｉｎｐｕｔ  ｄａｔａ  ｓｅｔ）」は、複数のデータ記録を含む。各データ記録（「入力データ記録」ともいう）は、データベースのテーブル中に格納された記録であってよく、オブジェクト指向プログラミング言語のデータ・オブジェクト、またはデータの任意の他の論理および機能ユニットであってもよい。各データ記録は、割り当てられたそれぞれの属性値を有する一つ以上の属性を含む。あるデータ記録は、例えば、ある機械、ある患者、ある動物、製造または販売されるある製品を表し得る。属性は、例えば、機械状態のパラメータ、あるいは、温度または湿度などの環境パラメータ、前記患者に同定された遺伝子変異または健康状態パラメータ、製品の価格、色、特徴または部品などとすることができる。
【００１３】
「テーブル（ｔａｂｌｅ）とは、データベース・テーブル、または、リスト・オブジェクト、配列オブジェクト、ベクトル・オブジェクトなど、一般的な表形式データ構造体とすることが可能である。
【００１４】
一つの態様において、本発明は、入力データ記録のセットについてアンサンブル・モデル・ベースの予測を行うためのコンピュータで実行される方法に関する。アンサンブル・モデルは、ディシジョン・ツリーまたは回帰ツリーであり得る複数のツリーを含む。本方法は、複数の処理ユニットを制御し、複数のデータ・スライスを制御しているＤＢＭＳの形態で実装される。このＤＢＭＳは、データ・スライスのいずれか一つに格納されたデータをそれぞれ処理ユニットの一つによって処理するよう動作可能である。本方法は、
−  アンサンブル・モデル中のツリーの各々について割り当てテーブルを生成するステップであって、各割り当てテーブルは、入力データ・セット中の全てのデータ記録をツリーのそれぞれの一つのルート・ノードに割り当てる、該生成するステップと、
−  割り当てテーブルの各々を、互いに素なサブテーブルに分割するステップと、
−  サブテーブルの各々をそれぞれデータ・スライスの一つに格納するステップであって、これにより、各データ・スライスは、相異なる割り当てテーブルから得られた二つ以上のサブテーブルを含むことができる、該格納するステップと、
−  全てのツリーのルート・ノードを、全ツリーの現在レベルに対応する現在ノードのセットとして用いるステップと、
を含む。
【００１５】
次いで、それぞれ自分のデータ・スライスが一つ以上のサブテーブルを含む、全ての処理ユニットは、
ａ）前記処理ユニットのデータ・スライス中に格納されたサブテーブルを通して単一パスを実施し、これにより、前記データ・スライスの一つ以上のデータ記録（これらはサブテーブル中に含められるか、またはサブテーブル中に示されることができる）に割り当てられている一つ以上の現在ノードを識別するステップであって、識別された現在ノードは一つ以上のツリーに所属し得る、ステップと、
ｂ）識別された現在ノードの各々に割り当てられたデータ記録について、前記現在ノードの分岐条件を評価するステップであって、評価が行われたデータ記録は、前記データ・スライスに格納されたサブテーブル中に含められるかまたは提示されることが可能である、ステップと、
ｃ）前記評価に基づいて、入力データ記録を前記現在ノードの各々から割り当て解除し、前記入力データ記録を前記現在ノードの一つ以上の子ノードの一つに再割り当てするステップと、
ｄ）全ての現在ノードの子ノードを、全ツリーの現在レベルに対応する現在ノードのセットとして用いるステップと、
ｅ）全ての割り当てテーブルの全ての入力データ記録が、これらツリーの葉ノードに割り当てられるまで、ステップａ）〜ｄ）を繰り返すステップと、
を並行して実行する。
【００１６】
本方法は、全てのツリーの葉ノードへのデータ記録の割り当てから予測結果を計算するステップをさらに含む。
【００１７】
前記の特徴は利点となり得る。というのは、互いに素なサブテーブルの形での、相異なるデータ・スライス（およびそれぞれの処理ユニット）への、現在ノードとデータ記録との割り当ての分配によって、これらツリーの並列処理が可能になるからである。いくつかの現状技術のアプローチに適用されているように入力データ・セットのコピーを相異なる処理ユニットに分配する代わりに、データ記録の割り当ての小部分（サブテーブル）とツリー・ノードとを、相異なるデータ・スライスおよび処理ユニットに分配する。これにより、全ツリーの現在レベル（現在森レベル）内の全ノードを並行して処理することによって、複数のツリーの処理をさらに高速化することができる。かくして、入力データを通した単一パス（例えば逐次スキャンである読み取りオペレーション）によって、全ツリーの現在ノード・レベルの全ノードを処理することができる。この結果、全ツリーの結果を計算するために必要な、データ記録に実施される読み取りオペレーションの合計回数が減少する。
【００１８】
諸実施形態によれば、割り当てテーブルの各々は、データ記録識別子および関連するポインタだけを含む。各割り当てテーブルのデータ記録識別子は、入力データ・セットの全入力データ記録の識別子から成り、関連するポインタの各々は、ツリーのうちの一つのツリーの、一つ以上の現在ノードの一つをポイントする。これら識別子の一つに関連付けられたポインタの各々は、前記識別子のデータ記録を、そのポインタによって参照される現在ノードに割り当てる。分配されたサブテーブルが、全データ記録のコピーでなく識別子とポインタとだけを含むことによって、データのトラフィックを削減し、入力データ・セットの重複したストレージおよび管理を回避することができる。かくして、必要なストレージ・スペース、およびツリー・ベースの予測の並列化に付随するデータ・トラフィックのサイズが縮小し、予測が高速化される。
【００１９】
諸実施形態によれば、互いに素なサブテーブルの各々は、入力データ記録のセットのデータ記録識別子の互いに素なサブセットを含む。これにより、一回の反復オペレーションでデータ記録識別子が２回パスされないことを確実にすることができ、転送されたサブテーブルが重複した情報を含まないことを確実にすることができる。
【００２０】
諸実施形態よれば、ＤＢＭＳは、サブテーブルをデータ・スライスに転送し、それらを前記データ・スライスの中に格納する。
【００２１】
諸実施形態よれば、サブテーブルの転送は、ネットワーク接続を介して実行される。かくして、ネットワーク・トラフィックを低減でき、入力データ・セットの複数の処理ユニットへの展開が大幅に高速化される。
【００２２】
諸実施形態によれば、本方法は、同一の割り当てテーブルから導出された全てのサブテーブルを、相異なるデータ・スライス中に格納するステップをさらに含む。ステップｃ）の実行は、同一の割り当てテーブルから導出されたサブテーブルの各々の中に包含されたデータ記録の割り当ておよび現在ノードを、並行して更新するステップを含む。
【００２３】
諸実施形態によれば、データ・スライス中の一つ以上のデータ記録を割り当てられている一つ以上の現在ノードを識別することは、それぞれのデータ・スライスの処理ユニットが、前記データ・スライス中に格納されたサブテーブルを並行して評価することによって実施される。これは利点となり得る。というのは、更新が分散して並行に実行され、これにより、一つ以上の中央で管理される処理ユニットが手空きとなり、ＤＢＭＳが、それらをデータベース・クエリの処理、インデックス構造の生成など、他のデータ管理タスクに使用することができるからである。
【００２４】
諸実施形態によれば、予測結果を計算するステップは、ツリーの各々について、前記ツリーの葉ノードへの入力データ記録の割り当ての派生として、ツリー固有の予測を計算するステップと、これらツリー固有の予測から最終的予測結果を計算するステップとを含む。
【００２５】
諸実施形態によれば、アンサンブル・モデルのツリーは、ディシジョン・ツリーから成り、ツリーの葉ノードは、割り当てられたクラス・ラベルまたはクラス確率分布を有する。ツリー固有の予測を計算するステップは、これら葉ノードのクラス・ラベルまたはクラス確率分布を、前記葉ノードに割り当てられた全ての入力データ記録に割り当てるステップを含む。最終的予測結果を計算するステップは、入力データ・セットのデータ記録の各々について、
−  割り当てテーブルに従って、前記データ記録が割り当てられたツリーの各々の中の一つの葉ノードを識別するステップと、
−  識別された葉ノード群の全クラス・ラベルまたは全クラス確率分布から、予測されるクラスを計算するステップであって、該予測されるクラスは複数の所定クラスのうちの一つであり、他の所定のクラスのいずれのものよりも高い確率を有する前記データ記録を含むと予測されているものである、該計算するステップと、
−  該予測されるクラスのクラス・ラベルを前記入力データ記録に割り当てるステップと、
を含み、
入力データ・セットの全入力データ記録の、それらのそれぞれに計算された予測されるクラスのクラス・ラベルへの割り当てが、最終的予測結果として返される。
【００２６】
例えば、予測されるクラスの計算には、前記識別された葉ノードの最高数に割り当てられているクラス・ラベルを識別するステップと、識別されたクラス・ラベルを予測されるクラスのラベルとして、入力データ・セットの前記データ記録に割り当てるステップとを含めることができる。
【００２７】
他の実施形態によれば、アンサンブル・モデルのツリーは、回帰ツリーから成り、ツリーの葉ノードは割り当てられた数値ターゲット属性値を有する。ツリー固有の予測を計算するステップは、葉ノードの数値ターゲット属性値を、前記葉ノードに割り当てられた全ての入力データ記録に割り当てるステップを含む。最終的予測結果を計算するステップは、入力データ・セットのデータ記録の各々について、
−  割り当てテーブルに従って、前記データ記録が割り当てられたツリーの各々の中の一つの葉ノードを識別するステップと、
−  全ての識別された葉ノードの数値ターゲット属性値から派生属性値を計算するステップと、
−  その派生属性値を入力データ・セットの前記データ記録に割り当てるステップと、
を含み、
入力データ・セットの全入力データ記録の、それらのそれぞれに計算された派生属性値への割り当てが、最終的予測結果として返される。例えば、データ記録に割り当てられる派生属性値は、前記データ記録について識別された全ての葉ノードに割り当てられた属性値から計算された平均値とすることができる。あるいは、この派生属性値は、各ツリーに相異なる重み付けを割り当て、その重み付けをそれぞれのツリーの葉ノードの属性値に乗ずる、重み付け平均化アプローチを用いて計算することも可能である。派生属性値を計算するための複数のさらなるアプローチを同様に適用することができる。
【００２８】
他の実施形態によれば、全ツリーの葉ノードからの最終的予測結果の計算は、サブテーブルを含んだデータ・スライスのどれにも割り当てられていない、処理ユニットの一つによって実行される。これは利点となり得る。というのは、これによって、ツリーおよびツリーに関連する結果を一元的に管理することが可能になるからである。かくして、これらのツリーを相異なる処理ユニット／データ・スライスの間で分散させる必要がなくなり、むしろ一元的に維持し評価することが可能となり、これにより、データベース環境中にツリー構造体を維持するためのオーバーヘッドが削減される。
【００２９】
他の実施形態によれば、本方法は、データベース管理システムのモジュールによって実行され、該モジュールは、並列のデータベース・エンジンまたはデータ・マイニング・モジュールである。これは利点となり得る。というのは、これによって、レガシ・システムのデータを新規のＤＢＭＳのバージョンに移行する必要なしに、本発明の実施形態によるアンサンブル・ツリー・ベースの予測の高度な並列化を前記レガシ並列ＤＢＭＳに実装することを可能にできるからである。
【００３０】
他の実施形態によれば、識別された現在ノードの一つに割り当てられたデータ記録について前記現在ノードの分岐条件の評価ステップは、割り当てテーブルまたは前記割り当てテーブルのサブテーブルにアクセスすることにより、入力データ・セット中の、前記現在ノードに現在割り当てられている全データ記録を識別するステップと、識別されたデータ記録の各々の一つ以上の属性値について分岐条件を評価するステップとを含む。
【００３１】
例えば、ある現在ノードが２つの子ノード、および特定の属性に対する閾値に基づく分岐条件を有し得る。評価された入力データ記録の前記属性の値が前記閾値よりも小さい場合、前記データ記録は、前記分岐基準に従って、第一の子ノードに再割り当てすることができる。データ記録の属性値が前記閾値以上の場合、データ記録は、第二の子ノードに再割り当てすればよい。他の例によれば、分岐条件には、マッチング関数、および一つ以上の基準値または互いに素な基準値範囲を含めることができる。データ記録の属性値が、基準値の一つに一致する場合または基準範囲の一つ内にある場合、前記データ記録は、前記基準値また値範囲によって表わされる子ノードに再割り当てされる。好ましくは、各基準値または値範囲は、子ノードの一つに対応しそれを表わす。かくして、各データ記録が厳密に子ノードの一つに割り当てられること、および各データ記録が、現在ノードの子ノードの一つに割り当てられるという必要条件を満たすことが確実になる。さらに別の例によれば、分岐基準には、データ記録が割り当てられている現在ノードの分岐条件と現在ノードの分岐基準によって評価されるデータ記録の属性値（群）とによって、現在ノードの子ノードのどの一つにデータ記録を再割り当てするかを判定するため、例えば、指数または対数関数などの複雑な関数含めることができる。
【００３２】
さらなる態様において、本発明は、ストレージ媒体上に具現化されたコンピュータ可読プログラム・コードを含むストレージ媒体に関する。該プログラム・コードは、複数の処理ユニットによって実行されたとき、それら処理ユニットに前述の実施形態のいずれかによる方法を実行させる。
【００３３】
さらなる態様において、本発明は、複数の処理ユニット、複数のストレージ・ユニット、およびＤＢＭＳを含むコンピュータ・システムに関する。ストレージ・ユニットは、それぞれ、データ・スライスを含む。これらデータ・スライスのいずれか一つの中に格納されたデータは、処理ユニットの一つによってそれぞれ選択的に処理される。本ＤＢＭＳは、処理ユニットを制御しており、入力データ記録のセットについて、アンサンブル・モデル・ベースの予測を行うための方法を実行するよう動作可能である。アンサンブル・モデルは、ディシジョン・ツリーまたは回帰ツリーであり得る複数のツリーを含む。ＤＢＭＳは、前述の実施形態のいずれか一つによる方法を実行するよう動作可能である。
【００３４】
さらなる実施形態によれば、入力データ・セットは、ＤＢＭＳによって管理されるデータベース中に一元的に格納される。データ・スライスの一つをそれぞれ含むストレージ・ユニットの少なくとも一部は、ネットワークを介してデータ管理システムに接続される。サブテーブルの少なくとも一部は、前記ネットワークを介してデータ・スライスに転送される。
【００３５】
諸実施形態によれば、アンサンブル・モデルの全てのツリーは、ＤＢＭＳを実行しているコンピュータ・システムの主メモリ中に格納される。かくして、これらツリーは、データ・スライス中にも、または、並列ツリー・ベースの予測のための一部のグリッド・ベースのアプローチなどにより周知のような並列化処理ノードの任意の他の形においても、重複および冗長して格納されることはない。割り当てテーブルが、異なったデータ・スライスおよび処理ユニットの間で展開されるだけである。これにより、ツリーをデータ・スライスに転送する必要がなくなるので、アンサンブル・モデルのツリーのためのオーバーヘッドおよび処理コストが削減され、またネットワーク・トラフィックが減少する。サブテーブル中の割り当ては、全データ・スライスの全サブテーブル中の全データ記録が葉ノードに割り当てられるまで、データ・スライスに割り当てられた処理ユニットによって、反復オペレーションごとに更新され続ける。次いで、前記分散型の並列的な割り当ても更新が終了し、全ツリーの全葉ノードが入力データ記録を割り当てられた後、更新されたサブテーブルが、中央で管理される処理ユニットによって最終的結果を計算するために、ＤＢＭＳによって読み取られる。これは、中央処理ユニット／ＤＢＭＳとデータ・スライスとの間の情報交換が、最初にサブテーブルをデータ・スライスに転送する際と、葉ノードへのデータ記録の最終的割り当てを含むサブテーブルを、ＤＢＭＳ／中央処理ユニットに読み戻す／返送する際とに必要なだけなので、ネットワーク・トラフィックを低減させる。
【００３６】
当業者には当然のことながら、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化することができる。したがって、本発明の態様は、全体がハードウェアの実施形態、全体がソフトウェアの実施形態（ファームウエア、常駐ソフトウェア、マイクロコードなどを含む）、あるいは、ソフトウェア態様およびハードウェア態様を組み合わせた実施形態の形を取ることができ、これらは一般に本明細書では全て「回路」、「モジュール」、または「システム」と称することがある。さらに、本発明の態様は、コンピュータ可読プログラム・コードがその上に具現化されている一つ以上のコンピュータ可読媒体（群）の態様で具体化されたコンピュータ・プログラム製品の形を取ることも可能である。一つ以上のコンピュータ可読媒体（群）の任意の組み合わせを用いることができる。コンピュータ可読媒体は、本明細書では「ストレージ・ユニット」ともいう、コンピュータ可読ストレージ媒体とすることができる。
【００３７】
コンピュータ可読ストレージ媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、電磁気的、赤外的、もしくは半導体の、システム、装置、もしくはデバイス、またはこれらの任意の適切な組み合わせであり得る。コンピュータ可読ストレージ媒体のさらに具体的な例を示す非包括的なリストには、一つ以上の配線を有する電気接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、読み取り専用メモリ（ＲＯＭ：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭ：ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙまたはフラッシュ・メモリ）、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、光ストレージ・デバイス、磁気ストレージ・デバイス、または前述の任意の適切な組み合わせが含まれよう。本文書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置、またはデバイスによってあるいはこれらに関連させて使用するためのプログラムを、包含または格納できる任意の有形媒体であり得る。コンピュータ可読媒体上に具現化されたプログラム・コードは、以下に限らないが、無線、有線、光ファイバ・ケーブル、ＲＦなど、または前述の任意の適した組み合わせを含め、任意の適切な媒体を用いて送信することができる。
【００３８】
本発明の態様のオペレーションを実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および、“Ｃ”プログラミング言語または類似のプログラミング言語などの従来式手続き型プログラミング言語を含め、一つ以上のプログラミング言語の任意の組み合わせで記述することができる。このプログラム・コードは、スタンドアロン・ソフトウェア・パッケージとしてユーザのコンピュータで専ら実行することも、ユーザのコンピュータで部分的に実行することもでき、一部をユーザのコンピュータで一部を遠隔コンピュータで実行することもでき、あるいは遠隔のコンピュータまたはサーバで専ら実行することもできる。後者の場合は、ローカル・エリア・ネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）または広域ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することもでき、あるいは（例えばインターネット・サービス・プロバイダを使いインターネットを介し）外部のコンピュータへの接続を行うこともできる。
【００３９】
本発明の態様が、図面中の本発明の実施形態を参照しながら以下に説明される。当然のことながら、サービス・コンテナとして、標準的ビジネス処理エンジン、または他のモジュールとして表現された図のブロックは、コンピュータ・プログラム命令によって実施することができる。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置のプロセッサに提供し、そのコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、ブロック中に特定されている機能／動作を実装するための手段を生成するようにすることができる。また、これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに対し特定の仕方で機能するよう命令することができるコンピュータ可読媒体に格納し、そのコンピュータ可読媒体に格納された命令が、図の前記ブロック中に特定されている機能／動作を実装する命令を包含する製品を作り出せるようにすることができる。さらに、コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードし、そのコンピュータ上、他のプログラム可能装置上、または他のデバイス上で一連のオペレーション・ステップを実行させて、コンピュータ実装のプロセスを作り出し、当該コンピュータ上または他のプログラム可能装置上で実行される命令が、前記ブロック中に特定されている機能群／動作群を実装するためのプロセスを提供するようにすることも可能である。
【図面の簡単な説明】
【００４０】
【図１】ツリーを用いるアンサンブル・モデルを示す。
【図２】アンサンブル・ベースの予測のための現状技術アプローチを示す。
【図３】本発明のある実施形態による、ノードへのデータ記録割り当ての生成および分配を示す。
【図４】本発明のある実施形態による、コンピュータ・システムのブロック図である。
【図５】並列アンサンブル・モデル・ベースの予測の方法を示す。
【発明を実施するための形態】
【００４１】
本発明の前述のまたは他のアイテム、特徴、および利点は、図面と併せ、以下のさらに具体的な説明を読むことによってより良く理解されよう。
【００４２】
図１は、本発明の諸実施形態で用いられるアンサンブル・モデル１００を示す。スペースの関係で、示されたモデルは３つのツリーＴ１〜Ｔ３を含む。実際は、一つのアンサンブル・モデルは数千のツリーを含み得る。各ツリーはそれぞれ、ツリーを使って予測を計算する際に、ツリーの最初の現在ノードの役割をするルート・ノードＮＯＴ１〜ＮＯＴ３を有する。３つのツリーは各々、同一の入力データ・セットＩＤＳに対し、ツリー固有の結果を提供する。最終的に、このアンサンブル・モデルの全てのツリーＴ１〜Ｔ３によって提供された結果が組み合わされて最終的な合成結果となる。例えば、これらのツリーがディシジョン・ツリーであり、アンサンブル・モデルのツリーの過半数が、入力データ・セット中のある特定のデータ記録にクラス・ラベル「Ａ」を割り当てた場合（すなわち、ツリーの過半数が、前記データ記録に対しクラス「Ａ」を「投票」し、前記モデル中のツリーの少数が、前記データ記録に対しクラス「Ｂ」を「投票」した場合）、該アンサンブル・モデルは、前記入力データ記録を、クラス「Ａ」に属するとして最終的に分類することになる。このような仕方で、入力データ・セット中の全データ記録を分類することができ、入力データ記録の分類されたセット、あるいは少なくとも、入力データ記録への前記クラス・ラベルの割り当てを、アンサンブル・モデルの合成結果として返すことができる。本発明の実施形態によって、最終合成結果の効率的な計算をどのように達成するかを、図３〜５において説明する。
【００４３】
図２は、例えば、単一ツリー・ベース予測のグリッド・ベース並列実行などの現状技術アプローチによる、複数の処理ユニットへの入力データ・セットの分配を示す。入力データ・セットＩＤＳはモデル中に存在するツリーの数の分だけコピーされ、データ・セットのコピーとそれぞれのツリーとを相異なるＣＰＵ群に分配することができる。かくして、ＣＰＵの各々は、一つのツリーを維持しなければならず、入力データ・セットのコピーを受信し格納しなければならない。
【００４４】
図３は、本発明の実施形態による、入力データの事前処理、分配、および並列処理を示す。このアンサンブル・ツリー・モデルのツリーＴ１〜Ｔ３の各々に対し、割り当てテーブルＡＴ１〜ＡＴ３が生成される。各割り当てテーブルは、少なくとも、入力データ・セットＩＤＳの各データ記録を、ツリーの一つの現在処理されているノード（現在ノード）に割り当てるために必要な全情報を含む。割り当てテーブルＡＴ１は、入力データ・セットの全データ記録を、ツリーＴ１の一つ以上の現在ノードに割り当てる。割り当てテーブルＡＴ２は、入力データ・セットの全データ記録を、ツリーＴ２の一つ以上の現在ノードに割り当て、他のテーブルも同様である。いくつかの実施形態によれば、割り当てテーブルには、入力データ・セットのデータ記録のコピーも含めることが可能である。しかしながら、さらに望ましくは、割り当てテーブルの各々は、入力データ・セットの全データ記録の識別子３５０、３５２、３５４の固有リストと、前記識別子を各自のツリーの現在ノードに割り当てるための、例えばポインタまたはリンクなどの何らかの情報と、だけを含む。この場合、割り当てテーブルのサイズは、入力データ・セットよりも大幅に小さい。かくして、割り当てテーブルが入力データ・セットのデータ記録のコピーを含む場合は、その割り当てテーブルは、入力データ・セットのコピーと見なすことができる。割り当てテーブルが、いくつかの現在ノードに割り当てられた記録識別子だけを含む場合、前記割り当てテーブルは、縮小されたサイズの「仮想入力データ・セット」と見なすことが可能である。現在ノードへの割り当ては、ノード識別子３５６、３５８、３６０に基づいて行うことができる。各割り当てテーブルにおいて、データ記録の各々は、それぞれのツリーの厳密に一つの現在ノードに割り当てられる（１：１割り当て）。
【００４５】
次いで、割り当てテーブルの各々は、複数の互いに素なサブテーブルに分割される。例えば、割り当てテーブルＡＴ１は、サブテーブルＡＸＴ１．１〜ＡＸＴ１．１０に分割される。割り当てテーブルＡＴ２は、サブテーブルＡＸＴ２．１〜ＡＸＴ２．１０に分割される。割り当てテーブルＡＴ３は、サブテーブルＡＸＴ３．１〜ＡＸＴ３．１０に分割される。必須ではないが好ましくは、これらサブテーブルのサイズ（各サブテーブル中のデータ記録またはデータ記録識別子の数に対応する）は、同じかまたはほぼ同じサイズである。相異なるサブテーブルのデータ記録またはデータ記録識別子は、データ記録のいかなる重複した転送または処理をも回避するため、互いに素になっている。割り当てテーブルの生成および互いに素なサブテーブルへの分割は、実際のアンサンブル・モデル・ベースの予測に備えて、並列型ＤＢＭＳのモジュールによって自動的に実行することが可能である。
【００４６】
同じ割り当てテーブルから導出されたサブテーブルは、例えば図４に示されるように、データベース管理システムによって相異なるデータ・スライスＤＳＬ１〜ＤＳＬ１０の間で展開される。前記データ・スライスの各々の中に格納されたデータは、ＤＢＭＳによって前記データ・スライスに具体的に割り当てられた処理ユニットによってのみ処理することができるが、さらに随意的に、一つ以上の中央で管理される処理ユニットＣＰＵ＿Ｃによって処理できるようにしてもよい。処理ユニットＣＰＵ１〜ＣＰＵ１０はＤＢＭＳの制御の下にあり、並行して作業するよう動作可能である。例えば、ＣＰＵ１がサブテーブルＡＸＴ１．１、ＡＸＴ２．１、およびＡＸＴ３．１の割り当てを処理および更新する一方、並行してＣＰＵ２がサブテーブルＡＸＴ１．２、ＡＸＴ２．２、およびＡＸＴ３．２の割り当てを処理および更新することが可能である。各データ・スライスには、一つ以上のサブテーブルを含めることができる。但し、データ・スライスが複数のサブテーブルを含む場合には、前記サブテーブル群が相異なる割り当てテーブルから導出されたものであり、かくして、ツリーＴ１〜Ｔ３の相異なるツリーに対する割り当てを含んでいることが必要である。各処理ユニットＣＰＵ１〜ＣＰＵ１０、並びにそのそれぞれのストレージ・ユニットおよびデータ・スライスＤＳＬ１〜ＤＳＬ１０は、ネットワークを介してＤＢＭＳおよび一つ以上の中央処理ユニットＣＰＵ＿Ｃに接続することが可能で、サブテーブルのそれぞれのデータ・スライスへの分配は、ＤＢＭＳのモジュールによって前記ネットワークを介して実施することができる。
【００４７】
図４は、複数の処理ユニットＣＰＵ＿Ｃと、ＣＰＵ１〜ＣＰＵ１０と、データベース管理システム３１０と、主メモリ３０６と、を含むコンピュータ・システム３００を示す。ＤＢＭＳ３１０のモジュール３０８は、ツリーＴ１〜Ｔ３を使った、処理ユニットＣＰＵ１〜ＣＰＵ１０による入力データ・セットＩＤＳの並列処理を調整するよう動作可能である。処理ユニットＣＰＵ１〜ＣＰＵ１０は、前述のように、それらのそれぞれに割り当てられたデータ・スライスＤＳＬ１〜ＤＳＬ１０中に包含されているサブテーブルを選択的に処理、更新する。モジュール３０８は、ＣＰＵ＿Ｃとして示された一つ以上のさらなるＣＰＵを用いることができ、これらのＣＰＵは特定のデータ・スライスの専用ではない。むしろ、前記処理ユニット（群）ＣＰＵ＿Ｃは、ツリーＴ１〜Ｔ３を中央で管理するため、割り当てテーブルおよびサブテーブルを生成するため、図３に示したようにサブテーブルを分配するため、並びに個別のツリーＴ１〜Ｔ３より得られた予測結果から最終的アンサンブル・モデル結果を計算するために用いることができる。
【００４８】
ツリーＴ１〜Ｔ３は森を構成する。ツリーＴ１〜Ｔ３およびツリー固有の結果は、モジュール３０８によって、主メモリ３０６中に格納され中央で管理される。ツリー固有の予測結果もしくは最終的合成予測結果またはそれらの両方は、モジュール３０８によって、不揮発性ストレージ媒体に格納することができる。さらに、モジュール３０８は、処理ユニットＣＰＵ１〜ＣＰＵ１０によるツリー固有の予測結果の並列計算を一元的に調整することができ、これにより、前記並列計算が反復オペレーション式に実施される。各反復オペレーションは、現在の森レベル、すなわち、アンサンブル・モデルの全てのツリーＴ１〜Ｔ３によって共有される現在処理中の階層レベルの処理に対応する。これにより、全ての前記ツリーの現在ノードの全体が、前記現在の森レベルを構成する。各反復オペレーションにおいて、どの割り当てテーブルの全てのデータ記録または記録識別子も、厳密に一回パスされ、前記データ記録を現在ノードの子ノードの一つに再割り当てするために、それらのそれぞれに割り当てられた前記現在ノードの分岐基準に照らして評価される。前記子ノードの全体が、次の反復オペレーションにおける現在ノードの全体を構成し、かくして、次回反復オペレーションの現在森レベルを構成することになる。例えば、図１を参照すると、初回反復オペレーションにおける現在ノードのセットは、全てのツリーのルート・ノード（ＮＯＴ１、ＮＯＴ２、ＮＯＴ３）から成る。各ルート・ノードは、入力データ記録の全体を割り当てられており、それにより、割り当て情報は、ツリー固有の割り当てテーブルのサブテーブル中に包含される。各々のルート・ノードの分岐基準が評価され、データ記録はそれらのそれぞれのルート・ノードから割り当て解除され、前記ルート・ノードの子ノードの一つに再割り当てされる。この再割り当ては、データ記録の一つ以上の属性値に基づいて行われ、これらデータ記録は、サブテーブルに格納しておくこともでき、あるいは、中央で管理されている入力データ・セットＩＤＳから動的に読み出すことも可能である。第二回の反復オペレーションにおいて、現在の森レベルを構成する現在ノードのセットは、全ツリーのルート・ノードの子ノード（Ｎ１Ｔ１、Ｎ２Ｔ１、Ｎ１Ｔ２、Ｎ２Ｔ２、Ｎ１Ｔ３、Ｎ２Ｔ３、Ｎ３Ｔ３）から成る。第二回反復オペレーションでは、前記現在ノードのどの一つに割り当てられた全データ記録も、それらがそれぞれ割り当てられた現在ノードの分岐基準に照らして評価され、前記現在ノードの一つ以上の子ノードの一つに再割り当てされる。第三回の反復オペレーションにおいて、現在森レベルを構成する現在ノードのセットは、第二回反復オペレーションで処理された現在ノードの子ノード（Ｎ３Ｔ１、Ｎ３Ｔ２、Ｎ４Ｔ２、Ｎ４Ｔ３、Ｎ５Ｔ３、Ｎ６Ｔ３、Ｎ７Ｔ３）から成り、以下同様な反復オペレーションが続く。かくして、並列多重ツリー処理アルゴリズムは、各々のツリーに対し入力データ・セットの全てのデータ記録が前記ツリーの葉ノードの一つに割り当てられるまで、反復オペレーションごとに、データ記録を一つの現在森レベルから次のレベルに再割り当て（ディスパッチ）する。入力データ・セットの全データ記録の、ツリーの葉ノードへのツリー固有の割り当ては、ツリー固有の結果３１２、３１４、３１６として、コンピュータ・システムの主メモリに格納することができる。これらツリー固有の結果は、アンサンブル・ツリー・モデル１００の最終的な合成予測結果を計算するために用いることができる。サブテーブルに格納された割り当て情報の更新は、並列処理ユニットＣＰＵ１〜ＣＰＵ１０によって実行でき、一方、ツリー固有の結果の格納およびさらなる処理は、一つ以上の中央処理ユニットＣＰＵ＿Ｃによって実行することができる。これは、図３中に、ツリーＴ１およびＴ２に対して、読み取り／計算の矢印によって示されており、ツリーＴ３については、スペースの関係で省略されている。どのツリーのどの現在ノードに、特定のサブテーブルのデータ記録が割り当てられているかの情報を含むサブテーブルＡＸＴ１．１、・・・、ＡＸＴ３．１０が、個別のデータ・スライス中に格納され、各反復オペレーションにおいて、前記データ・スライスの専用処理ユニットＣＰＵ１〜ＣＰＵ１０によって継続的に更新される。
【００４９】
以下の一つの実装の変形例の疑似コードは、並列的森レベル方式による予測結果の計算を明らかにするためのものである。
定義：
ｘ：入力データ記録
ｎ：ノード
ｎｌ：葉ノード
Ｑ：現在の森レベルの（処理前の）現在ノードのセット（アンサンブル・モデル中のツリーの各々からの一つ以上の現在ノードを含む）
Ｑ’：次の反復オペレーションで処理されることになる森レベルの（処理前の）現在ノードのセット（アンサンブル・モデル中のツリーの各々からの一つ以上の現在ノードを含む）
ｎｃｕｒ，ｔ：ツリーｔの現在ノード
分散データを用いる森レベルに対する反復オペレーションによる複数ツリー式予測
１：ツリーの各々ｔ＝１；２；：：：；ｍに対し、関連テーブルを生成し、各関連テーブルは、入力データ・セットＩＤＳの全データ記録を前記ツリーｔのルート・ノードに割り当てる；
２：関連テーブルの各々を互いに素なサブテーブルに分割する；
３：割り当てテーブルのいずれか一つから導出された全サブテーブルを相異なるデータ・スライスＤＳＬｄ；ｄ＝１；２；：：：；ｐの間で分配するが、データ・スライスはそれぞれ別個の処理ユニットによって処理可能である；
４：ツリーｔ＝１；２；：：：ｍのいずれか一つの現在処理されているノードのセットＱを生成し、このＱは全ツリーのルート・ノードから成る；
／／ツリー群に対し並行して反復オペレーション処理し、これにより、全入力データ記録がこれらツリーの葉ノードに割り当てられるまで、森レベル方式で入力データ記録を再割り当てする：
５：実施条件（Ｗｈｉｌｅ）  ｎが葉でなく、一つ以上の入力データ記録ｘがｎに割り当てられているような一部のツリー−ノードのペア＜ｔ；ｎ＞が残っている
６：  全データ・スライスＤＳＬｄ；ｄ＝１；２；：：：；ｐに対し並行して：
／／ＤＳＬｄ中の全サブテーブルに対し連続的にスキャンする：
７：      ツリーｔのいずれか１つへの入力データ記録ｘ∈ＤＳＬｄの全ての割り当てａｘｔに対し
８：          ｘに割り当てられたツリーｔの現在ノードｎｃｕｒ，ｔを識別し、ここでｎｃｕｒ，ｔ∈Ｑ；
９：          ｘの一つ以上の属性値についてｎｃｕｒ，ｔの分岐基準を評価し；
１０：        前記評価に基づいて、ｎｃｕｒ，ｔの一つ以上の子ノードからターゲット子ノードｎｃｔａｒ，ｔを識別し；
１１：        ツリーｔの現在ノードｎｃｕｒ，ｔからｘを割り当て解除し、ｘをツリーｔのターゲット子ノードｎｃｔａｒ，ｔに再割り当てし；
１２：        ツリーｔのターゲット子ノードｎｃｔａｒ，ｔをＱ’に加える；
１３：      この段終了
１４：    この段終了
１５：  Ｑ：＝Ｑ’；
１６：実施条件終了
１７：全データ・スライスＤＳＬｄ；ｄ＝１；２；：：：；ｐについて並行して：
１８：  ツリーｔのいずれか１つへの入力データ記録ｘ∈ＤＳＬｄの全ての割り当てａｘｔに対し／／ＤＳＬｄ中の全サブテーブルに対し連続的にスキャンする
１９：      ｘに割り当てられている全てのツリー−葉ノードのペア＜ｔ；ｎｌ＞を識別し、個別のツリーによってｘについて予測されたクラス・ラベルまたは数値ターゲット属性値を累積する：
２０：  この段終了
２１：この段終了
２２：入力データ・セットＩＤＳの入力データ記録の各々に対し、全てのツリーによって予測されたクラス・ラベルまたは数値ターゲット属性値の累積結果から、最終的予測結果を計算する
【００５０】
図５は、入力データ記録のセットＩＤＳについてアンサンブル・モデル・ベースの予測を実施するための、コンピュータにより実行される方法を示す。以下の説明において、図１、図３、および図４を再度参照することになる。というのは、この方法は、図４に示されるようなコンピュータ・システムの態様で実装することができ、図３に示されるようなサブテーブルへの分配を含み得るからである。本方法は、例えば、図３のデータベース管理システム３１０のモジュール３０８によって実行することが可能である。ステップ５０２で、アンサンブル・モデル１００中のツリーＴ１〜Ｔ３の各々について、割り当てテーブルＡＴ１〜ＡＴ３が生成される。各割り当てテーブルは、入力データ・セットの全データ記録を、各ツリーのルート・ノードＮＯＴ１、ＮＯＴ２、ＮＯＴ３に割り当てる。次のステップ５０４で、割り当てテーブルの各々は、互いに素なサブテーブルＡＸＴ１．１〜ＡＸＴ１．１０；ＡＸＴ２．１〜ＡＸＴ２．１０；ＡＸＴ３．１−ＡＸＴ３．１０に分割される。図３に示されるように、これらサブテーブルは、相異なるデータ・スライスに転送することができる。ステップ５０６で、サブテーブルの各々は、それぞれデータ・スライスの一つに格納される。ステップ５１０で、全ツリーのルート・ノードが現在ノードのセットとして用いられる。現在ノードのセットは、全ツリーの現在レベル（現在森レベル）に対応しこれを構成する。次いで、処理ユニット群は、並行して、
ａ）ステップ５１４で、前記処理ユニットのデータ・スライス中に格納されたサブテーブルを通して単一回のパスを行い、これにより、前記データ・スライスの一つ以上のデータ記録に割り当てられている一つ以上の現在ノードを識別し、
ｂ）ステップ５１６で、識別された現在ノード各々に割り当てられたデータ記録について、前記現在ノードの分岐条件を評価し、
ｃ）ステップ５８０で、前記評価に基づいて、前記現在ノードの各々から入力データ記録を割り当て解除し、前記入力データ記録を前記現在ノードの一つ以上の子ノードの一つに再割り当てすることを行い、
ｄ）ステップ５２０で、全現在ノードの子ノードを、全ツリーの現在レベルに対応する現在ノードのセットとして用い、
ｅ）全ての割り当てテーブルの全入力データ記録がツリーの葉ノードに割り当てられるまで、ステップａ）〜ｄ）を繰り返す
ことを実行する。最終の計算ステップ５２４で、全ツリーの葉ノードへのデータ記録の割り当てから、最終的な合成予測結果が計算される。前記割り当ては、例えば、個別のデータ記録の分類を可能にするクラス・ラベル情報を含むものであってもよいし、あるいは、一つ以上の最終的予測データ値の計算を可能にする数値ターゲット属性値であってもよい。
【符号の説明】
【００５１】
３５０、３５２、３５４    入力データ・セットＩＤＳのデータ記録の識別子
３５６    ツリーＴ３の現在ノードの識別子
３５８    ツリーＴ２の現在ノードの識別子
３６０    ツリーＴ１の現在ノードの識別子
ＡＴ１〜ＡＴ３    割り当てテーブル
ＡＸＴ１．１〜ＡＸＴ３．１０    サブテーブル
ＣＰＵ１〜ＣＰＵ１０    処理ユニット
ＤＳＬ１〜ＤＳＬ１０    データ・スライス
【図１】
2015026372.tif 000003
【図２】
2015026372.tif 000004
【図３】
2015026372.tif 000005
【図４】
2015026372.tif 000006
【図５】
2015026372.tif 000007