(57)【要約】【課題】分割することによって学習データを増やしつつ、学習の精度を向上させることができる学習方法、プログラムおよび学習装置を提供する。【解決手段】学習方法であって、１つの学習データを所定の単位期間ごとに分割し、該単位期間における特定の事象の発生の有無をしめすラベルを分割後の学習データに付与し、前記分割後の学習データの特徴量の値が、分割前の学習データの特徴量の値と一致させる分割ステップと、前記分割後の学習データを用いて、スコアリングモデルの学習を行う学習ステップと、を有する。【選択図】図２５
2020035395.tif 000002
【特許請求の範囲】
【請求項１】
１つの学習データを所定の単位期間ごとに分割し、該単位期間における特定の事象の発生の有無をしめすラベルを分割後の学習データに付与し、前記分割後の学習データの特徴量の値が、分割前の学習データの特徴量の値と一致させる分割ステップと、
前記分割後の学習データを用いて、スコアリングモデルの学習を行う学習ステップと、
を有する学習方法。
【請求項２】
前記分割ステップでは、所定期間内で、学習データを特定の時点から前記単位期間ごとに分割する請求項１に記載の学習方法。
【請求項３】
前記分割ステップでは、学習データにおいて前記所定期間の全域にわたるデータがない場合、データが存在する期間までを分割する請求項２に記載の学習方法。
【請求項４】
前記分割ステップでは、前記所定期間において、前記特定の事象が発生した前記単位期間より後の前記単位期間については分割を行わない請求項２または３に記載の学習方法。
【請求項５】
前記特定の事象は、企業のデフォルトである請求項１〜４のいずれか一項に記載の学習方法。
【請求項６】
前記分割ステップでは、学習データに含まれる特徴量のうちカテゴリ特徴量を、ワンホットエンコーディングにより数値で表される特徴量に変換する請求項１〜５のいずれか一項に記載の学習方法。
【請求項７】
前記分割ステップでは、学習データに含まれる特徴量のうち少なくともいずれか１つの特徴量の値を対数値に変換する請求項１〜５のいずれか一項に記載の学習方法。
【請求項８】
前記学習ステップでは、ＧＢＤＴ（Ｇｒａｄｉｅｎｔ  Ｂｏｏｓｔｉｎｇ  Ｄｅｃｉｓｉｏｎ  Ｔｒｅｅ）により前記スコアリングモデルの学習を行う請求項１〜７のいずれか一項に記載の学習方法。
【請求項９】
前記学習ステップでは、ランダムフォレストにより前記スコアリングモデルの学習を行う請求項１〜７のいずれか一項に記載の学習方法。
【請求項１０】
前記学習ステップでは、ニューラルネットワークにより前記スコアリングモデルの学習を行う請求項１〜７のいずれか一項に記載の学習方法。
【請求項１１】
前記学習ステップでは、ロジスティック回帰により前記スコアリングモデルの学習を行う請求項１〜７のいずれか一項に記載の学習方法。
【請求項１２】
前記学習ステップでは、複数の機械学習のアルゴリズムのアンサンブル学習により前記スコアリングモデルの学習を行う請求項１〜７のいずれか一項に記載の学習方法。
【請求項１３】
コンピュータに、
１つの学習データを所定の単位期間ごとに分割し、該単位期間における特定の事象の発生の有無をしめすラベルを分割後の学習データに付与し、前記分割後の学習データの特徴量の値が、分割前の学習データの特徴量の値と一致させる分割ステップと、
前記分割後の学習データを用いて、スコアリングモデルの学習を行う学習ステップと、
を実行させるためのプログラム。
【請求項１４】
１つの学習データを所定の単位期間ごとに分割し、該単位期間における特定の事象の発生の有無をしめすラベルを分割後の学習データに付与し、前記分割後の学習データの特徴量の値が、分割前の学習データの特徴量の値と一致させる分割部と、
前記分割後の学習データを用いて、スコアリングモデルの学習を行う学習部と、
を備えた学習装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、学習方法、プログラムおよび学習装置に関する。
【背景技術】
【０００２】
企業のデフォルトリスクを推定する信用スコアリングモデルを用いて、融資または物品の貸し出し等を行う際の与信業務に極めて有用なツールである。特に、近年は金利が低下している影響で、ますます与信コストを下げることが求められている。そのため、信用スコアリングモデルの重要性は今後さらに高まっていくと考えられる。従来、信用スコアリングモデルを求めるための手法として、例えば、Ｌｏｇｉｓｔｉｃ  Ｒｅｇｒｅｓｓｉｏｎ（ＬＲ：ロジスティック回帰）のような統計的な手法が用いられてきた。
【０００３】
一方で、近年はＤｅｅｐ  Ｌｅａｒｎｉｎｇ（ＤＬ）（ディープラーニング、深層学習）を中心として、様々な機械学習の手法が提案されており、著しく精度が向上している。それに伴って、機械学習手法を使った信用スコアリングモデル（以下、単にスコアリングモデルと称する）を構築に関する報告が増えている。これらの報告の多くは、学習データの件数が１０００件前後の小規模なデータセットによって検証が行われている。しかし、一般的に機械学習で高い精度を出すためには、多数の学習データが必要である。また、ほとんどが個人の信用情報をもとに構築されたコンシューマ向けのスコアリングモデルであり、法人向けのスコアリングモデルに関する検証はあまり進んでいないのが現状である。海外ではわずかに報告があるものの、国内については我々の調査した範囲ではそのような検証を行ったという報告は確認できていない。
【０００４】
上述のように、学習データの件数が少ない場合には、学習により生成されるモデルの精度が低くなるところ、物体の加速度等の時系列の波形データを学習データとし、一定時間ずつずらしながら基準時間分の波形データを順に切り出すことによって、少ない量の学習データから、多くの学習データを生成する技術が開示されている（特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載された技術では、学習データの数自体は増加するが、単に波形データを切り出すことで得られたデータであるので、当該データが有する各特徴量が変更され、かつ、その変更に基づくラベルが新たに生成して付与されたデータとなるため、学習データとしての信頼性が低下し、結果的に学習の精度が低下するという問題がある。
【０００６】
本発明は、上述の問題点に鑑みてなされたものであって、分割することによって学習データを増やしつつ、学習の精度を向上させることができる学習方法、プログラムおよび学習装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、１つの学習データを所定の単位期間ごとに分割し、該単位期間における特定の事象の発生の有無をしめすラベルを分割後の学習データに付与し、前記分割後の学習データの特徴量の値が、分割前の学習データの特徴量の値と一致させる分割ステップと、前記分割後の学習データを用いて、スコアリングモデルの学習を行う学習ステップと、を有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、分割することによって学習データを増やしつつ、学習の精度を向上させることができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、決定木モデルの一例を示す図である。
【図２】図２は、実施形態に係る学習識別装置のモジュール構成の一例を示す図である。
【図３】図３は、ポインタメモリの構成の一例を示す図である。
【図４】図４は、ラーニングモジュールのモジュール構成の一例を示す図である。
【図５】図５は、実施形態に係る学習識別装置の初期化時のモジュールの動作を示す図である。
【図６】図６は、実施形態に係る学習識別装置のデプス０、ノード０のノードパラメータを決定する場合のモジュールの動作を示す図である。
【図７】図７は、実施形態に係る学習識別装置のデプス０、ノード０の分岐時のモジュールの動作を示す図である。
【図８】図８は、実施形態に係る学習識別装置のデプス１、ノード０のノードパラメータを決定する場合のモジュールの動作を示す図である。
【図９】図９は、実施形態に係る学習識別装置のデプス１、ノード０の分岐時のモジュールの動作を示す図である。
【図１０】図１０は、実施形態に係る学習識別装置のデプス１、ノード１のノードパラメータを決定する場合のモジュールの動作を示す図である。
【図１１】図１１は、実施形態に係る学習識別装置のデプス１、ノード１の分岐時のモジュールの動作を示す図である。
【図１２】図１２は、実施形態に係る学習識別装置のデプス１、ノード１のノードパラメータを決定の結果、分岐しない場合のモジュールの動作を示す図である。
【図１３】図１３は、実施形態に係る学習識別装置において決定木の学習が完了した場合に全サンプルデータのステート情報を更新するときのモジュールの動作を示す図である。
【図１４】図１４は、実施形態の変形例に係る学習識別装置のモデルメモリの構成の一例を示す図である。
【図１５】図１５は、実施形態の変形例に係る学習識別装置のクラシフィケーションモジュールの構成の一例を示す図である。
【図１６】図１６は、各アルゴリズムでスコアリングモデルを構築する動作を説明する図である。
【図１７】図１７は、ＧＢＤＴをスコアリングモデルに適用した場合の具体的な動作を説明する図である。
【図１８】図１８は、ＣＡＰ曲線を説明する図である。
【図１９】図１９は、各アルゴリズムにおいて学習データの件数と精度との関係の一例を示す図である。
【図２０】図２０は、アンサンブル学習およびＬＲのＣＡＰ曲線の一例を示す図である。
【図２１】図２１は、アンサンブル学習およびＬＲのＣＡＰ曲線の一例の一部を拡大した図である。
【図２２】図２２は、ワンホットエンコーディングを説明する図である。
【図２３】図２３は、実施形態に係る学習識別装置で用いる学習データの分割方法を説明する図である。
【図２４】図２４は、実施形態に係る学習識別装置において学習データを分割するための機能ブロックの一例の動作を説明する図である。
【図２５】図２５は、実施形態に係る学習識別装置の学習方法の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に、図１〜図２５を参照しながら、本発明に係る学習方法、プログラムおよび学習装置の実施形態を詳細に説明する。また、以下の実施形態によって本発明が限定されるものではなく、以下の実施形態における構成要素には、当業者が容易に想到できるもの、実質的に同一のもの、およびいわゆる均等の範囲のものが含まれる。さらに、以下の実施形態の要旨を逸脱しない範囲で構成要素の種々の省略、置換、変更および組み合わせを行うことができる。
【００１１】
（ＧＢＤＴのロジックについて）
高性能な機械学習のアルゴリズムとしてのＤＬにおいて、識別器は様々なハードロジックによる実装が試みられ、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）での処理と比較して電力効率が高いことが分かっている。ただし、ＤＬのうち特にＣＮＮ（Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ）の場合には、ＧＰＵのアーキテクチャが非常にマッチするため、速度的には、ロジック実装したＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）の方がＧＰＵに比べて、識別が速いというわけではない。それに対して、ＧＢＤＴ（Ｇｒａｄｉｅｎｔ  Ｂｏｏｓｔｉｎｇ  Ｄｅｃｉｓｉｏｎ  Ｔｒｅｅ：勾配ブースティング決定木）のような決定木系のアルゴリズムについて、ＦＰＧＡによるハードロジックの実装が試行され、ＧＰＵよりも高速な結果が報告されている。これは、後述するように、決定木系のアルゴリズムはそのデータ配列の特徴上、ＧＰＵのアーキテクチャに適さないためである。
【００１２】
また、学習に関しては、識別よりも世の中の検討は遅れており、ＤＬにおいてもほとんど現状報告がなく、決定木系では報告は少ない状況である。その中でもＧＢＤＴの学習は、現状どこからもまだ報告がなく、現在では未開拓の分野であると考えられる。精度のよい識別モデルを得るためには、学習時に特徴量の選択および設計、ならびに学習アルゴリズムのハイパーパラメータの選択を行うため、莫大な試行回数が必要となり、特に大量の学習データがある場合には、学習処理のスピードの高さは現実的に最終的なモデルの精度について非常に大きく作用する。さらに、ロボティクス、ＨＦＴ（Ｈｉｇｈ  Ｆｒｅｑｕｅｎｃｙ  Ｔｒａｄｉｎｇ)、およびＲＴＢ（Ｒｅａｌ−Ｔｉｍｅ  Ｂｉｄｄｉｎｇ）のように環境変化への追従のリアルタイム性が求められる分野に関しては、スピードの速さが性能へと直結する。そのため、精度の高いＧＢＤＴにおいて、高速な学習処理が出来た場合には、結果的にそれを利用したシステムの性能を大きく向上させることができると考えられる。
【００１３】
（ＧＢＤＴのＦＰＧＡに対する親和性）
決定木またはＧＢＤＴが、なぜＧＰＵでは速くならないか、および、なぜＦＰＧＡだと速くなるかについて、ＧＢＤＴのＦＰＧＡに対する親和性の観点から述べる。
【００１４】
まず、ＧＢＤＴがブースティングを用いたアルゴリズムであることの観点から述べる。決定木の中でも、アンサンブル学習を用いたＲａｎｄｏｍ  Ｆｏｒｅｓｔ（ＲＦ：ランダムフォレスト）の場合は、木の間に依存関係がないため、ＧＰＵでも並列化しやすいが、ＧＢＤＴはブースティングを用いて、多数の木を連結する方法であり、一個前の木の結果が出ないと、次の木の学習を開始することができない。そのため、処理としてシリアルな処理であり、一本ずつの木をいかに速く学習するかがキーとなる。これに対して、ＲＦでは、一本あたりは遅くても、並列に多数の木の学習を速くすることで、全体の学習を速くするという選択肢をとり得る。そのため、ＧＰＵを用いた場合にも次に述べるＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のアクセスレイテンシの問題をある程度隠蔽することが可能であると考えられる。
【００１５】
次に、ＧＰＵデバイスのＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）へのアクセス速度の限界（特にランダムアクセス)の観点から述べる。ＦＰＧＡに内蔵のＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）は、ＦＰＧＡ内のＲＡＭのバス幅を非常に大きくできるため、ミドルレンジのＦＰＧＡである、例えば、Ｘｉｌｉｎｘ社のＸＣ７ｋ３２５Ｔを用いた場合でも、以下の様に、３．２［ＴＢ／ｓｅｃ］に及ぶ。なお、内蔵ＲＡＭの容量は１６［Ｍｂ］である。
【００１６】
BRAM  445個  ×  36bit  ×  100MHz  ×  2ポート  =  445*36*2*100*10^6/10^12  =  3.2TB/sec
【００１７】
また、ハイエンドのＦＰＧＡである、Ｘｉｌｉｎｘ社のＶＵ９Ｐを用いた場合、６．９［ＴＢ／ｓｅｃ］である。なお、内蔵ＲＡＭの容量は２７０［Ｍｂ］である。
【００１８】
URAM  960個  ×  36bit  ×  100MHz  ×  2ポート  =  960*36*2*100*10^6/10^12  =  6.9TB/sec
【００１９】
これらの値は、クロック周波数を１００［ＭＨｚ］とした場合であるが、実際には、回路構成を工夫すると、２００〜５００［ＭＨｚ］程度での動作が考えられ、限界の帯域は数倍となる。これに対して、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）に接続されているＲＡＭは現世代では、ＤＤＲ４（Ｄｏｕｂｌｅ−Ｄａｔａ−Ｒａｔｅ４）であるが、下記のようにＤＩＭＭ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）１枚での帯域は２５．６［ＧＢ／ｓｅｃ］に留まる。４枚のインタリーブ構成（２５６ビット幅)にしたとしても、１００［ＧＢ／ｓｅｃ］程度である。ＤＤＲ４のチップ規格がＤＤＲ４−３２００（バス幅６４ビット、ＤＩＭＭ１枚）の場合、以下のようになる。
【００２０】
200MHz  ×  2(DDR)  ×  64  =  200*10^6*2*64/10^9  =  25.6GB/sec
【００２１】
ＧＰＵに搭載されているＧＤＤＲ５（Ｇｒａｐｈｉｃｓ  Ｄｏｕｂｌｅ−Ｄａｔａ−Ｒａｔｅ５)では、ＤＤＲ４の帯域よりも４倍程度大きくなっているが、それでも、最大で４００［ＧＢ／ｓｅｃ］程度である。
【００２２】
このように、ＦＰＧＡ内のＲＡＭと、ＧＰＵおよびＣＰＵでの外部メモリとは、帯域に大きな差がある。さらに、ここまでは、アドレスに対してシーケンシャルなアクセスの場合に関して述べてきたが、これ以上に大きく効いてくるのが、ランダムアクセス時のアクセスの時間である。ＦＰＧＡ内蔵のＲＡＭはＳＲＡＭであるため、シーケンシャルアクセスでもランダムアクセスでもアクセスレイテンシは１クロックであるが、ＤＤＲ４およびＧＤＤＲ５は、ＤＲＡＭであり、センスアンプの都合上、異なるカラムにアクセスした場合には、レイテンシが大きくなる。例えば、ＤＤＲ４のＲＡＭにおいて、代表的なＣＡＳレイテンシ（Ｃｏｌｕｍｎ  Ａｄｄｒｅｓｓ  Ｓｔｒｏｂｅ  ｌａｔｅｎｃｙ）は１６クロックであり、簡単には、シーケンシャルアクセスと比較して、１／１６しかスループットが出ない計算となる。
【００２３】
ＣＮＮの場合には、隣接した画素のデータを処理していくので、ランダムアクセスのレイテンシは大きく問題とならないが、決定木の場合には、分岐を続けていくと、枝ごとに元のデータのアドレスがどんどんと不連続になり、基本的にランダムアクセスとなる。そのため、データをＤＲＡＭに置いた場合、そのスループットがボトルネックとなり、速度が大きく劣化する。ＧＰＵにはそのような場合の性能劣化を抑えるために、キャッシュが存在するが、基本的に決定木はデータを総なめしていくアルゴリズムなので、データアクセスに局所性がなくキャッシュの効果が非常に効きにくい。なお、ＧＰＵの構造では、ＧＰＵには、演算コア（ＳＭ）毎に割り振られたＳＲＡＭからなるシェアードメモリが存在し、これを使うと高速な処理が可能である場合があるが、１個のＳＭあたり１６〜４８［ｋＢ］と少量であり、かつ、ＳＭ間をまたぐアクセスの場合には、大きなレイテンシが発生する。現在の高価で大規模なＧＰＵである、Ｎｖｉｄｉａ  Ｋ８０の場合のシェアードメモリの容量の試算を以下に示す。
【００２４】
K80  =  2  ×  13  SMX  =  26  SMX  =  4992  CUDAコア
26  ×  48  ×  8  =  9Mb
【００２５】
このように、数十万円する大規模なＧＰＵでもシェアードメモリはたった９［Ｍｂ］しか存在せず、容量が少な過ぎる。さらに、ＧＰＵの場合は、上述のように、処理を行うＳＭは他のＳＭのシェアードメモリには直接アクセスできないことに起因し、決定木の学習に利用する場合には、高速なコーディングが困難という制約も存在する。
【００２６】
以上のように、データがＦＰＧＡ上のＳＲＡＭに載るという前提で、ＦＰＧＡはＧＰＵに比べてＧＢＤＴの学習アルゴリズムを高速に実装可能であると考えられる。
【００２７】
（ＧＢＤＴのアルゴリズム）
図１は、決定木モデルの一例を示す図である。以下、式（１）〜式（２２）および図１を参照してＧＢＤＴの基本論理を説明する。
【００２８】
ＧＢＤＴは、教師あり学習の一手法であり、教師あり学習は以下の式（１）に示すように、学習データに対するフィッティングの良さを表すロス関数Ｌ（θ）と、学習したモデルの複雑さを表す正則化項Ω（θ）とからなる目的関数ｏｂｊ（θ）を何らかの尺度で最適化する処理である。正則化項Ω（θ）は、モデル（決定木）が複雑になり過ぎることを防ぐ、すなわち、汎化性能を高める役割を有する。
【数１】
2020035395.tif 000003
【００２９】
式（１）の第１項のロス関数は、例えば、以下の式（２）に示すように、サンプルデータ（学習データ）ごとに誤差関数ｌより計算されるロスを足し合わせたものである。ここでｎはサンプルデータ数、ｉはサンプル番号、ｙはラベル、モデルのｙ（ハット）は予測値である。
【数２】
2020035395.tif 000004
【００３０】
ここで、誤差関数ｌは、例えば、以下の式（３）および式（４）に示すような二乗誤差関数またはロジスティックロス関数等が用いられる。
【数３】
2020035395.tif 000005
【数４】
2020035395.tif 000006
【００３１】
また式（１）の第２項の正則化項Ω（θ）は、例えば、以下の式（５）に示すようなパラメータθの二乗ノルム等が用いられる。ここで、λは正則化の重みを表すハイパーパラメータである。
【数５】
2020035395.tif 000007
【００３２】
ここで、ＧＢＤＴの場合について考える。まず、ＧＢＤＴのｉ番目のサンプルデータｘｉに対する予測値は、以下の式（６）のように表現できる。
【数６】
2020035395.tif 000008
【００３３】
ここで、Ｋは決定木の総数、ｋは決定木の番号、ｆｋ（）はｋ番目の決定木の出力、ｘｉは入力されるサンプルデータの特徴量である。これより、ＧＢＤＴもＲＦ等と同じく、各決定木の出力を足し合わせたものを最終的な出力としていることがわかる。また、パラメータθは、θ＝｛ｆ１，ｆ２，・・・，ｆＫ｝である。以上より、ＧＢＤＴの目的関数は以下の式（７）のように表される。
【数７】
2020035395.tif 000009
【００３４】
上記の目的関数について学習を行うが、決定木モデルではニューラルネット等の学習で用いられるＳＧＤ（Ｓｔｏｃｈａｓｔｉｃ  Ｇｒａｄｉｅｎｔ  Ｄｅｓｃｅｎｔ：確率的勾配降下法）等の手法は使えない。そこでＡｄｄｉｔｉｖｅ  Ｔｒａｉｎｉｎｇ（ブースティング）を用いて学習を行う。Ａｄｄｉｔｉｖｅ  Ｔｒａｉｎｉｎｇでは、あるラウンド（学習回数、決定木モデル数）ｔにおける予測値を以下の式（８）のように表現する。
【数８】
2020035395.tif 000010
【００３５】
式（８）より、あるラウンドｔにおいて、決定木（の出力）ｆｔ（ｘｉ）を求める必要があることが分かる。逆に、あるラウンドｔでは他のラウンドについて考える必要はない。そこで、以下では、ラウンドｔについて考える。ラウンドｔでの目的関数は以下の式（９）のように表される。
【数９】
2020035395.tif 000011
【００３６】
ここで、ラウンドｔにおける目的関数のテーラー展開（二次の項までで打ち切り）は以下の式（１０）のようになる。
【数１０】
2020035395.tif 000012
【００３７】
ここで、式（１０）において、勾配情報ｇｉ、ｈｉは以下の式（１１）で表されるものである。
【数１１】
2020035395.tif 000013
【００３８】
式（１０）において定数項を無視すると、ラウンドｔでの目的関数は、以下の式（１２）のようになる。
【数１２】
2020035395.tif 000014
【００３９】
この式（１２）により、ラウンドｔでの目的関数は、誤差関数を１ラウンド前の予測値で１階微分および２階微分したもの、および正則化項で表されるので、１階微分および２階微分が求まる誤差関数ならば適用が可能なことが分かる。
【００４０】
ここで、決定木モデルについて考える。図１に決定木モデルの例を示す。決定木モデルは、ノードとリーフとから構成され、ノードではある分岐条件を元に入力を次のノードまたはリーフへ入力し、リーフにはリーフウェイトがあり、これが入力に対する出力となる。例えば、図１では、「リーフ２」のリーフウェイトＷ２が「−１」であることを示している。
【００４１】
また、決定木モデルは以下の式（１３）に示すように定式化される。
【数１３】
2020035395.tif 000015
【００４２】
式（１３）において、ｗはリーフウェイト、ｑは木の構造を表す。つまり、入力（サンプルデータｘ）は木の構造ｑによりいずれかのリーフに割り当てられ、そのリーフのリーフウェイトが出力されることになる。
【００４３】
ここで、決定木モデルの複雑さを以下の式（１４）のように定義する。
【数１４】
2020035395.tif 000016
【００４４】
式（１４）において、第１項はリーフの数による複雑さを、第２項はリーフウェイトの二乗ノルムである。また、γは正則化項の重要度を制御するハイパーパラメータである。以上より、ラウンドｔでの目的関数について、以下の式（１５）のように整理する。
【数１５】
2020035395.tif 000017
【００４５】
ただし、式（１５）において、Ｉｊ、Ｇｊ、Ｈｊは、以下の式（１６）のように表される。
【数１６】
2020035395.tif 000018
【００４６】
式（１５）より、あるラウンドｔでの目的関数はリーフウェイトｗに関する二次関数であり、一般に二次関数の最小値、およびその時の条件は、以下の式（１７）で表される。
【数１７】
2020035395.tif 000019
【００４７】
つまり、あるラウンドｔの決定木の構造ｑが決まったときに、その目的関数およびリーフウェイトは以下の式（１８）のようになる。
【数１８】
2020035395.tif 000020
【００４８】
ここまでで、あるラウンドで決定木の構造が決まったときのリーフウェイトの算出が可能となった。以降は、決定木の構造の学習手順について述べる。
【００４９】
決定木の構造の学習方法の１つに貪欲法（Ｇｒｅｅｄｙ  Ａｌｇｏｒｉｔｈｍ）がある。貪欲法では、木構造を深さ０からスタートし、各ノードで分岐スコア（Ｇａｉｎ）を計算し分岐するか否かを判断して決定木の構造を学習するアルゴリズムである。分岐スコアは以下の式（１９）で求められる。
【数１９】
2020035395.tif 000021
【００５０】
ここで、ＧＬ、ＨＬは左ノードに分岐したサンプルの勾配情報の和、ＧＲ、ＨＲは右ノードに分岐したサンプルの勾配情報の和、γは正則化項である。式（１９）の［］内の第１項は左ノードに分岐したサンプルデータのスコア（目的関数）、第２項は右ノードに分岐したサンプルデータのスコア、第３項は分岐しない場合のスコアであり、分岐による目的関数の改善度合いを表している。
【００５１】
上述の式（１９）に示す分岐スコアは、ある特徴量のあるしきい値で分岐した時の良さを表すが、これ単体ではどのような条件が最適か判断できない。そこで、貪欲法では、全ての特徴量の全てのしきい値候補で分岐スコアを求め、分岐スコアが最大となる条件を探すものである。貪欲法は上述のように、アルゴリズムとしては非常にシンプルであるが、全ての特徴量の全てのしきい値候補で分岐スコアを求めるため計算コストが高い。そこで後述するＸＧＢｏｏｓｔ等のライブラリでは、性能を維持しつつ、計算コストを低減する工夫がなされている。
【００５２】
（ＸＧＢｏｏｓｔについて）
以下、ＧＢＤＴのライブラリとして周知なＸＧＢｏｏｓｔについて述べる。ＸＧＢｏｏｓｔの学習アルゴリズムでは、しきい値候補の削減、および欠損値の扱いの２点について工夫がされている。
【００５３】
まず、しきい値候補の削減について説明する。上述した貪欲法は計算コストが高いという課題があった。ＸＧＢｏｏｓｔでは、Ｗｅｉｇｈｔｅｄ  Ｑｕａｎｔｉｌｅ  Ｓｋｅｔｃｈという方法でしきい値候補数を削減している。これは、分岐スコア（Ｇａｉｎ）の計算では、左右に別れるサンプルデータの勾配情報の和が重要であり、勾配情報の和が一定割合変化するしきい値のみを探索候補とするものである。具体的にはサンプルの二次勾配であるｈを用いている。特徴量の次元をｆとすると、特徴量およびサンプルデータの二次勾配ｈの集合を、以下の式（２０）のように表現する。
【数２０】
2020035395.tif 000022
【００５４】
また、ランク関数ｒｆを以下の式（２１）のように定義する。
【数２１】
2020035395.tif 000023
【００５５】
ここで、ｚはしきい値候補である。式（２１）に示すランク関数ｒｆは、あるしきい値候補より小さいサンプルデータの二次勾配の和が全サンプルデータの二次勾配の和に占める割合を意味している。最終的には、次元ｆで示される特徴量について、あるしきい値候補の集合｛ｓｆ１，ｓｆ２，・・・，ｓｆｌ｝を求める必要があり、これは以下の式（２２）で求める。
【数２２】
2020035395.tif 000024
【００５６】
ここでεはしきい値候補の削減度合いを決めるパラメータであり、おおよそ１／ε個のしきい値候補が得られる。
【００５７】
Ｗｅｉｇｈｔｅｄ  Ｑｕａｎｔｉｌｅ  Ｓｋｅｔｃｈは、決定木の最初のノードで（全サンプルデータに対して一括で）行うグローバルと、ノードごとに（当該ノードに割り当てられたサンプルについて毎回）行うローカルの２パターンが考えられる。汎化性能の面ではローカルの方がよいという結果が出ているので、ＸＧＢｏｏｓｔではローカルを採用している。
【００５８】
次に、欠損値の扱いについて説明する。入力されるサンプルデータの欠損値の扱いはＧＢＤＴおよび決定木に限らず、機械学習分野において一般的に有効な手法はない。欠損値を、平均値、中央値、もしくは協調フィルタ等で補完する方法、または欠損値が多い特徴量を除外する方法等があるが、性能の面で多くのケースで成功するわけではない。しかし、構造化データは欠損値を含むことが多く、実用上は何らかの対応が求められる。
【００５９】
ＸＧＢｏｏｓｔは、欠損値を含むサンプルデータを直接扱えるように学習アルゴリズムが工夫されている。これは、ノードの分岐スコアを求める際に、欠損値のデータを全て左右どちらかのノードに割り当てた時のスコアを求める方法である。また、上述のＷｅｉｇｈｔｅｄ  Ｑｕａｎｔｉｌｅ  Ｓｋｅｔｃｈを行う場合は、欠損値を含むサンプルデータを除外した集合に対してしきい値候補を求めるものとすればよい。
【００６０】
（ＬｉｇｈｔＧＢＭについて）
次に、ＧＢＤＴのライブラリであるＬｉｇｈｔＧＢＭについて述べる。ＬｉｇｈｔＧＢＭは前処理にｂｉｎｎｉｎｇと呼ばれる特徴量の量子化を採用し、分岐スコアの計算にＧＰＵを利用した高速なアルゴリズムを採用している。ＬｉｇｈｔＧＢＭはＸＧＢｏｏｓｔと比較して性能は同程度で学習速度が数倍速く、近年利用者が増えてきている。
【００６１】
まず、特徴量の量子化について説明する。分岐スコアは、データセットが大規模であれば大量のしきい値候補に対して計算が必要である。ＬｉｇｈｔＧＢＭは、学習の前処理として、特徴量を量子化することでしきい値候補数を削減している。また、量子化することでＸＧＢｏｏｓｔのようにノードごとにしきい値候補の値および数が変わることがなく、ＧＰＵを利用する場合に必須の処理となっている。
【００６２】
特徴量の量子化についてはｂｉｎｎｉｎｇという名前で様々な研究がなされており、ＬｉｇｈｔＧＢＭでは、特徴量をｋ個のビンに分割しており、しきい値候補はｋ個だけとなる。ｋは２５５、６３、１５等であり、データセットによって性能または学習速度は異なる。
【００６３】
また、特徴量を量子化したことで分岐スコアの計算が簡易になる。具体的には、しきい値候補が単に量子化された値になる。そのため、各特徴量について一次勾配および二次勾配のヒストグラムを作成し、各ビン（量子化された値）について分岐スコアを求めればよいことになる。これを特徴量ヒストグラムと呼んでいる。
【００６４】
次に、ＧＰＵを利用した分岐スコアの計算について説明する。分岐スコアの計算自体は特徴量が量子化されているため最大でも２５６パターンであるが、サンプルデータ数はデータセットによっては数万件を超えるため、ヒストグラム作成が学習時間に対して支配的となる。上述で述べたように、分岐スコアの計算では、特徴量ヒストグラムを求める必要がある。ＧＰＵを利用した場合、複数のスレッドが同一のヒストグラムを更新する必要があるが、このとき同一のビンを更新する可能性がある。そのため、アトミック演算を使用する必要があり、同一のビンを更新する割合が高いとパフォーマンスが低下する。そこで、ＬｉｇｈｔＧＢＭでは、ヒストグラムの作成の際に、一次勾配および二次勾配のどちらのヒストグラムから値を更新するかをスレッドごとに分けており、これによって同一のビンを更新する頻度を下げている。
【００６５】
（学習識別装置の構成）
図２は、実施形態に係る学習識別装置のモジュール構成の一例を示す図である。図３は、ポインタメモリの構成の一例を示す図である。図４は、ラーニングモジュールのモジュール構成の一例を示す図である。図２〜図４を参照しながら、本実施形態に係る学習識別装置１（学習装置）のモジュール構成について説明する。
【００６６】
図２に示すように、本実施形態に係る学習識別装置１は、ＣＰＵ１０と、ラーニングモジュール２０（学習部の一例）と、データメモリ３０と、モデルメモリ４０と、クラシフィケーションモジュール５０と、を備えている。このうち、ラーニングモジュール２０、データメモリ３０、モデルメモリ４０およびクラシフィケーションモジュール５０は、ＦＰＧＡにより構成されている。ＣＰＵ１０と、当該ＦＰＧＡとはバスを介してデータ通信可能となっている。なお、学習識別装置１は、図２に示す各構成要素だけではなく、他の構成要素、例えば、ＣＰＵ１０のワークエリアとなるＲＡＭ、ＣＰＵ１０が実行するプログラム等を記憶したＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、各種データ（プログラム等）を記憶した補助記憶装置、および外部装置と通信を行う通信Ｉ／Ｆ等を備えているものとしてもよい。
【００６７】
ＣＰＵ１０は、全体でＧＢＤＴの学習を制御する演算装置である。ＣＰＵ１０は、制御部１１を有する。制御部１１は、ラーニングモジュール２０、データメモリ３０、モデルメモリ４０およびクラシフィケーションモジュール５０の各モジュールを制御する。制御部１１は、ＣＰＵ１０で実行されるプログラムによって実現される。
【００６８】
ラーニングモジュール２０は、決定木を構成するノード毎の最適な特徴量の番号（以下、「特徴量番号」と称する場合がある）、およびしきい値を算出し、当該ノードがリーフの場合は、リーフウェイトを算出し、モデルメモリ４０に書き込むハードウェアモジュールである。また、図４に示すように、ラーニングモジュール２０は、ゲイン算出モジュール２１＿１、２１＿２、・・・、２１＿ｎと、最適条件導出モジュール２２と、を備えている。ここで、ｎは、少なくともサンプルデータ（学習データ、識別データ双方含む）の特徴量の数以上の数である。なお、ゲイン算出モジュール２１＿１、２１＿２、・・・、２１＿ｎについて、任意のゲイン算出モジュールを示す場合、または総称する場合、単に「ゲイン算出モジュール２１」と称するものとする。
【００６９】
ゲイン算出モジュール２１は、入力されるサンプルデータに含まれる特徴量のうち対応する特徴量について、各しきい値における分岐スコアを、上述の式（１９）を用いて算出するモジュールである。ここで、サンプルデータのうち学習データには、特徴量の他、ラベル（真の値）が含まれ、サンプルデータのうち識別データには、特徴量が含まれるが、ラベルは含まれていない。また、各ゲイン算出モジュール２１は、一度（１クロック）で入力されたすべての特徴量について、それぞれにそのヒストグラムを演算・格納するメモリを有し、全特徴量を並列に演算する。そのヒストグラムの結果より、各特徴量のゲインを並列に算出する。これによって、一度に、または同時に全特徴量に対する処理が可能となるので、学習処理の速度を飛躍的に向上させることが可能となる。このように、並列に全部の特徴量を読み出し、処理していく方法をフィーチャパラレル（Ｆｅａｔｕｒｅ  Ｐａｒａｌｌｅｌ）と呼ぶ。なお、この方法を実現するためには、データメモリは一度（１クロック）ですべての特徴量を読み出すことができる必要がある。そのため、通常の３２ビットや２５６ビット幅のデータ幅を持つメモリでは実現できない。また、ソフトウエアでは、通常ＣＰＵの一度に扱えるデータのビット数は６４ビットにとどまり、特徴量数が１００、各特徴量のビット数が８ビットだとしても８０００ビットが必要となるのに対して、全く対応できない。そのため、従来は、メモリのアドレス毎（例えば、ＣＰＵが扱える６４ビット幅）に別の特徴量を格納しておき、特徴量すべてでは、複数のアドレスにまたがって保存される方法が取られていた。それに対して、本方法では、メモリの１アドレスにすべての特徴量を格納し、１アクセスで全特徴量を読み出す点が新規の技術内容である。
【００７０】
上述のように、ＧＢＤＴでは決定木の学習についての並列化はできない。そのため、いかに一本ずつの決定木を速く学習するかが、学習処理の速度に関して支配的となる。一方、アンサンブルな学習を行うＲＦでは、決定木の間の依存関係は学習時にないので、決定木ごとの学習処理の並列化は容易であるが、一般的にＧＢＤＴに対して精度が劣る。上述のように、ＲＦよりも精度の高いＧＢＤＴの学習について、上述のようなフィーチャパラレル（Ｆｅａｔｕｒｅ  Ｐａｒａｌｌｅｌ）を適用することで、決定木の学習処理の速度を向上させることができる。
【００７１】
ゲイン算出モジュール２１は、算出した分岐スコアを最適条件導出モジュール２２へ出力する。
【００７２】
最適条件導出モジュール２２は、各ゲイン算出モジュール２１により出力された各特徴量に対応する各分岐スコアを入力し、分岐スコアが最大となる特徴量の番号（特徴量番号）およびしきい値を導出するモジュールである。最適条件導出モジュール２２は、導出した特徴量番号およびしきい値を、対応するノードの分岐条件データ（分岐条件）として、モデルメモリ４０へ書き込む。
【００７３】
データメモリ３０は、各種データを格納するＳＲＡＭである。データメモリ３０は、ポインタメモリ３１と、フィーチャメモリ３２と、ステートメモリ３３と、を備えている。
【００７４】
ポインタメモリ３１は、フィーチャメモリ３２で格納されているサンプルデータの格納先アドレスを記憶するメモリである。ポインタメモリ３１は、図３に示すように、バンクＡ（バンク領域）と、バンクＢ（バンク領域）とを有する。なお、バンクＡおよびバンクＢの２バンクに分割して、サンプルデータの格納先アドレスを記憶する動作の詳細については、図５〜図１３で後述する。なお、ポインタメモリ３１は、３つ以上のバンクを有することを制限するものではない。
【００７５】
フィーチャメモリ３２は、サンプルデータ（学習データ、識別データを含む）を格納するメモリである。
【００７６】
ステートメモリ３３は、ステート情報（上述のｗ、ｇ、ｈ）およびラベル情報を記憶するメモリである。
【００７７】
モデルメモリ４０は、決定木のノード毎の分岐条件データ（特徴量番号、しきい値）、そのノードがリーフであるか否かを示すリーフフラグ（フラグ情報）、および、そのノードがリーフである場合におけるリーフウェイトを記憶するＳＲＡＭである。
【００７８】
クラシフィケーションモジュール５０は、ノードごと、決定木ごとにサンプルデータを振り分けるハードウェアモジュールである。また、クラシフィケーションモジュール５０は、ステート情報（ｗ，ｇ，ｈ）を計算して、ステートメモリ３３に書き込む。
【００７９】
なお、クラシフィケーションモジュール５０は、上述のように学習処理におけるサンプルデータ（学習データ）の識別（分岐）だけでなく、サンプルデータ（識別データ）に対する識別処理においても、同一のモジュール構成で、当該識別データに対する識別を行うことが可能である。また、識別処理時にも、一括して特徴量をすべて読み込むことにより、クラシフィケーションモジュール５０による処理をパイプライン化することができ、クロックごとに１つのサンプルデータの識別をすることまで処理の高速化が可能となる。一方、上述のように一括で読み込むことができない場合、どこの特徴量が必要になるかは、各ノードに分岐してみないとわからないため、毎回該当する特徴量のアドレスにアクセスする形態ではパイプライン化ができないことになる。
【００８０】
また、上述のクラシフィケーションモジュール５０を複数備えるものとし、複数の識別データを分割（データパラレル（Ｄａｔａ  Ｐａｒａｌｌｅｌ））して、各クラシフィケーションモジュール５０に分配してそれぞれに識別処理をさせることによって、識別処理を高速化させることもできる。
【００８１】
（学習識別装置の学習処理）
以下、図５〜図１３を参照しながら、学習識別装置１の学習処理について具体的に説明する。
【００８２】
＜初期化＞
図５は、実施形態に係る学習識別装置の初期化時のモジュールの動作を示す図である。図５に示すように、まず、制御部１１は、ポインタメモリ３１を初期化する。例えば、図５に示すように、制御部１１は、ポインタメモリ３１のバンクＡに対して、サンプルデータ（学習データ）のフィーチャメモリ３２におけるアドレスを、学習データの数だけ順番に（例えば、アドレスの低い方から順に）書き込む。
【００８３】
なお、学習データのすべてを利用（すべてのアドレスを書き込み）することに限定されるものではなく、いわゆるデータサブサンプリングによって、所定の乱数に従った確率に基づいてランダムに選択した学習データを用いる（当該選択した学習データのアドレスを書き込む）ものとしてもよい。例えば、データサブサンプリングが０．５の場合、乱数に従った半分の確率で学習データの全アドレスのうち、半分のアドレスがポインタメモリ３１（ここではバンクＡ）に書き込まれるものとしてもよい。乱数の発生には、ＬＦＳＲ（Ｌｉｎｅａｒ  Ｆｅｅｄｂａｃｋ  Ｓｈｉｆｔ  Ｒｅｇｉｓｔｅｒ：線形帰還シフトレジスタ）により作成された擬似乱数が使用可能である。
【００８４】
また、学習に使用する学習データのうちすべての特徴量を使用することに限定されるものではなく、いわゆるフィーチャサブサンプルによって、上述と同様の乱数に従った確率に基づいてランダムに選択（例えば、半分を選択）した特徴量のみを使用するものとしてもよい。この場合、例えば、フィーチャサブサンプルにより選択された特徴量以外の特徴量のデータとしては、フィーチャメモリ３２から定数が出力されるものとすればよい。これによって、未知のデータ（識別データ）に対する汎化性能が向上するという効果がある。
【００８５】
＜デプス０・ノード０の分岐条件データの決定＞
図６は、実施形態に係る学習識別装置のデプス０、ノード０のノードパラメータを決定する場合のモジュールの動作を示す図である。なお、決定木の一番上の階層を「デプス０」、そこから下の階層を順に「デプス１」、「デプス２」、・・・と称するものとし、特定の階層の一番左のノードを「ノード０」、そこから右のノードを順に「ノード１」、「ノード２」、・・・と称するものとする。
【００８６】
図６に示すように、まず、制御部１１は、ラーニングモジュール２０へ開始アドレスおよび終了アドレスを送信し、トリガによりラーニングモジュール２０による処理を開始させる。ラーニングモジュール２０は、開始アドレスおよび終了アドレスに基づいて、ポインタメモリ３１（バンクＡ）から対象とする学習データのアドレスを指定し、当該アドレスによって、フィーチャメモリ３２から学習データ（特徴量）を読み出し、ステートメモリ３３からステート情報（ｗ，ｇ，ｈ）を読み出す。
【００８７】
この場合、上述したように、ラーニングモジュール２０の各ゲイン算出モジュール２１は、対応する特徴量のヒストグラムを計算し、それぞれ自身のＳＲＡＭに格納し、その結果に基づいて各しきい値における分岐スコアを算出する。そして、ラーニングモジュール２０の最適条件導出モジュール２２は、各ゲイン算出モジュール２１により出力された各特徴量に対応する各分岐スコアを入力し、分岐スコアが最大となる特徴量の番号（特徴量番号）およびしきい値を導出する。そして、最適条件導出モジュール２２は、導出した特徴量番号およびしきい値を、対応するノード（デプス０、ノード０）の分岐条件データとして、モデルメモリ４０へ書き込む。この際、最適条件導出モジュール２２は、ノード（デプス０、ノード０）からさらに分岐されることを示すためにリーフフラグを「０」として、当該ノードのデータ（分岐条件データの一部としてもよい）をモデルメモリ４０へ書き込む。
【００８８】
以上の動作について、ラーニングモジュール２０は、バンクＡに書き込まれた学習データのアドレスを順に指定し、当該アドレスによって、フィーチャメモリ３２から各学習データを読み出して行う。
【００８９】
＜デプス０・ノード０でのデータ分岐処理＞
図７は、実施形態に係る学習識別装置のデプス０、ノード０の分岐時のモジュールの動作を示す図である。
【００９０】
図７に示すように、制御部１１は、クラシフィケーションモジュール５０へ開始アドレスおよび終了アドレスを送信し、トリガによりクラシフィケーションモジュール５０による処理を開始させる。クラシフィケーションモジュール５０は、開始アドレスおよび終了アドレスに基づいて、ポインタメモリ３１（バンクＡ）から対象とする学習データのアドレスを指定し、当該アドレスによって、フィーチャメモリ３２から学習データ（特徴量）を読み出す。また、クラシフィケーションモジュール５０は、モデルメモリ４０から対応するノード（デプス０、ノード０）の分岐条件データ（特徴量番号、しきい値）を読み出す。そして、クラシフィケーションモジュール５０は、分岐条件データに従って、読み出したサンプルデータを、ノード（デプス０、ノード０）の左側に分岐させるか、右側に分岐させるかを判定し、その判定結果により、当該学習データのフィーチャメモリ３２におけるアドレスを、ポインタメモリ３１の読み出しバンク（ここではバンクＡ）（読み出し用のバンク領域）と異なる他方のバンク（書き込みバンク）（ここではバンクＢ）（書き込み用のバンク領域）に書き込む。
【００９１】
この際、クラシフィケーションモジュール５０は、当該ノードの左側に分岐すると判定した場合、当該学習データのアドレスを、図７に示すように、バンクＢのアドレスの低い方から順に書き込み、当該ノードの右側に分岐すると判定した場合、当該学習データのアドレスを、バンクＢのアドレスの高い方から順に書き込む。これによって、書き込みバンク（バンクＢ）では、ノードの左側に分岐した学習データのアドレスは、アドレスの低い方に、ノードの右側に分岐した学習データのアドレスは、アドレスの高い方にきれいに分けて書き込むことができる。なお、書き込みバンクにおいて、ノードの左側に分岐した学習データのアドレスは、アドレスの高い方に、ノードの右側に分岐した学習データのアドレスは、アドレスの低い方に分けて書き込むものとしてもよい。
【００９２】
このように、ポインタメモリ３１では、上述のように、バンクＡおよびバンクＢの２つが構成されており、交互に読み書きすることによって、ＦＰＧＡ内のＳＲＡＭの容量が限られている中、効率的にメモリを使用することが可能となる。単純には、フィーチャメモリ３２およびステートメモリ３３を、それぞれ２バンク構成する方法もあるが、一般的に、サンプルデータよりも、フィーチャメモリ３２でのアドレスを示すデータの方が小さいので、本実施形態のように、ポインタメモリ３１を準備しておき、間接的にアドレスを指定する方法の方が、メモリの使用量を削減することが可能となる。
【００９３】
以上の動作について、クラシフィケーションモジュール５０は、全学習データに対して分岐処理を行う。ただし、分岐処理が終了した後、ノード（デプス０、ノード０）の左側と右側とに同数の学習データが分けられるわけではないので、クラシフィケーションモジュール５０は、左側に分岐した学習データのアドレスと、右側に分岐した学習データのアドレスとの境界に対応する書き込みバンク（バンクＢ）におけるアドレス（中間アドレス）を、制御部１１に返す。当該中間アドレスは、次の分岐処理の際に使用される。
【００９４】
＜デプス１・ノード０の分岐条件データの決定＞
図８は、実施形態に係る学習識別装置のデプス１、ノード０のノードパラメータを決定する場合のモジュールの動作を示す図である。基本的には、図６に示した、デプス０・ノード０の分岐条件データの決定の処理と同様であるが、対象とするノードの階層が変わる（デプス０からデプス１になる）ので、ポインタメモリ３１のバンクＡおよびバンクＢの役割が反転する。具体的には、バンクＢが読み出しバンクとなり、バンクＡが書き込みバンク（図９参照）となる。
【００９５】
図８に示すように、制御部１１は、デプス０での処理でクラシフィケーションモジュール５０から受け取った中間アドレスに基づいて、ラーニングモジュール２０へ開始アドレスおよび終了アドレスを送信し、トリガによりラーニングモジュール２０による処理を開始させる。ラーニングモジュール２０は、開始アドレスおよび終了アドレスに基づいて、ポインタメモリ３１（バンクＢ）から対象とする学習データのアドレスを指定し、当該アドレスによって、フィーチャメモリ３２から学習データ（特徴量）を読み出し、ステートメモリ３３からステート情報（ｗ，ｇ，ｈ）を読み出す。具体的には、ラーニングモジュール２０は、図８に示すように、バンクＢの左側（アドレスが低い方）から中間アドレスまで順にアドレスを指定していく。
【００９６】
この場合、上述したように、ラーニングモジュール２０の各ゲイン算出モジュール２１は、読み出した学習データの各特徴量をそれぞれ自身のＳＲＡＭに格納して、各しきい値における分岐スコアを算出する。そして、ラーニングモジュール２０の最適条件導出モジュール２２は、各ゲイン算出モジュール２１により出力された各特徴量に対応する各分岐スコアを入力し、分岐スコアが最大となる特徴量の番号（特徴量番号）およびしきい値を導出する。そして、最適条件導出モジュール２２は、導出した特徴量番号およびしきい値を、対応するノード（デプス１、ノード０）の分岐条件データとして、モデルメモリ４０へ書き込む。この際、最適条件導出モジュール２２は、ノード（デプス１、ノード０）からさらに分岐されることを示すためにリーフフラグを「０」として、当該ノードのデータ（分岐条件データの一部としてもよい）をモデルメモリ４０へ書き込む。
【００９７】
以上の動作について、ラーニングモジュール２０は、バンクＢの左側（アドレスが低い方）から中間アドレスまで順に指定し、当該アドレスによって、フィーチャメモリ３２から各学習データを読み出して行う。
【００９８】
＜デプス１・ノード０でのデータ分岐処理＞
図９は、実施形態に係る学習識別装置のデプス１、ノード０の分岐時のモジュールの動作を示す図である。
【００９９】
図９に示すように、制御部１１は、デプス０での処理でクラシフィケーションモジュール５０から受け取った中間アドレスに基づいて、クラシフィケーションモジュール５０へ開始アドレスおよび終了アドレスを送信し、トリガによりクラシフィケーションモジュール５０による処理を開始させる。クラシフィケーションモジュール５０は、開始アドレスおよび終了アドレスに基づいて、ポインタメモリ３１（バンクＢ）の左側から対象とする学習データのアドレスを指定し、当該アドレスによって、フィーチャメモリ３２から学習データ（特徴量）を読み出す。また、クラシフィケーションモジュール５０は、モデルメモリ４０から対応するノード（デプス１、ノード０）の分岐条件データ（特徴量番号、しきい値）を読み出す。そして、クラシフィケーションモジュール５０は、分岐条件データに従って、読み出したサンプルデータを、ノード（デプス１、ノード０）の左側に分岐させるか、右側に分岐させるかを判定し、その判定結果により、当該学習データのフィーチャメモリ３２におけるアドレスを、ポインタメモリ３１の読み出しバンク（ここではバンクＢ）（読み出し用のバンク領域）と異なる他方のバンク（書き込みバンク）（ここではバンクＡ）（書き込み用のバンク領域）に書き込む。
【０１００】
この際、クラシフィケーションモジュール５０は、当該ノードの左側に分岐すると判定した場合、当該学習データのアドレスを、図９に示すように、バンクＡのアドレスの低い方（受信した開始アドレス）から順に書き込み、当該ノードの右側に分岐すると判定した場合、当該学習データのアドレスを、バンクＡのアドレスの高い方（受信した終了アドレスであって前回の中間アドレス）から順に書き込む。これによって、書き込みバンク（バンクＡ）では、ノードの左側に分岐した学習データのアドレスは、アドレスの低い方に、ノードの右側に分岐した学習データのアドレスは、アドレスの高い方にきれいに分けて書き込むことができる。なお、書き込みバンクにおいて、ノードの左側に分岐した学習データのアドレスは、アドレスの高い方に、ノードの右側に分岐した学習データのアドレスは、アドレスの低い方に分けて書き込むものとしてもよい。
【０１０１】
以上の動作について、クラシフィケーションモジュール５０は、全学習データのうちバンクＢの中間アドレスよりも左側に書き込まれたアドレスで指定される学習データに対して分岐処理を行う。ただし、分岐処理が終了した後、ノード（デプス１、ノード０）の左側と右側とに同数の学習データが分けられるわけではないので、クラシフィケーションモジュール５０は、左側に分岐した学習データのアドレスと、右側に分岐した学習データのアドレスとの中間に対応する書き込みバンク（バンクＡ）におけるアドレス（中間アドレス）を、制御部１１に返す。当該中間アドレスは、次の分岐処理の際に使用される。
【０１０２】
＜デプス１・ノード１の分岐条件データの決定＞
図１０は、実施形態に係る学習識別装置のデプス１、ノード１のノードパラメータを決定する場合のモジュールの動作を示す図である。なお、図８の場合と同様に、デプス１・ノード０のノードと同じ階層なので、バンクＢが読み出しバンクとなり、バンクＡが書き込みバンク（図１１参照）となる。
【０１０３】
図１０に示すように、制御部１１は、デプス０での処理でクラシフィケーションモジュール５０から受け取った中間アドレスに基づいて、ラーニングモジュール２０へ開始アドレスおよび終了アドレスを送信し、トリガによりラーニングモジュール２０による処理を開始させる。ラーニングモジュール２０は、開始アドレスおよび終了アドレスに基づいて、ポインタメモリ３１（バンクＢ）から対象とする学習データのアドレスを指定し、当該アドレスによって、フィーチャメモリ３２から学習データ（特徴量）を読み出し、ステートメモリ３３からステート情報（ｗ，ｇ，ｈ）を読み出す。具体的には、ラーニングモジュール２０は、図１０に示すように、バンクＢの右側（アドレスが高い方）から中間アドレスまで順にアドレスを指定していく。
【０１０４】
この場合、上述したように、ラーニングモジュール２０の各ゲイン算出モジュール２１は、読み出した学習データの各特徴量をそれぞれ自身のＳＲＡＭに格納して、各しきい値における分岐スコアを算出する。そして、ラーニングモジュール２０の最適条件導出モジュール２２は、各ゲイン算出モジュール２１により出力された各特徴量に対応する各分岐スコアを入力し、分岐スコアが最大となる特徴量の番号（特徴量番号）およびしきい値を導出する。そして、最適条件導出モジュール２２は、導出した特徴量番号およびしきい値を、対応するノード（デプス１、ノード１）の分岐条件データとして、モデルメモリ４０へ書き込む。この際、最適条件導出モジュール２２は、ノード（デプス１、ノード１）からさらに分岐されることを示すためにリーフフラグを「０」として、当該ノードのデータ（分岐条件データの一部としてもよい）をモデルメモリ４０へ書き込む。
【０１０５】
以上の動作について、ラーニングモジュール２０は、バンクＢの右側（アドレスが高い方）から中間アドレスまで順に指定し、当該アドレスによって、フィーチャメモリ３２から各学習データを読み出して行う。
【０１０６】
＜デプス１・ノード１でのデータ分岐処理＞
図１１は、実施形態に係る学習識別装置のデプス１、ノード１の分岐時のモジュールの動作を示す図である。
【０１０７】
図１１に示すように、制御部１１は、デプス０での処理でクラシフィケーションモジュール５０から受け取った中間アドレスに基づいて、クラシフィケーションモジュール５０へ開始アドレスおよび終了アドレスを送信し、トリガによりクラシフィケーションモジュール５０による処理を開始させる。クラシフィケーションモジュール５０は、開始アドレスおよび終了アドレスに基づいて、ポインタメモリ３１（バンクＢ）の右側から対象とする学習データのアドレスを指定し、当該アドレスによって、フィーチャメモリ３２から学習データ（特徴量）を読み出す。また、クラシフィケーションモジュール５０は、モデルメモリ４０から対応するノード（デプス１、ノード１）の分岐条件データ（特徴量番号、しきい値）を読み出す。そして、クラシフィケーションモジュール５０は、分岐条件データに従って、読み出したサンプルデータを、ノード（デプス１、ノード１）の左側に分岐させるか、右側に分岐させるかを判定し、その判定結果により、当該学習データのフィーチャメモリ３２におけるアドレスを、ポインタメモリ３１の読み出しバンク（ここではバンクＢ）（読み出し用のバンク領域）と異なる他方のバンク（書き込みバンク）（ここではバンクＡ）（書き込み用のバンク領域）に書き込む。
【０１０８】
この際、クラシフィケーションモジュール５０は、当該ノードの左側に分岐すると判定した場合、当該学習データのアドレスを、図１１に示すように、バンクＡのアドレスの低い方（受信した開始アドレスであって前回の中間アドレス）から順に書き込み、当該ノードの右側に分岐すると判定した場合、当該学習データのアドレスを、バンクＡのアドレスの高い方（受信した終了アドレス）から順に書き込む。これによって、書き込みバンク（バンクＡ）では、ノードの左側に分岐した学習データのアドレスは、アドレスの低い方に、ノードの右側に分岐した学習データのアドレスは、アドレスの高い方にきれいに分けて書き込むことができる。なお、書き込みバンクにおいて、ノードの左側に分岐した学習データのアドレスは、アドレスの高い方に、ノードの右側に分岐した学習データのアドレスは、アドレスの低い方に分けて書き込むものとしてもよい。この場合、図９における動作も合わせる必要がある。
【０１０９】
以上の動作について、クラシフィケーションモジュール５０は、全学習データのうちバンクＢの中間アドレスよりも右側に書き込まれたアドレスで指定される学習データに対して分岐処理を行う。ただし、分岐処理が終了した後、ノード（デプス１、ノード１）の左側と右側とに同数の学習データが分けられるわけではないので、クラシフィケーションモジュール５０は、左側に分岐した学習データのアドレスと、右側に分岐した学習データのアドレスとの中間に対応する書き込みバンク（バンクＡ）におけるアドレス（中間アドレス）を、制御部１１に返す。当該中間アドレスは、次の分岐処理の際に使用される。
【０１１０】
＜デプス１・ノード１の分岐条件データの決定時に分岐しない場合＞
図１２は、実施形態に係る学習識別装置のデプス１、ノード１のノードパラメータを決定の結果、分岐しない場合のモジュールの動作を示す図である。なお、図８の場合と同様に、デプス１・ノード０のノードと同じ階層なので、バンクＢが読み出しバンクとなる。
【０１１１】
図１２に示すように、制御部１１は、デプス０での処理でクラシフィケーションモジュール５０から受け取った中間アドレスに基づいて、ラーニングモジュール２０へ開始アドレスおよび終了アドレスを送信し、トリガによりラーニングモジュール２０による処理を開始させる。ラーニングモジュール２０は、開始アドレスおよび終了アドレスに基づいて、ポインタメモリ３１（バンクＢ）から対象とする学習データのアドレスを指定し、当該アドレスによって、フィーチャメモリ３２から学習データ（特徴量）を読み出し、ステートメモリ３３からステート情報（ｗ，ｇ，ｈ）を読み出す。具体的には、ラーニングモジュール２０は、図１２に示すように、バンクＢの右側（アドレスが高い方）から中間アドレスまで順にアドレスを指定していく。
【０１１２】
ラーニングモジュール２０は、算出した分岐スコア等から、これ以上ノード（デプス１、ノード１）から分岐しないと判断した場合、リーフフラグを「１」として、当該ノードのデータ（分岐条件データの一部としてもよい）をモデルメモリ４０に書き込むと共に、制御部１１にも当該ノードのリーフフラグが「１」であることを送信する。これによって、ノード（デプス１、ノード１）から下の階層には分岐しないことが認識される。さらに、ラーニングモジュール２０は、ノード（デプス１、ノード１）のリーフフラグが「１」である場合、特徴量番号およびしきい値の代わりに、リーフウェイト（ｗ）（分岐条件データの一部としてもよい）をモデルメモリ４０に書き込む。これにより、モデルメモリ４０の容量を別々に持つよりも小さくすることができる。
【０１１３】
以上の図６〜図１２で示した処理を、階層（デプス）毎に進めていくと、全体の決定木が完成する（決定木が学習される）。
【０１１４】
＜決定木の学習が完了した場合＞
図１３は、実施形態に係る学習識別装置において決定木の学習が完了した場合に全サンプルデータのステート情報を更新するときのモジュールの動作を示す図である。
【０１１５】
ＧＢＤＴを構成する１つの決定木の学習が完了した場合、次の決定木へのブースティング（ここではグラディエントブースティング）の際に使用するため、各学習データの誤差関数に対応する一次勾配ｇ、二次勾配ｈ、および各学習データに対するリーフウェイトｗを算出する必要がある。図１３に示すように、制御部１１は、トリガによりクラシフィケーションモジュール５０による上述の計算を開始させる。クラシフィケーションモジュール５０は、全学習データに対して、全デプス（階層）のノードに対する分岐判定の処理を行い、各学習データに対応するリーフウェイトを算出する。そして、クラシフィケーションモジュール５０は、算出したリーフウェイトに対して、ラベル情報を基に、ステート情報（ｗ、ｇ、ｈ）を算出し、元のステートメモリ３３のアドレスに書き戻す。このように、更新されたステート情報を利用して、次の決定木の学習が行われる。
【０１１６】
以上のように、本実施形態に係る学習識別装置１において、ラーニングモジュール２０は、入力されたサンプルデータの各特徴量を読み込むためのメモリ（例えば、ＳＲＡＭ）をそれぞれ備えている。これによって、１アクセスでサンプルデータの全特徴量を読み出すことができ、各ゲイン算出モジュール２１により、一度に全特徴量に対する処理が可能となるので、決定木の学習処理の速度を飛躍的に向上させることが可能となる。
【０１１７】
また、本実施形態に係る学習識別装置１において、ポインタメモリ３１では、バンクＡおよびバンクＢの２つが構成されており、交互に読み書きするものとしている。これによって、効率的にメモリを使用することが可能となる。単純には、フィーチャメモリ３２およびステートメモリ３３を、それぞれ２バンク構成する方法もあるが、一般的に、サンプルデータよりも、フィーチャメモリ３２でのアドレスを示すデータの方が小さいので、本実施形態のように、ポインタメモリ３１を準備しておき、間接的にアドレスを指定する方法の方が、メモリ容量を節約することが可能となる。また、クラシフィケーションモジュール５０は、ノードの左側に分岐すると判定した場合、学習データのアドレスを、２つのバンクのうち書き込みバンクのアドレスの低い方から順に書き込み、当該ノードの右側に分岐すると判定した場合、当該学習データのアドレスを、書き込みバンクのアドレスの高い方から順に書き込む。これによって、書き込みバンクでは、ノードの左側に分岐した学習データのアドレスは、アドレスの低い方に、ノードの右側に分岐した学習データのアドレスは、アドレスの高い方にきれいに分けて書き込むことができる。
【０１１８】
（変形例に係るモデルメモリおよびクラシフィケーションモジュールの構成）
図１４は、変形例に係る学習識別装置のモデルメモリの構成の一例を示す図である。図１４を参照しながら、本変形例に係る学習識別装置１におけるモデルメモリ４０において、決定木のデプス（階層）毎にメモリが備えられた構成について説明する。
【０１１９】
図１４に示すように、本変形例に係る学習識別装置１のモデルメモリ４０は、学習された決定木のモデルデータについてデプス（階層）毎にデータ（具体的には分岐条件データ）を格納するためのデプス０用メモリ４１＿１、デプス１用メモリ４１＿２、・・・、デプス（ｍ−１）用メモリ４１＿ｍを有する。ここで、ｍは、少なくとも決定木のモデルのデプス（階層）数以上の数である。すなわち、モデルメモリ４０は、学習された決定木のモデルデータについてデプス（階層）毎にデータ（デプス０ノードデータ、デプス１ノードデータ、・・・、デプス（ｍ−１）ノードデータ）を同時に取り出すための独立したポートを有する、ということになる。これによって、クラシフィケーションモジュール５０は、決定木における最初のノードでの分岐結果に基づき、次のノードに対応するデータ（分岐条件データ）を読み出すことを、全デプス（階層）で並列に行い、途中にメモリを介さずに、１つのサンプルデータ（識別データ）に対して、１クロックで同時に各デプス（階層）での分岐処理を実行（パイプライン処理）することが可能となる。これによって、クラシフィケーションモジュール５０における識別処理は、サンプルデータ数分だけの時間だけで済むことになり、識別処理の速度を飛躍的に向上させることができる。これに対して、従来の技術では、ノード毎に新しいメモリ領域にサンプルデータをコピーしていくため、メモリの読み書きの時間だけ速度に影響し、（サンプルデータ数×デプス（階層）数）の識別処理の時間となるので、上述のように本変形例に係る識別処理の方が大幅に優位となる。
【０１２０】
図１５は、変形例に係る学習識別装置のクラシフィケーションモジュールの構成の一例を示す図である。図１５に示すように、クラシフィケーションモジュール５０は、ノード０判別器５１＿１、ノード１判別器５１＿２、ノード２判別器５１＿３、・・・を有する。フィーチャメモリ３２からは、１クロックに１つのサンプルデータが特徴量として供給される。図１５に示すように、特徴量は、まずノード０判別器５１＿１に入力され、ノード０判別器５１＿１は、対応するモデルメモリ４０のデプス０用メモリ４１＿１からそのノードのデータ（デプス０ノードデータ）（右に行くか、左に行くかの条件、および使用する特徴量番号）を受け取る。ノード０判別器５１＿１では、その条件に従い、対応するサンプルデータが右に行くか左に行くかが判別される。なお、ここではデプス用メモリ（デプス０用メモリ４１＿１、デプス１用メモリ４１＿２、デプス２用メモリ４１＿３、・・・）はそれぞれレイテンシが１クロックあるとしている。ノード０判別器５１＿１の結果により、次のデプス１用メモリ４１＿２の内、何番目のノードに行くかがアドレス指定され、対応するノードのデータ（デプス１ノードデータ）が抽出され、ノード１判別器５１＿２に入力される。
【０１２１】
デプス０用メモリ４１＿１のレイテンシは１クロックであるため、同じように特徴量も１クロックの遅延を入れて、ノード１判別器５１＿２に入力される。また、同じクロックで次のサンプルデータの特徴量がノード０判別器５１＿１に入力されている。このようにして、パイプライン処理で識別を行うことにより、デプス毎にメモリが同時に出力されている前提で、１つの決定木全体として、１クロックで１つのサンプルデータを識別することが可能である。なお、デプス０用メモリ４１＿１は、デプス０ではノードは１つしかないので、１つのアドレスのみでよく、デプス１用メモリ４１＿２は、デプス１ではノードは２つあるので、２つのアドレスが必要であり、同じように、デプス２用メモリ４１＿３は、４つのアドレスが必要であり、デプス３用メモリ（図示せず）は、８つのアドレスが必要となる。なお、このクラシフィケーションモジュール５０は木全体の識別を行うものであるが、ノードの学習時には、ノード０判別器５１＿１のみを用いて学習を行うことで同じ回路を流用して、回路規模を小さくすることができる。
【０１２２】
（各アルゴリズムによるスコアリングモデルの構築動作）
図１６は、各アルゴリズムでスコアリングモデルを構築する動作を説明する図である。図１７は、ＧＢＤＴをスコアリングモデルに適用した場合の具体的な動作を説明する図である。例えば、金融機関等は、実務でも用いる信用スコアリングモデル等のスコアリングモデルについて公表しないため、具体的にどういった手法が多く使われているかは不明であるが、Ｌｏｇｉｓｔｉｃ  Ｒｅｇｒｅｓｓｉｏｎ、またはＬｏｇｉｓｔｉｃ  Ｒｅｇｒｅｓｓｉｏｎと決定木（Ｄｅｃｉｓｉｏｎ  Ｔｒｅｅ）とを組み合わせたハイブリッドモデルが多いと考えられる。
【０１２３】
以下、学習データとして、リース先企業の与信判断のための各種特徴量を含むデータを想定する。特徴量として、売上高等の数値変数の他、業種等のカテゴリを示す特徴量（カテゴリ特徴量）が含まれており、１００種以上の特徴量が含まれる場合もあり得る。また、各リース先企業に対して、必ずしもすべての特徴量が取得できるわけではないので、欠損値を含んでいることもある。
【０１２４】
本実施形態では、上述のようにＧＤＢＴを実行する構成を説明したが、スコアリングモデルを構築するためのアルゴリズム（機械学習手法）として、さらに、公知のＲａｎｄｏｍ  Ｆｏｒｅｓｔ（ＲＦ）、ＮＮ（Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ、ニューラルネットワーク）、およびベンチマークとしてのＬｏｇｉｓｔｉｃ  Ｒｅｇｒｅｓｓｉｏｎ（ＬＲ）を用いることを想定する。また、本実施形態に係る学習識別装置１は、上述の各アルゴリズムに基づく学習処理が可能であるものとする。ここでいう各アルゴリズムに基づく学習処理とは、各アルゴリズム単体による学習、および、いくつかのアルゴリズムのアンサンブル学習を含む。また、用いるサンプルデータのうち、例えば、６：３：１の割合で学習用、バリデーション用、および識別用のデータに分ける。学習用のデータ（学習データ）は、スコアリングモデルを構築するための学習に使用し、バリデーション用のデータ（バリデーションデータ）は、パラメータの最適化に用い、テスト用のデータ（識別データ）は、評価用に用いる。
【０１２５】
また、各アルゴリズム（機械学習手法）には、ハイパーパラメータが複数存在する。最適なパラメータはデータセットによって異なるため、パラメータの最適化を行う必要がある。パラメータの探索の手法としては、いくつかの方法が知られているが、例えば、Ｂａｙｅｓｉａｎ  Ｏｐｔｉｍｉｚａｔｉｏｎ（ベイズ最適化）を用いるものとする。
【０１２６】
また、上述のような各種アルゴリズムを用いた学習において、リース契約後にデフォルト（債務不履行）したか否かを示すフラグをラベルとする教師データを学習データとする。また、アンサンブル学習には、Ｓｔａｃｋｅｄ  Ｇｅｎｅｒａｌｉｚａｔｉｏｎを用いるものとする。Ｓｔａｃｋｅｄ  Ｇｅｎｅｒａｌｉｚａｔｉｏｎは、異なる機械学習モデルを多層にしてアンサンブル学習を行う手法である。学習に使用する学習データをｎ−ｆｏｌｄに分割（分割方法は後述する）し、各機械学習手法によって、ｏｕｔ−ｏｆ−ｆｏｌｄデータに対する予測値を算出する。図１６に示すように、こうして得られた予測値を１層目（レイヤ１）の出力として、次の層の特徴量として入力する。本実施形態では、図１６に示すレイヤ構成で学習を行うものとする。すなわち、２層目（レイヤ２）の出力の平均値が、最終的な出力値となる。
【０１２７】
次に、図１７を参照しながら、ＧＢＤＴをスコアリングモデルに適用した場合の動作例を説明する。各企業に対応する学習データについて、与信判断対象となる企業の資本金、売上等の情報（特徴量）を基に、多数の決定木を合わせて、デフォルト確率（所定期間においてデフォルトする確率）を予測していく。
【０１２８】
図１７に示すように、決定木の各ノードでは、学習で決定された分岐条件（特徴量番号、しきい値）に基づいて、各学習データが分岐される。例えば、「売上」と記載されたノードでは、「売上」という特徴量について、「１０億円」というしきい値により左右に分岐されることを示す。最初の決定木では、「Ｄ社」の学習データのラベルが、Ｄ社がデフォルトしたことを示す「デフォルト」であるにも関わらず、非デフォルトに分類されているので、アンサンブル学習に基づき、このような適切に分類できなかった学習データを、別に生成された決定木により分類する。このような多数の決定木を合わせてデフォルト確率が予測される。
【０１２９】
（スコアリングモデルの評価）
図１８は、ＣＡＰ曲線を説明する図である。図１８を参照しながら、まず、学習データを用いた学習により生成されたスコアリングモデルを適用して得られる予測結果に対する評価として用いる、ＣＡＰ（Ｃｕｍｕｌａｔｉｖｅ  Ａｃｃｕｒａｃｙ  Ｐｒｏｆｉｌｅｓ）曲線、および、ＡＲ（Ａｃｃｕｒａｃｙ  Ｒａｔｉｏ）値について説明する。
【０１３０】
ＣＡＰ曲線は、図１８に示すように、横軸に、学習データをデフォルト確率順に並べた場合の当該確率の上位ｘ件の全体（Ｎ件）に占める割合ｘ／Ｎとし、縦軸に、上位ｘ件のうち実際にデフォルトした件数Ｎｘの全体のデフォルト件数（Ｎｄ件）に占める割合Ｎｘ／Ｎｄとしてプロットした線である。図１８における、Ｂの曲線が典型的なＣＡＰ曲線の例である。また、モデルとしての精度がほとんどない場合はＣのような直線が描かれ、モデルに基づく予測が完全に正解であればＡのような形状の線が描かれる。
【０１３１】
また、ＣＡＰ曲線がＢの曲線であるとした場合、ＡとＣとで囲まれた部分の面積に対するＢとＣとで囲まれた部分の面積の割合がＡＲ値となる。ここで、上述の各機械学習手法をアンサンブル学習を用いず、単体で学習を行いスコアリングモデルを生成した場合のＡＲ値の結果例を、下記の（表１）に示す。
【表１】
2020035395.tif 000025
【０１３２】
（表１）に示すように、他の機械学習手法と比較して、ＧＢＤＴが著しく高いＡＲ値（テストデータに対してＡＲ値が０．６１９）を示して高精度となっている。これに対して、ＲＦおよびＮＮは、既存のＬＲと比較してほとんど精度に差が出ない結果となる。（表１）が示す結果に基づくと、ＧＢＤＴは、その他の機械学習手法と比較して、０．１程度上回っているため、スコアリングモデルの構築に適したアルゴリズムであると判断できる。
【０１３３】
図１９は、各アルゴリズムにおいて学習データの件数と精度との関係の一例を示す図である。図１９を参照しながら、各アルゴリズム（機械学習方法）で学習データに基づくスコアリングモデルの生成を行った場合の、学習データの件数と、精度（ＡＲ値）との関係について説明する。
【０１３４】
一般的に、機械学習によって生成されるモデルの精度は、学習データの件数が多いほど向上する。特に、ブースティングおよびＮＮ（Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ）は、十分な精度を得るために大量の学習データが必要となることも多い。したがって、学習データの件数が少ない場合には、生成されるモデルの精度が低下し、異なる結果になる可能性がある。そこで、約９万件という大量の学習データを使用して、学習に使用する学習データの件数が精度にどのように影響を及ぼすかを、モデルの生成に使用する学習データの件数を変えて学習を行い、各アルゴリズム（ＧＢＤＴ、ＲＦ、ＬＲ、ＮＮ）について、当該件数とＡＲ値との関係をプロットした結果を図１９に示す。
【０１３５】
図１９に示すグラフでは、横軸が学習データの件数、縦軸がＡＲ値を示す。いずれのアルゴリズムでも、学習データの件数が増えるほど、モデルの精度（ＡＲ値）が高くなる。学習データの件数が少ない場合も多い場合も、総じてＧＢＤＴにより生成されたモデルの精度が高い。特に、ＧＤＢＴは、学習データの件数が１万件を超えたあたりから、他のアルゴリズムとの精度の差が顕著になっている。一方、学習データの件数が少ない場合には、ＧＢＤＴとＲＦとの比較では、あまり精度に差がない。ＧＢＤＴの優位性を活かすためには、一定以上の学習データの件数が必要であることが把握される。
【０１３６】
次に、Ｓｔａｃｋｅｄ  Ｇｅｎｅｒａｌｉｚａｔｉｏｎを用いたアンサンブル学習、およびＧＤＢＴ単体でそれぞれスコアリングモデルを生成した場合のＡＲ値の結果例を、下記の（表２）に示す。
【表２】
2020035395.tif 000026
【０１３７】
（表２）に示すように、アンサンブル学習の方がＧＢＤＴ単体と比較して識別データにおけるＡＲ値が０．０１１高く、アンサンブル学習の方が有効性が高いことが示されている。また、Ｓｔａｃｋｅｄ  Ｇｅｎｅｒａｌｉｚａｔｉｏｎでは、層数、および学習器の種類等がハイパーパラメータとなっており、このパラメータを変えることによって、アンサンブル学習としての多数のバリエーションが考えられる。上述の（表２）が示す結果はあくまでもその一例であるので、さらにモデルの精度を高めることができる可能性がある。
【０１３８】
図２０は、アンサンブル学習およびＬＲのＣＡＰ曲線の一例を示す図である。図２１は、アンサンブル学習およびＬＲのＣＡＰ曲線の一例の一部を拡大した図である。図２０および図２１を参照しながら、従来の機械学習手法であるＬＲを、アンサンブル学習に置き換えることで得られる効果について説明する。
【０１３９】
図２０および図２１において、仮に、デフォルト確率について上位１０％の企業を謝絶した場合を考えると、横軸が０．１のとき、縦軸の値が、デフォルトした全企業のうち何％を謝絶できたかを示す値となる。図２１に示すように、ＬＲによりスコアリングモデルを生成した場合、横軸が０．１のときの縦軸の値は０．３９３なので、デフォルトした全企業のうち、３９．３％を謝絶したことになる。逆に、残りの謝絶していない６０．７％の企業がデフォルトすることになる。
【０１４０】
一方、アンサンブル学習によりスコアリングモデルを生成した場合、デフォルトした全企業のうち、４８％を謝絶できるため、謝絶していない企業のデフォルト率を低く抑えることが可能になる。定量的に比較すると、アンサンブル学習の方が従来の機械学習手法であるＬＲよりも、約１４％デフォルトを少なく抑えることができる。
【０１４１】
（学習データの特徴量の加工について）
ここでは、機械学習のモデルの生成の際によく用いられる特徴量の加工方法についてせ説明する。
【０１４２】
一般的に、小さい数値は細かく、大きな数値は粗く捉える方がが、数値の挙動について適切に捉えることができるため、学習器に学習データを入力する前の前処理として、例えば、「売上」等の数値を示す特徴量に関しては、対数に変換する方法が用いられる。しがたって、本実施形態のスコアリングモデルにおいても、特定の特徴量について対数変換を行い、大きな値を粗く捉えるようにするものとしてもよい。このような対数変換を用いることによって、特定の学習データセットによる学習においては、スコアリングモデルのＡＲ値が０．０２ほど上昇することが確認された。
【０１４３】
図２２は、ワンホットエンコーディングを説明する図である。次に、図２２を参照しながら、学習データに含まれる特徴量のうち、カテゴリを示す特徴量（カテゴリ特徴量）を、スコアリングモデルの学習に用いることができる数値形式に変換する処理について説明する。
【０１４４】
ＧＢＤＴでは、例えば、「業種」のようなカテゴリを示す特徴量はそのままでは学習処理に扱えないため、何らかの方法で数値に変換する必要がある。その変換方法として、ワンホットエンコーディングが有効である。ワンホットエンコーディングは、Ｎ種のカテゴリを示すカテゴリ特徴量がある場合に、Ｎ個のダミーの特徴量を設け、当該各特徴量にＮ種のカテゴリをそれぞれ対応付ける。そして、新しく設けた特徴量のうち、カテゴリに該当する特徴量の値を１とし、それ以外の特徴量の値を０とする。
【０１４５】
例えば、図２２（ａ）に示すように、学習データに含まれる特徴量に「カテゴリ変数」と称するカテゴリ特徴量が存在し、Ａ、Ｂ、Ｃの３種のカテゴリを示す場合を考える。図２２（ａ）において、レコード１〜レコード７は、それぞれ学習データを示す。この場合、ワンホットエンコーディングを適用すると、３種のカテゴリを示すカテゴリ特徴量について、図２２（ｂ）に示すように、３個のダミーの特徴量である「カテゴリＡ」、「カテゴリＢ」、「カテゴリＣ」を設ける。そして、これらの特徴量のうち、元々のカテゴリ特徴量が示していたカテゴリに該当する特徴量の値を１として、それ以外の特著量の値を０とする。例えば、レコード３の場合、カテゴリ特徴量が示すカテゴリは「Ｂ」であるので、新しく設けた「カテゴリＢ」の値を１とし、他の「カテゴリＡ」および「カテゴリＣ」の値を０とする。このようなワンホットエンコーディングは、例えば、図２４で後述する分割部１２が実行するものとすればよい。
【０１４６】
以上のような、ワンホットエンコーディングによりカテゴリ特徴量を、数値に変換した特徴量とすることで、学習処理に用いることが可能となる。この場合、特定の学習データセットによる学習においては、スコアリングモデルのＡＲ値が０．０７ほど上昇することが確認された。
【０１４７】
（分割による学習データの件数を増やす構成および動作）
一般的には、ある１つの企業に対する融資またはリース契約等のための与信判断のための与信情報は、１件のレコードデータを学習データとして学習処理に用いられる。この場合、返済期間中にデフォルトが起きたか否かを示す情報を、ラベルとして学習データに付与する。また、上述したように、一般に機械学習によって生成されるスコアリングモデルの精度は、学習データの件数が多ければ多いほど精度が高まる。ただし、１つの企業の与信情報を示すレコードデータは１件であるため、そのままでは学習データの件数については限界がある。そこで、本実施形態では、学習データである各企業のレコードデータを、所定の期間に分割して、分割した期間ごとにデフォルトしたか否かを示すラベルを付与することによって、１つのレコードデータを、複数のレコードデータに分割して、学習データとしての件数を増加させる方法について考える。
【０１４８】
図２３は、実施形態に係る学習識別装置で用いる学習データの分割方法を説明する図である。図２３を参照しながら、１つの企業の与信情報を示す１件のレコードデータ（学習データ）を分割する方法について説明する。
【０１４９】
分割する学習データ（レコードデータ）として、図２３に示すように、元データ５００を想定する。元データ５００は、特徴量として「企業固有番号」、「審査日」、「創立日」、「従業員数」、「売上」、「利益」、「契約期間」、「解約日」を含む。なお、各特徴量は一例であり、すべてを含む必要はなく、また、その他の特徴量を含むものとしてもよい。この元データ５００を分割する期間として、ここでは年度ごとに分割することを想定する。返済までの期間を平均で５年間とした場合、１つのレコードデータが平均で５倍の量に増加することになる。また、ここでは、与信後５年間までについての分割を考えるものとする。したがって、例えば、６年目以降については分割しないものとする。これは、与信後、あまりに長い期間を考慮した場合、企業ごとに返済期間が異なるため、返済期間が長いものについて全ての期間について分割すると、そのレコードデータの重みが重くなった状態で学習されてしまい、生成されるスコアリングモデルの精度が低下すると考えらえるためである。また、例えば、３年で完済するレコードデータに関しては、分割できる最大の件数としては３個のレコードデータとなる。
【０１５０】
以下、具体的な学習データの分割手順について説明する。
【０１５１】
（１）まず、審査日（図２３の元データ５００の例では、２０１３年４月１日」）を基準として、年度別にレコードデータを分割する。
（２）分割したレコードデータに対して、その年度内にデフォルトしている場合には、デフォルトした旨のラベルを付与し、デフォルトしていない場合には、デフォルトしていない旨のラベルを付与する。また、分割したレコードデータの特徴量の値は、審査日において決定された値をそのまま踏襲している。すなわち、分割前後で、レコードデータの各特徴量の値は変わらないことになる。
（３）分割したレコードデータのうち、すでに契約が終わっている等によりリスクにさらされていないその契約終了の年度より後の年度のレコードデータは除去するものとする。
【０１５２】
図２３では、元データ５００について、デフォルトの有無の確認の時期を、２０１７年７月とした場合に、分割した場合の例を示す。１年目については、元データ５００における「企業固有番号」が２のレコードデータについては、「解約日」が２０１３年９月１日であり、デフォルトしていることが示されている。したがって、１年目の分割データ５０１の中の「企業固有番号」が２の分割したレコードデータには、ラベルである「デフォルト有無」に、デフォルトしたことを示す値として１が付与されている。元データ５００における「企業固有番号」が３のレコードデータについては、デフォルトしていることが示されているものの、「解約日」が２０１４年９月１日（２年目）であるため、１年目ではデフォルトしていないことになる。したがって、１年目の分割データ５０１の中の「企業固有番号」が３の分割したレコードデータには、ラベルである「デフォルト有無」に、デフォルトしていないことを示す値として０が付与されている。
【０１５３】
２年目については、元データ５００における「企業固有番号」が２のレコードデータについては、１年目に既にデフォルトしているため、２年目の分割データ５０２の中には分割されたレコードデータは存在せず、それ以降の年度も同様である。元データ５００における「企業固有番号」が３のレコードデータについては、「解約日」が２０１４年９月１日であり、２年目にデフォルトしていることが示されている。したがって、２年目の分割データ５０２の中の「企業固有番号」が３の分割したレコードデータには、ラベルである「デフォルト有無」に、デフォルトしたことを示す値として１が付与されている。
【０１５４】
３年目については、元データ５００における「企業固有番号」が３のレコードデータについては、２年目に既にデフォルトしているため、３年目の分割データ５０３の中には分割されたレコードデータは存在せず、それ以降の年度も同様である。
【０１５５】
４年目については、元データ５００における「企業固有番号」が４のレコードデータについては、契約期間が３６か月（３年）であるため、４年目の分割データ５０４の中には分割されたレコードデータは存在せず、それ以降の年度も同様である。
【０１５６】
５年目については、元データ５００における「企業固有番号」が１のレコードデータについては、契約期間が６０か月（５年）であるものの、元データ５００についてのデフォルトの有無の確認時期が２０１７年７月としているため、この時期は契約期間中であり、５年目のデフォルトの有無が不確定であるため５年目の分割されたレコードデータは存在しないものとしている。
【０１５７】
以上のような手順により、４件のレコードデータ（学習データ）を含む元データ５００について分割された結果、分割データ５０１〜５０４がそれぞれが含む学習データの合計として１０件まで増加した結果となっている。このように、学習データを期間で分割して学習する場合、スコアリングモデルの出力結果は、この例では１年ごとに分割しているため、１年あたりのデフォルト確率を示す。
【０１５８】
以上のように、学習データを最大現に分割して、学習データの件数を増加させることが可能となるので、スコアリングモデルの精度を向上させることができる。特定の学習データセットについて、このような方法で学習データの分割を行うことにより、分割しない場合と比較して、スコアリングモデルのＡＲ値が０．２ほど上昇することが確認された。
【０１５９】
図２４は、実施形態に係る学習識別装置において学習データを分割するための機能ブロックの一例の動作を説明する図である。次に、図２４を参照しながら、本実施形態に係る学習識別装置１において、学習データを分割するための機能ブロックの構成および動作について説明する。
【０１６０】
図２４に示すように、ＣＰＵ１０によるプログラムの実行により実現される機能部として、上述の図２に示した制御部１１のほか、分割部１２が実現される。分割部１２は、記憶部８０から読み出した学習データについて、上述のような方法により分割することによって、学習データの件数を増加させる機能部である。具体的には、分割部１２は、分割の対象となる学習データについて、特定の時点を基準として、予め定められた所定期間（図２３の例では、５年）内において、当該特定の時点から単位期間（図２３の例では、１年）ごとに学習データを分割し、当該単位期間に特定の事象（図２３の例では、デフォルト）が発生したか否かを示す値をラベルを、分割した学習データに付与する。この場合、分割部１２は、分割後の学習データ（分割データ）の特徴量の値は、分割前の学習データの特徴量の値と一致させる。すなわち、学習データの分割時において決定されている特徴量の値は、分割後の学習データの特徴量としてそのまま継承され、付与されるラベルのみがそれぞれの学習データに応じて異なる値となる。また、特定の事象が発生した期間（例えば、図２３の例では、契約終了日またはデフォルト日が含まれる期間）より後の期間に対応する分割データは除去する。このような、学習データの例として、上述の図２３では、企業の与信情報を示す学習データについて説明したが、このようなデータに限定されるものではない。上述のように、特定の時点を基準として単位時間ごとに分割が可能であり、分割の前後で特徴量の値を継承することが可能であり、かつ、分割された各単位期間で特定の事象の発生の有無をラベルとして付与することができる学習データであれば、分割して学習データの件数を増加させることが可能である。
【０１６１】
分割部１２は、分割した学習データ（分割データ）を、データメモリ３０（フィーチャメモリ３２）に記憶させる。分割部１２は、上述のように、ＣＰＵ１０がプログラムを実行することによって実現されるものとしているが、これに限定されるものではなく、ハードウェア回路によって実現されるものとしてもよい。
【０１６２】
そして、ラーニングモジュール２０は、データメモリ３０に記憶された分割データを用いてＧＢＤＴによるスコアリングモデルの学習を行う。また、学習識別装置１は、上述のように、ＧＢＤＴによる学習のみならず、他のアルゴリズム（ＲＦ、ＮＮ、ＬＲ等）に基づく学習処理が可能である。それぞれのアルゴリズムによる学習は、ラーニングモジュール２０が担うものとしてもよく、ラーニングモジュール２０とは異なる学習器が担うものとしてもよい。また、図２に示す学習識別装置１の構成では、ラーニングモジュール２０およびクラシフィケーションモジュール５０は、ＦＰＧＡによって実現されるものとしているが、これに限定されるものではなく、ＣＰＵ１０がソフトウェア（プログラム）を実行することによって実現されるものとしてもよい。
【０１６３】
記憶部８０は、例えば、元データ５００を記憶する機能部である。記憶部８０は、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）またはフラッシュメモリ等によって実現される。上述の図２に示したデータメモリ３０またはモデルメモリ４０は、記憶部８０によって実現されるものとしてもよい。
【０１６４】
図２５は、実施形態に係る学習識別装置の学習方法の流れの一例を示すフローチャートである。図２５を参照しながら、本実施形態に係る学習識別装置１において、学習データを分割してスコアリングモデル（信用スコアリングモデル）の学習を行う動作の流れを説明する。
【０１６５】
＜ステップＳ１１＞
学習識別装置１の分割部１２は、記憶部８０から、分割の対象となる学習データ（例えば、元データ５００）を読み込む。分割部１２は、分割の対象となる学習データについて、特定の時点を基準として、予め定められた所定期間（例えば、５年）内において、当該特定の時点から単位期間（例えば、１年）ごとに学習データを分割し、当該単位期間に特定の事象（例えば、デフォルト）が発生したか否かを示す値をラベルを、分割した学習データに付与する。この場合、分割部１２は、分割後の学習データ（分割データ）の特徴量の値は、分割前の学習データの特徴量の値と一致させる。また、分割部１２は、特定の事象が発生した期間（例えば、契約終了日またはデフォルト日が含まれる期間）より後の期間に対応する分割データは除去する（分割を行わない）。分割部１２は、分割した学習データを、データメモリ３０（フィーチャメモリ３２）に記憶させる。そして、ステップＳ１２へ移行する。
【０１６６】
＜ステップＳ１２＞
学習識別装置１のラーニングモジュール２０およびクラシフィケーションモジュール５０は、分割部１２により分割され、データメモリ３０に記憶された学習データを用いて、スコアリングモデルの学習（生成）を行う。この場合、スコアリングモデルの学習に用いるアルゴリズムは、ＧＤＢＴ、ＲＦ、ＮＮまたはＬＲの単体を用いてもよく、これらのアルゴリズムのアンサンブル学習に基づいてもよい。以上によって、処理を終了する。
【０１６７】
以上のように、本実施形態では、ＧＤＢＴ、ＲＦ、ＮＮまたはＬＲ等の各種アルゴリズムを用いたスコアリングモデルの学習において用いる学習データを、期間ごとに分割することによって学習データの件数を増加させて学習の用いるものとしている。具体的には、分割部１２は、分割の対象となる学習データについて、特定の時点を基準として、予め定められた所定期間（図２３の例では、５年）内において、当該特定の時点から単位期間（図２３の例では、１年）ごとに学習データを分割し、当該期間に特定の事象（図２３の例では、デフォルト）が発生したか否かを示す値をラベルを、分割した学習データに付与することによって、学習データの件数を増加させる。これによって、学習データを最大現に分割して、学習データの件数を増加させることが可能となるので、スコアリングモデルの精度（学習の精度）を向上させることができる。
【符号の説明】
【０１６８】
１  学習識別装置
１０  ＣＰＵ
１１  制御部
１２  分割部
２０  ラーニングモジュール
２１、２１＿１、２１＿２  ゲイン算出モジュール
２２  最適条件導出モジュール
３０  データメモリ
３１  ポインタメモリ
３２  フィーチャメモリ
３３  ステートメモリ
４０  モデルメモリ
４１＿１  デプス０用メモリ
４１＿２  デプス１用メモリ
４１＿３  デプス２用メモリ
５０  クラシフィケーションモジュール
５１＿１  ノード０判別器
５１＿２  ノード１判別器
５１＿３  ノード２判別器
８０  記憶部
５００  元データ
５０１〜５０４  分割データ
【先行技術文献】
【特許文献】
【０１６９】
【特許文献１】特開２０１８−０８１４４５号公報
【図１】
2020035395.tif 000027
【図２】
2020035395.tif 000028
【図３】
2020035395.tif 000029
【図４】
2020035395.tif 000030
【図５】
2020035395.tif 000031
【図６】
2020035395.tif 000032
【図７】
2020035395.tif 000033
【図８】
2020035395.tif 000034
【図９】
2020035395.tif 000035
【図１０】
2020035395.tif 000036
【図１１】
2020035395.tif 000037
【図１２】
2020035395.tif 000038
【図１３】
2020035395.tif 000039
【図１４】
2020035395.tif 000040
【図１５】
2020035395.tif 000041
【図１６】
2020035395.tif 000042
【図１７】
2020035395.tif 000043
【図１８】
2020035395.tif 000044
【図１９】
2020035395.tif 000045
【図２０】
2020035395.tif 000046
【図２１】
2020035395.tif 000047
【図２２】
2020035395.tif 000048
【図２３】
2020035395.tif 000049
【図２４】
2020035395.tif 000050
【図２５】
2020035395.tif 000051