(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024103794
(43)【公開日】2024-08-01
(54)【発明の名称】情報処理装置、情報処理方法、及び、記録媒体
(51)【国際特許分類】
G06F 9/50 20060101AFI20240725BHJP
G06F 18/241 20230101ALI20240725BHJP
【FI】
G06F9/50 150C
G06F9/50 150E
G06F18/241
【審査請求】有
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2024092715
(22)【出願日】2024-06-07
(62)【分割の表示】P 2021572202の分割
【原出願日】2020-01-22
(71)【出願人】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100107331
【弁理士】
【氏名又は名称】中村 聡延
(74)【代理人】
【識別番号】100104765
【弁理士】
【氏名又は名称】江上 達夫
(74)【代理人】
【識別番号】100131015
【弁理士】
【氏名又は名称】三輪 浩誉
(72)【発明者】
【氏名】大道 修
(57)【要約】
【課題】決定木を用いた推論処理を並列処理により高速化することが可能な情報処理装置等を提供する。
【解決手段】情報処理装置において、取得部は、各々が複数の特徴量を有する複数のデータ行を含む入力データ行列を取得する。分割部は、条件判定ノードにおいて、条件判定の結果に従って選択される子ノードに対応付けて、入力データ行列の少なくとも行番号の部分を分割してグループ化情報を生成し、子ノードに渡す。並列処理部は、条件判定ノードにおいて、受け取ったグループ化情報により示される複数のデータ行の条件判定処理を並列処理により行う。出力部は、葉ノードにおいて、受け取った前記グループ化情報により示される複数のデータ行に対応する予測値を出力する。
【選択図】
図3
【特許請求の範囲】
【請求項1】
条件判定ノードと葉ノードを有する決定木を用いる情報処理装置であって、
各々が複数の特徴量を有する複数のデータ行を含む入力データ行列を取得する取得手段と、
前記条件判定ノードにおいて、条件判定の結果に従って選択される子ノードに対応付けて、前記入力データ行列の少なくとも行番号の部分を分割してグループ化情報を生成し、前記子ノードに渡す分割手段と、
前記条件判定ノードにおいて、受け取った前記グループ化情報により示される複数のデータ行の条件判定処理を並列処理により行う並列処理手段と、
前記葉ノードにおいて、受け取った前記グループ化情報により示される複数のデータ行に対応する予測値を前記入力データ行列における行番号の順序と同じ順序に並び替えるための並列処理を行い、当該並列処理により並べ替えられた当該予測値を出力する出力手段と、
を備える情報処理装置。
【請求項2】
前記分割手段は、前記入力データ行列を分割した分割データ行列を前記グループ化情報として生成する請求項1に記載の情報処理装置。
【請求項3】
前記分割手段は、前記入力データ行列の前記行番号の部分のみを分割した行番号群を前記グループ化情報として生成する請求項2に記載の情報処理装置。
【請求項4】
前記入力データ行列を記憶する記憶手段を備え、
前記並列処理手段は、前記行番号群に含まれる行番号に基づいて、前記記憶手段に記憶されている前記入力データ行列を参照して条件判定処理を行う請求項3に記載の情報処理装置。
【請求項5】
前記並列処理手段は、SIMD方式の並列処理を行う請求項1乃至4のいずれか一項に記載の情報処理装置。
【請求項6】
前記条件判定ノードは、前記入力データ行列に含まれる所定の特徴量の値と、所定の閾値とを所定の命令で比較演算した条件判定の結果に従って、複数の子ノードのうちの一つを選択し、
前記葉ノードは、子ノードを持たず、当該葉ノードに対応する予測値を出力する請求項1乃至5のいずれか一項に記載の情報処理装置。
【請求項7】
条件判定ノードと葉ノードを有する決定木を用いる情報処理方法であって、
各々が複数の特徴量を有する複数のデータ行を含む入力データ行列を取得し、
前記条件判定ノードにおいて、条件判定の結果に従って選択される子ノードに対応付けて、前記入力データ行列の少なくとも行番号の部分を分割してグループ化情報を生成し、前記子ノードに渡し、
前記条件判定ノードにおいて、受け取った前記グループ化情報により示される複数のデータ行の条件判定処理を並列処理により行い、
前記葉ノードにおいて、受け取った前記グループ化情報により示される複数のデータ行に対応する予測値を前記入力データ行列における行番号の順序と同じ順序に並び替えるための並列処理を行い、当該並列処理により並べ替えられた当該予測値を出力する情報処理方法。
【請求項8】
条件判定ノードと葉ノードを有する決定木を用いる情報処理をコンピュータに実行させるプログラムを記録した記録媒体であって、
前記情報処理は、
各々が複数の特徴量を有する複数のデータ行を含む入力データ行列を取得し、
前記条件判定ノードにおいて、条件判定の結果に従って選択される子ノードに対応付けて、前記入力データ行列の少なくとも行番号の部分を分割してグループ化情報を生成し、前記子ノードに渡し、
前記条件判定ノードにおいて、受け取った前記グループ化情報により示される複数のデータ行の条件判定処理を並列処理により行い、
前記葉ノードにおいて、受け取った前記グループ化情報により示される複数のデータ行に対応する予測値を前記入力データ行列における行番号の順序と同じ順序に並び替えるための並列処理を行い、当該並列処理により並べ替えられた当該予測値を出力する処理である記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、決定木を用いた推論処理に関する。
【背景技術】
【0002】
近年、大量のデータを高速に処理することが求められている。データ処理を高速化する手法の一つに、処理の並列化がある。例えば、複数のデータを独立して操作できる繰り返し処理は、展開して並列処理することが可能である。並列処理の方式として、SIMD(Single Intruction Multiple Data)方式が知られている。SIMDは、一つの命令を複数のデータに対して一斉に実行することで処理を高速化する並列処理の方式である。SIMD方式のプロセッサとしては、ベクトルプロセッサ、GPU(Graphics Processing Unit)などが挙げられる。
【0003】
特許文献1は、決定木を用いた推論に並列処理を適用した手法を記載している。特許文献1では、決定木の各ノードの識別情報や条件判定結果を2進数で表現し、各階層の条件判定をまとめて処理できるようにしている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、特許文献1の手法では、全データを用いて全ての条件判定ノードの処理を実行してしまうため、処理の効率が良くない。
【0006】
本発明の1つの目的は、決定木を用いた推論処理を並列処理により高速化することにある。
【課題を解決するための手段】
【0007】
本発明の一つの観点は、条件判定ノードと葉ノードを有する決定木を用いる情報処理装置であって、
各々が複数の特徴量を有する複数のデータ行を含む入力データ行列を取得する取得手段と、
前記条件判定ノードにおいて、条件判定の結果に従って選択される子ノードに対応付けて、前記入力データ行列の少なくとも行番号の部分を分割してグループ化情報を生成し、前記子ノードに渡す分割手段と、
前記条件判定ノードにおいて、受け取った前記グループ化情報により示される複数のデータ行の条件判定処理を並列処理により行う並列処理手段と、
前記葉ノードにおいて、受け取った前記グループ化情報により示される複数のデータ行に対応する予測値を前記入力データ行列における行番号の順序と同じ順序に並び替えるための並列処理を行い、当該並列処理により並べ替えられた当該予測値を出力する出力手段と、を備える。
【0008】
本発明の他の観点は、条件判定ノードと葉ノードを有する決定木を用いる情報処理方法であって、
各々が複数の特徴量を有する複数のデータ行を含む入力データ行列を取得し、
前記条件判定ノードにおいて、条件判定の結果に従って選択される子ノードに対応付けて、前記入力データ行列の少なくとも行番号の部分を分割してグループ化情報を生成し、前記子ノードに渡し、
前記条件判定ノードにおいて、受け取った前記グループ化情報により示される複数のデータ行の条件判定処理を並列処理により行い、
前記葉ノードにおいて、受け取った前記グループ化情報により示される複数のデータ行に対応する予測値を前記入力データ行列における行番号の順序と同じ順序に並び替えるための並列処理を行い、当該並列処理により並べ替えられた当該予測値を出力する。
【0009】
本発明の他の観点は、条件判定ノードと葉ノードを有する決定木を用いる情報処理をコンピュータに実行させるプログラムを記録した記録媒体であって、
前記情報処理は、
各々が複数の特徴量を有する複数のデータ行を含む入力データ行列を取得し、
前記条件判定ノードにおいて、条件判定の結果に従って選択される子ノードに対応付けて、前記入力データ行列の少なくとも行番号の部分を分割してグループ化情報を生成し、前記子ノードに渡し、
前記条件判定ノードにおいて、受け取った前記グループ化情報により示される複数のデータ行の条件判定処理を並列処理により行い、
前記葉ノードにおいて、受け取った前記グループ化情報により示される複数のデータ行に対応する予測値を前記入力データ行列における行番号の順序と同じ順序に並び替えるための並列処理を行い、当該並列処理により並べ替えられた当該予測値を出力する処理である。
【発明の効果】
【0010】
本発明によれば、決定木を用いた推論処理を並列処理により高速化することができる。
【図面の簡単な説明】
【0011】
【
図1】第1実施形態に係る情報処理装置の構成を示すブロック図である。
【
図3】第1実施形態による入力データの分割処理を模式的に示す。
【
図5】情報処理装置のハードウェア構成を示すブロック図である。
【
図6】情報処理装置の機能構成を示すブロック図である。
【
図9】第2実施形態による入力データの行番号群の分割処理を模式的に示す。
【
図11】第2実施形態に係る情報処理装置の機能構成を示すブロック図である。
【
図12】第3実施形態に係る情報処理装置の機能構成を示すブロック図である。
【発明を実施するための形態】
【0012】
以下、図面を参照して、本発明の好適な実施形態について説明する。
【0013】
[第1実施形態]
(基本構成)
図1は、本発明の第1実施形態に係る情報処理装置の構成を示す。情報処理装置100は、決定木モデルを用いた推論(以下、「決定木推論」と呼ぶ。)を行う。具体的に、情報処理装置100は、入力データを用いて決定木推論を行い、推論結果として入力データに対する予測値を出力する。ここで、情報処理装置100は、決定木推論の処理のうちの一部を並列処理により実行し、処理を高速化する。なお、並列処理することを「ベクトル化」とも呼ぶ。
【0014】
(原理説明)
図2は、決定木推論の一例を示す。この例は、債権回収の予測問題であり、多数の債権者の属性情報を入力データとし、決定木モデルを用いて債権回収の可否を推論する。図示のように、入力データは、各債権者の特徴量として、「年収(特徴量1)」、「年齢(特徴量2)」、「定職(特徴量3)」を含む。決定木モデルは、これらの入力データを用いて、各債権者の債権回収の可否を予測する。
【0015】
図2の決定木モデルは、ノードN1~N7により構成される。ノードN1は根ノードであり、ノードN2、N4、N6、N7は葉ノードである。また、ノードN1、N3、N5は条件判定ノードである。
【0016】
まず、根ノードN1では、債権者が定職を有するか否かが判定される。債権者が定職を有しない場合、処理は葉ノードN2に進み、債権回収は否(NO)と予測される。一方、債権者が定職を有する場合、処理は条件判定ノードN3に進み、債権者の年収が480万円以上であるか否かが判定される。債権者の年収が480万円以上である場合、処理は葉ノードN4に進み、債権回収は可(YES)と予測される。債権者の年収が480万円未満である場合、処理は条件判定ノードN5へ進み、債権者の年齢が51歳以上であるか否かが判定される。債権者の年齢が51歳以上である場合、処理は葉ノードN6へ進み、債権回収は可(YES)と予測される。一方、債権者の年齢が51歳未満である場合、処理は葉ノードN7へ進み、債権回収は否(NO)と予測される。こうして、各債権者の債権回収の可否が予測値として出力される。
【0017】
さて、決定木推論に並列処理を適用する場合、どの部分を並列処理するかが問題となる。まず、入力データのデータ行を並列に処理する方法が考えられるが、決定木モデルは一行内の特徴量を一度に全部は使わないため、適切ではない。一方、入力データのデータ列を並列に処理する方法も考えられる。しかし、決定木モデルは、入力データの全データ行について、同じデータ列の特徴量で同じ命令の比較処理を実行するとは限らない。そこで、本実施形態では、各条件判定ノードについて、同じデータ列の特徴量で同じ命令の比較処理を実行するデータ行のみを収集して分割データとし、分割データに含まれる複数のデータ行を並列に処理する。これにより、一度の処理で考慮すべきノードが一つだけになる。また、どんな比較処理を行うかが一つに定まり、比較処理に使う特徴量も一つに定まる。その結果、ベクトル化が可能となり、高速化が可能となる。なお、分割データは、本発明のグループ化情報の一例である。
【0018】
図3は、第1実施形態による入力データの分割処理を模式的に示す。なお、決定木モデルの構成は
図2と同様とし、入力データ50の各データ行には行番号が付与されているものとする。根ノードN1は条件判定ノードであるので、情報処理装置100は、根ノードN1の条件判定結果に基づいて、入力データ50を、子ノードN3へ送られる分割データ50aと、子ノードN2に送られる分割データ50bとに分割する。具体的に、根ノードN1の条件判定が入力データ50中の特徴量3を使用するものとすると、情報処理装置100は、根ノードN1の条件判定命令及び条件判定閾値と、特徴量3とに基づいて、条件判定により選択される子ノードN3に対応する分割データ50aと、子ノードN2に対応する分割データ50bとを生成する。なお、この場合、情報処理装置100は、入力データ50に含まれる全ての行データに対して、同一の列データ(特徴量3)を用いた条件判定を行うので、これを並列処理により実行することができる。
【0019】
図4は、データ分割の例を示す。
図4に示す入力データ50が根ノードN1に入力されたとする。根ノードN1の条件判定は「特徴量3=YES」である。情報処理装置100は、入力データ50を、根ノードN1の条件判定結果に基づいて分割する。具体的に、情報処理装置100は、入力データ50のうち、特徴量3が「YES」であるデータ行(#0、#2、#5、#7、..)の集合を分割データ50aとし、特徴量3が「NO」であるデータ行(#1、#3、#4、#6、..)の集合を分割データ50bとする。そして、情報処理装置100は、分割データ50aを子ノードN3へ渡し、分割データ50bを子ノードN2へ渡す。
【0020】
このデータ分割により、条件判定ノードである子ノードN3には、同一の特徴量に基づいて条件判定を行うべき行データのみが提供されることになる。よって、子ノードN3では、受け取った分割データ50aに対する条件判定を並列処理により行うことができる。即ち、情報処理装置100は、特徴量1を用いた条件判定を、分割データ50aに含まれる全ての行データについて並列に実行することができる。具体的に、条件判定ノードN3は、特徴量1(年収)が480万円以上か否かを判定する条件判定ノードであるので、情報処理装置100は、特徴量1が480万円以上であるか否かの判定を、分割データ50aに含まれる全ての行データについて並列に実行する。なお、子ノードN2は葉ノードであるので、情報処理装置100は、分割データ50bに含まれる全ての行データについて葉ノードN2に対応する予測値を出力する。
【0021】
図3の例では、条件判定ノードN3において、情報処理装置100は、分割データ50aをさらに分割データ50cと50dに分割し、それぞれ葉ノードN4と条件判定ノードN5へ渡す。葉ノードN4において、情報処理装置100は、分割データ50cに含まれる全ての行データに対して葉ノードN4に対応する予測値を出力する。条件判定ノードN5において、情報処理装置100は、その条件判定結果に基づいて、分割データ50dをさらに分割データ50eと50fに分割し、それぞれ葉ノードN6とN7に渡す。葉ノードN6において、情報処理装置100は、分割データ50eに含まれる全ての行データに対して葉ノードN6に対応する予測値を出力する。同様に、葉ノードN7において、情報処理装置100は、分割データ50fに含まれる全ての行データに対して葉ノードN7に対応する予測値を出力する。こうして、全ての葉ノードから予測値が出力されると、情報処理装置100は、それらを推論結果として出力する。
【0022】
以上のように、情報処理装置100は、条件判定ノードにおいて受け取ったデータを、条件判定の結果に従って選択される子ノードに対応付けて分割し、各子ノードに渡す。よって、情報処理装置100は、条件判定ノードである子ノードにおいては、親ノードから受け取った分割データに対して並列処理を行うことが可能となり、処理全体の高速化が可能となる。
【0023】
(ハードウェア構成)
図5は、情報処理装置100のハードウェア構成を示すブロック図である。図示のように、情報処理装置100は、入力IF(InterFace)11と、プロセッサ12と、メモリ13と、記録媒体14と、データベース(DB)15と、を備える。
【0024】
入力IF11は、データの入出力を行う。具体的に、入力IF11は、外部から入力データを取得し、入力データに基づいて情報処理装置100が生成した推論結果を出力する。
【0025】
プロセッサ12は、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)などのコンピュータであり、予め用意されたプログラムを実行することにより、情報処理装置100の全体を制御する。特に、プロセッサ12は、データの並列処理を行う。並列処理を実現する方法としては、GPUなどのSIMDプロセッサを利用する方法がある。情報処理装置100がSIMDプロセッサを利用して並列処理を行う場合、プロセッサ12をSIMDプロセッサとしてもよいし、プロセッサ12とは別のプロセッサとしてSIMDプロセッサを設けてもよい。また、後者の場合、情報処理装置100は、並列処理が可能な演算をSIMDプロセッサに実行させ、それ以外の演算をプロセッサ12に実行させる。
【0026】
メモリ13は、ROM(Read Only Memory)、RAM(Random Access Memory)などにより構成される。メモリ13は、プロセッサ12により実行される各種のプログラムを記憶する。また、メモリ13は、プロセッサ12による各種の処理の実行中に作業メモリとしても使用される。
【0027】
記録媒体14は、ディスク状記録媒体、半導体メモリなどの不揮発性で非一時的な記録媒体であり、情報処理装置100に対して着脱可能に構成される。記録媒体14は、プロセッサ12が実行する各種のプログラムを記録している。
【0028】
DB25は、入力IF11から入力されるデータを記憶する。具体的に、DB25には、入力IF11が取得した入力データが記憶される。また、DB25には、推論に用いる決定木モデルの情報が記憶される。具体的には、学習済みの決定木モデルの木構造を示す情報、及び、各ノードについてのノード設定(条件判定ノード設定、及び、葉ノード設定)が記憶される。DB25は、本発明の記憶部の一例である。
【0029】
(機能構成)
図6は、情報処理装置100の機能構成を示すブロック図である。情報処理装置100は、データ読込部21と、条件判定ノード設定読込部22と、条件判定処理部23と、データ分割部24と、葉ノード設定読込部25と、推論結果出力部26と、を備える。
【0030】
データ読込部21は、入力データを読み込み、DB25などの所定の記憶部に記憶する。入力データは、
図4の例のようなデータ行列であり、複数の行番号に対応付けられた複数の特徴量を含む。データ読込部21は、本発明の取得部の一例である。
【0031】
条件判定ノード設定読込部22は、推論に用いる決定木モデルの条件判定ノードに関する条件判定ノード設定を読み込み、条件判定処理部23へ出力する。なお、条件判定ノード設定読込部22は、最初は、根ノードに関する条件判定ノード設定を読み込む。ここで、「条件判定ノード設定」とは、その条件判定ノードにおいて実行される条件判定に関する設定情報であり、具体的には、「特徴量」、「条件判定閾値」、「条件判定命令」を含む。「特徴量」は、条件判定に使用する特徴量であり、例えば
図4に示す入力データの「特徴量1」、「特徴量2」などを指す。「条件判定閾値」は、その条件判定に用いられる閾値をいう。「条件判定命令」は、その条件判定の種類を示し、例えば一致判定、比較判定(大小判定)などを指す。一致判定は、
図2における「定職=YES」のように、特徴量(定職)が条件判定閾値(YES)と一致するか否かの判定をいう。また、比較判定とは、
図2における「年収≧480」のように、特徴量(年収)と、条件判定閾値(480)との大小関係の判定をいう。
【0032】
条件判定処理部23は、条件判定ノード設定読込部22から取得した条件判定ノード設定に含まれる特徴量を、記憶部に記憶されている入力データから取得する。例えば、
図2に示す決定木モデルの場合、根ノードN1の条件判定に使用する特徴量は「定職(特徴量3)」であるので、条件判定処理部23は、記憶部内の入力データから各データ行の特徴量「定職」を取得する。そして、条件判定処理部23は、その特徴量と、条件判定命令と、条件判定閾値を用いて条件判定を行う。
図2の決定木モデルの例では、条件判定処理部23は、入力データの各データ行について、「定職(特徴量3)=YES」を判定し、判定結果をデータ分割部24に送る。条件判定処理部23は、本発明の並列処理部の一例である。
【0033】
データ分割部24は、判定結果に基づいて入力データを分割する。具体的に、データ分割部24は、判定結果に従って選択される子ノードに対応付けて入力データを分割する。さらに、処理対象としている条件判定ノードの子ノードが条件判定ノードを含む場合、データ分割部24は、分割データをデータ読込部21に送る。また、データ分割部24は条件判定ノード設定読込部22に指示を送り、条件判定ノード設定読込部22は、その子ノードの条件判定ノード設定を読み込む。そして、条件判定処理部23は、分割データと、その子ノードの条件判定ノード設定とに基づいて、その子ノードの条件判定を行い、判定結果をデータ分割部24に送る。こうして、処理対象としている条件判定ノードの子ノードが条件判定ノードを含む場合、その条件判定ノードについても条件判定処理部23による条件判定及びデータ分割部24によるデータ分割が繰り返される。データ分割部24は、本発明の分割部の一例である。
【0034】
また、処理対象としている条件判定ノードの子ノードが葉ノードを含む場合、データ分割部24は、分割データを推論結果出力部26に送る。また、データ分割部24は、葉ノード設定読込部25に指示を送り、葉ノード設定読込部25は、その子ノードの葉ノード設定を読み込む。葉ノード設定は、その葉ノードが持つ予測値を含む。なお、決定木が分類木の場合、予測値は分類結果であり、決定木が回帰木の場合、予測値は数値である。そして、葉ノード設定読込部25は、読み込んだ予測値を推論結果出力部26へ送る。
【0035】
推論結果出力部26は、データ分割部24から受け取った分割データと、葉ノード設定読込部25から受け取った予測値とを対応付け、推論結果として出力する。全ての入力データについての処理が終了すると、入力データの全ての行データに対する予測値が得られる。なお、推論結果出力部26は、得られた全ての行データ及びその予測値を、入力データの行番号順に並び変えて出力してもよい。推論結果出力部26は、本発明の出力部の一例である。
【0036】
いま、
図2に示す決定木モデルを使用し、
図4に示す入力データ50の推論を行うものとする。まず、入力データ50がデータ読込部21に読み込まれ、根ノードN1の条件判定ノード設定が条件判定ノード設定読込部22に読み込まれる。条件判定処理部23は、条件判定ノード設定に基づいて、「定職(特徴量3)=YES」の判定を行い、判定結果をデータ分割部24に送る。データ分割部24は、判定結果に基づいて、
図4に示すように、入力データ50を分割データ50a、50bに分割する。
【0037】
データ分割部24は、根ノードN1での判定結果に基づき、根ノードN1の子ノードである条件判定ノードN3について、分割データ50aをデータ読込部21に送るとともに、条件判定ノード設定読込部22に指示し、条件判定ノードN3の条件判定ノード設定を読み込ませる。そして、条件判定処理部23は、分割データ50aと、条件判定ノードN3の条件判定ノード設定に基づいて条件判定を行い、判定結果をデータ分割部24へ出力する。
【0038】
また、データ分割部24は、根ノードN1での判定結果に基づき、根ノードN1の子ノードである葉ノードN2について、分割データ50bを推論結果出力部26に送るとともに、葉ノード設定読込部25に指示し、葉ノードN2の葉ノード設定を読み込ませる。葉ノード設定読込部25は、葉ノードN2の葉ノード設定を読み込み、予測値を推論結果出力部26に送る。
【0039】
こうして、子ノードが条件判定ノードである場合、その条件判定ノード設定と分割データとを用いて条件判定が繰り返される。一方、子ノードが葉ノードの場合、その葉ノードの予測値が推論結果出力部26に送られる。そして、決定木モデルの全ての葉ノードについて予測値が推論結果出力部26に送られると、推論結果出力部26は、入力データに含まれる全てのデータ行に対応する予測値を含む推論結果を出力データとして出力する。
【0040】
(フローチャート)
次に、情報処理装置100による処理のフローチャートについて説明する。
図7は、条件判定処理のフローチャートである。条件判定処理は、決定木モデルに対して入力データを入力し、推論結果を出力する処理である。この処理は、
図5に示すプロセッサ12が予め用意されたプログラムを実行することにより実現することができる。
【0041】
まず、ステップS11で、データ読込部21が入力データDataを読み込み、条件判定ノード設定読込部22が対象ノード(最初は根ノード)のノード設定Nodeを読み込む。対象ノードが条件判定ノードの場合、ステップS12において条件判定処理部23は、条件判定ノード設定に含まれる特徴量番号(列番号)を変数jにセットし、条件判定閾値を変数valueにセットし、条件判定命令を関数compareにセットする。次に、条件判定処理部23は、入力データDataの全ての行について、ステップS13のループ処理を実行する。
【0042】
ループ処理では、ステップS13-1において、条件判定処理部23は、入力データDataの各データ行について関数compareにより特徴量jを条件判定閾値valueと比較する(ステップS13-1)。データ分割部24は、ステップS13-2において、対象ノードの左側の分岐に対応する比較結果となったデータ行を分割データLeftDataに保存し、ステップS13-3において、対象ノードの右側の分岐に対応する比較結果となったデータ行を分割データRightDataに保存する。条件判定処理部23は、この処理を入力データDataの全てのデータ行に対して行い、ループ処理を終了する。このループ処理は並列処理により行われる。
【0043】
次に、ステップS14で、分割データLeftDataがデータ読込部21に送られ、それに対応する子ノードのノード設定が読み込まれる。子ノードが条件判定ノードである場合、ステップS11において条件判定ノード設定読込部22が条件判定ノード設定を読み込み、その条件判定ノードについてステップS12、S13が実行される。一方、子ノードが葉ノードである場合、ステップS16において葉ノード設定読込部25が葉ノード設定を読み込み、その葉ノードの予測値を推論結果出力部26へ送る。
【0044】
同様に、ステップS15で、分割データRightDataがデータ読込部21に送られ、それに対応する子ノードのノード設定が読み込まれる。子ノードが条件判定ノードである場合、ステップS11において条件判定ノード設定読込部22が条件判定ノード設定を読み込み、その条件判定ノードについてステップS12、S13が実行される。一方、子ノードが葉ノードである場合、ステップS16で葉ノード設定読込部25が葉ノード設定を読み込み、その葉ノードの予測値を推論結果出力部26へ送る。
【0045】
こうして、情報処理装置100は、決定木モデルの根ノードから順に子ノードへの処理を進め、全ての葉ノードに到達すると、条件判定処理を終了する。ここで、ステップS13のループ処理は、プロセッサ12が並列処理により実行することができるので、入力データが多数のデータ行を含む場合でも、高速処理が可能となる。
【0046】
条件判定処理の終了時には、入力データの全てのデータ行に対する予測値が推論結果として得られる。なお、この推論結果は、例えば
図5に示すメモリ13又はDB25など、情報処理装置100内の記憶部に一時的に保存されるが、基本的には予測値が得られた順序などで記憶部に保存されており、入力データの行番号順に整列されているとは限らない。推論結果出力部26は、得られた推論結果を出力する。この場合、推論結果出力部26は、全てのデータ行に対する予測値を出力してもよいし、特定の予測値のみを出力してもよい。また、予測値を、記憶部に保存されている順序のまま出力してもよいし、入力データにおける行番号順に並び変える処理(以下「並び替え処理」と呼ぶ。)を行ってから出力してもよい。
【0047】
図8は、並び替え処理のフローチャートである。この処理は、
図5に示すプロセッサ12が予め用意されたプログラムを実行することにより実現することができる。まず、ステップS21において、推論結果出力部26は、入力データに含まれる全ての行番号をRowIndicesとして取得し、予測値をPredictionsとして取得する。次に、推論結果出力部26は、ステップS22のループ処理を実行する。具体的に、推論結果出力部26は、ステップS22-1で、入力データにおける行番号RowIndicesの順で、予測値Predictions[i]を行列Resultsに保存する。これにより、行列Resultsには、入力データの行番号の順序で予測値が並び替えられた状態となる。プロセッサ12は、このループ処理を並列処理により行うことができる。そして、推論結果出力部26は、得られた行列Resultsを出力する。これにより、予測値が入力データにおける行番号の順序で出力される。
【0048】
以上のように、第1実施形態によれば、情報処理装置100は、条件判定の結果に基づいて、同一の特徴量を用いて同一の条件判定を行うグループに入力データを分割し、分割データ毎に並列処理を行うので、全体の処理を高速化することができる。
【0049】
[第2実施形態]
第1実施形態では、条件判定の結果に基づいて、同一の特徴量を用いて同一の条件判定を行うグループに入力データを分割している。しかし、第1実施形態の方法は、入力データが大きい場合、データのコピーなどの処理負荷が大きくなる。そこで、第2実施形態では、入力データ自体は分割せずに記憶部などに保持しておく一方、入力データの行番号のみを集めて行番号群とし、これを分割して子ノードに渡していくこととする。即ち、入力データの行番号を、記憶部に記憶されている入力データへのポインタとして使用し、このポインタをグループ化して並列処理を行う。なお、行番号群は本発明のグループ化情報の一例である。
【0050】
図9は、第2実施形態による入力データの行番号の分割処理を模式的に示す。なお、決定木モデルの構成は、
図2と同様とする。まず、情報処理装置100xは、入力データから行番号群60のみを抽出する。実際の入力データは、情報処理装置100x内の所定の記憶部に記憶されている。根ノードN1は条件判定ノードであるので、情報処理装置100xは、条件判定ノードN1の条件判定の結果に基づいて、行番号群60を、子ノードN3へ渡される行番号群60aと、子ノードN2に渡される行番号群60bとに分割する。この際、情報処理装置100xは、行番号群60に基づいて、記憶部に記憶されている入力データを参照して処理を行う。具体的に、根ノードN1の条件判定は入力データ中の特徴量3を使用するものであるので、情報処理装置100xは、条件判定ノードN1の条件判定命令及び条件判定閾値と、特徴量3とに基づいて、行番号群60a、60bを生成する。この場合、情報処理装置100xは、入力データに含まれる全ての行データに対して、同一の列データ(特徴量3)を用いた条件判定を行うので、これを並列処理により実行することができる。
【0051】
図10は、行番号群の分割の例を示す。
図10に示す入力データが根ノードN1に入力されたとする。根ノードN1の条件判定は「特徴量3=YES」であるので、情報処理装置100xは、入力データの行番号のみを、根ノードN1の条件判定結果に基づいて分割する。具体的には、情報処理装置100xは、特徴量3が「YES」であるデータ行(#0、#2、#5、#7、..)の行番号の集合を行番号群60aとし、子ノードN3へ渡す。また、情報処理装置100xは、特徴量3が「NO」であるデータ行(#1、#3、#4、#6、..)の行番号の集合を行番号群60bとし、子ノードN2へ渡す。
【0052】
これにより、子ノードN3には、同一の特徴量に基づいて条件判定を行うべき行データの行番号のみが提供されることになる。よって、条件判定ノードである子ノードN3は、受け取った行番号群60aに対応するデータ行のみに対して条件判定を行えばよいので、この処理を並列処理により行うことができる。即ち、情報処理装置100xは、特徴量1を用いた条件判定を、行番号群60aに対応する全ての行データについて並列に実行することができる。なお、子ノードN2は葉ノードであるので、情報処理装置100xは、行番号群60bに対応する全ての行データについて葉ノードN2に対応する予測値を出力する。
【0053】
図9に戻り、情報処理装置100xは、条件判定ノードN3において、行番号群60aに基づいて入力データを参照し、行番号群60aをさらに行番号群60cと60dに分割し、それぞれ葉ノードN4と条件判定ノードN5へ渡す。葉ノードN4において、情報処理装置100xは、行番号群60cに含まれる全ての行データについて、葉ノードN4に対応する予測値を出力する。条件判定ノードN5において、情報処理装置100xは、その条件判定結果に基づいて、行番号群60dをさらに行番号群60eと60fに分割し、それぞれ葉ノードN6とN7に渡す。葉ノードN6において、情報処理装置100xは、行番号群60eに含まれる全ての行データについて、葉ノードN6に対応する予測値を出力する。同様に、葉ノードN7において、情報処理装置100xは、行番号群60fに含まれる全ての行データについて、葉ノードN7に対応する予測値を出力する。こうして、全ての葉ノードから予測値が出力されると、情報処理装置100xはそれらを推論結果として出力する。
【0054】
以上のように、第2実施形態では、情報処理装置100xは、条件判定ノードにおける判定結果に基づいて行番号群を分割し、それらを子ノードに渡す。よって、情報処理装置100xは、条件判定ノードである子ノードにおいて、親ノードから受け取った行番号群に対応する入力データに対して並列処理を行うことが可能となり、処理全体の高速化が可能となる。
【0055】
第2実施形態による情報処理装置100xのハードウェア構成は、
図5と同様である。
図11は、第2実施形態に係る情報処理装置100xの機能構成を示すブロック図である。情報処理装置100xの機能構成は、基本的に
図6に示す第1実施形態の情報処理装置100と同様である。但し、情報処理装置100xでは、行番号群分割部27が入力データの行番号群を分割し、データ読込部21及び推論結果出力部26へ送る。
【0056】
第2実施形態による情報処理装置100xの条件判定処理は、基本的に
図7に示すフローチャートと同様である。但し、ステップS13-2、S13-3では、情報処理装置100xは、LeftData、RightDataに行番号のみを保存する。そして、ステップS14、S15では、情報処理装置100xは、LeftData、RightDataに保存されている行番号群に基づいて、記憶部に記憶されている入力データを参照して処理を行う。
【0057】
[第3実施形態]
図12は、第3実施形態に係る情報処理装置70の機能構成を示すブロック図である。情報処理装置70は、条件判定ノードと葉ノードを有する決定木を用いる。情報処理装置70は、取得部71と、分割部72と、並列処理部73と、出力部74と、を備える。取得部71は、各々が複数の特徴量を有する複数のデータ行を含む入力データ行列を取得する。分割部72は、条件判定ノードにおいて、条件判定の結果に従って選択される子ノードに対応付けて、入力データ行列の少なくとも行番号の部分を分割してグループ化情報を生成し、子ノードに渡す。並列処理部73は、条件判定ノードにおいて、受け取ったグループ化情報により示される複数のデータ行の条件判定処理を並列処理により行う。出力部74は、葉ノードにおいて、受け取った前記グループ化情報により示される複数のデータ行に対応する予測値を出力する。
【0058】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【0059】
(付記1)
条件判定ノードと葉ノードを有する決定木を用いる情報処理装置であって、
各々が複数の特徴量を有する複数のデータ行を含む入力データ行列を取得する取得部と、
前記条件判定ノードにおいて、条件判定の結果に従って選択される子ノードに対応付けて、前記入力データ行列の少なくとも行番号の部分を分割してグループ化情報を生成し、前記子ノードに渡す分割部と、
前記条件判定ノードにおいて、受け取った前記グループ化情報により示される複数のデータ行の条件判定処理を並列処理により行う並列処理部と、
前記葉ノードにおいて、受け取った前記グループ化情報により示される複数のデータ行に対応する予測値を出力する出力部と、
を備える情報処理装置。
【0060】
(付記2)
前記分割部は、前記入力データ行列を分割した分割データ行列を前記グループ化情報として生成する付記1に記載の情報処理装置。
【0061】
(付記3)
前記分割部は、前記入力データ行列の前記行番号の部分のみを分割した行番号群を前記グループ化情報として生成する付記2に記載の情報処理装置。
【0062】
(付記4)
前記入力データ行列を記憶する記憶部を備え、
前記並列処理部は、前記行番号群に含まれる行番号に基づいて、前記記憶部に記憶されている前記入力データ行列を参照して条件判定処理を行う付記3に記載の情報処理装置。
【0063】
(付記5)
前記出力部は、前記予測値を、前記入力データ行列における行番号の順序と同じ順序に並び替えて出力する付記1乃至4のいずれか一項に記載の情報処理装置。
【0064】
(付記6)
前記出力部は、前記予測値を、前記入力データ行列における行番号の順序と同じ順序に並び替える処理を並列処理により実行する付記5に記載の情報処理装置。
【0065】
(付記7)
前記並列処理部は、SIMD方式の並列処理を行う付記1乃至6のいずれか一項に記載の情報処理装置。
【0066】
(付記8)
前記条件判定ノードは、前記入力データ行列に含まれる所定の特徴量の値と、所定の閾値とを所定の命令で比較演算した条件判定の結果に従って、複数の子ノードのうちの一つを選択し、
前記葉ノードは、子ノードを持たず、当該葉ノードに対応する予測値を出力する付記1乃至6のいずれか一項に記載の情報処理装置。
【0067】
(付記9)
条件判定ノードと葉ノードを有する決定木を用いる情報処理方法であって、
各々が複数の特徴量を有する複数のデータ行を含む入力データ行列を取得し、
前記条件判定ノードにおいて、条件判定の結果に従って選択される子ノードに対応付けて、前記入力データ行列の少なくとも行番号の部分を分割してグループ化情報を生成し、前記子ノードに渡し、
前記条件判定ノードにおいて、受け取った前記グループ化情報により示される複数のデータ行の条件判定処理を並列処理により行い、
前記葉ノードにおいて、受け取った前記グループ化情報により示される複数のデータ行に対応する予測値を出力する情報処理方法。
【0068】
(付記10)
条件判定ノードと葉ノードを有する決定木を用いる情報処理をコンピュータに実行させるプログラムを記録した記録媒体であって、
前記情報処理は、
各々が複数の特徴量を有する複数のデータ行を含む入力データ行列を取得し、
前記条件判定ノードにおいて、条件判定の結果に従って選択される子ノードに対応付けて、前記入力データ行列の少なくとも行番号の部分を分割してグループ化情報を生成し、前記子ノードに渡し、
前記条件判定ノードにおいて、受け取った前記グループ化情報により示される複数のデータ行の条件判定処理を並列処理により行い、
前記葉ノードにおいて、受け取った前記グループ化情報により示される複数のデータ行に対応する予測値を出力する処理である記録媒体。
【0069】
以上、実施形態及び実施例を参照して本発明を説明したが、本発明は上記実施形態及び実施例に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【0070】
21 データ読込部
22 条件判定ノード設定読込部
23 条件判定処理部
24 データ分割部
25 葉ノード設定読込部
26 推論結果出力部
27 行番号群分割部
70、100、100x 情報処理装置