(57)【特許請求の範囲】
【請求項１】
行列データを表す訓練データを複数のブロックに分割し、各ブロックが元の訓練データのどの列の値を保持しているかを示すメタデータを生成するブロック化手段と、
訓練データから学習するパラメータの一部の成分が０に収束した時に、前記各ブロックのうちの不要な列を含む古いブロックを、前記不要な列を除去したブロックに置き換え、前記メタデータを再生成する再ブロック化手段と、を含むデータ管理装置。
【請求項２】
前記再ブロック化手段は、前記各ブロックのうちの隣り合うブロック同士を、前記ブロックに含まれる列のうちの前記０に収束した成分に対応する列を除外しながら連結して、前記ブロックを再構成する請求項１に記載のデータ管理装置。
【請求項３】
行列データを表す訓練データを分割したデータである複数のブロックのうち、所定のブロックを読みだしてキューに格納するキュー管理手段と、
前記キューに格納された前記所定のブロックを読み出してＣＤ法の繰り返し計算を実施する繰り返し計算手段と、
１つの繰り返し計算時にパラメータの一部の成分が０に収束した時、前記０に収束した成分に対応する訓練データの列を除去可能であることを示すフラグを送信するフラグ管理手段と、を含むデータ分析装置。
【請求項４】
前記繰り返し計算手段は、前記１つの繰り返し計算ごとに、前記パラメータの各成分が０に収束したか否かを判定し、前記０に収束した成分があると判断した場合、前記フラグ管理手段に前記０に収束した成分を通知する請求項３に記載のデータ分析装置。
【請求項５】
行列データを表す訓練データを複数のブロックに分割し、各ブロックが元の訓練データのどの列の値を保持しているかを示すメタデータを生成するブロック化手段と、
訓練データから学習するパラメータの一部の成分が０に収束した時に、前記各ブロックのうちの不要な列を含む古いブロックを、前記不要な列を除去したブロックに置き換え、前記メタデータを再生成する再ブロック化手段と、を含むデータ管理装置と、
行列データを表す訓練データを分割したデータである複数のブロックのうち、所定のブロックを読みだしてキューに格納するキュー管理手段と、
前記キューに格納された前記所定のブロックを読み出してＣＤ法の繰り返し計算を実施する繰り返し計算手段と、
１つの繰り返し計算時にパラメータの一部の成分が０に収束した時、前記０に収束した成分に対応する訓練データの列を除去可能であることを示すフラグを送信するフラグ管理手段と、を含むデータ分析装置と、を含むデータ分析システム。
【請求項６】
行列データを表す訓練データを複数のブロックに分割し、各ブロックが元の訓練データのどの列の値を保持しているかを示すメタデータを生成する処理と、
訓練データから学習するパラメータの一部の成分が０に収束した時に、前記各ブロックのうちの不要な列を含む古いブロックを、前記不要な列を除去したブロックに置き換え、前記メタデータを再生成する処理と、をコンピュータに実行させるプログラム。
【請求項７】
行列データを表す訓練データを分割したデータである複数のブロックのうち、所定のブロックを読みだしてキューに格納する処理と、
前記キューに格納された前記所定のブロックを読み出してＣＤ法の繰り返し計算を実施する処理と、
１つの繰り返し計算時にパラメータの一部の成分が０に収束した時、前記０に収束した成分に対応する訓練データの列を除去可能であることを示すフラグを送信する処理と、をコンピュータに実行させるプログラム。
【請求項８】
行列データを表す訓練データを複数のブロックに分割し、各ブロックが元の訓練データのどの列の値を保持しているかを示すメタデータを生成し、
訓練データから学習するパラメータの一部の成分が０に収束した時に、前記各ブロックのうちの不要な列を含む古いブロックを、前記不要な列を除去したブロックに置き換え、前記メタデータを再生成するデータ管理方法。
【請求項９】
行列データを表す訓練データを分割したデータである複数のブロックのうち、所定のブロックを読みだしてキューに格納し、
前記キューに格納された前記所定のブロックを読み出してＣＤ法の繰り返し計算を実施し、
１つの繰り返し計算時にパラメータの一部の成分が０に収束した時、前記０に収束した成分に対応する訓練データの列を除去可能であることを示すフラグを送信するデータ分析方法。
【請求項１０】
行列データを表す訓練データを複数のブロックに分割し、各ブロックが元の訓練データのどの列の値を保持しているかを示すメタデータを生成し、
訓練データから学習するパラメータの一部の成分が０に収束した時に、前記各ブロックのうちの不要な列を含む古いブロックを、前記不要な列を除去したブロックに置き換え、前記メタデータを再生成し、
行列データを表す訓練データを分割したデータである複数のブロックのうち、所定のブロックを読みだしてキューに格納し、
前記キューに格納された前記所定のブロックを読み出してＣＤ法の繰り返し計算を実施し、
１つの繰り返し計算時にパラメータの一部の成分が０に収束した時、前記０に収束した成分に対応する訓練データの列を除去可能であることを示すフラグを送信する分析方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、最適化アルゴリズムを用いて最適化問題を解くためのデータ管理装置、データ分析装置、データ分析システム、及び、分析方法に関する。
【背景技術】
【０００２】
機械学習は、データ分析やデータマイニングの分野等において利用されている。機械学習におけるロジスティック回帰やＳＶＭ（Ｓｕｐｐｏｒｔ  Ｖｅｃｔｏｒ  Ｍａｃｈｉｎｅ）等の多くの手法は、例えば、訓練データ（例えば、デザイン行列、または特徴量と呼ばれる）からパラメータの学習を行う際に、目的関数を定義する。そして、この目的関数を最適化することで最適なパラメータを学習する。このようなパラメータは、人の目で分析しきれないほど次元数が大きいことがある。そのため、スパース学習法（スパース正則化学習、ｌａｓｓｏ）と呼ばれる技術が用いられている。ここで、ｌａｓｓｏとは、ｌｅａｓｔ  ａｂｓｏｌｕｔｅ  ｓｈｒｉｎｋａｇｅ  ａｎｄ  ｓｅｌｅｃｔｉｏｎ  ｏｐｅｒａｔｏｒの略である。スパース学習法とは、学習結果を分析しやすくするために、パラメータのほとんどの次元の値が０になるように学習する。スパース学習法の枠組みでは、パラメータの多くの成分が学習の過程で０に収束する。ゼロに収束した成分は、分析上意味のないものとして無視される。【０００３】
機械学習を効率よく行うためには、最適化問題の効率化が切り離せない課題になっている。ここで、特許文献１に記載の行動認識装置では、動作特徴量のマッチングのためにＣｏｏｒｄｉｎａｔｅ  Ｄｅｓｃｅｎｔ法（以下、ＣＤ法と記載する）を用いて、回転行列Ｒおよび対応行列Ｃに対する極小ＤＲ，Ｃ（Ｘ、Ｙ）を計算している。ＣＤ法とは、最適化問題を解く手法の一つであり、降下法と呼ばれるクラスのアルゴリズムである。【０００４】
ここで、勾配法と呼ばれる最適化手法の一種である上記ＣＤ法の作用について、図１５を用いて説明する。図１５は、２次元の空間におけるＣＤ法の動きを示す図である。図１５では、２次元空間におけるＣＤ法の作用が概念的に示されている。図１５の例では、パラメータｗは、成分ｗ１及び成分ｗ２を要素として持つ２次元ベクトルである。複数の楕円は、目的関数ｆ（ｗ）が同値を取る成分ｗ１と成分ｗ２との組み合わせを示す等高線である。星マークは、目的関数ｆ（ｗ）の値が最小又は最大となる点、即ち、目的解ｗ＊を示す。目的関数ｆ（ｗ）が与えられたとき、ＣＤ法は、ｆ（ｗ）の空間の各座標軸（各次元）に沿って、ｆ（ｗ）が最小又は最大となる地点（目的解）ｗ＊を探索していく。具体的には、ランダムに探索のための開始点（図１５中のｓｔａｒｔ）が決められた後、次のような処理が繰り返される。即ち、座標軸（次元）ｊが選ばれ、訓練データに基づいて探索点の移動方向ｄと移動幅（ステップ幅）αが決定され、次元ｊの成分ｗｊが成分ｗｊ＋α・ｄ（以下、Δと記載する）で更新される。次の処理では、他の座標軸（次元）が選ばれる。このような処理の繰り返しが、全ての座標軸（次元）について順番に、目的関数ｆ（ｗ）の値が目的解ｗ＊に十分近づくまで、行われる。【０００５】
以上のように、目的関数ｆ（ｗ）が与えられたとき、ＣＤ法はｆ（ｗ）の空間の各座標軸に沿って、目的関数ｆ（ｗ）が最小または最大となる目的解ｗ＊を探索していく。そして、目的解ｗ＊に十分近づいたら処理を停止する。【０００６】
また、ＣＤ法は、パラメータｗの更新計算の際、Ｎｅｗｔｏｎ法などと違ってコストの高い行列演算を必要とせず、計算が低コストである。また、ＣＤ法は、簡素なアルゴリズムであるために実装が比較的容易に行える。そのため、回帰やＳＶＭ等の機械学習の多くの主要な手法が、ＣＤ法に基づき実装されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−３４０９０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１に記載のＣＤ法を用いた行動認識装置では、訓練データのサイズが計算機のメモリサイズより大きい場合に、訓練データを全てメモリに読み込んでＣＤ法を適用することができないという課題がある。【０００９】
本発明の目的は、上記課題に鑑み、訓練データのサイズが計算機のメモリサイズを上回る状況下であっても、ＣＤ法を利用できるデータ管理装置、データ分析装置、データ分析システム、及び、データ分析方法を提供することにある。
【課題を解決するための手段】
【００１０】
本発明の一態様におけるデータ管理装置は、行列データを表す訓練データを複数のブロックに分割し、各ブロックが元の訓練データのどの列の値を保持しているかを示すメタデータを生成するブロック化手段と、訓練データから学習するパラメータの一部の成分が０に収束した時に、前記各ブロックのうちの不要な列を含む古いブロックを、前記不要な列を除去したブロックに置き換え、前記メタデータを再生成する再ブロック化手段と、を含む。【００１１】
本発明の一態様におけるデータ分析装置は、行列データを表す訓練データを分割したデータである複数のブロックのうち、所定のブロックを読みだしてキューに格納するキュー管理手段と、前記キューに格納された前記所定のブロックを読み出してＣＤ法の繰り返し計算を実施する繰り返し計算手段と、１つの繰り返し計算時にパラメータの一部の成分が０に収束した時、前記０に収束した成分に対応する訓練データの列を除去可能であることを示すフラグを送信するフラグ管理手段と、を含む。【００１２】
本発明の一態様におけるデータ分析システムは、行列データを表す訓練データを複数のブロックに分割し、各ブロックが元の訓練データのどの列の値を保持しているかを示すメタデータを生成するブロック化手段と、訓練データから学習するパラメータの一部の成分が０に収束した時に、前記各ブロックのうちの不要な列を含む古いブロックを、前記不要な列を除去したブロックに置き換え、前記メタデータを再生成する再ブロック化手段と、を含むデータ管理装置と、行列データを表す訓練データを分割したデータである複数のブロックのうち、所定のブロックを読みだしてキューに格納するキュー管理手段と、
前記キューに格納された前記所定のブロックを読み出してＣＤ法の繰り返し計算を実施する繰り返し計算手段と、１つの繰り返し計算時にパラメータの一部の成分が０に収束した時、前記０に収束した成分に対応する訓練データの列を除去可能であることを示すフラグを送信するフラグ管理手段と、を含むデータ分析装置と、を含む。【００１３】
本発明の一態様におけるコンピュータが読み取り可能な第１の記録媒体は、行列データを表す訓練データを複数のブロックに分割し、各ブロックが元の訓練データのどの列の値を保持しているかを示すメタデータを生成する処理と、訓練データから学習するパラメータの一部の成分が０に収束した時に、前記各ブロックのうちの不要な列を含む古いブロックを、前記不要な列を除去したブロックに置き換え、前記メタデータを再生成する処理と、をコンピュータに実行させるプログラムを記憶する。【００１４】
本発明の一態様におけるコンピュータが読み取り可能な第２の記録媒体は、行列データを表す訓練データを分割したデータである複数のブロックのうち、所定のブロックを読みだしてキューに格納する処理と、前記キューに格納された前記所定のブロックを読み出してＣＤ法の繰り返し計算を実施する処理と、１つの繰り返し計算時にパラメータの一部の成分が０に収束した時、前記０に収束した成分に対応する訓練データの列を除去可能であることを示すフラグを送信する処理と、をコンピュータに実行させるプログラムを記憶する。【００１５】
本発明の一態様におけるデータ管理方法は、行列データを表す訓練データを複数のブロックに分割し、各ブロックが元の訓練データのどの列の値を保持しているかを示すメタデータを生成し、訓練データから学習するパラメータの一部の成分が０に収束した時に、前記各ブロックのうちの不要な列を含む古いブロックを、前記不要な列を除去したブロックに置き換え、前記メタデータを再生成する。【００１６】
本発明の一態様におけるデータ分析方法は、行列データを表す訓練データを分割したデータである複数のブロックのうち、所定のブロックを読みだしてキューに格納し、前記キューに格納された前記所定のブロックを読み出してＣＤ法の繰り返し計算を実施し、１つの繰り返し計算時にパラメータの一部の成分が０に収束した時、前記０に収束した成分に対応する訓練データの列を除去可能であることを示すフラグを送信する。【００１７】
本発明の一態様における分析方法は、行列データを表す訓練データを複数のブロックに分割し、各ブロックが元の訓練データのどの列の値を保持しているかを示すメタデータを生成し、訓練データから学習するパラメータの一部の成分が０に収束した時に、前記各ブロックのうちの不要な列を含む古いブロックを、前記不要な列を除去したブロックに置き換え、前記メタデータを再生成し、行列データを表す訓練データを分割したデータである複数のブロックのうち、所定のブロックを読みだしてキューに格納し、前記キューに格納された前記所定のブロックを読み出してＣＤ法の繰り返し計算を実施し、１つの繰り返し計算時にパラメータの一部の成分が０に収束した時、前記０に収束した成分に対応する訓練データの列を除去可能であることを示すフラグを送信する。
【発明の効果】
【００１８】
本発明の効果は、訓練データのサイズが計算機のメモリサイズを上回る状況下であっても、ＣＤ法を利用できることである。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１の実施形態におけるデータ管理装置１０１の構成を示すブロック図である。
【図２】本発明の第１の実施形態におけるデータ管理装置１０１の動作を示すフロー図である。
【図３】本発明の第２の実施形態におけるデータ分析装置１０２の構成を示すブロック図である。
【図４】本発明の第２の実施形態におけるデータ分析装置１０２の動作を示すフロー図である。
【図５】本発明の第３の実施形態におけるデータ分析システム１０３の構成を示すブロック図である。
【図６】本発明の第３の実施形態におけるデータ分析システム１０３の構成を実現するコンピュータの一例を示すブロック図である。
【図７】本発明の第３の実施形態における訓練データおよびそのブロック分割の一例を示す図である。
【図８】本発明の第３の実施形態におけるメタデータの一例を示す図である。
【図９】本発明の第３の実施形態におけるブロック化の動作を示すフロー図である。
【図１０】本発明の第３の実施形態におけるキュー管理の動作を示すフロー図である。
【図１１】本発明の第３の実施形態における繰り返し計算の動作を示すフロー図である。
【図１２】本発明の第３の実施形態におけるフラグ管理の動作を示すフロー図である。
【図１３】本発明の第３の実施形態における再ブロック化の動作を示すフロー図である。
【図１４】本発明の第３の実施形態における再ブロック化で生成された新しいブロックとメタデータの一例を示す図である。
【図１５】Ｃｏｏｒｄｉｎａｔｅ  Ｄｅｓｃｅｎｔ法の動作例を示す図である。
【発明を実施するための形態】
【００２０】
＜実施形態１＞
本発明の実施形態について、図面を参照して詳細に説明する。図１は、本発明の第１の実施形態におけるデータ管理装置１０１の構成を示すブロック図である。
【００２１】
図１を用いて、本発明の第１の実施形態におけるデータ管理装置１０１について説明する。なお、図１に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明に対するなんらの限定を意図するものではない。
【００２２】
図１に示すように、本発明の第１の実施形態におけるデータ管理装置１０１は、ブロック化部２０と再ブロック化部４０を含む。ブロック化部２０は、与えられた行列データで表される訓練データ（例えば、整数Ｎ、Ｍで表されるＮ行Ｍ列の行列）を複数のブロックに分割し、各ブロックが元の訓練データの何行何列の値を保持しているかを表す情報であるメタデータを生成する。再ブロック化部４０は、訓練データから学習するパラメータを監視する。パラメータは、訓練データから学習される成分であり、例えばＣＤ法によって定義される目的関数のベクトル成分に対応する。再ブロック化部４０は、訓練データの学習処理によりそのパラメータの一部の成分（例えば、ｊ次元（訓練データのｊ列）の成分ｗｊ）が０に収束した時に、各ブロックのうち不要な列を含む古いブロックを、不要な列を除去したブロックに置き換える。ここで、不要な列とは、例えば、０に収束した軸に対応する列である。また、不要な列を除去したブロックは、更新ブロックとも言う。そして、再ブロック化部４０は、更新ブロックに対し、前述のメタデータ（各ブロックが元の訓練データの何行何列の値を保持しているかを表す情報）を再生成する。
【００２３】
次に、図２を用いて、本発明の第１の実施形態におけるデータ管理装置１０１の動作について説明する。
【００２４】
図２は、本発明の第１の実施形態におけるデータ管理装置１０１の動作を示すフロー図である。なお、図２に示すフロー図及び以下の説明は処理例であり、適宜求める処理に応じて処理順等を入れ替えたり、処理を戻したり、繰り返しても良い。
【００２５】
図２に示すように、ブロック化部２０は、与えられた行列データを表す訓練データを複数のブロックに分割し、各ブロックが元の訓練データの何行何列の値を保持しているかを表す情報であるメタデータを生成する（ステップＳ１０１）。再ブロック化部４０は、訓練データから学習するパラメータの一部の成分が０に収束した時に、各ブロックのうち不要な列を含む古いブロックを、不要な列を除去したブロックに置き換え、そのメタデータを再生成する（ステップＳ１０２）。
【００２６】
本発明の第１の実施形態におけるデータ管理装置１０１は、訓練データのサイズがデータ管理装置または計算機のメモリサイズを上回る状況下であっても、ＣＤ法を利用できる。その理由は、訓練データをブロックに分割することで、ブロック単位のサイズが小さくなり、訓練データがメモリサイズよりも大きい場合でも、データ管理装置または計算機が処理できるブロック単位でＣＤ法に係る処理を行えるためである。
【００２７】
＜実施形態２＞
本発明を実施するための第２の形態におけるデータ分析装置１０２の構成について、図面を参照して説明する。図３は、本発明の第２の実施形態におけるデータ分析装置１０２の構成を示すブロック図である。
【００２８】
図３に示すように、本発明の第２の実施形態におけるデータ分析装置１０２は、キュー管理部９０、繰り返し計算部１１０、及びフラグ管理部１００を含む。
【００２９】
キュー管理部９０は、行列データで表される訓練データを分割したデータである複数のブロックのうち、所定のブロックを読みだしてキューに格納する。繰り返し計算部１１０は、キューに格納された所定のブロックを読み出してＣＤ法の繰り返し計算（第１の実施形態における学習に対応）を実施する。フラグ管理部１００は、１つの繰り返し計算時にパラメータの一部の成分が０に収束した時、その一部の成分に対応する（訓練データの）列を除去可能であることを示すフラグを送信する。
【００３０】
次に、図４を用いて、本発明の第２の実施形態におけるデータ分析装置１０２の動作について説明する。
【００３１】
図４は、本発明の第２の実施形態におけるデータ分析装置１０２の動作を示すフロー図である。図４に示すように、キュー管理部９０は、与えられた行列データを表す訓練データを分割したデータである複数のブロックのうち、所定のブロックを読みだしてキューに格納する（ステップＳ２０１）。繰り返し計算部１１０は、キューに格納された所定のブロックを読み出してＣＤ法の繰り返し計算を実施する（ステップＳ２０２）。フラグ管理部１００は、１つの繰り返し計算時にパラメータの一部の成分が０に収束した時、一部の成分に対応する訓練データの列を除去可能であることを示すフラグを送信する（ステップＳ２０３）。
【００３２】
本発明の第２の実施形態におけるデータ分析装置１０２は、訓練データのサイズが計算機のメモリサイズを上回る状況下であっても、ＣＤ法を利用できる。なぜなら、訓練データをブロックに分割することで、ブロック単位のサイズが小さくなり、訓練データがメモリサイズよりも大きい場合でも、ブロック単位でＣＤ法に係る処理を行えるためである。
【００３３】
＜実施形態３＞
まず、本発明の実施形態において、解決すべき課題を明らかにする。
【００３４】
特許文献１に記載のＣＤ法を用いた行動認識装置では、訓練データのサイズが計算機のメモリサイズより大きい場合に、訓練データを全てメモリに読み込んでＣＤ法を適用することができないという課題（第一の課題）がある。近年の情報技術の発達により、マシンのメモリサイズを超える巨大な訓練データが得られやすくなっていることから、訓練データをメモリに乗せきれないために、ＣＤ法に係る処理を実行できないケースが増えてきている。
【００３５】
さらに、特許文献１に記載のＣＤ法を用いた行動認識装置では、ＣＤ法は繰り返し計算が何度も発生するために、処理時間がかかるという課題（第二の課題）がある。ＣＤ法では、１度の更新で、訓練データの各行を参照する必要がある。特に、第一の課題に直面しているとき、対処法として、訓練データをメモリに読める分だけ読み込み、処理し、また次の分を読み込むＯｕｔ−ｏｆ−Ｃｏｒｅ対応が必須になる。そのとき、データの読み込みが頻発して処理時間が余計に増加する。
【００３６】
そこで、本発明を実施するための第３の形態におけるデータ分析システム１０３が、上記第一の課題及び第二の課題を解決する。以下に、本発明を実施するための第３の形態におけるデータ分析システム１０３の構成及び動作について説明する。
【００３７】
まず、本発明を実施するための第３の形態におけるデータ分析システム１０３の構成について、図面を参照して説明する。図５は、本発明の第３の実施形態におけるデータ分析システム１０３の構成を示すブロック図である。
【００３８】
本発明の第３の実施形態におけるデータ分析システム１０３は、データ管理装置１、データ分析装置６、及び訓練データ格納部１２を含む。データ管理装置１、データ分析装置６、及び訓練データ格納部１２は、ネットワーク１３やバス等で、通信可能に接続される。ここで、訓練データ格納部１２は、訓練データを格納する。また、訓練データ格納部１２は、例えば、データ分析システム１０３の外部にある記憶装置として、訓練データを格納してもよい。その場合、データ分析システム１０３とその記憶装置は、ネットワーク１３等で通信可能に接続される。
【００３９】
データ管理装置１は、ブロック化部２、メタデータ格納部３、再ブロック化部４、及びブロック格納部５を含む。ここで、ブロック化部２、再ブロック化部４は、上述した本発明の第１の実施形態におけるデータ管理装置１０１が含むブロック化部２０、再ブロック化部４０と同様の構成と機能を有する。
【００４０】
ブロック化部２は、訓練データ格納部１２に格納された（与えられた）訓練データを読み出し、訓練データを複数のブロックに分割する。さらに、ブロック化部２は、分割された各ブロックのデータをブロック格納部５に格納する。また、ブロック化部２は、各ブロックが元の訓練データ上の何行何列の値を保有しているかを示すメタデータを生成し、メタデータ格納部３に格納する。
【００４１】
ブロック格納部５は、分割された訓練データの各ブロックのデータを格納する。メタデータ格納部３は、ブロック化部２によって生成されたメタデータを格納する。
【００４２】
再ブロック化部４は、訓練データから学習するパラメータの一部の成分が０に収束した時に、各ブロックのうち不要な列を含む古いブロックを、当該不要な列を除去したブロックに置き換え、置き換えたブロックに対して前述のメタデータを再生成する。
【００４３】
データ分析装置６は、パラメータ格納部７、キュー８、キュー管理部９、フラグ管理部１０、及び繰り返し計算部１１を含む。ここで、キュー管理部９、繰り返し計算部１１、及びフラグ管理部１０は、上述した本発明の第２の実施形態におけるデータ分析装置１０２が含むキュー管理部９０、繰り返し計算部１１０、及びフラグ管理部１００と同様の構成と機能を有する。
【００４４】
パラメータ格納部７は、パラメータ等の更新すべき変数を格納する。キュー８は、ブロックを格納する。
【００４５】
繰り返し計算部１１は、繰り返し計算部１１が計算する列に必要なブロックまたは代表値をキュー８から読み出し、更新計算を行う。繰り返し計算部１１は、キュー８に格納された所定のブロックを読み出してＣＤ法の繰り返し計算を実施する。繰り返し計算部１１は、１つの繰り返し計算ごとに、パラメータの各成分が０に収束したか否かの判定を行う。０に収束した成分ｗｊがあった場合、繰り返し計算部１１は、フラグ管理部１０を呼び出して成分ｗｊが０に収束したことを示す情報を伝える。
【００４６】
キュー管理部９は、不要になったブロックをキュー８から破棄し、新たに必要になるブロックをブロック格納部５から取得（例えば、フェッチ）する。フラグ管理部１０は、繰り返し計算部１１から成分ｗｊが０に収束した情報を受け取り、データ管理装置１に不要な列を出力する。
【００４７】
図６を用いて、本発明の第３の実施形態におけるデータ分析システム１０３が含むデータ管理装置１及びデータ分析装置６を実現するコンピュータについて説明する。
【００４８】
図６は、本発明の第３の実施形態におけるデータ分析システム１０３が含むデータ管理装置１及びデータ分析装置６の代表的なハードウェア構成図である。図６に示すように、データ管理装置１及びデータ分析装置６は、それぞれ、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２１、ＲＡＭ（Ｒａｍｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２２、記憶装置２３を含む。また、データ管理装置１及びデータ分析装置６は、それぞれ、例えば、通信インターフェース２４、入力装置２５、出力装置２６を含む。
【００４９】
データ管理装置１が含むブロック化部２、及び再ブロック化部４と、データ分析装置６が含むキュー管理部９、フラグ管理部１０、及び繰り返し計算部１１とは、プログラムをＲＡＭ２２に読み出し、実行するＣＰＵ２１によって実現される。データ管理装置１が含むメタデータ格納部３、及びブロック格納部５と、データ分析装置６が含むパラメータ格納部７、及びキュー８とは、例えば、ハードディスクや、フラッシュメモリである。
【００５０】
通信インターフェース２４は、ＣＰＵ２１に接続され、ネットワーク或いは外部記憶媒体に接続される。外部データが通信インターフェース２４を介してＣＰＵ２１に取り込まれても良い。入力装置２５は、例えばキーボードやマウス、タッチパネルである。出力装置２６は、例えばディスプレイである。なお、図６に示すハードウェア構成は、一例にすぎず、データ管理装置１及びデータ分析装置６のそれぞれの構成要素が独立した論理回路で構成されていても良い。
【００５１】
次に、図７乃至１４を用いて、本発明の第３の実施形態におけるデータ分析システム１０３の動作について説明する。
【００５２】
図９は、本発明の第３の実施形態におけるブロック化部２の動作を示すフロー図（フローチャート）である。ブロック化部２はまず、データ分析装置６のキュー８のサイズを取得する（ステップＳ３０１）。次に、ブロック化部２は、訓練データをキュー８に十分収まるサイズのブロックに分割する（ステップＳ３０２）。分割する方法は、例えば、行方向に分割してもいいし、列方向に分割してもいいし、行列両方の方向に分割してもいい。
【００５３】
次に、ブロック化部２は、各ブロックが訓練データのどの値を保持しているかの情報をメタデータとして生成する（ステップＳ３０３）。そして、ブロック化部２は、各ブロックのデータをブロック格納部５に格納し、生成したメタデータをメタデータ格納部３に格納する（ステップＳ３０４）。
【００５４】
図１０は、本発明の第３の実施形態におけるキュー管理部９の動作を示すフロー図である。最初に、キュー管理部９は、繰り返し計算部１１から、処理する列の数列（ｊ１，ｊ２，．．．，ｊｋ）を取得する（ステップＳ４０１）。ここで、ｋは、１以上の整数である。処理する列の数列の順序関係は、列番号の降順や昇順であってもいいし、ランダムであってもいいし、あるいはそれ以外の順序関係であってもいい。次に、キュー管理部９は、カウンタｒを１で初期化する（ステップＳ４０２）。ここでカウンタｒの値は、１からｋまでを取り得る。キュー管理部９は、メタデータ格納部３に格納されているメタデータを参照して、ブロック格納部５に格納されているｊｒ列目を含む未処理のブロックを特定する（ステップＳ４０３）。
【００５５】
次に、キュー管理部９は、キュー８が満杯である場合（ステップＳ４０４でＹＥＳ）、空きができるまで定期的にキュー８をチェックしながら待機する（ステップＳ４０５）。キュー８に空きが出来た場合（ステップＳ４０４のＮｏ）、キュー管理部９は、当該ブロックをブロック格納部５から読み込んでキュー８に入れる（ステップＳ４０６）。そして、ｊｒ列目を含む未処理の他のブロックが存在する場合（ステップＳ４０７でＹＥＳ）、上記の処理が繰り返される（ステップＳ４０３へ戻る）。ｊｒ列目を含む未処理の他のブロックが存在しない場合（ステップＳ４０７のＮｏ）、キュー管理部９は、カウンタｒの値を更新する（ステップＳ４０８）。キュー管理部９は、例えば、カウンタｒの値に１を足す。そして、繰り返し計算部１１の処理が終了する場合（ステップＳ４０９でＹＥＳ）、キュー管理部９の処理が終了する。繰り返し計算部１１の処理が終了しない場合（ステップＳ４０９でＮｏ）、処理が終了するまで、上記の処理が繰り返される（ステップＳ４０４へ戻る）。
【００５６】
図１１は、本発明の第３の実施形態における繰り返し計算部１１の動作を示すフロー図である。まず、繰り返し計算部１１は、処理する列の数列（ｊ１，ｊ２，．．．）を決定し、キュー管理部９に送信する（ステップＳ５０１）。繰り返し計算部１１は、カウンタｒを１で初期化し（ステップＳ５０２）、更新差分Δを０で初期化する（ステップＳ５０３）。次に、繰り返し計算部１１は、キュー８からｊｒ列目を含むブロックを取得し（ステップＳ５０４）、ブロックを一行ずつ読みながら更新差分Δを更新する（ステップＳ５０５）。ここで、更新差分Δは、例えば、Ｎ行Ｍ列（Ｎ、Ｍは自然数）の訓練データの、ｉ行目及びｊ列目（ｉは１以上Ｎ以下の整数、ｊは１以上Ｍ以下の整数）の値ｘｉｊとｗの関数ｇ（ｗ）との積ｘｉｊ×ｇ（ｗ）を、１行目からＮ行目まで足すことで計算される。
【００５７】
ブロックのｊｒ列目の全ての行に対する更新の処理が完了していない場合（ステップＳ５０６でＮｏ）、繰り返し計算部１１は、ステップＳ５０４からステップＳ５０５の処理を、ブロックのｊｒ列目の全ての行について繰り返す（ステップＳ５０４に戻る）。
【００５８】
ブロックのｊｒ列目の全ての行に対する更新の処理が完了した場合（ステップＳ５０６でＹＥＳ）、繰り返し計算部１１は、目的関数ｆ（ｗ）のパラメータｗのｊｒ番目（ｊｒ列目）の成分ｗｊｒをｗｊｒ＋Δに更新する（ステップＳ５０７）。パラメータｗの更新差分Δが所定の値より小さい（以下、十分小さいと記載する）場合（ステップＳ５０８でＹＥＳ）、繰り返し計算部１１は動作（ステップ処理）を終了する。所定の値は、例えば、０．０００１等、更新差分Δが十分小さいことを示す値であればどのような値でも良い。
【００５９】
パラメータｗの更新差分Δが所定の値より大きい場合（ステップＳ５０８でＮｏ）、繰り返し計算部１１は、まだ更新する余地があると判断し、成分ｗｊｒがゼロに収束したかどうかを判定する（ステップＳ５０９）。ｗｊｒがゼロに収束している場合（ステップＳ５０９でＹＥＳ）、繰り返し計算部１１は、ｗｊｒがゼロに収束したことをフラグ管理部１０に送信する（ステップＳ５１０）。次に、繰り返し計算部１１は、カウンタｒの値をｒ＋１に更新し（ステップＳ５１１）、更新差分Δが十分小さくなるまで上記を繰り返す（ステップＳ５０３へ戻る）。
【００６０】
ここで、成分ｗｊｒがゼロに収束していない場合（ステップＳ５０９でＮｏ）、繰り返し計算部１１は、カウンタｒの値をｒ＋１に更新し（ステップＳ５１１）、更新差分Δが十分小さくなるまで上記を繰り返す（ステップＳ５０３へ戻る）。
【００６１】
図１２は、本発明の第３の実施形態におけるフラグ管理部１０の動作を示すフロー図である。図１２に示すように、フラグ管理部１０は、パラメータｗの非ゼロ成分の数のスナップショットを、変数ｚとして管理する（ステップＳ６０１）。そして、フラグ管理部１０は、ゼロに収束した成分の位置を繰り返し受信し（ステップＳ６０２）、それまでに受信したゼロ成分の位置情報の数がｚ／２以上かどうかを判定する（ステップＳ６０３）。ゼロ成分の位置情報の数がｚ／２以上である場合（ステップＳ６０３でＹＥＳ）、フラグ管理部１０は、再ブロック化部４へ、ゼロに収束した成分ｗｊｒの位置情報と、再ブロック化の命令を送信する（ステップＳ６０４）。そして、繰り返し計算部１１の処理が終了する場合（ステップＳ６０５でＹＥＳ）、フラグ管理部１０の処理が終了する。
【００６２】
ここで、繰り返し計算部１１の処理が終了しない場合（ステップＳ６０５でＮｏ）、フラグ管理部１０は、処理が終了するまで上記の処理を繰り返す（ステップＳ６０１へ戻る）。また、ゼロ成分の位置情報の数がｚ／２未満である場合（ステップＳ６０３でＮｏ）、フラグ管理部１０は、ステップＳ６０５の処理に進む。また、ｚ／２の分母は、必ずしも２である必要はなく、任意の整数をユーザが指定できるようにパラメータ化されていてもいい。
【００６３】
図１３は、本発明の第３の実施形態における再ブロック化部４の動作を示すフロー図である。図１３に示すように、再ブロック化部４は、フラグ管理部１０から再ブロック化の命令と、パラメータｗの中でゼロに収束した成分の位置情報を取得する（ステップＳ７０１）。次に、再ブロック化部４は、キュー８に十分収まるサイズの範囲で、隣り合うブロック同士を、ゼロに収束した成分に対応する列を除外しながら連結することで、ブロックを再構成し、ブロック格納部５の古いブロックと置き換える（ステップＳ７０２）。再ブロック化部４は、例えば、隣り合うブロック同士を、ゼロに収束した成分に対応する列を除外しながら連結することで、ブロックを再構成し、古いブロックと置き換える。そして、再ブロック化部４は、再構成されたブロックに対応したメタデータを生成し、メタデータ格納部３の古いメタデータと置き換える（ステップＳ７０３）。以上で、再ブロック化部４の動作が終了する。
【００６４】
次に、本願の発明を実施するためのデータ分析装置６における詳細な動作について説明する。
【００６５】
最初に、図７を用いて、データ管理装置１のブロック化部２が実施する動作例を示す。図７は、本発明の第３の実施形態における訓練データおよびそのブロック分割の一例を示す図である。
【００６６】
図７に示される８行８列の行列は、訓練データの例である。例えば、データ分析装置６のキュー８には、訓練データの２分の１のデータサイズしか入らないと仮定する。ブロック化部２はブロックの最大サイズがキュー８のサイズ以下になるよう、訓練データを適当な大きさのブロックに分割する。ここでは例として、訓練データを行および列方向に２等分し、全体で４等分割したブロックを生成している。
【００６７】
図７に示すように、８行８列の行列に記載の点線がブロックの境界線を表している。４等分割したブロックのそれぞれを、ｂｌｏｃｋ１，２，３，４とする。ｂｌｏｃｋ１は、例えば、行ｘ１のデータが「０．３６  ０．２６  ０．００  ０．００」であり、行ｘ２のデータが「０．００  ０．００  ０．９１  ０．００」である。ｂｌｏｃｋ１の行ｘ３のデータは「０．０１  ０．００  ０．００  ０．００」であり、行ｘ４のデータは「０．００  ０．００  ０．０９  ０．００」である。
【００６８】
ここで、ブロックを分割する方法としては本例に限らない。例えば、行または列方向だけを分割してもいいし、ブロックごとにサイズが異なるように分割してもいいし、事前に行や列を任意の手法で並び替えてから分割してもいい。
【００６９】
ブロック化部２は、ブロック分割すると同時に、ブロックのメタデータを算出する。図８は、本発明の第３の実施形態におけるメタデータの一例を示す図である。図８は、例えば、図７の４ブロックのメタデータを示す。つまり、メタデータの各行は、訓練データの各列がどのブロックに分配されたかを示している。図８に示すように、メタデータの一行目は、例えば、訓練データ上で１列目にあたる値が、ブロック１と２に分配されたことを示す。
【００７０】
ここで、メタデータの形式はこの例に限らず、訓練データの値が、どのブロックに属しているかの情報が含まれていれば、任意の形式があり得る。
【００７１】
次に、図７及び図１４を用いて、再ブロック化に関する具体的な動作例を説明する。
【００７２】
データ分析装置６は、キュー８にブロックを順番に読み出しながら、繰り返し計算部１１でパラメータｗの最適化を行う。ここではパラメータｗの初期値をランダムに（１，１０，２，３，４，８，３）と決定し、最適化を始めた場合、例えば、フラグ管理部１０が管理する非ゼロ成分の数ｚは８である。何度かの繰り返し計算の後、繰り返し計算部１１がパラメータｗの２列目の成分がゼロに収束したと判定すると、フラグ管理部１０は２列目という位置情報を記憶する。さらに繰り返し計算が進み、３，４，６列目もゼロに収束したと判定されたとする。フラグ管理部１０は同様に３，４，６列目という位置情報も記憶する。さらに、ｚ／２以上の数の成分がゼロに収束したことから、フラグ管理部１０は位置情報（２，３，４，６）と共に、データ管理装置１の再ブロック化部４に再ブロック化命令を送信する。
【００７３】
命令を受けた再ブロック化部４は、ブロック格納部５にあるブロックに対して、送られてきた位置情報（２，３，４，６）の列を除外しながら、キュー８に十分収まるサイズになるように再ブロック化を行う。
【００７４】
図１４は、本発明の第３の実施形態における再ブロック化で生成された新しいブロックとメタデータの一例を示す図である。図１４は、図７に示される４つのブロックを、位置情報（２，３，４，６）に基づき再ブロック化した例である。この場合、２，３，４，６列目が除外された２つのブロックが生成され、ブロック格納部５の古いブロック（図７）と置き換えられる。そして、図１４に示すように、新しいブロック（図１４の左図）から新しいメタデータ（図１４の右図）が生成される。
【００７５】
不要となった列をブロックから除外することで、全ブロックのうちキュー８に読み出されるブロックの割合が大きくなり、必要な情報がバッファやキャッシュに乗りやすくなるメリットがある。
【００７６】
上記のとおり、本発明の第３の実施形態におけるデータ分析システム１０３において、データ管理装置１のブロック化部２は、訓練データ格納部１２に格納された訓練データを読み出し、訓練データをブロック分割し、ブロック格納部５に格納する。また、ブロック化部２は、各ブロックが元の訓練データ上の何行何列の値を保有しているかを示すメタデータを生成し、メタデータ格納部３に格納する。再ブロック化部４は、繰り返し計算中にゼロに収束したパラメータの成分の位置情報に基づき、その位置に対応する訓練データ上の列を除外するように、ブロックを再構成して古いブロックと置き換えて保持する。
【００７７】
データ分析装置６は、パラメータ格納部７、キュー８、キュー管理部９、フラグ管理部１０、及び繰り返し計算部１１を含む。パラメータ格納部７は、パラメータ等の更新すべき変数を格納する。キュー８は、ブロックを格納する。繰り返し計算部１１は、繰り返し計算部１１が計算する列に必要なブロックまたは代表値をキュー８から読み出し、更新計算を行う。繰り返し計算部１１は、キュー８に格納された所定のブロックを読み出してＣＤ法の繰り返し計算を実施する。キュー管理部９は、不要になったブロックをキュー８から破棄し、新たに必要になるブロックをブロック格納部５から取得する。フラグ管理部１０は、繰り返し計算部１１から成分ｗｊが０に収束したことを示す情報を受け取り、データ管理装置１に不要な列を出力する。したがって、当該データ分析システム１０３は、訓練データのサイズが計算機のメモリサイズを上回る状況下であっても、ＣＤ法を利用でき、且つ、当該状況下でのＣＤ法の処理時間を短縮できる。
【００７８】
その理由は、以下の通りである。すなわち、訓練データをブロックに分割し、ブロック単位で処理を行うことで、訓練データがメモリに乗りきらない場合であっても、ＣＤ法の処理が実行できる。また、パラメータの一部の成分は最適化による繰り返し計算の途中でしばしば０に収束する。０に収束したパラメータ成分は以後の繰り返し計算で変化することがない。すなわち、当該成分に対応するデータ列は以降読み込む必要がない。したがって、読み込む必要のないデータ列を再ブロック化で除去することで、必要なデータ列を一度により多く読み込むことができ、計算が短縮される。
【００７９】
ここで、計算が短縮される仕組みを具体的に説明するために、図７に示す訓練データを用いたＣＤ法を考える。訓練データは二次記憶装置から主記憶装置に読み込まれて処理される。しかし、当該計算機は、例えば、容量の問題で当該訓練データの半分しか一度に主記憶上に読み込めないと仮定する。このとき対処法の一つとして、当該訓練データを４行ずつ主記憶に読み込んで処理する方法が考えられる。すなわち、列ｊについて成分ｗｊの更新を行うために、１行目から４行目を読み込み、処理し、次に５行目から８行目を読み、処理する。この場合、２回のＩＯが発生する。１回の繰り返し計算において、１列目から８列目まで順に更新計算をすると仮定すると、１６回のＩＯが発生する。５０回計算を繰り返した段階でパラメータｗの１，２，３，４番目の成分が０に収束し、１００回繰り返した時点でパラメータｗが最適化されたとすると、ＩＯは全部で２×８×５０＋２×４×５０＝１２００回発生する。
【００８０】
このとき、５０回繰り返した時点で、訓練データにおける１〜４列目は二度と参照されない。その理由は、以下の通りである。すなわち、先述のとおり、ＣＤ法の列ｊに対する計算では、パラメータｗの成分ｗｊをｗｊ＋α・ｄに更新する。ここで、ｄは、図１５における開始点の移動方向、αは、移動幅（ステップ幅）である。α・ｄは訓練データのｉ行ｊ列目の値ｘｉｊとｗの関数ｇ（ｗ）とに対して、積ｘｉｊ×ｇ（ｗ）の行ｉに関する総和によって得られる値で、訓練データのｊ列目の値はｗｊの更新でのみ使用される。
【００８１】
そこで二次記憶装置上の訓練データを、１〜４列目を除去した訓練データに置き換えると、データサイズが半分になる。このため、５１回目から１００回目までの繰り返し処理では、置き換えたデータを一回ずつ読み込めばよい。この場合、ＩＯは全部で２×８×５０＋１×４×５０＝１０００回発生し、置き換えを行わない場合よりＩＯ回数が減る。
【００８２】
これによって全体の処理時間短縮の効果が得られる。
【００８３】
以上、実施形態を用いて本願発明を説明したが、本願発明は、上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解しうる様々な変更をすることができる。
【００８４】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００８５】
［付記１］
行列データを表す訓練データを複数のブロックに分割し、各ブロックが元の訓練データのどの列の値を保持しているかを示すメタデータを生成するブロック化部と、
訓練データから学習するパラメータの一部の成分が０に収束した時に、前記各ブロックのうちの不要な列を含む古いブロックを、前記不要な列を除去したブロックに置き換え、前記メタデータを再生成する再ブロック化部と、を含むデータ管理装置。
【００８６】
［付記２］
前記再ブロック化部は、前記各ブロックのうちの隣り合うブロック同士を、前記ブロックに含まれる列のうちの前記０に収束した成分に対応する列を除外しながら連結して、前記ブロックを再構成する付記１に記載のデータ管理装置。
【００８７】
［付記３］
前記メタデータを格納するメタデータ格納部をさらに備え、
前記再ブロック化部は、再構成された前記ブロックに対応するメタデータを生成し、前記メタデータ格納部に格納されたメタデータを更新する付記２に記載のデータ管理装置。
【００８８】
［付記４］
行列データを表す訓練データを複数のブロックに分割し、各ブロックが元の訓練データのどの列の値を保持しているかを示すメタデータを生成し、
訓練データから学習するパラメータの一部の成分が０に収束した時に、前記各ブロックのうちの不要な列を含む古いブロックを、前記不要な列を除去したブロックに置き換え、前記メタデータを再生成するデータ管理方法。
【００８９】
［付記５］
行列データを表す訓練データを複数のブロックに分割し、各ブロックが元の訓練データのどの列の値を保持しているかを示すメタデータを生成する処理と、
訓練データから学習するパラメータの一部の成分が０に収束した時に、前記各ブロックのうちの不要な列を含む古いブロックを、前記不要な列を除去したブロックに置き換え、前記メタデータを再生成する処理と、をコンピュータに実行させるプログラム。
【００９０】
［付記６］
行列データを表す訓練データを分割したデータである複数のブロックのうち、所定のブロックを読みだしてキューに格納するキュー管理部と、
前記キューに格納された前記所定のブロックを読み出してＣＤ法の繰り返し計算を実施する繰り返し計算部と、
１つの繰り返し計算時にパラメータの一部の成分が０に収束した時、前記０に収束した成分に対応する訓練データの列を除去可能であることを示すフラグを送信するフラグ管理部と、を含むデータ分析装置。
【００９１】
［付記７］
前記繰り返し計算部は、前記１つの繰り返し計算ごとに、前記パラメータの各成分が０に収束したか否かを判定し、前記０に収束した成分があると判断した場合、前記フラグ管理部に前記０に収束した成分を通知する付記６に記載のデータ分析装置。
【００９２】
［付記８］
前記繰り返し計算部は、前記所定のブロックに含まれる少なくとも１つの成分を更新した場合に、更新した前記成分の更新差分が所定の閾値よりも大きいことに応じて、前記成分をさらに更新する付記６又は７に記載のデータ分析装置。
【００９３】
［付記９］
前記キュー管理部は、前記ＣＤ法の繰り返し計算の結果、不要となったブロックを前記キューから破棄し、新たに必要となるブロックを前記キューに格納する付記６乃至８のいずれか１項に記載のデータ分析装置。
【００９４】
［付記１０］
前記キュー管理部は、前記複数のブロックのうち、前記繰り返し計算部が前記ＣＤ法の繰り返し計算を実施していないブロックを特定し、特定した前記ブロックを前記所定のブロックとして読み出す付記６乃至９のいずれか１項に記載のデータ分析装置。
【００９５】
［付記１１］
前記フラグ管理部は、前記繰り返し計算部から前記パラメータの各成分のうち、前記０に収束した成分に関する情報を受け取り、前記０に収束した成分に対応する訓練データの列を除去可能であることを示すフラグを送信する付記６乃至１０のいずれか１項に記載のデータ分析装置。
【００９６】
［付記１２］
前記フラグ管理部は、前記パラメータの各成分のうち前記０に収束した成分が所定の数以上であるか否かを判定し、前記所定の数以上であることに応じて、前記複数のブロックを再ブロック化することを要求する付記６乃至１１のいずれか１項に記載のデータ分析装置。
【００９７】
［付記１３］
行列データを表す訓練データを分割したデータである複数のブロックのうち、所定のブロックを読みだしてキューに格納し、
前記キューに格納された前記所定のブロックを読み出してＣＤ法の繰り返し計算を実施し、
１つの繰り返し計算時にパラメータの一部の成分が０に収束した時、前記０に収束した成分に対応する訓練データの列を除去可能であることを示すフラグを送信するデータ分析方法。
【００９８】
［付記１４］
行列データを表す訓練データを分割したデータである複数のブロックのうち、所定のブロックを読みだしてキューに格納する処理と、
前記キューに格納された前記所定のブロックを読み出してＣＤ法の繰り返し計算を実施する処理と、
１つの繰り返し計算時にパラメータの一部の成分が０に収束した時、前記０に収束した成分に対応する訓練データの列を除去可能であることを示すフラグを送信する処理と、をコンピュータに実行させるプログラム。
【００９９】
［付記１５］
行列データを表す訓練データを複数のブロックに分割し、各ブロックが元の訓練データのどの列の値を保持しているかを示すメタデータを生成するブロック化部と、
訓練データから学習するパラメータの一部の成分が０に収束した時に、前記各ブロックのうちの不要な列を含む古いブロックを、前記不要な列を除去したブロックに置き換え、前記メタデータを再生成する再ブロック化部と、を含むデータ管理装置と、
行列データを表す訓練データを分割したデータである複数のブロックのうち、所定のブロックを読みだしてキューに格納するキュー管理部と、
前記キューに格納された前記所定のブロックを読み出してＣＤ法の繰り返し計算を実施する繰り返し計算部と、
１つの繰り返し計算時にパラメータの一部の成分が０に収束した時、前記０に収束した成分に対応する訓練データの列を除去可能であることを示すフラグを送信するフラグ管理部と、を含むデータ分析装置と、を含むデータ分析システム。
【０１００】
［付記１６］
前記再ブロック化部は、前記各ブロックのうちの隣り合うブロック同士を、前記ブロックに含まれる列のうちの前記０に収束した成分に対応する列を除外しながら連結して、前記ブロックを再構成する付記１５に記載のデータ分析システム。
【０１０１】
［付記１７］
前記メタデータを格納するメタデータ格納部をさらに備え、
前記再ブロック化部は、再構成された前記ブロックに対応するメタデータを生成し、前記メタデータ格納部に格納されたメタデータを更新する付記１６に記載のデータ分析システム。
【０１０２】
［付記１８］
前記繰り返し計算部は、前記１つの繰り返し計算ごとに、前記パラメータの各成分が０に収束したか否かを判定し、前記０に収束した成分があると判断した場合、前記フラグ管理部に前記０に収束した成分を通知する付記１５に記載のデータ分析システム。
【０１０３】
［付記１９］
前記繰り返し計算部は、前記所定のブロックに含まれる少なくとも１つの成分を更新した場合に、更新した前記成分の更新差分が所定の閾値よりも大きいことに応じて、前記成分をさらに更新する付記１５又は１６に記載のデータ分析システム。
【０１０４】
［付記２０］
前記キュー管理部は、前記ＣＤ法の繰り返し計算の結果、不要となったブロックを前記キューから破棄し、新たに必要となるブロックを前記キューに格納する付記１５乃至１７のいずれか１項に記載のデータ分析システム。
【０１０５】
［付記２１］
前記キュー管理部は、前記複数のブロックのうち、前記繰り返し計算部が前記ＣＤ法の繰り返し計算を実施していないブロックを特定し、特定した前記ブロックを前記所定のブロックとして読み出す付記１５乃至１８のいずれか１項に記載のデータ分析システム。
【０１０６】
［付記２２］
前記フラグ管理部は、前記繰り返し計算部から前記パラメータの各成分のうち、０に収束した成分に関する情報を受け取り、前記０に収束した成分に対応する訓練データの列を除去可能であることを示すフラグを送信する付記１５乃至１９のいずれか１項に記載のデータ分析システム。
【０１０７】
［付記２３］
前記フラグ管理部は、前記パラメータの各成分のうち前記０に収束した成分が所定の数以上であるか否かを判定し、前記所定の数以上であることに応じて、前記複数のブロックを再ブロック化することを要求する付記１５乃至２０のいずれか１項に記載のデータ分析システム。
【０１０８】
［付記２４］
行列データを表す訓練データを複数のブロックに分割し、各ブロックが元の訓練データのどの列の値を保持しているかを示すメタデータを生成し、
訓練データから学習するパラメータの一部の成分が０に収束した時に、前記各ブロックのうちの不要な列を含む古いブロックを、前記不要な列を除去したブロックに置き換え、前記メタデータを再生成し、
行列データを表す訓練データを分割したデータである複数のブロックのうち、所定のブロックを読みだしてキューに格納し、
前記キューに格納された前記所定のブロックを読み出してＣＤ法の繰り返し計算を実施し、
１つの繰り返し計算時にパラメータの一部の成分が０に収束した時、前記０に収束した成分に対応する訓練データの列を除去可能であることを示すフラグを送信する分析方法。
【０１０９】
［付記２５］
行列データを表す訓練データを複数のブロックに分割し、各ブロックが元の訓練データのどの列の値を保持しているかを示すメタデータを生成する処理と、訓練データから学習するパラメータの一部の成分が０に収束した時に、前記各ブロックのうちの不要な列を含む古いブロックを、前記不要な列を除去したブロックに置き換え、前記メタデータを再生成する処理と、行列データを表す訓練データを分割したデータである複数のブロックのうち、所定のブロックを読みだしてキューに格納する処理と、前記キューに格納された前記所定のブロックを読み出してＣＤ法の繰り返し計算を実施する処理と、１つの繰り返し計算時にパラメータの一部の成分が０に収束した時、前記０に収束した成分に対応する訓練データの列を除去可能であることを示すフラグを送信する処理と、をコンピュータに実行させるプログラム。
【０１１０】
この出願は、２０１４年２月１８日に出願された日本出願特願２０１４−０２８４５４を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１１１】
１    データ管理装置
２    ブロック化部
３    メタデータ格納部
４    再ブロック化部
５    ブロック格納部
６    データ分析装置
７    パラメータ格納部
８    キュー
９    キュー管理部
１０    フラグ管理部
１１    繰り返し計算部
１２    訓練データ格納部
１３    ネットワーク
２０    ブロック化部
２１    ＣＰＵ
２２    ＲＡＭ
２３    記憶装置
２４    通信インターフェース
２５    入力装置
２６    出力装置
４０    再ブロック化部
９０    キュー管理部
１００    フラグ管理部
１０１    データ管理装置
１０２    データ分析装置
１０３    データ分析システム
１１０    繰り返し計算部
【図１】
0006504155.tif 000002
【図２】
0006504155.tif 000003
【図３】
0006504155.tif 000004
【図４】
0006504155.tif 000005
【図５】
0006504155.tif 000006
【図６】
0006504155.tif 000007
【図７】
0006504155.tif 000008
【図８】
0006504155.tif 000009
【図９】
0006504155.tif 000010
【図１０】
0006504155.tif 000011
【図１１】
0006504155.tif 000012
【図１２】
0006504155.tif 000013
【図１３】
0006504155.tif 000014
【図１４】
0006504155.tif 000015
【図１５】
0006504155.tif 000016