(57)【要約】【課題】ランダムフォレストによるデータ分析において、計算量の削減を可能とする分析プログラム等を提供すること。【解決手段】分析プログラムは、ランダムフォレストによる第１の分析により生成される決定木により分岐された第１データの要素数に基づく第１サンプル数、及び、追加で分析する追加データの要素数に基づき二項分布にしたがう乱数を生成し、生成した乱数に基づき、前記第１の分析に用いた第１データからサンプリングする第２サンプル数と、前記追加で分析するデータからサンプリングを行なう追加サンプル数とを算出し、算出した第２サンプル数と追加サンプル数とを用いて、ランダムフォレストによる第２の分析を行なう処理をコンピュータに実行させる。【選択図】図８
2018180865.tif 000002
【特許請求の範囲】
【請求項１】
ランダムフォレストによる第１の分析により生成される決定木により分岐された第１データの要素数に基づく第１サンプル数、及び、追加で分析する追加データの要素数に基づき二項分布にしたがう乱数を生成し、
生成した乱数に基づき、前記第１の分析に用いた第１データからサンプリングする第２サンプル数と、前記追加で分析するデータからサンプリングを行なう追加サンプル数とを算出し、
算出した第２サンプル数と追加サンプル数とを用いて、ランダムフォレストによる第２の分析を行なう
処理をコンピュータに実行させる分析プログラム。
【請求項２】
前記二項分布の粗さを変化させる刻み幅を、前記第１の分析についての処理制限時間及び精度に基づいて定める、
ことを特徴とする請求項１に記載の分析プログラム。
【請求項３】
ランダムフォレストによる第１の分析により生成される決定木により分岐された第１データの要素数に基づく第１サンプル数、及び、追加で分析する追加データの要素数に基づき二項分布にしたがう乱数を生成する生成部、
生成した乱数に基づき、前記第１の分析に用いた第１データからサンプリングを行なう第２サンプル数と、前記追加で分析するデータからサンプリングを行なう追加サンプル数とを算出する算出部、及び
算出した第２サンプル数と追加サンプル数とを用いて、ランダムフォレストによる第２の分析を行なう分析部
を備える分析装置。
【請求項４】
ランダムフォレストによる第１の分析により生成される決定木により分岐された第１データの要素数に基づく第１サンプル数、及び、追加で分析する追加データの要素数に基づき二項分布にしたがう乱数を生成し、
生成した乱数に基づき、前記第１の分析に用いたデータからサンプリングを行なう第２サンプル数と、前記追加で分析するデータからサンプリングを行なう追加サンプル数とを算出し、
算出した第２サンプル数と追加サンプル数とを用いて、ランダムフォレストによる第２の分析を行なう
処理をコンピュータにより実行する分析方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの分析を行なう分析プログラム、分析装置及び分析方法に関する。
【背景技術】
【０００２】
情報技術の発展及び普及に伴い、データベースなどに蓄積された大量のデータを分析するという需要は増加している。特に、近年では、高度な分析手法として、機械学習を利用する例が増加している。
【０００３】
機械学習の利用例として、ＡＤＴｒｅｅ（Ａｌｔｅｒｎａｔｉｖｅ  Ｔｒｅｅ：交互決定木）を用いる予測装置が知られている（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−２２７８３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
決定木を用いた機械学習ではデータ量の増大とともに、計算量が増加する。計算量の増加は処理時間の増加につながる。しかし、業務システムのログデータの分析などのように、夜間バッチで分析を行う場合には、処理時間の制限がある。そのため、処理時間の増大は夜間バッチの遅延の原因となる。そして、夜間バッチの遅延は業務システムの障害原因になりうる。
【０００６】
１つの側面では、本発明はデータ分析において計算量の削減を可能とする分析プログラム等の提供を目的とする。
【課題を解決するための手段】
【０００７】
１つの態様では、分析プログラムは、ランダムフォレストによる第１の分析により生成される決定木により分岐された第１データの要素数に基づく第１サンプル数、及び、追加で分析する追加データの要素数に基づき二項分布にしたがう乱数を生成し、生成した乱数に基づき、前記第１の分析に用いた第１データからサンプリングする第２サンプル数と、前記追加で分析するデータからサンプリングを行なう追加サンプル数とを算出し、算出した第２サンプル数と追加サンプル数とを用いて、ランダムフォレストによる第２の分析を行なう処理をコンピュータに実行させる。
【発明の効果】
【０００８】
一観点によれば、データ分析における計算量の削減が可能となる。
【図面の簡単な説明】
【０００９】
【図１】分析システムの構成の一例を示すブロック図である。
【図２】分析処理の概要を示す説明図である。
【図３】月次処理の概要を示す説明図である。
【図４】分析装置の構成の一例を示すブロック図である。
【図５】分析処理Ａにおけるサンプリングを示す説明図である。
【図６】分析処理Ｂにおけるサンプリングを示す説明図である。
【図７】分析処理Ｃにおけるサンプリングを示す説明図である。
【図８】メイン処理の手順の一例を示すフローチャートである。
【図９】分析処理Ａの手順を示すフローチャートである。
【図１０】分析処理Ｂの手順を示すフローチャートである。
【図１１】分析処理Ｃの手順を示すフローチャートである。
【図１２】データ格納テーブルのレコードレイアウトの一例を示す説明図である。
【図１３】定義テーブルのレコードレイアウトの一例を示す説明図である。
【図１４】実行ログテーブルのレコードレイアウトの一例を示す説明図である。
【図１５】関数記憶テーブルのレコードレイアウトの一例を示す説明図である。
【図１６】ノードリストテーブルのレコードレイアウトの一例を示す説明図である。
【図１７】決定木の一例を示す説明図である。
【図１８】処理時間の削減例を示す説明図である。
【図１９】図１８におけるルートノードの分析の処理時間の一例を示す表である。
【図２０】サンプリング回数の近似に関する説明図である。
【図２１】近似率設定テーブルのレコードレイアウトの一例を示す説明図である。
【図２２】近似率設定処理の手順の一例を示す説明図である。
【図２３】メイン処理の手順の他の例を示すフローチャートである。
【図２４】分析装置の機能構成の一例を示すブロック図である。
【発明を実施するための形態】
【００１０】
以下、実施の形態を、図面を参照して説明する。
【００１１】
実施の形態１
図１は分析システム１００の構成の一例を示すブロック図である。分析システム１００は分析装置１、データベース２及び端末３を含む。分析装置１、データベース２及び端末３はネットワークＮを介して、互いに通信可能に接続されている。分析装置１は分析の手法として、ランダムフォレストを用いる。分析装置１はサーバコンピュータ、ワークステーション又はブレードサーバなどにより構成する。データベース２はサーバコンピュータ、ワークステーション又はブレードサーバなどのハードウェアに、ＤＢＭＳ（Ｄａｔａｂａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ：データベース管理システム）を搭載することなどにより構成する。端末３は例えば、分析処理の設定や指示を行なうためのものである。端末３はデスクトップ型ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、ノート型ＰＣ、タブレット型ＰＣ又はスマートフォンなどにより構成する。なお、分析処理を日次バッチなどにより繰り返し実行する場合、バッチサーバを設けてもよい。バッチサーバはバッチのスケジュールを記憶し、分析装置１に対して分析処理の開始を指示する。
【００１２】
データベース２はデータ記憶部２１及び中間データ記憶部２２を含む。データ記憶部２１は、分析データ記憶部２１１及び追加データ記憶部２１２を含む。詳細は後述する。
【００１３】
次に、本実施の形態において分析対象とするデータ集合について説明する。分析対象とするデータ集合は、時間経過とともに要素が増加するものである。分析は例えば、月次バッチのように所定の間隔で行なう。分析対象とするデータ集合のうち、前回の分析で対象となったデータの集合を、単に分析データと呼ぶ。前回の分析から今回の分析までに増加したデータであって、今回の分析の対象となるデータを追加データと呼ぶ。また、分析の途中経過で得られたデータを中間データと呼ぶ。分析データ、追加データ及び中間データはデータベース２に記憶する。分析データは分析データ記憶部２１１に記憶する。追加データは追加データ記憶部２１２に記憶する。中間データは中間データ記憶部２２に記憶する。
【００１４】
続いて、本実施の形態における分析の概要について、説明する。図２は分析処理の概要を示す説明図である。図２には連続する２回の分析について、示している。第１の分析及び第２の分析である。第１の分析で分析対象となったデータ集合はＳbeforeである。Ｓbeforeの要素数はｎbeforeである。このＳbeforeからＴ個の部分集合をブートストラップサンプリングにより作成する。ブートストラップサンプリング抽出するサンプリング数（第１サンプル数）は、Ｓbeforeの要素数と等しいｎbefore個である。この部分集合はＳ1-before、Ｓ2-before、…、ＳT-beforeである。これらの部分集合から、ランダムフォレストによる決定木を生成する。決定木を生成する過程で得た分岐関数毎のデータ分割の結果を中間データとして記憶する。
【００１５】
第２の分析は第１の分析から時間が経過しており、分析対象となるデータが追加されている。追加された要素の集合をＳnewとする。Ｓnewの要素数はｎnewである。第２の分析では、第１の分析で得た決定木及び中間データ並びに集合Ｓnewから決定木を更新する。決定木を新たに作り直すのではないので、処理の高速化等が実現する。
【００１６】
第２の分析以降は、第２の分析と同様な分析を繰り返す。第２の分析の次の分析を第３の分析とすると、以下のようになる。第１の分析における集合Ｓbeforeと第２の分析におけるＳnewとを結合した集合が、第３の分析における集合Ｓbeforeとなる。第２の分析から第３の分析までに追加されたデータの集合が、第３分析における新たな集合Ｓnewとなる。なお、第１の分析で得た決定木及び中間データ並びに集合Ｓnewから決定木を更新する処理は、第２の分析の一例である。詳細は後述する。
【００１７】
図２を用いて説明した集合Ｓbeforeで示す一群のデータが分析データである。同様に集合Ｓnewで示す一群のデータが追加データである。分析データは分析データ記憶部２１１に記憶する。追加データは追加データ記憶部２１２に記憶する。
【００１８】
月次で分析処理を行う場合の処理概要を説明する。図３は月次処理の概要を示す説明図である。図３はｎ月の処理内容を中心に示している。ｎ月において、分析データ記憶部２１１は、ｎ−１月における分析データである分析データ（ｎ−１）を記憶している。中間データ記憶部２２は、ｎ−１月における中間データである中間データ（ｎ−１）を記憶している。追加データ記憶部２１２は、ｎ−１月からｎ月にかけて分析対象として追加になったデータである追加データ（ｎ）を記憶している。ｎ月の分析では、分析データ（ｎ−１）及び中間データ（ｎ−１）並びに追加データ（ｎ）を用いて行われる。その結果、分析データ記憶部２１１は、ｎ月おける分析データ（ｎ）に更新される。中間データ記憶部２２は、ｎ月における中間データ（ｎ）に更新される。ｎ＋１月では、これらのデータ及び追加データ（ｎ＋１）を用いて分析が行われる。
【００１９】
次に、分析装置１の構成について説明する。図４は分析装置１の構成の一例を示すブロック図である。分析装置１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１３、大容量記憶部１４、通信部１５及び読み取り部１６を含む。各構成はバスＢで接続されている。
【００２０】
ＣＰＵ１１はＲＯＭ１２に記憶された制御プログラム１Ｐに従い、ハードウェア各部を制御する。ＲＡＭ１３は例えばＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）又はフラッシュメモリである。ＲＡＭ１３はＣＰＵ１１によるプログラムの実行時に発生するデータを一時的に記憶する。
【００２１】
大容量記憶部１４は、例えばハードディスク又はＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などである。大容量記憶部１４は制御プログラム（分析ブログラム）１Ｐの開発実行環境のための各種データ、ライブラリ及び実行ファイルなどを記憶する。開発及び実行環境は、例えばＲ言語環境である。Ｒ言語はオープンソース・フリーソフトウェアの統計解析向けのプログラミング言語及びその開発実行環境である。以下の説明において、単にＲと記載した場合、Ｒ言語又はその開発実行環境を示す。
【００２２】
また、制御プログラム１Ｐを大容量記憶部１４に記憶してもよい。さらにまた、データベース２が備える分析データ記憶部２１１、追加データ記憶部２１２及び中間データ記憶部２２を、大容量記憶部１４に記憶してもよい。
【００２３】
通信部１５はネットワークＮを介して、データベース２及び端末３と通信を行う。読み取り部１６はＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）−ＲＯＭ及びＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）−ＲＯＭを含む可搬型記憶媒体１ａを読み取る。ＣＰＵ１１が読み取り部１６を介して、制御プログラム１Ｐを可搬型記憶媒体１ａより読み取り、大容量記憶部１４に記憶してもよい。また、ネットワークＮ等を介して他のコンピュータからＣＰＵ１１が制御プログラム１Ｐをダウンロードし、大容量記憶部１４に記憶してもよい。さらにまた、半導体メモリ１ｂから、ＣＰＵ１１が制御プログラム１Ｐを読み込んでもよい。
【００２４】
続いて、分析装置１が行なう分析処理について説明する。以下に説明するのは、上述の第２の分析についての処理である。第２の分析においては、第１の分析で得た中間データを単純に使用するのではなく、はじめに疑似的にランダムサンプリングをして、中間データを使用できるか判断してから分析を行なう。以下の説明において、第２の分析で分析対象とするデータの集合は、上述したように、データ集合Ｓbefore及びデータ集合Ｓnewを合わせたものである。要素数はそれぞれ、ｎbefore、ｎnewである。以下の説明において、データ集合Ｓbefore及びデータ集合Ｓnewを結合した集合をＳbefore+newとする。
【００２５】
中間データを活用する際に重要な点としては、次の二点がある。１．サンプリングの際のランダム性の確保、及び、２．中間データを活用する際の計算手法、である。１．を解決する方法として、以下の処理を行なう。まず、サンプリングに先立ち、二項分布に従う乱数を発生させる。ここで、乱数の発生数はｎbefore+new、つまり、ｎbefore＋ｎnewとする。乱数の発生には、例えば、Ｒの関数のｒｂｉｎｏｍ(乱数の数，ベルヌーイ試行の数，ベルヌーイ試行における成功確率)を用いる。ｒｂｉｎｏｍ（ｎbefore＋ｎnew，１，ｎbefore／ｎbefore+new）を実行すると、（ｎbefore＋ｎnew）個の乱数の組が戻り値（返り値）となる。各乱数の値は、０又は１である。戻り値として返された乱数の組における０の数をｎbefore-randchoice、１の数をｎnew-randchoiceとする。ここで、ｎbefore-randchoiceは、Ｓbeforeから新規にサンプリングする数（第２サンプル数）である。ｎnew-randchoiceはＳnewから新規にサンプリングする数（追加サンプル数）である。
【００２６】
上述のサンプリング方法は、従来のランダムフォレストで行っているサンプリングと、ほぼ同様のランダム性が確保できる。その理由は次の通りである。従来のランダムフォレストでは、要素数が（ｎbefore＋ｎnew）個の集合Ｓbefore+newから（ｎbefore＋ｎnew）回サンプリングを行う。それに対して本実施の形態では、ＳbeforeとＳnewのそれぞれから、合計（ｎbefore＋ｎnew）回サンプリングを行っている。そのときの、それぞれの集合からデータが選択される確率はｎbeforeとｎnewの割合と同じである。つまり、１５０個のボールが入っている箱からボールを毎回戻して１５０回引くのと、１００個のボールが入っている箱と５０個のボールが入っている箱からそれぞれ、前者は後者の二倍の割合でボールを合計１５０回引くのを比較していることと同様である。以上のことから、本実施の形態におけるサンプリングは、従来のランダムフォレストで行っているサンプリングとほぼ同様なランダム性が確保できている。
【００２７】
以上のように、サンプリングのランダム性を確保するために、第２の分析において、集合Ｓbeforeからサンプリングする数、すなわち第２サンプル数ｎbefore-randchoiceは、二項分布にしたがう乱数により決定する。そのため、第２サンプル数ｎbefore-randchoiceと第１サンプル数ｎbeforeとの大小関係により、場合分けが必要となる。なぜならば、第２サンプル数が第１サンプル数以上（ｎbefore-randchoice≧ｎbefore）であれば、第１の分析の結果が利用可能であるからである。すなわち、第１の分析により得た決定木及び中間データの利用が可能となる。しかし、第２サンプル数が第１サンプル数未満であれば、第１の分析の結果が利用できない。特に、中間データが利用できないため、第２の分析は、図２及び図３に示した分析手法ではなく、従来の手法と同様となる。場合分けについて、更に説明する。上述したように、第２の分析においては、第２サンプル数と第１サンプル数との大小関係により、以下の様に場合分けする。
【００２８】
ｎbefore-randchoice  ＝  ｎbefore  …  （１）
ｎbefore-randchoice  ＞  ｎbefore  …  （２）
ｎbefore-randchoice  ＜  ｎbefore  …  （３）
【００２９】
式（１）が成り立つ場合の第２の分析での処理を分析処理Ａと呼ぶ。式（２）が成り立つ場合の第２の分析での処理を分析処理Ｂと呼ぶ。式（３）が成り立つ場合の第２の分析での処理を分析処理Ｃと呼ぶ。
【００３０】
分析処理ＡからＣそれぞれにおけるサンプリングについて、説明する。図５は分析処理Ａにおけるサンプリングを示す説明図である。分析処理Ａにおいては、集合Ｓbeforeからサンプリングすべき要素数（第２サンプル数ｎbefore-randchoice）が、第１サンプル数ｎbeforeと等しい。したがって、集合Ｓbeforeからｎbefore回のサンプリングを行う。しかし、このサンプリングは第１の分析と同じである。したがって、サンプリング及びサンプリングしたデータから分析木の生成は省略可能である。また、集合Ｓnewからｎnew-randchoice回のサンプリングを行なう。集合Ｓnewからサンプリングしたデータについては、分析木についての処理が必要である。すなわち、集合Ｓbeforeに対する新たな分析は不要であり、集合Ｓnewに対する分析のみを行なえばよい。
【００３１】
図６は分析処理Ｂにおけるサンプリングを示す説明図である。分析処理Ｂにおいては、第２サンプル数ｎbefore-randchoiceが、第１サンプル数ｎbeforeより大きい。したがって、集合Ｓbeforeから行なうｎbefore-randchoice回のサンプリングのうち、ｎbefore回は分析処理Ａと同様に、第１の分析におけるサンプリングと同一視できるので、新たな分析不要である。集合Ｓbeforeからは新たに（ｎbefore-randchoice−ｎbefore）回のサンプリングが必要となる。このサンプリング得た集合をＳbefore+と記す。また、集合Ｓnewからｎnew-randchoice回のサンプリングを行なう。集合Ｓbeforeからは新たにサンプリングしたデータと、集合Ｓnewからサンプリングしたデータについては、分析木についての処理が必要である。
【００３２】
図７は分析処理Ｃにおけるサンプリングを示す説明図である。分析処理Ｃにおいては、第２サンプル数ｎbefore-randchoiceが、第１サンプル数ｎbeforeより小さい。そのため、第１分析の結果は利用できない。そのため、集合Ｓbeforeから、新たにｎbefore-randchoice回のサンプリングを行なう。また、集合Ｓnewからｎnew-randchoice回のサンプリングを行なう。分析処理Ｃにおいては、すべて新たにサンプリングしたデータであるので、第１の分析によって得た分析木は破棄し、新たに生成することになる。すなわち、第２の分析において分析処理Ｃを実行する場合、処理量は従来のランダムフォレストと同様となる。
【００３３】
続いて、中間データを活用する際に重要な点の二点目、中間データを活用する際の計算手法について説明する。ランダムフォレストにおいて、決定木の各ノードに対応する分岐関数は、情報利得により決定する。情報利得の算出方法は従来の手法と同様であるから省略する。
【００３４】
まず、分岐処理Ａの場合にについて述べる。ノードｊで分割されるデータの集合をＳjとする。Ｓjのうち左に分岐するデータの集合をＳl、右に分岐するデータの集合をＳrとする。また、第１の分析の結果、ノードｊで分割されたデータの集合Ｓj-beforeとする。同様に左に分岐したデータの集合をＳl-before、右に分岐したデータの集合をＳr-beforeとする。さらにまた、集合Ｓnewにおいて、ノードｊで分割されるデータの集合をＳj-newとする。Ｓj-newのうち、左に分岐されるデータの集合をＳl-newとする。Ｓj-newのうち、右に分岐されるデータの集合をＳr-newとする。データ分割の線形性から集合の関係は、以下のようになる。
【００３５】
Ｓj  ＝  Ｓj-before  ＋  Ｓj-new  …  （４）
Ｓl  =  Ｓl-before  ＋  Ｓl-new  …  （５）
Ｓr  ＝  Ｓr-before  ＋  Ｓr-new  …  （６）
【００３６】
したがって、情報利得を算出する際に必要となる集合Ｓj、Ｓl及びＳrを求める必要があるが、それぞれの部分集合Ｓj-before、Ｓl-before及びＳr-beforeは第１の分析によって求まっている。そのため、集合Ｓj-new、Ｓl-new及びＳr-newを求めればよい。それによって、データ分割の処理時間が短縮される。
【００３７】
同様に分析処理Ｂにおいては、以下の関係が導き出せる。以下の式（７）から（９）において、Ｓj-before+は、Ｓbefore+について、ノードｊで分割されるデータの集合を示す。Ｓl-before+は、Ｓbefore+について、ノードｊで左に分岐されるデータの集合を示す。Ｓr-before+は、Ｓbefore+について、ノードｊで右に分岐されるデータの集合を示す。
【００３８】
Ｓj  ＝  Ｓj-before  ＋  Ｓj-before+＋  Ｓj-new  …  （７）
Ｓl  =  Ｓl-before  ＋  Ｓl-before+  ＋  Ｓl-new  …  （８）
Ｓr  ＝  Ｓr-before  ＋  Ｓr-before+  ＋  Ｓr-new  …  （９）
【００３９】
分岐処理Ｂにおいても、部分集合Ｓj-before、Ｓl-before及びＳr-beforeは第１の分析の結果が利用可能である。それによって、データ分割の処理時間が短縮される。
【００４０】
分岐処理Ｃにおいては、すべて新たにサンプリングしたデータであるので、データの分割は従来手法と同様となる。そのため、データ分割の処理時間は従来手法と同様である。
【００４１】
以上に示した分析装置１の処理をフローチャートで示すと、以下のようになる。図８はメイン処理の手順の一例を示すフローチャートである。分析装置１のＣＰＵ１１は乱数を発生させる（ステップＳ１）。発生させる乱数は二項分布にしたがう乱数である。ＣＰＵ１１は発生させた乱数から、第２サンプル数ｎbefore-randchoice及び追加サンプル数ｎnew-randchoiceを算出する（ステップＳ２）。ＣＰＵ１１は第２サンプル数が第１サンプル数以上であるか否かを判定する（ステップＳ３）。ＣＰＵ１１は第２サンプル数が第１サンプル数以上であると判定した場合（ステップＳ３でＹＥＳ）、第２サンプル数が第１サンプル数ｎと等しいか否かを判定する（ステップＳ４）。ＣＰＵ１１は第２サンプル数が第１サンプル数と等しいと判定した場合（ステップＳ４でＹＥＳ）、分析処理Ａを実行し（ステップＳ５）、メイン処理を終了する。ＣＰＵ１１は第２サンプル数が第１サンプル数と等しくないと判定した場合（ステップＳ４でＮＯ）、分析処理Ｂを実行し（ステップＳ６）、メイン処理を終了する。ＣＰＵ１１は第２サンプル数が第１サンプル数未満であると判定した場合（ステップＳ３でＮＯ）、分析処理Ｃを実行し（ステップＳ７）、メイン処理を終了する。
【００４２】
図９は分析処理Ａの手順を示すフローチャートである。ＣＰＵ１１は中間データを中間データ記憶部２２から取得する（ステップＳ１１）。ＣＰＵ１１は追加データのサンプリングを行なう（ステップＳ１２）。すなわち、集合Ｓnewからｎnew-randchoice回のサンプリングを行なう。ＣＰＵ１１は決定木を１つ選択する（ステップＳ１３）。ここでの決定木は、第１の分析で生成した複数の決定木である。これらの決定木は中間データとして、中間データ記憶部２２に記憶されている。ＣＰＵ１１は選択した決定木のルートノードを処理対象とする（ステップＳ１４）。ＣＰＵ１１は分岐関数の候補を複数、選択する（ステップＳ１５）。なお、複数の分岐関数それぞれにはデータ分割の際に用いる閾値が複数対応付けられている。ＣＰＵ１１はデータの分割を行なう（ステップＳ１６）。ＣＰＵ１１は選択した複数の分岐関数の候補それぞれについてデータ分割を行なう。各分岐関数についての処理では、閾値毎にデータ分割を行なう。データ分割の際、上述の式（４）、（５）及び（６）で示す性質に基づき、中間データを利用する。ＣＰＵ１１は選択した複数の分岐関数の候補及び閾値それぞれについての情報利得を算出する（ステップＳ１７）。ＣＰＵ１１は複数の分岐関数の候補から１つを分岐関数として選択する（ステップＳ１８）。選択する分岐関数は情報利得が最も大きな値となる関数である。ＣＰＵ１１は選択した分岐関数が中間データとして記憶してある分岐関数と同一であるか否か判定する（ステップＳ１９）。ＣＰＵ１１は、選択した分岐関数が中間データとして記憶してある分岐関数と同一でないと判定した場合（ステップＳ１９でＮＯ）、従来手法へ移行する（ステップＳ２４）。処理対象ノード以降のデータ分割では、中間データを利用できない。そのため、従来手法と同様な計算方法で情報利得を計算し、データ分割を行なう。ＣＰＵ１１はデータ分割完了後、分析処理Ａを終了し、処理をメイン処理に戻す。ＣＰＵ１１は、選択した分岐関数が中間データとして記憶してある分岐関数と同一であると判定した場合（ステップＳ１９でＹＥＳ）、ストッピングルールに当てはまるか否かを判定する（ステップＳ２０）。ストッピングルールは、例えばノード内のデータ数が一定以下であるか、又はノードの深さが一定以上深くなったかである。ＣＰＵ１１はストッピングルールに当てはまらないと判定した場合（ステップＳ２０でＮＯ）、次のノードを処理対象とする（ステップＳ２１）。ＣＰＵ１１は処理をステップＳ１５に戻す。ＣＰＵ１１はストッピングルールに当てはまると判定した場合（ステップＳ２０でＹＥＳ）、未処理の決定木があるか否かを判定する（ステップＳ２２）。ＣＰＵ１１は未処理の決定木があると判定した場合（ステップＳ２２でＹＥＳ）、処理をステップＳ１３に戻す。ＣＰＵ１１は未処理の決定木がないと判定した場合（ステップＳ２２でＮＯ）、中間データを中間データ記憶部２２に記憶する（ステップＳ２３）。ＣＰＵ１１は分析処理Ａを終了し、処理をメイン処理に戻す。
【００４３】
図１０は分析処理Ｂの手順を示すフローチャートである。図１０において、分析処理Ａの処理と同様な処理は図９と同じ符号を付している。以下の説明においては、主に分析処理Ａと異なる処理について説明する。分析処理Ｂにおいては、追加データのサンプリング（ステップＳ１２）に加えて、前回の分析データからの新規サンプリングを行なう（ステップＳ２４）。すなわち、ＣＰＵ１１は、集合Ｓbeforeからは新たに（ｎbefore-randchoice−ｎbefore）回のサンプリングを行なう。また、分析処理Ｂにおける情報利得の算出（ステップＳ１７）では、上述の式（７）、（８）及び（９）で示す性質に基づき、中間データを利用する。その他の処理については、分析処理Ａと同様である。
【００４４】
図１１は分析処理Ｃの手順を示すフローチャートである。ＣＰＵ１１は新規サンプリングを行なう（ステップＳ３１）。すなわち、ＣＰＵ１１は、集合Ｓbeforeからｎbefore-randchoice回のサンプリングを行なう。ＣＰＵ１１は追加データのサンプリングを行なう（ステップＳ３２）。すなわち、ＣＰＵ１１は、集合Ｓnewからｎnew-randchoice回のサンプリングを行なう。ＣＰＵ１１はステップＳ３１及びステップＳ３２でサンプリングしたデータを用いて、決定木を新たに生成する（ステップＳ３３）。ここでの決定木の生成は、従来のランダムフォレストと同じ手法により行なうので、説明を省略する。ＣＰＵ１１は中間データを中間データ記憶部２２の記憶する（ステップＳ３４）。ＣＰＵ１１は分析処理Ｃを終了し、処理をメイン処理に戻す。
【００４５】
次に記憶部の実装例について説明する。以下に説明する実装例では、日次で生じるデータを月次で分析する場合の例を示している。また、分析データ及び追加データの区別なくデータ記憶部２１に記憶されている。すなわち、分析データ記憶部２１１と追加データ記憶部２１２とが一体となっているものとする。図１２はデータ格納テーブル２１３のレコードレイアウトの一例を示す説明図である。データ格納テーブル２１３はデータ名列、日付列及び種別列を含む。データ格納テーブル２１３は例えばデータ記憶部２１に記憶する。データ格納テーブル２１３は、データ記憶部２１が記憶しているデータの索引である。データ名列はデータ記憶部２１が記憶しているデータの名称を記憶する。データの名称は重なりがないものとする。日付列はデータが記憶された日付を記憶する。種別列はデータが分析済みのデータであるか、追加データであるかを示す。データが集合Ｓbeforeの要素であれば、種別列はｂｅｆｏｒｅを記憶する。データが集合Ｓnewの要素であれば、種別列はｎｅｗを記憶する。図１２に示す例では、２０１６年３月１日の状態を示している。データ記憶部２１には前日である２０１６年２月２９日までのデータが記憶されていることが示されている。前回の月次バッチは２月１日以降に１月分のデータまで処理されたので、１月３１日までのデータ、すなわち、データ２０１６０１３１までは種別がｂｅｆｏｒｅとなっている。２月１日以降のデータ、すなわち、データ２０１６０２０１以降は、種別がｎｅｗとなっている。
【００４６】
図１３は定義テーブル２３のレコードレイアウトの一例を示す説明図である。定義テーブル２３は例えばデータベース２に記憶する。定義テーブル２３はランダムフォレストによる分析を行なう際に必要となる定義を記憶する。定義テーブル２３は定義名列、項目名列及び定義列を含む。定義名列は定義の名称を記憶する。項目列は定義に含まれる項目の名称を記憶する。定義列は項目についての定義内容を記憶する。図１３に示す例では、ストッピングルールは３と定義されている。すなわち、決定木の深さが３になったら、データ分割を止めることを示している。木の本数は３０と定義されている。すなわち、決定木は３０本生成することを示している。テーブル名はデータ格納テーブルと定義されている。すなわち、図１２に示したデータ格納テーブル２１３に基づいて、分析対象となるデータを読み出すことを示している。定義テーブル２３は名称が異なる複数の定義を記憶可能である。
【００４７】
図１４は実行ログテーブル２４のレコードレイアウトの一例を示す説明図である。実行ログテーブル２４は例えばデータベース２に記憶する。実行ログテーブル２４は分析処理の実行結果を記憶する。実行ログテーブル２４は定義名列、分析実行列及び中間データ位置列を含む。定義名列は分析処理を実行したときに使用した定義の定義名を記憶する。分析実行列は分析処理を実行した日付を記憶する。中間データ位置列は中間データの位置を示す。例えば、２月１日実行した分析では、１月分までのデータについて処理が終わっているので、中間データは１月までのデータに対してであることを示している。
【００４８】
図１５は関数記憶テーブル２２１のレコードレイアウトの一例を示す説明図である。関数記憶テーブル２２１は例えば中間データ記憶部２２に記憶する。関数記憶テーブル２２１は中間データの１つである。関数記憶テーブル２２１は各ノードでのデータ分割の結果を記憶する。関数記憶テーブル２２１は木番号列、ノード番号列、関数候補列、閾値列、Ｓj列、Ｓl列及びＳr列を含む。木番号列は決定木を一意に特定可能な番号を記憶する。ノード番号列は決定木に含まれるノード番号を記憶する。関数候補列は使用した分岐関数を記憶する。閾値列は分割する際に用いた閾値を記憶する。Ｓj列は分割対象となったデータの全体集合を記憶する。Ｓl列は左に分岐されたデータの集合を記憶する。Ｓr列は右に分岐されたデータの集合を記憶する。関数記憶テーブル２２１を参照することにより、各決定木の各ノードにおいて、データ分割の際に使用された分岐関数と閾値、及び分岐された結果（集合Ｓj、Ｓl及びＳr）が分かるため、上述したように、情報利得の計算時間が短縮される。
【００４９】
図１６はノードリストテーブル２２２のレコードレイアウトの一例を示す説明図である。ノードリストテーブル２２２は例えば中間データ記憶部２２に記憶する。ノードリストは生成した決定木の構造を示すリストである。ノードリストテーブル２２２はノードリストを記憶することにより生成した決定木をテーブルデータとして記憶する。ノードリストテーブル２２２は木番号列、ノード番号列、左分岐ノード列、右分岐ノード列及び親ノード列を含む。木番号列は決定木を一意に特定する木番号を記憶する。ノード番号列は決定木を構成するノードを一意に特定するノード番号を記憶する。ノード番号はすべての決定木において一意ではなく、各決定木において一意であればよい。左分岐ノード列は、ノード番号列が記憶するノードから左に分岐したノードのノード番号を記憶する。右分岐ノード列は、ノード番号列が記憶するノードから右に分岐したノードのノード番号を記憶する。親ノード列は、ノード番号列が記憶するノードの親のノードのノード番号を記憶する。図１７は決定木の一例を示す説明図である。図１７はノードリストテーブルで定義している決定木Ｓ１を表したものである。
【００５０】
本実施の形態は、以下の効果を奏する。ランダムフォレストによる分析（第２の分析）において、既に行った分析（第１の分析）の処理途中で得たデータ（中間データ）を利用することにより、実際の処理するサンプリングデータは処理対象とすべきデータの一部とすることが可能であるので、処理時間の削減がされる。
【００５１】
また、第２の分析でサンプリングを行なう際、第１の分析でのデータ集合（Ｓbefore）からサンプリングする回数（ｎbefore-randchoice）と、新たに対象となった追加データの集合（Ｓnew）からサンプリングする回数（ｎnew-randchoice）とを、二項分布に従う乱数によって決めるので、従来手法と同様なサンプリングのランダム性を確保することが可能となる。
【００５２】
処理時間の短縮の一例について説明する。図１８は処理時間の削減例を示す説明図である。図１８Ａは従来手法での処理時間を示す。図１８Ｂは本実施の形態での処理時間を示す。図１８に示すのは、既存のデータ数１００（＝ｎbefore）個の集合に、追加データとして５０（＝ｎnew）個が追加された場合の処理時間を概算したものである。生成する決定木の数は１００本である。ストッピングルールは木の深さが３である。また、サンプリング数に関しては、最も削減効果が得られるｎbefore-randchoice＝ｎbeforeであるとする。
【００５３】
図１８Ａに示すように従来手法では、１５０個のサンプルから１５０回サンプリングを行なう。サンプリングに要する時間は１ｍｓである。決定木のルートノードの分析に要する時間は８．６ｍｓである。ルートノードから分岐する第２ノードの分析に要する時間は８．６ｍｓである。以上の合計時間は１８．２ｍｓである。この時間は決定木１本あたりの時間である。決定木は１００本生成するので、従来手法での処理時間の合計は、１．８２ｓである。
【００５４】
一方、本実施の形態による処理では、データサンプリングに先立ち、乱数の生成と、生成した乱数からデータの割合（ｎbefore-randchoice及びｎnew-randchoiceの算出）を決定する処理を行なう。当該処理に要する時間は、１／１００ｍｓである。ここでは、ｎbefore-randchoice＝ｎbefore＝１００である。ｎnew＝５０である。データサンプリングは、追加されたデータ（=Ｓnew）のみから行なう。すなわち、要素数５０（＝ｎnew）から、５０回のランダムサンプリングを行なう。当該サンプリングに要する時間は、サンプリング回数を加味すると、１／３ｍｓである。ルートノードの計算及び分割の確認（ルートノードの分析に相当）に要する時間は、４．６ｍｓである。第２の分析に要する時間は４．６ｍｓである。以上の合計時間は、小数第二位で四捨五入して９．５ｍｓである。決定木１００本を生成するので、本実施の形態では合計の処理時間は、０．９５ｓである。
【００５５】
次に、図１８に示した項目の中で、ルートノードの分析について、処理時間の内訳について更に示す。図１９は図１８におけるルートノードの分析の処理時間の一例を示す表である。図１９Ａは従来手法での処理時間を示す。図１９Ｂは本実施の形態での処理時間を示す。従来手法では、分岐関数の候補を用いて、１５０個のデータを分類する。分類を行なう回数は、分岐関数の候補がＶ個、それぞれの関数に対応した閾値がｔ個とすると、（Ｖ×ｔ）回である。分類に要する時間は３ｍｓである。次に分類の結果を用いて、データの分割を行なう。すなわち、各場合における分類されるデータの集合Ｓj、左に分岐するデータの集合Ｓl、右に分岐するデータの集合Ｓrを求める。分割も（Ｖ×ｔ）回、行なう。分割に要する時間は３ｍｓである。次に分割の結果を用いて情報利得を算出する。この処理についても（Ｖ×ｔ）回である。算出した（Ｖ×ｔ）個の情報利得のうちから、最小値を探索する。探索に要する時間は０．５ｍｓである。そして、処理結果を格納する。結果格納に要する時間は０．１ｍｓである。以上より、従来手法で、ルートノードの分析に要する時間は、８．６ｍｓである。
【００５６】
本実施の形態では、中間データを用いるため、分類対象となるのは追加された５０個のデータである。行なう回数は従来手法と同じ（Ｖ×ｔ）回である。処理内容が同一でデータ数が１／３となるので、処理に要する時間も１／３となり、１ｍｓである。次に分類の結果を用いて、データの分割を行なう。中間データを用いるので、分割するのは追加された５０のデータである。分割についても、データ数が従来手法の１／３であるので、処理時間も１／３となり、１ｍｓである。次に、分割の結果に用いて情報利得を算出する。この処理は扱うデータ数処理内容ともに従来手法と同一であるから、処理時間も同一で２ｍｓである。以降の探索、結果格納についても、従来手法と同一の時間、それぞれ０．５ｍｓ、０．１ｍｓを要する。以上より、本実施の形態で、ルートノードの分析に要する時間は、４．６ｍｓである。
【００５７】
以上の例では、本実施の形態での処理時間は従来手法と比較して、約５０％となることを示している。
【００５８】
実施の形態２
本実施の形態は、二項分布の近似により、更なる高速化を計り、更に、近似の割合を調整することで、モデル作成の時間を調整することを可能とする形態に関する。モデルとはランダムフォレストにより分析の結果を得られる複数の決定木を言う。
【００５９】
実施の形態１において、第２の分析が分析処理Ｃとなる場合は、あらためてサンプリングしモデルを作成するため、中間データが利用できない。したがって、従来手法と比較しても処理時間は短縮されない。また、第２の分析が分析処理Ｂとなる場合においても、中間データの利用により従来と比較して処理時間は短縮される。しかし、Ｓbefore、Ｓnewの２つのデータソースにアクセスし、更に、ランダムサンプリングも、それぞれについてする必要がある。よって、１つのソースにアクセスし、１回ランダムサンプリングする分析処理Ａの場合と比較して処理時間がかかる。本実施の形態では、処理時間を短縮するため、新たなサンプリング方法を用いる。
【００６０】
実施の形態１において、処理時間が最も短縮されるのは、ｎbefore-randchoice  ＝  ｎbeforeとなるときである。しかし、ｎbefore-randchoice  ＝  ｎbeforeとなるのは、ＳbeforeとＳbefore-randochoiceとが等しい場合ある。したがって、ｎbefore-randchoic  ＝  ｎbeforeとなる確率は低いと考えられる。そこで、ｎbefore-randchoice  ＝  ｎbeforeとなる確率を上げるために、二項分布に近似したモデルからのサンプリングをすることにより、Ｓbefore=Ｓbefore-randochoiceと判定する条件をゆるめる。
【００６１】
図２０はサンプリング回数の近似に関する説明図である。図２０Ａは二項分布を示すグラブである。図２０Ｂは二項分布に近似したモデルのグラフである。二項分布における刻み値ｍを変化させることにより、グラフは粗くなり、図２０Ａから図２０Ｂとなる。二項分布において、Ｓbeforeがｎbefore-randchoice  ＝  ｎbeforeになる条件は、Ｓbefore-randochoice−ｍ／２≦Ｓbefore≦Ｓbefore-randochoice＋ｍ／２（ここで、ｍは０以上の整数とする）になる。刻み値ｍを大きくすると、より条件がゆるくなる。
【００６２】
近似したモデルを使用した際のＳbeforeのサンプリング回数については、範囲内の平均をとる。例えば、Ｓbefore-randochoiceの値がＳbefore-randochoice−ｍからＳbefore-randochoice＋ｍの場合は、その平均をとって、Ｓbefore-randochoiceをＳbeforeとして考える。これにより、ｎbefore-randchoice＝  ｎbeforeになる確率が高くなる、つまり、既存モデルを使用する割合が大きくなことにより処理時間が短縮される。
【００６３】
近似率を変更することで、ｎbefore-randchoice＝  ｎbeforeになる回数つまり、モデル作成の時間を調整することが出来る。ここで、近似率は刻み値ｍと等しい。以下、刻み値ｍを近似率ｍとも記す。制限された時間が例えば８時間であった場合、事前に分析時間が７時間程度になるような近似率ｍの値を算出する。次に、運用の際は、近似率ｍを用いてモデルを作成することで、制限された時間内で、出来る限り精度の高いモデルが作成できる。
【００６４】
また、二項分布の近似率ｍを上げる（よりｍを大きくする）ことで、精度は低くなるが、ランダムフォレストの性質から、あまり大きく低下しない。ランダムフォレストでは、多くの木を作成して多数決をとる。そのため全体としては、本実施の形態のように二項分布を近似しても、正しい解に近づく。そのため、精度に大きな差はないと考えられる。つまり、仮に多数決をとらずに決定木モデルを一回作成するだけであれば、恣意的にモデルを近似したことで（ランダム性は低くなって）精度は低くなる。しかし、複数の決定木モデルを作成することで、ランダム性が上がり、恣意性が低くなる。したがって、本実施の形態のように、近似度ｍを調整しても、ランダム性は大きく損なわれることないと考えられる。よって、精度への影響は小さいものといえる。
【００６５】
次に、本実施の形態における近似率ｍの設定について述べる。近似率ｍの設定方法として処理時間を重視する場合と、精度を重視する場合とがある。図２１は近似率設定テーブル２５のレコードレイアウトの一例を示す説明図である。近似率設定テーブル２５は例えばデータベース２に記憶する。近似率設定テーブル２５は近似率ｍ列、処理時間列及び正答率列を含む。近似率ｍ列は近似率ｍの値を記憶する。処理時間列はモデル作成に要する概算時間を記憶する。正答率列は作成されたモデルの正答率を記憶する。
【００６６】
近似率設定テーブル２５に記憶する近似率ｍと処理時間との関係については、以下のようにして定める。様々な近似率ｍの値で実際にモデルを作成して速度を測定する。例えば、ｍが１のとき９時間、２のとき８時間、３のとき７時間というようにそれぞれでモデルを作成して、そのときの時間を測定する。次に、制限された時間以内になるときの近似率ｍが最も低いときの値を算出して、近似率ｍの値を決定する。その結果を近似率設定テーブル２５に記憶する。
【００６７】
近似率設定テーブル２５に記憶する近似率ｍと正答率との関係については、以下のようにして定める。様々なｍの値で実際にモデルを作成して、精度を測定する。例えば、ｍが１のとき正解率８５％、２のとき８３％、３のとき８２％、４のとき８２％、５のとき８１％、６のとき７０％であったとする。その結果を近似率設定テーブル２５に記憶する。
【００６８】
本実施の形態における分析装置１が行う処理について説明する。図２２は近似率設定処理の手順の一例を示す説明図である。ＣＰＵ１１はｍを決定するための観点を出力する（ステップＳ４１）。ここでは表示する観点は処理時間及び正答率である。ＣＰＵ１１は分析者が選択した結果を取得する（ステップＳ４２）。ＣＰＵ１１は選択結果が時間であるか否かを判定する（ステップＳ４３）。ＣＰＵ１１は選択結果が時間であると判定した場合（ステップＳ４３でＹＥＳ）、近似率ｍと対応する処理時間を出力する（ステップＳ４４）。ＣＰＵ１１は選択結果が時間でないと判定した場合（ステップＳ４３でＮＯ）、近似率ｍと対応する正答率を出力する（ステップＳ４５）。ＣＰＵ１１は分析者が選択した近似率ｍの値を取得する（ステップＳ４６）。ＣＰＵ１１は取得した近似率ｍを例えば定義テーブル２３に記憶する（ステップＳ４７）。
【００６９】
図２３はメイン処理の手順の他の例を示すフローチャートである。図２３において、実施の形態と同様な処理については、図８と同一の符号を付している。以下の説明では、主として、実施の形態１と異なる点について説明する。ＣＰＵ１１は近似率ｍの値を設定する（ステップＳ８）。例えば、ＣＰＵ１１は定義テーブル２３に記憶してある近似率ｍの値を読み出す。ＣＰＵ１１は読み出した値をＲＡＭ１３などに設けた一時記憶領域に記憶する。ＣＰＵ１１は乱数を発生させる（ステップＳ１）。本実施の形態では、近似率ｍを用いた二項分布に近似する分布に従う乱数である。ＣＰＵ１１は発生させた乱数にしたがい、第２サンプル及び追加サンプル数を算出する（ステップＳ２）。以降の処理は、実施の形態１と同様であるから、説明を省略する。
【００７０】
次に近似率ｍを選択する場合の戦略について説明する。処理時間の観点で近似率ｍを選択する場合、処理時間はマシンやデータの性質で一定にはならないことを考慮する。そのため、実際には余裕をもたせた値を選択する。例えば、制限が８時間であれば、処理時間が７時間であった値を近似率ｍとして選択する。もし、制限時間の変更や、データの性質が変化したなどの理由により、運用中に時間を変更すべきと判断した場合は、その都度、近似率ｍを設定し直すことにより対応する。
【００７１】
精度の観点で近似率ｍを選択する場合も、余裕をもたせた値を選択する。例えば、制限が８２％以上であれば、分析の精度が８５％であった値を近似率ｍとして設定する。もし、要求される精度の変更や、データの性質が変化したなどの理由により、運用中に近似率ｍを変更すべきと判断した場合は、その都度、近似率ｍを選択肢し直すことにより対応する。
【００７２】
なお、明確な精度の目標値がない場合でも、大きく精度に影響が出る直前の近似率ｍを選択する方法もある。例えば、上記の例では、近似率ｍが５までは緩やかに精度に影響が出ていたが、近似率ｍが６になったとき、大きく精度に影響があった。このような場合は、精度に影響がある直前の値である６を近似率ｍとして選択するという方法も考えられる。
【００７３】
本実施の形態は次の効果を奏する。近似率ｍの値を調整することにより、処理時間を一定範囲内に収めることが可能となる。また、近似率ｍの値を調整することにより、処理時間を短縮しつつも、精度を一定範囲に収めることが可能となる。
【００７４】
図２４は分析装置１の機能構成の一例を示すブロック図である。分析装置１は生成部１１ａ、算出部１１ｂ及び分析部１１ｃを含む。これらの各機能部は、ＣＰＵ１１が制御プログラム１Ｐに基づいて動作することにより実現される。生成部１１ａはランダムフォレストによる第１の分析により生成される決定木により分岐された第１データの初期サンプル数、及び、追加で分析する追加データのサンプル数に基づき二項分布にしたがう乱数を生成する。算出部１１ｂは生成した乱数に基づき、前記第１の分析に用いた第１データからサンプリングを行なう第１サンプル数と、前記追加で分析するデータからサンプリングを行なう第２サンプル数とを算出する。分析部１１ｃは算出部１１ｂが算出した第１サンプル数と第２サンプル数とを用いて、ランダムフォレストによる第２の分析を行なう。
【００７５】
各実施の形態で記載されている技術的特徴（構成要件）はお互いに組み合わせ可能であり、組み合わせすることにより、新しい技術的特徴を形成することができる。
今回開示された実施の形態はすべての点で例示であって、制限的なものでは無いと考えられるべきである。本発明の範囲は、上記した意味では無く、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
【００７６】
以上の実施の形態に関し、さらに以下の付記を開示する。
【００７７】
（付記１）
ランダムフォレストによる第１の分析により生成される決定木により分岐された第１データの要素数に基づく第１サンプル数、及び、追加で分析する追加データの要素数に基づき二項分布にしたがう乱数を生成し、
生成した乱数に基づき、前記第１の分析に用いた第１データからサンプリングする第２サンプル数と、前記追加で分析するデータからサンプリングを行なう追加サンプル数とを算出し、
算出した第２サンプル数と追加サンプル数とを用いて、ランダムフォレストによる第２の分析を行なう
処理をコンピュータに実行させる分析プログラム。
【００７８】
（付記２）
前記二項分布の粗さを変化させる刻み幅を、前記第１の分析についての処理制限時間及び精度に基づいて定める
付記１に記載の分析プログラム。
【００７９】
（付記３）
前記第２サンプル数と前記第１サンプル数とが等しい場合、第１の分析による情報利得及び前記第２サンプル数の追加データから求めた情報利得に基づいて、前記第２の分析における情報利得を算出する
付記１又は付記２に記載の分析プログラム。
【００８０】
（付記４）
前記第２サンプル数が前記第１サンプル数を越えている場合、越えている数のサンプリングを前記第１データから行い、
第１の分析による情報利得、並びに前記サンプリングしたデータについての情報利得及び前記追加サンプル数の追加データから求めた情報利得に基づいて、前記第２の分析における情報利得を算出する
付記１又は付記２に記載の分析プログラム。
【００８１】
（付記５）
前記第１サンプル数が前記初期サンプル数を下回っている場合、前記第１データから第２サンプル数のサンプリングを新たに行い、
新たにサンプリングした前記第２サンプル数の第１データ及び前記追加サンプル数の追加データに基づいて、前記第２の分析における情報利得を算出する
付記１又は付記２に記載の分析プログラム。
【００８２】
（付記６）
ランダムフォレストによる第１の分析により生成される決定木により分岐された第１データの要素数に基づく第１サンプル数、及び、追加で分析する追加データの要素数に基づき二項分布にしたがう乱数を生成する生成部、
生成した乱数に基づき、前記第１の分析に用いた第１データからサンプリングを行なう第２サンプル数と、前記追加で分析するデータからサンプリングを行なう追加サンプル数とを算出する算出部、及び
算出した第２サンプル数と追加サンプル数とを用いて、ランダムフォレストによる第２の分析を行なう分析部
を備える分析装置。
【００８３】
（付記７）
ランダムフォレストによる第１の分析により生成される決定木により分岐された第１データの要素数に基づく第１サンプル数、及び、追加で分析する追加データの要素数に基づき二項分布にしたがう乱数を生成し、
生成した乱数に基づき、前記第１の分析に用いたデータからサンプリングを行なう第２サンプル数と、前記追加で分析するデータからサンプリングを行なう追加サンプル数とを算出し、
算出した第２サンプル数と追加サンプル数とを用いて、ランダムフォレストによる第２の分析を行なう
処理をコンピュータにより実行する分析方法。
【符号の説明】
【００８４】
１００  分析システム
１      分析装置
１１    ＣＰＵ
１１ａ  生成部
１１ｂ  算出部
１１ｃ  分析部
１２    ＲＯＭ
１３    ＲＡＭ
１４    大容量記憶部
１５    通信部
１６    読み取り部
１Ｐ    制御プログラム
１ａ    可搬型記憶媒体
１ｂ    半導体メモリ
２      データベース
２１    データ記憶部
２１１  分析データ記憶部
２１２  追加データ記憶部
２１３  データ格納テーブル
２２    中間データ記憶部
２２１  関数記憶テーブル
２２２  ノードリストテーブル
２３    定義テーブル
２４    実行ログテーブル
２５    近似率設定テーブル
２６    ノードリストテーブル
３      端末
【図１】
2018180865.tif 000003
【図２】
2018180865.tif 000004
【図３】
2018180865.tif 000005
【図４】
2018180865.tif 000006
【図５】
2018180865.tif 000007
【図６】
2018180865.tif 000008
【図７】
2018180865.tif 000009
【図８】
2018180865.tif 000010
【図９】
2018180865.tif 000011
【図１０】
2018180865.tif 000012
【図１１】
2018180865.tif 000013
【図１２】
2018180865.tif 000014
【図１３】
2018180865.tif 000015
【図１４】
2018180865.tif 000016
【図１５】
2018180865.tif 000017
【図１６】
2018180865.tif 000018
【図１７】
2018180865.tif 000019
【図１８】
2018180865.tif 000020
【図１９】
2018180865.tif 000021
【図２０】
2018180865.tif 000022
【図２１】
2018180865.tif 000023
【図２２】
2018180865.tif 000024
【図２３】
2018180865.tif 000025
【図２４】
2018180865.tif 000026