JP5427640B2 - 決定木生成装置、決定木生成方法、及びプログラム - Google Patents

決定木生成装置、決定木生成方法、及びプログラム Download PDF

Info

Publication number
JP5427640B2
JP5427640B2 JP2010036290A JP2010036290A JP5427640B2 JP 5427640 B2 JP5427640 B2 JP 5427640B2 JP 2010036290 A JP2010036290 A JP 2010036290A JP 2010036290 A JP2010036290 A JP 2010036290A JP 5427640 B2 JP5427640 B2 JP 5427640B2
Authority
JP
Japan
Prior art keywords
node
load
decision tree
data
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2010036290A
Other languages
English (en)
Other versions
JP2011170774A (ja
Inventor
佳史 福本
真 鬼塚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2010036290A priority Critical patent/JP5427640B2/ja
Publication of JP2011170774A publication Critical patent/JP2011170774A/ja
Application granted granted Critical
Publication of JP5427640B2 publication Critical patent/JP5427640B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、機械学習分野における決定木生成の技術に関するものであり、特に、決定木生成処理を高速化するための技術に関するものである。
機械学習分野における予測モデルの1つとして決定木がよく用いられる。一般に、決定木の生成にあたっては、まず、例えば、図1(a)に示すようなデータセット(教師データと呼ぶ)が与えられる。
ここで、図1(a)に示すデータにおいて、"発生"等のデータの種類を示す名前を「属性」と呼び、"胎生"等の値を「属性値」と呼ぶ。また、決定木において決定の対象となる属性を「目標属性」と呼び、その値を「目標属性値」と呼ぶ。
このようなデータセットに基づき、一のノードについて、全ての属性でデータセット分割を試行し、予め定めた基準(エントロピー等)で最適な分割属性を求める処理(これをノード展開と呼ぶ)を繰り返し行うことにより、図1(b)に示すような決定木が生成される。図1(b)に示す例では、最初に枝分かれするノードであるルートノードにおいて、「発生」が分割属性として用いられている。図1(b)に示しているように、枝分かれの先にあるデータの集合を「ノード」と呼び、特に、末端のノードは「葉ノード」と呼ばれる。図2に、ルートノードを「発生」で分割した場合に得られる2つのノードに対応するレコードを示す。
一般に、決定木生成のためのデータセットは大規模であり、大規模なデータセットから、高速に決定木を生成することが求められている。このような観点での決定木生成に関する従来技術として、例えば、特許文献1、特許文献2に記載された技術がある。
特許文献1には、大規模データセットを教師データとした決定木生成をする際に、教師データの中の数値的な属性値を丸めることで非可逆な圧縮を行い、読み込むデータ量を削減して高速化を図る技術が記載されている。
また、特許文献2には、大規模なデータベースから決定木を生成しておいて、新たにデータベースにデータが追加された際に、差分的に決定木を更新してゆくことで、決定木構築に要する時間を削減する技術が記載されている。
特開2002-189737号公報 特開2001-282817号公報
PLANET:Massively Parallel Learning of Tree Ensembles with MapReduce [Google, VLDB2009, 2009年8月]
近年、大規模分散ファイルシステムや大規模分散計算フレームワーク等、複数台のサーバマシンからなるクラスタ上で大規模に情報処理を行う分散処理技術が使用されてきている。
このような分散処理に適した情報処理技術として、MapReduceと呼ばれる技術があり、非特許文献1には、MapReduceを利用して決定木を生成する技術が記載されている。MapReduceを利用して決定木を生成する技術では、サイズの大きいファイルを分散ファイルシステムに格納すると、予め設定したサイズ(例えば64MB)のブロックに分割され、分散ファイルシステムを構成する複数台のマシンに各ブロックが配布される。そして、その複数台のマシンが各々ローカルに保持しているブロックをその先頭から1行ずつ読み込んでMap処理をした上でKeyとValueのペアの形になっている中間データを一つまたは複数個出力し、同じKeyを持ったものを1台のマシンに集めて、Reduce処理を行って、それを結果として出力する。
また、決定木の構築はテーブル形式のデータを対象としており、各ノードでは実際にテーブルを各カラム(属性)の値によって分割してみて、それがどれだけうまく分割できたかのスコア(例えばエントロピーやGINI係数)を計算し、高いスコアで分割できた属性をそのノードでの分割属性として採用する。そして、採用された分割属性による分割後のテーブルを対象に同様の処理を繰り返して木を成長させてゆく。
1台のマシンで小規模な教師データを対象に決定木を構築する場合は、基本的にメモリ上に教師データをロードして、それを実際に分割(分割後の形になるように参照を保持)しながら再帰的に処理を進めるが、分散ファイルシステムではこの方法を用いることはできない。
分散ファイルシステム上のファイルを教師データとしてMapReduceを用いて木を成長させるために、教師データを直接操作することなく、毎回教師データ全体を読み込んで、全ての展開可能ノードにおいて全ての属性での分割スコア算出に必要な情報を出力・集約し、それを繰り返す。なお、このとき決定木の深さ1段に所属する各ノードが処理対象とするテーブルを全て集めると教師データ全体と等しくなるため、深さ1に対して1回のMapReduceが最も効率が良いと考えられる。
図3に、非特許文献1に記載された技術に基づく、MapReduceを利用して決定木を生成する処理の流れの概要を示す。図3には、処理の過程におけるデータ例も示されている。図3に示す例は、教師データとして図1(a)に示したデータセットを用い、決定木生成アルゴリズムとしてID3アルゴリズムを使用し、ルートノード展開時を示す例である。
図3に示すように、教師データが、複数のマシン(図3の例では2台)に分配され、各サーバにおいて、Map処理が行われる。図2に示すように、Map処理では、各Keyに対するValueが抽出され、KeyとValueの対応付けが行われる。その後、中間データが生成され、同じKeyを持ったデータが、1つのサーバに集められて、Reduce処理が行われる。図3に示すように、Reduce処理は、Keyに対するValueをまとめる処理である。
また、図3には、分散処理におけるMap処理やReduce処理等を管理・制御するコントローラ(Controlletr)が示されている。
さて、MapReduce処理において、Mapに関しては各マシンにほぼ均等にブロックが割り振られるため負荷も均等になっているが、Reduceに関しては同じKeyを持ったKey・Valueのペアの個数によって処理の負荷に差が出る。これにより、少ない個数を処理するマシンは、大量の個数を処理するマシンにおける処理が終了するのを待つことになる。例えば、図4の2段目のノードに示されるように、ノード間で、Key・Valueのペアの個数(すなわち、レコード数)に偏りが発生する場合がある。図4に示す偏りが発生した場合、2段目における右側のノードを処理するマシンでの処理時間が、左側のノードを処理するマシンにおける処理時間より大きくなる。各段では、1度のMapReduceで処理を行うから、上記のような偏りが発生すると、次の段の処理を開始するまでに、処理待ち時間が発生することになる。
このように、MapReduceを利用した決定木生成には、同期のための処理待ち時間により、処理速度も低下する恐れがあるという問題がある。
本発明は、上記の点に鑑みてなされたものであり、分散データ処理システム上でのMapReduceを利用した決定木生成において、同期のための待ち時間を減少させ、決定木生成の処理を高速化するための技術を提供することを目的とする。
上記の課題を解決するために、本発明は、通信ネットワークで接続された複数の情報処理装置により構成される分散データ処理システム上で、MapReduce処理を行うことにより、教師データから決定木を生成する決定木生成装置であって、
ノードを示す識別情報と、ノードの負荷情報とを含むノードデータを格納するノードデータ格納手段から、展開処理の対象となるノードのノードデータを取得し、当該ノードデータに基づき、負荷の高いノードを検出し、当該高負荷ノードを所定の数に分割することで負荷を所定の値よりも低くすることができるか否かを判断する負荷判定手段と、
前記負荷判定手段により、高負荷ノードがあり分割により負荷を低くすることができると判断された場合には、当該高負荷ノード複数のノードに分散されるように、MapReduce処理におけるMap処理時に、キーを追加するための処理を行い、前記負荷判定手段により、高負荷ノードがあり分割により負荷を低くすることができないと判断された場合には、当該高負荷ノードのみに関するノード展開を行い、ノード展開の結果得られた処理対象ノードのノードデータを前記ノードデータ格納手段に格納する負荷分散処理手段と、
前記展開処理の対象ノードの中で、負荷が低いノードと、キーを追加するための処理が行われたノードと、ノード展開が行われた展開後のノードの3者を処理対象のノードとし当該処理対象ノードから、MapReduce処理により当該処理対象のノード毎に分割属性を決定し、決定した分割属性を用いて当該処理対象のノードを展開して中間木を成長させることにより、決定木を生成する決定木生成手段と
を備えることを特徴とする決定木生成装置として構成される。
前記決定木生成装置は、前記教師データを分割し、複数のサブセットデータとしてサブセットデータ格納手段に格納する教師データ分割手段を備えてもよく、その場合、前記決定木生成手段は、当該サブセットデータ格納手段に格納された複数のサブセットデータのそれぞれを、教師データとして用いて決定木生成を行う。
また、前記負荷分散処理手段は、前記ノードデータ格納手段に格納されたノードデータの負荷情報に基づき、負荷に応じてノードを分類し、ノードの組の群を生成する機能を備えてもよく、その場合、前記決定木生成手段は、前記分類されたノードの組の情報を用いて、前記分散データ処理システムにおける複数の情報処理装置間での処理負荷が平均化するように、Reduce処理を各情報処理装置に割り当てるようにする。
本発明によれば、分散データ処理システム上でのMapReduceを利用した決定木生成において、同期のための待ち時間を減少させ、決定木生成の処理を高速化することが可能となる。
決定木生成を説明するための図である。 ノードの分割の例を示す図である。 MapReduceを用いた決定木生成処理の概要を示す図である。 従来技術の問題点を説明するための図である。 決定木生成装置10の機能構成図である。 決定木生成装置10として用いられるコンピュータのハードウェア構成図である。 決定木生成のための基本的な処理を示すフローチャートである。 負荷分散のための処理の概要を示すフローチャートである。 負荷分散判定処理のフローチャートである。 教師データ分割処理のフローチャートである。 教師データ分割の概要を示す図である。 高負荷ノード細分化処理のフローチャートである。 Map処理時のキー追加を示す図である。 高負荷ノード細分化処理の概要を示す図である。 高負荷ノード先行展開処理のフローチャートである。 高負荷ノードの先行展開処理の概要を示す図である。 負荷平均化処理のフローチャートである。 負荷平均化処理の概要を示す図である。 ノード展開処理のフローチャートである。
以下、図面を参照して本発明の実施の形態を説明する。
(実施の形態の概要)
実施の形態を詳細に説明する前に、実施の形態の概要を説明する。本実施の形態では、決定木生成アルゴリズムを、複数台のサーバマシンからなるクラスタ上の分散ファイルシステムと、複数回のMapReduceによって実現することを前提としている。
そして、MapReduceにおいて全てのマシンにおけるReduce処理が完了するまで次のMapReduce処理に進むことができず、同期によって処理待ち時間が発生するという従来の問題を解決するために、負荷分散処理を行って、決定木生成処理を高速化している。
負荷分散処理としては、決定木生成過程において突出した負荷を持つノードの負荷を負荷分散判定によって判定し、分散を行い、その後 、負荷平均化処理を行う。
上記の負荷分散判定では、生成中の決定木が浅い段階で分岐数が少ないノードの場合は教師データ分割を行い、処理対象ノードの中に高い負荷のノードが含まれる場合は高負荷ノード細分化を行い、特に突出したノードの場合は高負荷ノード先行展開を選択して、極端な教師データの偏りによる処理待ち時間を抑えることとしている。
上述した教師データ分割においては、そもそも同期しなくともよくなるように教師データを分割し、保存したサブセットを教師データとしてそれぞれ独立して決定木を成長させるようにしている。
高負荷ノード細分化では、高負荷ノードに関してMap処理する際にキーを細分化することで高負荷ノードをより多くのマシンで処理できるようにしている。また、高負荷ノード先行展開においては、突出して負荷の高いノードを先行展開して、他のノードと負荷を揃えるようにしている。負荷平均化では、各ノードを負荷によって分類し、各マシンの負荷が平均化するようにReduce処理を担当させることとしている。
上記の処理により、教師データの偏りにより生ずる負荷の偏りを分散でき、決定木生成処理中に発生する同期による処理待ち時間の削減できる。結果として、決定木生成処理を高速化できる。
(装置構成)
以下、本発明の実施の形態を詳細に説明する。まず、装置構成を説明する。
図5に、本発明の実施の形態に係る決定木生成装置10の機能構成図を示す。図5に示すように、決定木生成装置10は、制御部11、分散処理部12、教師データ格納部13、中間木格納部14、サブセットデータ格納部15、ノードキュー格納部16を備える。
決定木生成装置10は、通信ネットワークで接続された複数の情報処理装置(サーバマシン)により構成される分散データ処理システムを利用して、MapReduceを用いて、教師データから決定木を生成する装置であり、決定木生成装置10には、複数の情報処理装置が通信ネットワークを介して接続されている。
本実施の形態において、決定木生成装置10は、決定木生成のための制御を行うコントローラを想定しており、図5にはそのための機能部が示されているが、決定木生成装置10自体もMapReduceの分散処理を行うクラスタの中の1台として機能してよいことは言うまでもない。
制御部11は、決定木生成部111と負荷分散処理部112を有する。決定木生成部111は、中間木及びノードキューを操作し、分散処理部12を利用して、中間木を成長させて決定木を生成するための基本的な処理を行う機能部である。負荷分散処理部112は、本発明に関連する負荷分散のための処理を行う機能部である。
分散処理部12は、中間木及びノードキューに基づいて、教師データ又はサブセットデータからノード展開を行って、各ノードの最適な分割属性を導出する機能部である。分散処理部12は、ノード展開等の処理を、複数台のマシンを用いた分散ファイルシステム上でのMapReduceを用いて行う。このような分散処理技術自体は既存技術である。
教師データ格納部13は、教師データを格納する。本実施の形態において、教師データは、属性毎にカンマで区切られた表形式のテキストデータであり、1行で1レコードを表す。
中間木格納部14は、中間木データを格納する。中間木データは、例えばXMLにより記述されたツリー構造のデータである。なお、中間木とは、最終的な決定木が完成する前の、処理途中の決定木のことである。
サブセットデータ格納部15は、サブセットデータを格納する。サブセットデータは、教師データを特定の属性(サブキー)で分割し、同じ属性値を持つものが集められた複数のデータの集合である。サブセットデータが存在する場合は、以降サブセットデータをそれぞれ教師データとして扱うことになる。
ノードキュー格納部16は、処理対象ノードのキュー(リスト)であるノードキューを格納する。ノードキューは、ノードを識別するノードIDと負荷情報(ここでは、そのノードに関わるレコード数)と、ノード細分化フラグとを含むノードデータ(クラス)を格納したキューである。なお、ノード細分化フラグは、含まれない場合もある。なお、以降、"ノード"をノードデータの意味で使用する場合がある。
図5に示す各格納部は、決定木生成装置10であるコンピュータの記憶装置(メモリ等)で実現してもよいし、物理的には決定木生成装置10の外部にある記憶装置で実現してもよい。この場合、各格納部は、分散ファイルシステムにより実現される。
図5に示すように、決定木生成装置10からは、決定木が出力される。本実施の形態において、決定木は、例えばXML形式のツリー構造のデータ(ファイル)である。なお、決定木の剪定は適宜行うことができるが、本実施の形態においては、決定木の剪定についての構成は示していない。
決定木生成装置10は、コンピュータに、各機能部の処理を記述したプログラムを実行させることにより実現可能である。また、当該プログラムは、メモリ等の記録媒体に記録して配布することが可能である。図6に、決定木生成装置10として用いられるコンピュータのハードウェア構成の一例を示す。図6に示すように、当該コンピュータは、CPU21、メモリ22、入出力装置23、ハードディスク装置24、及び通信装置25を備える。上記プログラムが、入出力装置23からハードディスク装置24にインストールされ、起動される。これにより、当該プログラムは、CPU21により実行され、決定木生成装置10が実現される。通信装置25は、他の装置と通信ネットワークを介してデータ通信を行うための装置である。
(決定木生成装置10の動作について)
次に、決定木生成装置10の動作について説明する。
<決定木生成のための基本的な処理動作>
まず、決定木生成装置10により実行される決定木生成のための基本的な処理動作を、図7のフローチャートを参照して説明する。以下の処理動作は、基本的に、非特許文献1に記載された技術に基づくものである。ただし、本願での独自の処理として、図8以降で詳細に説明する本発明に係る負荷分散のための処理が加えられている。
制御部11における決定木生成部111は、中間木のルートノードに対応するデータ(例えば、XML形式で記述されたツリー状の階層構造を持ったデータ)を生成し、中間木格納部14に格納する(ステップ1)。続いて、決定木生成部111は、ノードキュー格納部16におけるノードキューに、ルートノードのID("0")と負荷情報(レコード数)を含むルートノードを追加する(ステップ2)。
続いて、中間木格納部14に格納されている中間木データ、ノードキュー格納部16に格納されているノードキュー、及び教師データ格納部13に格納されている教師データを用いて、分散処理部12を利用して、MapReduceによるノード展開処理を行い、各処理対象ノードに対する最適分割属性を取得する(ステップ3)。また、ここでは、処理済みのノードが、ノードキューから削除される。また、ステップ3では、図8以降で説明する負荷平均化のための処理も行われる。
続いて、決定木生成部111は、ステップ3で取得した最適分割属性を用いて、中間木格納部14に格納されている中間木データ(XML形式のツリー)を更新する。すなわち、中間木を成長させる(ステップ4)。決定木生成部111は、ステップ4で得られた中間木中にある展開可能ノードがあれば、それを、新たにノードキュー格納部16におけるノードキューに追加する(ステップ5)。
続いて、決定木生成部111は、ノードキューが空か否かを判定し(ステップ6)、空であればステップ3に進む。空でなければ、現在の中間木を決定木として出力する。ここでは、例えば、中間木データを文字列化してファイルに書き出し、決定木を表現するXMLファイルを出力する(ステップ7)。
<負荷分散のための処理概要>
次に、図8のフローチャートを参照して、本発明に係る負荷分散のための処理の全体の流れを説明する。以下は、概要説明であり、各処理の詳細については、概要説明の後に順次説明する。また、図8に示す処理は、図7におけるステップ3に対応する。
図8に示すように、負荷分散処理部112は、中間木格納部14から中間木データを取得するとともに、ノードキュー格納部16から処理対象ノードを取得する(ステップ10)。
続いて、負荷分散処理部112は、負荷分散判定処理を行い、ノードキューを更新する(ステップ20)。
負荷分散処理部112は、更新されたノードキューに基づき、負荷平均化処理を行って、ここで更新されたノードキューをノードキュー格納部16に格納する(ステップ30)。
続いて、決定木生成部111は、ノードキュー格納部16に格納されたノードキューと、中間木格納部14における中間木データとを用いて、分散処理部12を利用したMapReduce処理を行い、各ノードの最適分割属性を求めるノード展開処理を行い(ステップ40)、結果として分割属性リストデータが得られる(ステップ50)。この後、図7に示したステップ4以降の処理が行われることになる。
なお、ステップ20における負荷分散の処理と、ステップ30における負荷平均化の処理とは、これら両方を行うことは必須ではない。ステップ20における負荷分散の処理と、ステップ30における負荷平均化の処理のうちのいずれかを行うこととしてもよい。
<負荷分散判定処理>
次に、図8のステップ20に示した負荷分散判定処理について、図9のフローチャートを参照して説明する。
まず、負荷分散処理部112は、ノードキュー格納部16に格納されている処理対象のノードの数が、予め定めた閾値より小さく、かつ、中間木の深さが、予め定めた閾値より小さい、か否かを判定する(ステップ100)。ここでの判定は一例であり、例えば、処理対象のノードの数のみの閾値判定を行うこととしてもよい。
ステップ100での判定結果がYesの場合、ステップ110において、教師データ分割処理を行い、教師データのサブセットを求めて、それをサブセットデータ格納部15に格納する。教師データ分割処理の詳細については後述する。
ステップ100における判定がNoであった場合、負荷分散処理部112は、ノードキュー内の突出した負荷(レコード数)を持つノードを検出する(ステップ120)。ここでは、例えば、処理対象ノードの負荷の平均値に対する負荷の割合が、予め定めた閾値を超えているかどうかで、突出しているか否かを判断する。例えば、処理対象ノードの負荷の平均値が100で、予め定めた閾値が2であり、あるノードの負荷が300であるとすると、当該ノードの、平均値に対する負荷の割合は3であるから、閾値を越えており、負荷が突出していると判定される。
ステップ120における判定の結果がNoであれば、負荷分散判定処理を終了する。ステップ120における判定の結果がYesであれば、当該突出ノードにおけるデータを所定の数に分割することで他のノードの負荷と同等程度に揃うか判断する(ステップ130)。ここでは、例えば、所定の数に分割することにより、上記閾値を越えるノードが検出されなくなるかどうかを判断する。
ステップ130における判定結果がYesであれば、ステップ140の高負荷ノード細分化処理を行い、ステップ130における判定結果がNoであれば、ステップ150の高負荷ノード先行展開処理を行う。高負荷ノード細分化処理と高負荷ノード先行展開処理の詳細については後述する。
<教師データ分割処理>
次に、図9のステップ110で示した処理である教師データ分割処理について、図10のフローチャートを参照して説明する。
まず、負荷分散処理部112は、教師データ格納部13に格納された教師データに対して、分散処理部12を利用して、Key(ノード・サブキー)及びValue(レコード)としたMapReduce処理を行うことにより、教師データからノード毎にレコードを抽出する(ステップ200)。なお、Keyの中にサブキーを追加するのは、Reduce結果が一台のマシンに集中するのを防ぐためである。サブキーとしては、例えば、特定の属性を用いる。特定の属性としては、分割対象のノード(ルードノード等)において、最適分割属性であると判断された属性を用いることができる。
そして、負荷分散処理部112は、ステップ200で得られたレコードをノード毎にID名の記憶手段(具体的には、ディレクトリ)に保存する(ステップ210)。この記憶手段は、サブセットデータ格納部15に対応する。この処理が終わった段階の分散ファイルシステムは、サブセットとなるノード別にディレクトリが作成され,その中にはそのノードの展開に必要なレコードが全て入っている状態となる。教師データをサブセットデータに分け、サブセットが存在する場合は、これ以降、各サブセットが教師データとして扱われることになる。
図11に、教師データ分割のイメージを示す。図11の上段が、教師データ分割を行わない場合を示し、下段が、分割を行った場合を示す。図11の下段に示すように、分割を行うことにより、サブセット毎(ルートの次のノード毎)にMapReduceが行われ、決定木の成長処理が行われる。サブセット毎に生成された決定木は、最後に連結されて最終的な決定木が生成される。
<高負荷ノード細分化処理>
次に、図9のステップ140における高負荷ノード細分化処理を、図12のフローチャートを参照して説明する。
まず、負荷分散処理部112は、ノードキュー格納部16に格納されたノードキューから全処理対象ノードのリストを取り出し、負荷(レコード数)によってノードをソートした上で、処理対象ノードの負荷の平均値との割合が所定の閾値を超えているノードに対して、Map処理時にサブキーを追加することを示すフラグを付与する処理を行う(ステップ300)。これにより、フラグ付与済みのノードリストが得られる。
続いて、負荷分散処理部112は、ステップ300で得られたフラグ付与済みのノードリストを、ノードキューとして、ノードキュー格納部16に再格納する(ステップ310)。
高負荷ノード細分化処理により、サブキーを追加することを示すフラグを付与されたノードに関しては、図13に示すように、Map処理時にKeyに当該サブキーが追加され、ノードのデータの細分化が行われることになる。
図14に高負荷ノード細分化のイメージを示す。図14に示す例では、"A"で示されるノードにおいて、ノードのレコードが2つに細分化されたことが示されている。
<高負荷ノード先行展開処理>
次に、図9のステップ150における高負荷ノード先行展開処理を、図15のフローチャートを参照して説明する。
負荷分散処理部112は、決定木生成部111を利用して、ノードキュー格納部16のノードキューから処理対象ノードのノードリストを取得し、図9のステップ120で検出された高負荷ノードのみに対してノード展開(詳細は図19を参照して後述)の処理を実行する(ステップ400)。これにより、高負荷ノードに関する最適分割属性情報と負荷情報を含むノードリストが得られる。
続いて、負荷分散処理部112は、ステップ400で得られたノードリストと、中間木格納部14に格納されている中間木データを用いて、決定木生成部410を利用することにより、高負荷ノード部分のみ中間木を成長させる(ステップ410)。ここでは、図7に示したステップ4における処理と同様の処理が行われる。
そして、ステップ410にて得られた中間木中にある展開可能ノードを新たにノードキューに追加する処理を行う(ステップ420)。ここでの処理は、図7のステップ5の処理と同様である。
図16に、高負荷ノードの先行展開のイメージを示す。図16に示す例では、"A"で示されるノードが高負荷であると判定され、先行展開が行われ、B、C、Dのノードに展開されている。
<負荷平均化処理>
次に、図8のステップ30における負荷平均化処理を、図17のフローチャートを参照して説明する。
負荷分散処理部112は、ノードキュー格納部16に格納されているノードキューから全ノードを取得し、リスト化し、負荷によってソートする(ステップ500)。そして、負荷分散処理部112は、ソートされたノードリストの両端から1つずつノードを取って、これらを1組とし、各組にIDを付ける処理を行う(ステップ510)。なお、両端から1つずつとって組にする処理は一例にすぎない。負荷を適切に平均化することができるのであれば、他の選択方法を用いてもよい。例えば、2より大きな数のノードが1組となるような組み合わせの方法を用いてもよい。これにより、当該ID付のノードの集合からなる更新されたノードリストが得られる。
その後、負荷分散処理部112は、ステップ510で得られたノードリストを用いたノード展開処理の中で用いるPartitionerを設定する処理を行う(ステップ520)。
具体的には、Mapperの処理の後、Keyの値に応じたReducerへの割り振りを決定するためのPartitioner(区分基準データと称することもできる)を初期設定である単なるハッシュを利用したものから、ステップ510の処理結果とクラスタのマシン台数を考慮したものに入れ替える。すなわち、Partitionerは、処理対象のノード数がマシン台数以上になるとき、ステップ510の結果で同じ組になったノードを静的に同じマシンに割り振るようなものに設定される。
図18に、負荷平均化のイメージを示す。図18に示す例では、最下段のノードに関して、レコード数合計が500,000の組にノードが分けられたことが示されている。本例では、Partitionerにより、例えば、同じ組に属する複数のノードに関して、同じマシンでReduce処理される。
<ノード展開処理>
次に、図8のステップ40におけるノード展開処理を、図19のフローチャートを参照して説明する。
ここではまず、決定木生成部111が、教師データ格納部13に格納された教師データを取得する(ステップ600)。なお、サブセットデータが存在する場合は、サブセットデータ格納部15からサブセットデータを教師データとして取得する。
続いて、決定木生成部111は、Map処理を行う(ステップ610)。より詳細には、まず、予め定めた目標属性(インデックス)を記憶手段から取得し、中間木格納部14から中間木データを取得し、ノードキュー格納部16からノードキューを取得する。そして、ステップ600で取得した教師データ(例えば、CSV形式のデータである)を1行ずつ読み込んで、中間木を辿り、その行がどの処理対象ノードに属するレコードか判断した上で、Key・Valueの組を生成し、各マシン毎にローカルに存在する、同じKeyを持つKey・Valueの組を集約する(つまり、個数をカウントアップする)。
この処理により、「Key(ノードID・属性・(サブキー)) Value(属性値・目標属性値・個数)」の組の集合である中間データが得られ、記憶手段に格納される。なお、括弧内の"サブキー"は、細分化を行う場合に付加されるものである。
続いて、決定木生成部111は、ステップ610で得られた中間データと、図17のステップ520で得られたPartitionerとに基づき、各マシンにReduce処理を割り振る(ステップ620)。図17に示した負荷平均化処理がなされているので、ここでは、負荷情報とリソース(マシン台数)に応じて負荷が平均化するように割り振りが行われる。
ステップ630では、Reduce処理が行われる。すなわち、同じKeyを持つKey・Valueの組が1台のマシンに集められ、Key・Valueを集約して、新たなKey・Valueの組を生成する処理が行われる。これにより、「Key(ノードID・属性・(サブキー)) Value(ハッシュマップ{属性値:{目標属性値:個数}})」の組の集合が得られる。
その後、決定木生成部111は、ステップ630で得られた各Key・Valueの組に対して、Keyにサブキーが含まれる場合に、サブキーに基づき、Key・Valueの組を集約する(ステップ640)。この処理により、「Key(ノードID・属性) Value(ハッシュマップ{属性値:{目標属性値:個数}})」の組の集合が得られる。
続いて、決定木生成部111は、ステップ640で得られたKey・Valueの組に基づき、ノード毎に各分割における情報利得を計算し、各分割での分割スコアを算出する(ステップ650)。そして、決定木生成部111は、ステップ650で得られたスコアに基づき、ノード毎に最適な分割属性を決定する(ステップ660)。これにより、最適分割属性情報と負荷情報を含むノードリストが得られる。
その後、図7のステップ4以降の、中間木を成長させる処理や、次の展開可能ノードの処理等が行われることになる。
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。
10 決定木生成装置
11 制御部
111 決定木生成部
112 負荷分散処理部
12 分散処理部
13 教師データ格納部
14 中間木格納部
15 サブセットデータ格納部
16 ノードキュー格納部
21 CPU
22 メモリ
23 入出力装置
24 ハードディスク装置
25 通信装置

Claims (5)

  1. 通信ネットワークで接続された複数の情報処理装置により構成される分散データ処理システム上で、MapReduce処理を行うことにより、教師データから決定木を生成する決定木生成装置であって、
    ノードを示す識別情報と、ノードの負荷情報とを含むノードデータを格納するノードデータ格納手段から、展開処理の対象となるノードのノードデータを取得し、当該ノードデータに基づき、負荷の高いノードを検出し、当該高負荷ノードを所定の数に分割することで負荷を所定の値よりも低くすることができるか否かを判断する負荷判定手段と、
    前記負荷判定手段により、高負荷ノードがあり分割により負荷を低くすることができると判断された場合には、当該高負荷ノード複数のノードに分散されるように、MapReduce処理におけるMap処理時に、キーを追加するための処理を行い、前記負荷判定手段により、高負荷ノードがあり分割により負荷を低くすることができないと判断された場合には、当該高負荷ノードのみに関するノード展開を行い、ノード展開の結果得られた処理対象ノードのノードデータを前記ノードデータ格納手段に格納する負荷分散処理手段と、
    前記展開処理の対象ノードの中で、負荷が低いノードと、キーを追加するための処理が行われたノードと、ノード展開が行われた展開後のノードの3者を処理対象のノードとし当該処理対象ノードから、MapReduce処理により当該処理対象のノード毎に分割属性を決定し、決定した分割属性を用いて当該処理対象のノードを展開して中間木を成長させることにより、決定木を生成する決定木生成手段と
    を備えることを特徴とする決定木生成装置。
  2. 前記決定木生成装置は、前記教師データを分割し、複数のサブセットデータとしてサブセットデータ格納手段に格納する教師データ分割手段を備え、
    前記決定木生成手段は、当該サブセットデータ格納手段に格納された複数のサブセットデータのそれぞれを、教師データとして用いて決定木生成を行うことを特徴とする請求項1に記載の決定木生成装置。
  3. 前記負荷分散処理手段は、前記ノードデータ格納手段に格納されたノードデータの負荷情報に基づき、負荷に応じてノードを分類し、ノードの組の群を生成し、
    前記決定木生成手段は、前記分類されたノードの組の情報を用いて、前記分散データ処理システムにおける複数の情報処理装置間での処理負荷が平均化するように、Reduce処理を各情報処理装置に割り当てる
    ことを特徴とする請求項1又は2に記載の決定木生成装置。
  4. 通信ネットワークで接続された複数の情報処理装置により構成される分散データ処理システム上で、MapReduce処理を行うことにより、教師データから決定木を生成する決定木生成装置が実行する決定木生成方法であって、
    ノードを示す識別情報と、ノードの負荷情報とを含むノードデータを格納するノードデータ格納手段から、展開処理の対象となるノードのノードデータを取得し、当該ノードデータに基づき、負荷の高いノードを検出し、当該高負荷ノードを所定の数に分割することで負荷を所定の値よりも低くすることができるか否かを判断する負荷判定ステップと、
    前記負荷判定ステップにより、高負荷ノードがあり分割により負荷を低くすることができると判断された場合には、当該高負荷ノード複数のノードに分散されるように、MapReduce処理におけるMap処理時に、キーを追加するための処理を行い、前記負荷判定ステップにより、高負荷ノードがあり分割により負荷を低くすることができないと判断された場合には、当該高負荷ノードのみに関するノード展開を行い、ノード展開の結果得られた処理対象ノードのノードデータを前記ノードデータ格納手段に格納する負荷分散処理ステップと、
    前記展開処理の対象ノードの中で、負荷が低いノードと、キーを追加するための処理が行われたノードと、ノード展開が行われた展開後のノードの3者を処理対象のノードとし当該処理対象ノードから、MapReduce処理により当該処理対象のノード毎に分割属性を決定し、決定した分割属性を用いて当該処理対象のノードを展開して中間木を成長させることにより、決定木を生成する決定木生成ステップと
    を備えることを特徴とする決定木生成方法。
  5. コンピュータを、請求項1ないしのうちいずれか1項に記載された決定木生成装置における各手段として機能させるプログラム。
JP2010036290A 2010-02-22 2010-02-22 決定木生成装置、決定木生成方法、及びプログラム Expired - Fee Related JP5427640B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010036290A JP5427640B2 (ja) 2010-02-22 2010-02-22 決定木生成装置、決定木生成方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010036290A JP5427640B2 (ja) 2010-02-22 2010-02-22 決定木生成装置、決定木生成方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2011170774A JP2011170774A (ja) 2011-09-01
JP5427640B2 true JP5427640B2 (ja) 2014-02-26

Family

ID=44684806

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010036290A Expired - Fee Related JP5427640B2 (ja) 2010-02-22 2010-02-22 決定木生成装置、決定木生成方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP5427640B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108713205A (zh) * 2016-08-22 2018-10-26 甲骨文国际公司 用于自动映射与数据流环境一起使用的数据类型的系统和方法

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9841989B2 (en) 2012-05-31 2017-12-12 Hitachi, Ltd. Parallel data processing system, computer, and parallel data processing method
JP6281225B2 (ja) * 2013-09-30 2018-02-21 日本電気株式会社 情報処理装置
WO2015151290A1 (ja) * 2014-04-04 2015-10-08 株式会社日立製作所 管理計算機と計算機制御方法及び計算機システム
JP6097910B2 (ja) * 2016-01-21 2017-03-22 国立大学法人 東京大学 並列データ処理システム、計算機および並列データ処理方法
EP3418893B1 (en) * 2016-02-15 2021-12-22 Fujitsu Limited Process control program, process control method, information processing device, and communication device
JP7095458B2 (ja) * 2018-07-27 2022-07-05 株式会社デンソー 演算処理装置および画像処理装置
CN111695588B (zh) * 2020-04-14 2021-03-23 北京迅达云成科技有限公司 一种基于云计算的分布式决策树学习系统
CN111488496B (zh) * 2020-04-30 2023-07-21 湖北师范大学 一种基于滑动窗口的Tango树构建方法及系统
CN113689036A (zh) * 2021-08-24 2021-11-23 成都电科智联科技有限公司 一种基于决策树c4.5算法的热像仪质量问题原因预测方法
CN116430831B (zh) * 2023-04-26 2023-10-31 宁夏五谷丰生物科技发展有限公司 应用于食用油生产控制系统的数据异常监控方法及系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10334054A (ja) * 1997-05-29 1998-12-18 Hitachi Ltd 並列画像生成方法とそのためのデータ分割手法
JP2005078394A (ja) * 2003-09-01 2005-03-24 Nec Corp 非共有型データベースクラスタシステム,データベースノードおよび動的データ再配置方法ならびにプログラム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108713205A (zh) * 2016-08-22 2018-10-26 甲骨文国际公司 用于自动映射与数据流环境一起使用的数据类型的系统和方法
CN108713205B (zh) * 2016-08-22 2022-11-11 甲骨文国际公司 用于自动映射与数据流环境一起使用的数据类型的系统和方法
US11526338B2 (en) 2016-08-22 2022-12-13 Oracle International Corporation System and method for inferencing of data transformations through pattern decomposition
US11537371B2 (en) 2016-08-22 2022-12-27 Oracle International Corporation System and method for metadata-driven external interface generation of application programming interfaces
US11537369B2 (en) 2016-08-22 2022-12-27 Oracle International Corporation System and method for dynamic, incremental recommendations within real-time visual simulation

Also Published As

Publication number Publication date
JP2011170774A (ja) 2011-09-01

Similar Documents

Publication Publication Date Title
JP5427640B2 (ja) 決定木生成装置、決定木生成方法、及びプログラム
JP5950285B2 (ja) 予め決められた複数のビット幅のデータに対して操作を行う命令を使用してツリーの検索を行うための方法、並びに、当該命令を使用してツリーの検索を行うためのコンピュータ及びそのコンピュータ・プログラム
CN104881466B (zh) 数据分片的处理以及垃圾文件的删除方法和装置
CN102750309B (zh) 一种基于Hadoop的并行化SVM求解方法
JP2007011548A (ja) データ集合分割プログラム、データ集合分割装置、およびデータ集合分割方法
KR101617696B1 (ko) 데이터 정규표현식의 마이닝 방법 및 장치
CN106970958B (zh) 一种流文件的查询与存储方法和装置
CN107015868B (zh) 一种通用后缀树的分布式并行构建方法
CN111309976B (zh) 一种面向收敛型图应用的GraphX数据缓存方法
Patwary et al. Window-based streaming graph partitioning algorithm
CN104834557B (zh) 一种基于Hadoop的数据分析方法
CN107341210B (zh) Hadoop平台下的C-DBSCAN-K聚类算法
CN105989015B (zh) 一种数据库扩容方法和装置以及访问数据库的方法和装置
US10700934B2 (en) Communication control device, communication control method, and computer program product
CN103064991A (zh) 一种海量数据聚类方法
CN103810197A (zh) 一种基于Hadoop的数据处理方法及其系统
CN103761298A (zh) 一种基于分布式架构的实体匹配方法
CN109388615A (zh) 基于Spark的任务处理方法及系统
JP5600693B2 (ja) クラスタリング装置及び方法及びプログラム
JP5712851B2 (ja) データ分割装置、データ分割方法およびデータ分割プログラム
KR20160100224A (ko) 오디오 핑거프린트 데이터베이스 구축 및 오디오 핑거프린트 검색 방법 및 장치
CN103150372B (zh) 基于中心索引的海量高维音频数据的聚类方法
Abdolazimi et al. Connected components of big graphs in fixed mapreduce rounds
CN113641705A (zh) 一种基于计算引擎的营销处置规则引擎方法
CN113641654A (zh) 一种基于实时事件的营销处置规则引擎方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120126

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130624

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130702

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130828

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20131001

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131126

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131202

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5427640

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees