(57)【特許請求の範囲】
【請求項１】
記憶デバイスにアクセス可能なプロセッサが実行するデータ分析装置であって、
前記プロセッサは、
複数の第１データ項目の値を有する学習用入力データの集合である学習用入力データ群を前記記憶デバイスから取得する第１取得処理と、
各々固有の第１ハッシュテーブルを生成することにより第１ハッシュ関数を複数個設定する第１設定処理と、
前記第１取得処理によって取得された学習用入力データ群の各学習用入力データについて、前記第１設定処理によって設定された前記複数の第１ハッシュ関数の各々に与えることにより、前記複数の第１データ項目の値に対応する複数の第１ハッシュ値を前記第１ハッシュ関数ごとに算出する第１算出処理と、
前記各学習用入力データについて、前記第１算出処理によって前記第１ハッシュ関数ごとに算出された前記複数の第１ハッシュ値の中から所定の統計的条件を満たす特定の第１ハッシュ値を前記第１ハッシュ関数ごとに選択する第１選択処理と、
第２ハッシュテーブルを生成することにより第２ハッシュ関数を設定する第２設定処理と、
前記各学習用入力データについて、前記第１選択処理によって前記第１ハッシュ関数ごとに選択された特定の第１ハッシュ値の各々を前記第２設定処理によって設定された第２ハッシュ関数に与えることにより、第２ハッシュ値を複数算出する第２算出処理と、
前記第２算出処理によって算出された結果、前記特定の第１ハッシュ値の各々に対応する前記第２ハッシュ値を集約することにより、前記学習用入力データ群の特徴を示す学習用特徴ベクトルを生成する第１生成処理と、
を実行することを特徴とするデータ分析装置。
【請求項２】
前記プロセッサは、
前記各学習用入力データについて、前記複数の第１データ項目の値に基づいて、当該第１データ項目の値に対応する前記第１ハッシュ値の各々を重み付けする第１重み付け処理を実行し、
前記第１選択処理では、前記プロセッサは、前記各学習用入力データについて、前記第１重み付け処理による複数の重み付き第１ハッシュ値の中から前記所定の統計的条件を満たす特定の重み付き第１ハッシュ値を前記第１ハッシュ関数ごとに選択し、
前記第２算出処理では、前記プロセッサは、前記各学習用入力データについて、前記第１選択処理によって前記第１ハッシュ関数ごとに選択された特定の重み付き第１ハッシュ値の各々を前記第２ハッシュ関数に与えることにより、前記第２ハッシュ値を複数算出し、
前記第１生成処理では、前記プロセッサは、前記第２算出処理によって算出された結果、前記特定の重み付き第１ハッシュ値の各々に対応する前記第２ハッシュ値を、ｏｄｄ−ｆｉｌｔｅｒｉｎｇを用いて集約することにより、前記学習用特徴ベクトルを生成することを特徴とする請求項１に記載のデータ分析装置。
【請求項３】
前記第１生成処理では、前記プロセッサは、前記第２算出処理によって算出された結果、前記特定の第１ハッシュ値の各々に対応する前記第２ハッシュ値を、フォールディング計算を用いて集約することにより、前記学習用特徴ベクトルを生成することを特徴とする請求項１に記載のデータ分析装置。
【請求項４】
前記第１取得処理では、前記プロセッサは、さらに、前記学習用入力データの各々に対応し、かつ、複数の第２データ項目の値を有する学習用出力データの集合である学習用出力データ群における、前記複数の第２データ項目の中のいずれかの第２データ項目の値の集合である教師データを取得し、
前記プロセッサは、
前記第１生成処理によって生成された学習用特徴ベクトルと、前記第１取得処理によって取得された教師データと、を用いて、前記学習用入力データ群から前記教師データを出力するための学習パラメータを算出する学習パラメータ算出処理を実行することを特徴とする請求項１〜３のいずれか１つに記載のデータ分析装置。
【請求項５】
前記学習パラメータ算出処理では、前記プロセッサは、前記教師データが２値である場合、前記学習用特徴ベクトルと、前記教師データと、を識別関数に与えることにより、前記学習パラメータを算出することを特徴とする請求項４に記載のデータ分析装置。
【請求項６】
前記学習パラメータ算出処理では、前記プロセッサは、前記教師データが多値または実数値である場合、前記学習用特徴ベクトルと、前記教師データと、を回帰関数に与えることにより、前記学習パラメータを算出することを特徴とする請求項４に記載のデータ分析装置。
【請求項７】
前記プロセッサは、
前記第２算出処理の実行後から前記第１生成処理を実行するまでの間に、前記学習用入力データ群と複数の第２データ項目の値を有する学習用出力データの集合である学習用出力データ群とを用いた交差検証処理を実行し、前記交差検証処理により得られる予測精度がしきい値を超えるまで、前記第１設定処理、前記第１算出処理、前記第１選択処理、前記第２設定処理、および、前記第２算出処理を再実行し、前記交差検証処理により前記予測精度が前記しきい値を超えた場合、前記第１生成処理を実行し、
前記交差検証処理では、前記プロセッサは、
前記学習用入力データ群の中の第１学習用入力データ群と、前記学習用出力データ群の中の前記第１学習用入力データ群に対応する第１学習用出力データ群における、いずれかの第２データ項目の値の集合である第１教師データと、用いて、前記第１学習用入力データ群から前記第１教師データを出力するための第１学習パラメータを算出し、
前記学習用入力データ群の中の第１学習用入力データ群以外の第２学習用入力データ群と、前記第１学習パラメータと、を用いて、前記いずれかの第２データ項目の予測データを算出し、
前記学習用出力データ群の中の前記第２学習用入力データ群に対応する第２学習用出力データ群における、前記いずれかの第２データ項目の値の集合である第２教師データと、前記予測データと、を比較することにより、前記予測データに関する前記予測精度を算出し、
前記予測精度が前記しきい値以下であるか否かを検証することを特徴とする請求項１〜３のいずれか１つに記載のデータ分析装置。
【請求項８】
前記プロセッサは、
前記複数の第１データ項目の値を有する予測用入力データの集合である予測用入力データ群を前記記憶デバイスから取得する第２取得処理と、
前記第２取得処理によって取得された予測用入力データ群の各予測用入力データについて、前記複数の第１ハッシュ関数の各々に与えることにより、前記複数の第１データ項目の値に対応する複数の第３ハッシュ値を前記第１ハッシュ関数ごとに算出する第３算出処理と、
前記各予測用入力データについて、前記第３算出処理によって前記第１ハッシュ関数ごとに算出された前記複数の第３ハッシュ値の中から前記所定の統計的条件を満たす特定の第３ハッシュ値を前記第１ハッシュ関数ごとに選択する第２選択処理と、
前記各予測用入力データについて、前記第２選択処理によって前記第１ハッシュ関数ごとに選択された特定の第３ハッシュ値の各々を前記第２ハッシュ関数に与えることにより、第４ハッシュ値を複数算出する第４算出処理と、
前記第４算出処理によって算出された結果、前記特定の第３ハッシュ値の各々に対応する前記第４ハッシュ値を集約することにより、前記予測用入力データ群の特徴を示す予測用特徴ベクトルを生成する第２生成処理と、
を実行することを特徴とする請求項４に記載のデータ分析装置。
【請求項９】
前記プロセッサは、
前記各予測用入力データについて、前記複数の第１データ項目の値に基づいて、当該第１データ項目の値に対応する前記第１ハッシュ値の各々を重み付けする第２重み付け処理を実行し、
前記第２選択処理では、前記プロセッサは、前記各予測用入力データについて、前記第２重み付け処理による複数の重み付き第３ハッシュ値の中から前記所定の統計的条件を満たす特定の重み付き第３ハッシュ値を前記第１ハッシュ関数ごとに選択し、
前記第４算出処理では、前記プロセッサは、前記各予測用入力データについて、前記第２選択処理によって前記第１ハッシュ関数ごとに選択された特定の重み付き第３ハッシュ値の各々を前記第２ハッシュ関数に与えることにより、前記第４ハッシュ値を複数算出し、
前記第２生成処理では、前記プロセッサは、前記第４算出処理によって算出された結果、前記特定の重み付き第３ハッシュ値の各々に対応する前記第４ハッシュ値を、ｏｄｄ−ｆｉｌｔｅｒｉｎｇを用いて集約することにより、前記予測用特徴ベクトルを生成することを特徴とする請求項８に記載のデータ分析装置。
【請求項１０】
前記第２生成処理では、前記プロセッサは、前記第４算出処理によって算出された結果、前記特定の第３ハッシュ値の各々に対応する前記第４ハッシュ値を、フォールディング計算を用いて集約することにより、前記予測用特徴ベクトルを生成することを特徴とする請求項８に記載のデータ分析装置。
【請求項１１】
前記プロセッサは、
前記第２生成処理によって生成された予測用特徴ベクトルと、前記学習パラメータと、を用いて、前記いずれかの第２データ項目の予測値を算出する予測値算出処理を実行することを特徴とする請求項８に記載のデータ分析装置。
【請求項１２】
前記予測値算出処理では、前記プロセッサは、前記教師データが２値である場合、前記第２生成処理によって生成された予測用特徴ベクトルと、前記学習パラメータと、を識別関数に与えることにより、前記いずれかの第２データ項目の予測値を算出することを特徴とする請求項１１に記載のデータ分析装置。
【請求項１３】
前記予測値算出処理では、前記プロセッサは、前記教師データが多値または実数値である場合、前記第２生成処理によって生成された予測用特徴ベクトルと、前記学習パラメータと、を回帰関数に与えることにより、前記いずれかの第２データ項目の予測値を算出することを特徴とする請求項１１に記載のデータ分析装置。
【請求項１４】
記憶デバイスにアクセス可能なプロセッサが実行するデータ分析方法であって、
前記データ分析方法は、
前記プロセッサが、
複数の第１データ項目の値を有する学習用入力データの集合である学習用入力データ群を前記記憶デバイスから取得する第１取得処理と、
各々固有の第１ハッシュテーブルを生成することにより第１ハッシュ関数を複数個設定する第１設定処理と、
前記第１取得処理によって取得された学習用入力データ群の各学習用入力データについて、前記第１設定処理によって設定された前記複数の第１ハッシュ関数の各々に与えることにより、前記複数の第１データ項目の値に対応する複数の第１ハッシュ値を前記第１ハッシュ関数ごとに算出する第１算出処理と、
前記各学習用入力データについて、前記第１算出処理によって前記第１ハッシュ関数ごとに算出された前記複数の第１ハッシュ値の中から所定の統計的条件を満たす特定の第１ハッシュ値を前記第１ハッシュ関数ごとに選択する第１選択処理と、
第２ハッシュテーブルを生成することにより第２ハッシュ関数を設定する第２設定処理と、
前記各学習用入力データについて、前記第１選択処理によって前記第１ハッシュ関数ごとに選択された特定の第１ハッシュ値の各々を前記第２設定処理によって設定された第２ハッシュ関数に与えることにより、第２ハッシュ値を複数算出する第２算出処理と、
前記第２算出処理によって算出された結果、前記特定の第１ハッシュ値の各々に対応する前記第２ハッシュ値を集約することにより、前記学習用入力データ群の特徴を示す学習用特徴ベクトルを生成する第１生成処理と、
を実行することを特徴とするデータ分析方法。
【請求項１５】
記憶デバイスにアクセス可能なプロセッサに、
複数の第１データ項目の値を有する学習用入力データの集合である学習用入力データ群を前記記憶デバイスから取得する第１取得処理と、
各々固有の第１ハッシュテーブルを生成することにより第１ハッシュ関数を複数個設定する第１設定処理と、
前記第１取得処理によって取得された学習用入力データ群の各学習用入力データについて、前記第１設定処理によって設定された前記複数の第１ハッシュ関数の各々に与えることにより、前記複数の第１データ項目の値に対応する複数の第１ハッシュ値を前記第１ハッシュ関数ごとに算出する第１算出処理と、
前記各学習用入力データについて、前記第１算出処理によって前記第１ハッシュ関数ごとに算出された前記複数の第１ハッシュ値の中から所定の統計的条件を満たす特定の第１ハッシュ値を前記第１ハッシュ関数ごとに選択する第１選択処理と、
第２ハッシュテーブルを生成することにより第２ハッシュ関数を設定する第２設定処理と、
前記各学習用入力データについて、前記第１選択処理によって前記第１ハッシュ関数ごとに選択された特定の第１ハッシュ値の各々を前記第２設定処理によって設定された第２ハッシュ関数に与えることにより、第２ハッシュ値を複数算出する第２算出処理と、
前記第２算出処理によって算出された結果、前記特定の第１ハッシュ値の各々に対応する前記第２ハッシュ値を集約することにより、前記学習用入力データ群の特徴を示す学習用特徴ベクトルを生成する第１生成処理と、
を実行させることを特徴とするデータ分析プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを分析するデータ分析装置、データ分析方法、およびデータ分析プログラムに関する。
【背景技術】
【０００２】
従来、例えば、商品の購買情報から購入者の種類を識別して、商品を推薦（レコメンデーション）する際に、データベースに格納されている全商品について購入の有無を調べ上げる技術がある。これにより、類似した購入傾向にある購買者が分類される。その際、商品の項目数が数万から数億にのぼるため、計算機が全項目を単純に調べ上げる際に膨大な時間を要する。
【０００３】
このため、特許文献１のシステムでは、複数ユーザの各々についてそれぞれの興味集合を取得し、ユーザの各々についてそれぞれの興味集合のＭ個の最小ハッシュ値を決定し、複数ユーザの各々をそれぞれのユーザに対して確立されたそれぞれのＭ個のクラスタの各々に割り当ることで、レコメンデーション等を行う。
【０００４】
特許文献１のシステムが、ｎ−ｂｉｔハッシュ関数をＫ個用いて、あるユーザの購買情報をあらわす２値のスカラ値を要素とするベクトル列（例えば、要素の値「０」は未購入、「１」は購入。以降、特徴ベクトルと呼称する。）を生成すると、特徴ベクトルのサイズはＤ＝２ｎ（Ｋ／ｎ）次元となる。特許文献１において、次のような標準的なパラメータ（ハッシュ関数の個数Ｋ＝１００、ビット数ｎ＝３２）を与えた場合、特徴ベクトルの次元数は４２９，４９６，７２９，６００次元にも及ぶ。
【０００５】
また、非特許文献１では、特徴ベクトルを下位ｂ−ｂｉｔに打ち切ることで次元削減を図る手法が提案されている。例えば、ハッシュ関数の個数Ｋ＝１００かつビット数ｎ＝３２から生成された４２９，４９６，７２９，６００次元の特徴ベクトルをｂ＝２ｂｉｔで打ち切りを行った場合、最終的な特徴ベクトルのサイズは２００次元となる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１３−０３３５５１号公報
【非特許文献】
【０００７】
【非特許文献１】Ｌｉ，  Ｐｉｎｇ，  ＡＮＤ  Ａｒｎｄ  Ｃｈｒｉｓｔｉａｎ  Ｋoｅｎｉｇ． “Ｔｈｅｏｒｙ  ＡＮＤ  ａｐｐｌｉｃａｔｉｏｎｓ  ｏｆ  ｂ−ｂｉｔ  ｍｉｎｗｉｓｅ  ｈａｓｈｉｎｇ．”  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  ｏｆ  ｔｈｅ  ＡＣＭ  ５４．８  （２０１１）
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述した特許文献１では、ハッシュ関数を用いて興味集合のＭ個の最小ハッシュ値を決定するが、特徴ベクトルの次元数が膨大になるため、計算処理に時間がかかるという問題がある。
【０００９】
また、上述した非特許文献１では、特徴ベクトルを下位ｂ−ｂｉｔに打ち切ることで次元数が削減されるため、特許文献１に比べて計算処理時間は短縮化されるが、ｂ−ｂｉｔ打ち切りにより、分析精度が低下するという問題がある。
【００１０】
さらに、たとえば、薬剤などの購買情報により薬効を分析する用途では、売買の有無といった２値の項目情報だけではなく、薬剤の投薬回数や処方量などの多値や実数値を含む項目を扱う場合がある。しかしながら、特許文献１および非特許文献１のいずれも、分析対象の項目の値が多値や実数値を持つ場合の特徴ベクトル化が考慮されていない。
【００１１】
本発明は、高速かつ高精度なデータ分析を可能にすることを目的とする。
【課題を解決するための手段】
【００１２】
本願において開示される発明の一側面となるデータ分析装置、データ分析方法、およびデータ分析プログラムは、複数の第１データ項目の値を有する学習用入力データの集合である学習用入力データ群を前記記憶デバイスから取得する第１取得処理と、各々固有の第１ハッシュテーブルを生成することにより第１ハッシュ関数を複数個設定する第１設定処理と、前記第１取得処理によって取得された学習用入力データ群の各学習用入力データについて、前記第１設定処理によって設定された前記複数の第１ハッシュ関数の各々に与えることにより、前記複数の第１データ項目の値に対応する複数の第１ハッシュ値を前記第１ハッシュ関数ごとに算出する第１算出処理と、前記各学習用入力データについて、前記第１算出処理によって前記第１ハッシュ関数ごとに算出された前記複数の第１ハッシュ値の中から所定の統計的条件を満たす特定の第１ハッシュ値を前記第１ハッシュ関数ごとに選択する第１選択処理と、第２ハッシュテーブルを生成することにより第２ハッシュ関数を設定する第２設定処理と、前記各学習用入力データについて、前記第１選択処理によって前記第１ハッシュ関数ごとに選択された特定の第１ハッシュ値の各々を前記第２設定処理によって設定された第２ハッシュ関数に与えることにより、第２ハッシュ値を複数算出する第２算出処理と、前記第２算出処理によって算出された結果、前記特定の第１ハッシュ値の各々に対応する前記第２ハッシュ値を集約することにより、前記学習用入力データ群の特徴を示す学習用特徴ベクトルを生成する第１生成処理と、を実行することを特徴とする。
【発明の効果】
【００１３】
本発明の代表的な実施の形態によれば、高速かつ高精度なデータ分析を可能にすることができる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００１４】
【図１】実施例１にかかる特徴ベクトルの生成例を示す説明図である。
【図２】図１に示した特徴量算出処理の詳細な処理例を示す説明図である。
【図３】データ分析システムのシステム構成例を示すブロック図である。
【図４】学習用データ集合の一例を示す説明図である。
【図５】予測用データ集合の一例を示す説明図である。
【図６】データ分析における設定画面例を示す説明図である。
【図７】実施例１にかかるデータ分析システムによるデータ分析処理手順例を示すフローチャートである。
【図８】図７に示した学習処理（ステップＳ７０２）の詳細な処理手順例を示すフローチャートである。
【図９】図８に示した学習用特徴ベクトル生成処理（ステップＳ８０５）の詳細な処理手順例を示すフローチャートである。
【図１０】図７に示した予測処理（ステップＳ７０５）の詳細な処理手順例を示すフローチャートである。
【図１１】図１０に示した予測用特徴ベクトル生成処理（ステップＳ１００５）の詳細な処理手順例を示すフローチャートである。
【図１２】実施例２にかかる特徴量算出処理ＨＴ１の詳細な処理例を示す説明図である。
【図１３】実施例２にかかる特徴ベクトルの生成例を示す説明図である。
【図１４】実施例２にかかる学習用特徴ベクトル生成処理（ステップＳ８０５）の詳細な処理手順例を示すフローチャートである。
【図１５】交差検証の実行例を示す説明図である。
【図１６】実施例３にかかる学習用特徴ベクトル生成処理（ステップＳ８０５）の詳細な処理手順例１を示すフローチャートである。
【図１７】実施例３にかかる学習用特徴ベクトル生成処理（ステップＳ８０５）の詳細な処理手順例２を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下では、本発明の実施例について、適宜、図面を参照しながら詳細に説明する。また、実施例では、薬効分析を例に挙げて説明するが、薬効分析は一例であり、商品レコメンデーションやニュース記事の分析など様々な用途に適用される。
【実施例１】
【００１６】
図１は、実施例１にかかる特徴ベクトルの生成例を示す説明図である。既知である学習用入力データ群と学習用出力データ群が用意された場合、特徴ベクトルの生成が可能である。薬効分析の場合、学習用入力データ群は、たとえば、患者ごとに、性別、年齢、薬の処方量などのデータ項目を含む学習用因子データ群となる。また、学習用出力データ群は、たとえば、学習用因子データ群と同じ患者ごとに、寛解の見通し、白血球数（ＷＢＣ）、赤血球数（ＲＢＣ）、リンパ球数（Ｌｙｍｐｈｏｃｙｔｅ）、肝機能検査値（ＡＬＴ）などを含む診断データ群である。学習用因子データ群および学習用診断データ群としては、たとえば、病院における電子カルテやレセプトに記載された情報が用いられる。
【００１７】
学習用因子データ群をＤとすると、その各学習用因子データは、下記式（１）により表現され、学習用診断データ群をＹとすると、その各学習用診断データは、下記式（２）により表現される。
【００１８】
Ｄｎ＝｛ｘｎｉ｜ｉ∈Ｉ｝・・・（１）
Ｙｎ＝｛ｙｎｐ｜ｐ∈Ｐ｝・・・（２）
【００１９】
ｎは学習用因子データ群Ｄおよび学習用診断データ群Ｙの各データに関する患者を特定する識別情報であり、ｎ＝１，２，…，Ｎである。ｉは、学習用因子データにおける性別（ｉ＝１）、年齢（ｉ＝２）、薬剤Ａの処方量（ｉ＝３）、薬剤Ｂの処方量（ｉ＝４）、…などのデータ項目を特定する識別情報であり、ｉ＝１，２，…，Ｉである。ｐは、学習用診断データにおける寛解の見通し（ｐ＝１）、白血球数（ｐ＝２）、赤血球数（ｐ＝３）、…などのデータ項目を特定する識別情報であり、ｐ＝１，２，…，Ｐである。
【００２０】
また、学習用特徴ベクトルは、患者ごとに生成される。ｎ番目の患者の学習用特徴ベクトルをＸｎとする。
【００２１】
学習用特徴ベクトルＸｎは、ある診断項目（たとえば、寛解の見通し）について患者に共通な学習パラメータｗを求めるために生成される。具体的には、各学習用特徴ベクトルＸｎが生成されると、各学習用特徴ベクトルＸｎと、学習用因子データ群Ｄと、ある診断項目（たとえば、寛解の見通し）についての各患者の学習用診断データ列と、を用いて、ｓｕｐｐｏｒｔ  ｖｅｃｔｏｒ  ｍａｃｈｉｎｅ（ＳＶＭ）などの機械学習を実行することにより、学習パラメータｗが算出される。そして、学習パラメータｗと別の患者の因子データ群（以下、予測用因子データ群）とを用いることにより、ある診断項目（たとえば、寛解の見通し）についての別の患者の診断データ列を予測することができる。
【００２２】
学習用特徴ベクトルＸｎの生成では、ハッシュプール族Ｇが事前に生成される。ハッシュプール族Ｇは、下記式（３）に示すように、ハッシュプールＧｍの集合である。
【００２３】
Ｇ＝｛Ｇｍ｜ｍ＝１，２，…，Ｍ｝・・・（３）
【００２４】
各ハッシュプールＧｍは、複数のハッシュ関数を含む。実施例１では、ｎ＝１かつｍ＝１に注目して説明するが、ｎ＝２，…，Ｎ、ｍ＝２，…，Ｍについても同様な処理となる。
【００２５】
ハッシュプールＧ１について、（Ａ）特徴ベクトル化処理、（Ｂ）集約処理（Ｏｄｄ−ｆｉｌｔｅｒｉｎｇ）を実行することにより、特徴ベクトルＸ１が生成される。
【００２６】
（Ａ）特徴量算出処理では、特徴量算出処理ＨＴｋ（ｋ＝１，２，…，Ｋ）が実行される。特徴量算出処理ＨＴｋは、それぞれ異なるハッシュ関数を用いて、学習用因子データＤｎから、学習用因子データＤｎの各データ項目の値に対応する特徴量を求め、その特徴量から最小値を選択する処理である。
【００２７】
異なるハッシュ関数とは、ハッシュアルゴリズムが異なるハッシュ関数でもよく、ハッシュアルゴリズムが同一でも、内部で保持するハッシュテーブルが異なるハッシュ関数でもよい。なお、異なるハッシュ関数の各ハッシュ値のビット幅が同一（ａ−ｂｉｔ）である。ａは、１以上の整数である。特徴量算出処理ＨＴｋでは、患者ごとに１個の最小値が得られる。
【００２８】
（Ｂ）集約処理は、ハッシュ関数を用いて、（Ａ）特徴量算出処理で得られた最小値を集約する。実施例１では、Ｏｄｄ−ｆｉｌｔｅｒｉｎｇによりるモジュラ計算で集約される。Ｏｄｄ−ｆｉｌｔｅｒｉｎｇは、集約値である２値（０と１）がフリップを繰り返す処理である。ここでは、集約値を２値としたが、３値以上でもよい。なお、ここでのハッシュ関数は、ハッシュ値のビット幅がｂ−ｂｉｔハッシュ関数であり、ｂ２個のハッシュ値が用意され、それぞれ集約値に対応する。ｂは、１以上の整数である。
【００２９】
たとえば、学習用因子データＤ１を用いた特徴量算出処理ＨＴ１で得られた最小値「６」は、ｂ−ｂｉｔハッシュ関数により生成されるハッシュテーブルのハッシュ値ｈｂ１〜ｈｂ（ｂ２）のうち、ハッシュ値ｈｂ２に対応する。したがって、ハッシュ値ｈｂ２に対応する集約値は初期値の「０」から「１」にフリップされる。つぎに、学習用因子データＤ１を用いた特徴量算出処理ＨＴ２で得られた最小値「４」も、ハッシュ値ｈｂ２に対応する。したがって、ハッシュ値ｈｂ２に対応する集約値は「１」から「０」にフリップされる。
【００３０】
ｂの値を小さくするほど、同一ハッシュ値に衝突する可能性が高くなる。（Ｂ）集約処理では、この性質を利用して、（Ａ）特徴量算出処理で得られた最小値を集約する。
【００３１】
このように（Ｂ）集約処理が完了することにより、ハッシュ値ｈｂ１〜ｈｂ（ｂ２）の集約値が配列したサブ特徴ベクトルｘ１１が生成される。ハッシュプールＧ２〜Ｇｍについても同様にして、サブ特徴ベクトルｘ１２〜ｘ１Ｍが生成される。そして、サブ特徴ベクトルｘ１１〜ｘ１Ｍを連結することにより、学習用因子データＤ１の特徴を示す特徴ベクトルＸ１が生成される。なお、学習用因子データＤ２〜ＤＮについても同様にして、学習用因子データＤ２〜ＤＮの特徴を示す特徴ベクトルＸ２〜ＸＮが生成される。
【００３２】
図２は、図１に示した特徴量算出処理ＨＴ１の詳細な処理例を示す説明図である。特徴量算出処理ＨＴ１では、各学習用因子データＤｎからそれぞれ最小値が得られるが、ここでは、ｎ＝１の場合について説明する。
【００３３】
特徴量算出処理ＨＴ１では学習用因子データＤ１が与えられると、（Ａ）正規化、（Ｂ）ａ−ｂｉｔハッシュ計算、（Ｃ）重みづけ、（Ｄ）最小値選択が実行される。なお、学習用因子データＤ１の性別、年齢、薬剤の処方量といったデータ項目には、一意の識別情報ｉ（ｉ＝１，２，…，Ｎ）が割り当てられる。図２では、Ｎ＝５００，０００とした。
【００３４】
（Ａ）正規化では、学習用因子データＤ１におけるデータ項目の値が正規化される。たとえば、データ項目が「年齢」のような多値の場合、データ項目の最大値、最小値を用いて、０以上１以下の値域となるように正規化する。
【００３５】
データ項目が「薬剤の処方量」のような実数値の場合も、その薬剤の処方量が取りうる範囲を０以上１以下の範囲で正規化する。なお、データ項目が「性別」の場合、取りうる値は、例として男性（＝１）と女性（＝０）の２値であるため、正規化せずにそのまま利用される。
【００３６】
（Ｂ）ａ−ｂｉｔハッシュ計算は、正規化前の学習用因子データＤ１の値が非０であるデータ項目を選択する。たとえば、ｉ＝１のデータ項目である性別の値が「女性」（＝０）の場合、選択されないが、年齢の値は「１３」であるため、選択される。正規化前の値が選択されたデータ項目については、再度ｊを用いて採番される。図２では、例として４０００，０００個のデータ項目が選択されたものとする。
【００３７】
そして、（Ｂ）ａ−ｂｉｔハッシュ計算は、上述したａ−ｂｉｔハッシュ関数により生成されたハッシュテーブルを用いて、正規化前の値が選択されたデータ項目の正規化後の値と、当該ハッシュテーブルにおいて、正規化前の値が選択されたデータ項目の識別情報に対応するハッシュ値ｈａｊと、を対応付ける。
【００３８】
たとえば、正規化前の値「１３（≠０）」が選択されたデータ項目「年齢」の正規化後の値「０．１」と、当該ハッシュテーブルにおいて、正規化前の値「１３（≠０）」が選択されたデータ項目「年齢」の識別情報（ｊ＝１）に対応するハッシュ値ｈａ１（＝１０００）と、が対応付けられる。
【００３９】
（Ｃ）重みづけは、（Ｂ）ａ−ｂｉｔハッシュ計算で対応付けられた正規化後の値と、対応するハッシュ値ｈａｊと、を乗算する。
【００４０】
（Ｄ）最小値選択は、（Ｃ）重みづけで得られた値群の中から最小値を選択する。これにより、学習用因子データＤ１から、学習用因子データＤ１の各データ項目の値に対応する特徴量の最小値が得られる。なお、ここでは、最小値を選択することとしたが、最大値や中央値、平均値、ランダムな値などの他の統計的条件を満たす統計値でもよい。
【００４１】
なお、図２の特徴量算出処理ＨＴ１では、学習用因子データＤ１を用いた場合について説明したが、学習用因子データＤ２〜ＤＮについても特徴量算出処理ＨＴ１が実行される。また、図２では、特徴量算出処理ＨＴ１について説明したが、他の特徴量算出処理ＨＴ２〜ＨＴＫでも同様に実行される。
【００４２】
このように、実施例１では、ａ−ｂｉｔハッシュ関数を用いて、特徴量算出処理ＨＴｋにより学習用因子データＤｎの各データ項目の値に対応する特徴量の最小値を算出し、ｂ−ｂｉｔハッシュ関数を用いて、最小値を集約するため、データ分析の高速化を実現することができる。
【００４３】
また、学習用因子データＤｎの正規化されたデータ項目の値をａ−ｂｉｔハッシュ関数で重みづけした特徴量の最小値を、Ｏｄｄ−ｆｉｌｔｅｒｉｎｇで集約することにより、特徴ベクトルＸｎが生成されるため、特徴ベクトルＸｎの各要素は、学習用因子データＤｎの各データ項目の２値、多値、実数値が考慮された値となる。したがって、データ分析の高精度化を図ることができる。
【００４４】
また、集約処理において、Ｏｄｄ−ｆｉｌｔｅｒｉｎｇで取りうる値を小さく設定することにより、省メモリ化を図ることができる。
【００４５】
＜システム構成例＞
図３は、データ分析システムのシステム構成例を示すブロック図である。図３では、サーバ−クライアント型のデータ分析システムを例に挙げて説明するが、スタンドアロン型でもよい。（Ａ）は、データ分析システムのハードウェア構成例を示すブロック図であり、（Ｂ）は、データ分析システムの機能的構成例を示すブロック図である。（Ａ）および（Ｂ）において同一構成には同一符号を付す。
【００４６】
データ分析システムは、クライアント端末３００とサーバであるデータ分析装置３２０とがネットワーク３１０で通信可能に接続される構成である。
【００４７】
（Ａ）において、クライアント端末３００は、補助記憶装置であるＨＤＤ（ｈａｒｄ  ｄｉｓｋ  ｄｒｉｖｅ）３０１、主記憶装置であるメモリ３０２、プロセッサ３０３、キーボードやマウスである入力装置３０４、モニタ２０５を有する。データ分析装置３２０は、補助記憶装置であるＨＤＤ３２１、主記憶装置であるメモリ３２２、プロセッサ３２３、キーボードやマウスである入力装置３２４、モニタ３２５を有する。なお、主記憶装置、補助記憶装置、および、図示しない可搬型の記憶媒体を総称して、記憶デバイスと称す。
【００４８】
（Ｂ）において、クライアント端末３００は、クライアントデータベース（ＤＢ）３５１を有する。クライアントＤＢ３５１は、ＨＤＤ３０１やメモリ３０２などの記憶デバイスに格納される。クライアントＤＢ３５１には、予測用データ集合３５２と、予測結果３５３と、が格納される。予測用データ集合３５２については図５を用いて後述する。予測結果３５３は、予測処理部３６２からネットワーク３１０経由で得られたデータである。なお、サーバ−クライアント型の場合、クライアント端末３００は１台以上存在する。
【００４９】
データ分析装置３２０は、学習処理部３６１と、予測処理部３６２と、サーバデータベース（ＤＢ）３６３と、を有する。学習処理部３６１は、図１および図２に示した処理を実行し、学習結果３６５を出力する機能部である。学習結果３６５には、上述した学習パラメータｗが含まれる。学習処理部３６１の詳細な処理手順については、図７〜図９を用いて後述する。
【００５０】
予測処理部３６２は、学習結果３６５を用いて、図１および図２に示した処理を実行し、予測結果３５３をクライアント端末３００に出力する機能部である。予測処理部３６２の詳細な処理手順については、図７、図１０、図１１を用いて後述する。学習処理部３６１および予測処理部３６２は、ＨＤＤ３２１、メモリ３２２などの記憶デバイスに記憶されたプログラムをプロセッサ３２３に実行させることによりその機能を実現する。
【００５１】
サーバＤＢ３６３は、学習用データ集合３６４と、学習結果３６５と、を格納する。学習用データ集合３６４は、上述した学習用入力データ群（学習用因子データ群Ｄ）と、学習用出力データ群（学習用診断データ群Ｙ）と、を含む。学習結果３６５は、学習処理部３６１からの出力データである。
【００５２】
なお、データ分析装置３２０は複数台で構成されてもよい。たとえば、負荷分散のため、データ分析装置３２０が複数存在してもよい。また、データ分析装置３２０は、機能ごとに複数台で構成されてもよい。たとえば、学習処理部３６１およびサーバＤＢ３６３を含む第１のサーバと、予測処理部３６２およびサーバＤＢ３６３を含む第２のサーバとで構成されてもよい。また、また、学習処理部３６１および予測処理部３６２を含む第１のデータ分析装置と、サーバＤＢ３６３を含む第２のデータ分析装置とで構成されてもよい。また、学習処理部３６１を含む第１のサーバと、予測処理部３６２を含む第２のデータ分析装置と、サーバＤＢ３６３を含む第３のデータ分析装置とで構成されてもよい。
【００５３】
＜学習用データ集合＞
図４は、学習用データ集合３６４の一例を示す説明図である。学習用データ集合３６４は、学習用入力ＤＢ４１０と、学習用出力ＤＢ４２０と、を有する。学習用入力ＤＢ４１０は、学習用入力データ群（学習用因子データ群Ｄ）を格納するデータベースであり、学習用出力ＤＢ４２０は、学習用出力データ群（学習用診断データ群Ｙ）を格納するデータベースである。
【００５４】
学習用入力ＤＢ４１０は、データ項目として、ＩＤ４００と、性別（ｉ＝１）４０１と、年齢（ｉ＝２）４１２と、薬剤Ａ（ｉ＝３）４１３と、薬剤Ｂ（ｉ＝４）４１４と、…、薬剤Ω（ｉ＝５００，０００）４１５と、を有し、各データ項目の値の組み合わせにより、学習用因子データＤｎを構成する。実施例１では学習用入力ＤＢ４１０のデータ項目ｉの総数Ｉを例としてＩ＝５００，０００とした。
【００５５】
ＩＤ４００は、値として、分析対象である患者を一意に特定する数値ｎ（＝１，２，…，Ｎ）を格納するデータ項目である。性別（ｉ＝１）４０１には、値として、ダミー変数化処理により、ＩＤ４００で特定されるｎの性別を特定する数値（たとえば、女性なら「０」、男性なら「１」）が格納される。なお、データ項目の値が３値以上の多値の場合には、１−ｏｆ−Ｋ表現（例えば、Ｋ個の要素のうちどれか１つだけ「１」を取り他は「０」）を用いた項目に変換される。
【００５６】
年齢（ｉ＝２）４１２は、値として、数値ｎにより特定される患者の年齢を格納するデータ項目である。薬剤Ａ（ｉ＝３）４１３、薬剤Ｂ（ｉ＝４）４１４、…、薬剤Ω（ｉ＝５００，０００）４１５は、それぞれ、値として、数値ｎにより特定される患者に処方された薬剤Ａ，Ｂ，…，Ωの処方量（実数）が格納される。
【００５７】
学習用出力ＤＢ４２０は、データ項目として、寛解の見通し（ｐ＝１）４２１と、白血球数（ｐ＝２）４２２と、赤血球数（ｐ＝３）４２３と、リンパ球数（ｐ＝４）４２４と、…、肝機能検査値（ｐ＝Ｐ）４２５と、を有し、各データ項目の値の組み合わせにより、学習用診断データＹｎを構成する。
【００５８】
寛解の見通し（ｐ＝１）４２１は、値として、数値ｎにより特定される患者の寛解の見通しを示す増悪（＝１）、不変（＝２）、軽減（＝３）、寛解（＝４）の４値のいずれかが格納されるデータ項目である。白血球数（ｐ＝２）４２２、赤血球数（ｐ＝３）４２３、リンパ球数（ｐ＝４）４２４、…、肝機能検査値（ｐ＝Ｐ）４２５は、値として、それぞれデータ項目に応じた実数値を格納するデータ項目である。
【００５９】
＜予測用データ集合＞
図５は、予測用データ集合の一例を示す説明図である。予測用入力ＤＢ５１０は、データ項目ｉとして、ＩＤ５００と、性別（ｉ＝１）５１１と、年齢（ｉ＝２）９１２と、薬剤Ａ（ｉ＝３）５１３と、薬剤Ｂ（ｉ＝４）５１４と、…、薬剤Ω（ｉ＝２００，０００）５１５と、を有し、各データ項目の値の組み合わせにより、予測用因子データＤ´ｎ´を構成する。実施例１では学習用入力ＤＢ４１０のデータ項目ｉの総数Ｉ´を例としてＩ´＝２００，０００とした。
【００６０】
Ｄ´ｎ´＝｛ｘｎ´ｉ｜ｉ∈Ｉ´｝・・・（４）
【００６１】
ｎ´は、予測対象である患者を一意に特定する数値（ｎ´＝１，２，…，Ｎ´）である。また、予測用因子データＤ´ｎ´の集合を予測用因子データ群Ｄ´とする。
【００６２】
ＩＤ５００は、値として、数値ｎ´（＝１，２，…，Ｎ´）を格納するデータ項目である。ＩＤ５００の値は、ＩＤ４００の値と異なる。すなわち、ＩＤ５００で特定される患者と、ＩＤ４００で特定される患者とは、異なる患者である。性別（ｉ＝１）５１１には、値として、ダミー変数化処理により、ＩＤ５００で特定されるｎ´の性別を特定する数値（たとえば、女性なら「０」、男性なら「１」）が格納される。なお、データ項目の値が３値以上の多値の場合には、１−ｏｆ−Ｋ表現（例えば、Ｋ個の要素のうちどれか１つだけ「１」を取り、他は「０」）を用いた項目に変換される。
【００６３】
年齢（ｉ＝２）５１２は、値として、数値ｎ´により特定される患者の年齢を格納するデータ項目である。薬剤Ａ（ｉ＝３）５１３、薬剤Ｂ（ｉ＝４）５１４、…、薬剤Ω（ｉ＝２００，０００）５１５は、それぞれ、値として、数値ｎ´により特定される患者に処方された薬剤Ａ，Ｂ，…，Ωの処方量（実数）が格納される。
【００６４】
学習用出力ＤＢ５２０は、データ項目として、寛解の見通し５２１と、白血球数５２２と、赤血球数（ｐ＝３）５２３と、リンパ球数５２４と、…、肝機能検査値５２５と、を有する。
【００６５】
データ項目５２１〜５２５の値は予測対象であるため値が格納されていない。データ項目５２１〜５２５には、データ分析装置３２０の予測処理部３６２からの予測結果３５３がクライアント端末３００により格納されることになる。
【００６６】
＜設定画面例＞
図６は、データ分析における設定画面例を示す説明図である。設定画面６００は、たとえば、クライアント端末３００のモニタ３０５またはデータ分析装置３２０のモニタ３２５により表示される。
【００６７】
設定画面６００は、ハッシュプール数入力欄６０１と、ハッシュ関数個数入力欄６０２と、ａ−ｂｉｔハッシュ関数タイプ選択欄６０３と、ｂ−ｂｉｔハッシュ関数タイプ選択欄６０４と、ａ−ｂｉｔ幅入力欄６０５と、ｂ−ｂｉｔ幅入力欄６０６と、を含む。
【００６８】
ハッシュプール数入力欄６０１は、ハッシュプールＧｍの個数（ハッシュプール数ｍ）の最大値（総数）Ｍを入力する欄である。ハッシュ関数個数入力欄６０２は、ａ−ｂｉｔハッシュ関数個数ｋの最大値（総数）Ｋを入力する欄である。
【００６９】
ａ−ｂｉｔハッシュ関数タイプ選択欄６０３は、ａ−ｂｉｔハッシュ関数のタイプであるハッシュアルゴリズムを選択する欄である。例として、ＦＮＶやＭｕｒｍｕｒＨａｓｈ、ＭＤ５、ＳＨＡ−２、ＳＨＡ−３があり、ユーザ操作で選択可能である。図６では、ＭｕｒｍｕｒＨａｓｈ６３１が選択されている。また、Ｒａｎｄｏｍ  ｓｅｌｅｃｔｉｏｎ６３２は、上述したａ−ｂｉｔハッシュ関数のいずれかのハッシュアルゴリズムがランダムで選択される選択肢である。Ｒａｎｄｏｍ  ｓｅｌｅｃｔｉｏｎ６３２が選択された場合、後述の処理（図８）において、ハッシュプール数ｍがインクリメントされる都度、上述したａ−ｂｉｔハッシュ関数のいずれかのハッシュアルゴリズムがランダムで選択される。
【００７０】
ｂ−ｂｉｔハッシュ関数タイプ選択欄６０４は、ｂ−ｂｉｔハッシュ関数のタイプであるハッシュアルゴリズムを選択する欄である。例として、ＦＮＶやＭｕｒｍｕｒＨａｓｈ、ＭＤ５、ＳＨＡ−２、ＳＨＡ−３があり、ユーザ操作で選択可能である。図６では、ＦＮＶ６４１が選択されている。また、Ｒａｎｄｏｍ  ｓｅｌｅｃｔｉｏｎ６４２は、上述したｂ−ｂｉｔハッシュ関数のいずれかのハッシュアルゴリズムがランダムで選択される選択肢である。Ｒａｎｄｏｍ  ｓｅｌｅｃｔｉｏｎ６４２が選択された場合、後述の処理（図８）において、ハッシュプール数ｍがインクリメントされる都度、上述したｂ−ｂｉｔハッシュ関数のいずれかのハッシュアルゴリズムがランダムで選択される。
【００７１】
ａ−ｂｉｔ幅入力欄６０５は、ａ−ｂｉｔハッシュ関数のハッシュ値のビット幅ａを入力する欄である。ｂ−ｂｉｔ幅入力欄６０６は、ｂ−ｂｉｔハッシュ関数のハッシュ値のビット幅ｂを入力する欄である。
【００７２】
＜データ分析処理手順例＞
図７は、実施例１にかかるデータ分析システムによるデータ分析処理手順例を示すフローチャートである。まず、学習処理部３６１は、初期設定を実行する（ステップＳ７００）。初期設定では、図６の設定画面６００に各値が入力または選択される。なお、初期設定では、図６で図示されていないが、データ項目４２１〜４２５から、予測対象となる予測値のいずれかのデータ項目も選択される。選択されたデータ項目の値の列を教師データと称す。
【００７３】
つぎに、学習処理部３６１は、サーバＤＢから学習用入力データ群（学習用因子データ群Ｄ）を取得する（ステップＳ７０１）。このとき、学習処理部３６１は、特徴ベクトルとして要素を持たない空の学習用特徴ベクトルＸｎを生成する。そして、学習処理部３６１は、図１および図２に示したように、学習処理を実行する（ステップＳ７０２）。学習処理（ステップＳ７０２）の詳細については、図８で説明する。学習処理（ステップＳ７０２）により、学習結果３６５が出力される。そして、学習処理部３６１は、学習結果３６５をサーバＤＢ３６３に保存する（ステップＳ７０３）。
【００７４】
つぎに、予測処理部３６２は、クライアントＤＢ３５１から予測用入力データ群（予測用因子データ群Ｄ´）を取得し、サーバＤＢ３６３から学習結果３６５を取得する（ステップＳ７０４）。また、予測処理部３６２は、サーバＤＢ３６３から教師データを取得する。たとえば、データ項目ｉとして寛解の見通し４２１が選択された場合、予測処理部３６２は、学習用出力データ群（学習用診断データ群Ｙ）の寛解の見通し４２１について、ＩＤ４００の値１〜Ｎ（＝３００，０００）までの値の列（軽減（＝３）、不変（＝２）、増悪（＝１）、…、寛解（＝４））である教師データｙｎｉを取得する。また、予測処理部３６２は、特徴ベクトルとして要素を持たない空の予測用特徴ベクトルＸ´ｎ´を生成する。
【００７５】
そして、予測処理部３６２は、ステップＳ７０４で取得したデータを用いて、予測処理を実行する（ステップＳ７０５）。予測処理（ステップＳ７０５）の詳細については、図１０で説明する。予測処理（ステップＳ７０５）により、予測結果３５３がクライアント端末３００に出力される。
【００７６】
クライアント端末３００は、予測結果３５３をクライアントＤＢ３５１に保存する（ステップＳ７０６）。予測結果３５３は、クライアントＤＢ３５１に格納されている予測用データ集合３５２の学習用出力ＤＢ９２０に格納される。たとえば、予測対象となるいずれかのデータ項目ｉとして寛解の見通し４２１が選択された場合、予測結果３５３は、予測用因子データ群Ｄ´のＩＤ５００の各値ｎ´に対応する寛解の見通し４２１の予測値ｙ´ｎ´ｉである。
【００７７】
図８は、図７に示した学習処理（ステップＳ７０２）の詳細な処理手順例を示すフローチャートである。まず、学習処理部３６１は、図２の（Ａ）正規化で説明したように、学習用入力データ群（学習用因子データ群Ｄ）を正規化する（ステップＳ８０１）。
【００７８】
具体的には、たとえば、学習処理部３６１は、各学習用因子データＤｎについて、下記式（５）によりデータ項目ごとに正規化する。下記式（５）において、ｘｎｉは、正規化前におけるＩＤ４００がｎであるデータ項目ｉの値、ｘｎｉｍａｘは、データ項目ｉの列の値ｘｎｉの最大値、ｘｎｉｍｉｎは、データ項目ｉの列の値ｘｎｉの最小値、ｎｏｒ（ｘｎｉ）は、ｘｎｉを正規化した値である。
【００７９】
【数１】
0006334431.tif 000002
【００８０】
また、学習用因子データＤｎの正規化後の学習用因子データｎｏｒ（Ｄｎ）は、以下の通りである。
【００８１】
ｎｏｒ（Ｄｎ）＝｛ｎｏｒ（ｘｎｉ）｜ｉ∈Ｉ｝・・・（６）
【００８２】
最大値ｘｎｉｍａｘおよび最小値ｘｎｉｍｉｎは正規化係数であり、学習処理部３６１は、正規化係数Ｚｎｉとして保存する。
【００８３】
Ｚｎｉ＝｛（ｘｎｉｍｉｎ，ｘｎｉｍａｘ）｜ｉ∈Ｉ｝・・・（７）
【００８４】
つぎに、学習処理部３６１は、ハッシュプール数ｍをｍ＝１に設定し（ステップＳ８０２）、ハッシュプールＧｍを生成する（ステップＳ８０３）。学習処理部３６１は、正規化後の学習用因子データｎｏｒ（Ｄｎ）の各々について、ｂ２次元のゼロべクトルであるサブ特徴ベクトルｘｎｍを生成する。
【００８５】
つぎに、学習処理部３６１は、ハッシュプールＧｍについて、ｂ−ｂｉｔハッシュ関数ｈｍを設定する（ステップＳ８０４）。ｂ−ｂｉｔハッシュ関数は、ランダム値をシードとしたハッシュ関数である。具体的には、たとえば、学習処理部３６１は、図６の設定画面６００のｂ−ｂｉｔハッシュ関数タイプ選択欄６０４で選択されたアルゴリズムを用いて、当該アルゴリズムに応じたハッシュテーブルを、ランダム値を用いて生成する。このハッシュテーブルは、ランダム値と、当該ランダム値をｂ−ｂｉｔハッシュ関数に与えて得られたハッシュ値とを対応付けたテーブルとなる。ハッシュ値のハッシュ幅は、図６のｂ−ｂｉｔ幅入力欄６０６で入力された値となる。
【００８６】
そして、学習処理部３６１は、図１および図２に示したように、学習用特徴ベクトル生成処理を実行する（ステップＳ８０５）。学習用特徴ベクトル生成処理（ステップＳ８０５）の詳細については図９で説明する。学習用特徴ベクトル生成処理（ステップＳ８０５）では、ハッシュプールＧｍについて、学習用特徴ベクトルＸｎｍが生成される。学習用特徴ベクトルＸｎｍは、ハッシュプールＧｍにおいて学習用因子データＤｎの特徴を示す特徴ベクトルである。
【００８７】
このあと、学習処理部３６１は、ハッシュプール数ｍがハッシュプール数ｍの最大値Ｍ以下であるか否かを判断する（ステップＳ８０６）。最大値Ｍ以下である場合（ステップＳ８０６：Ｙｅｓ）、学習処理部３６１はハッシュプールＧｍを生成する必要があるため、ハッシュプール数ｍをインクリメントして（ステップＳ８０７）、ステップＳ８０３に戻る。
【００８８】
一方、最大値Ｍ以下でない場合（ステップＳ８０６：Ｎｏ）、学習処理部３６１は、学習パラメータｗを算出する（ステップＳ８０８）。学習パラメータｗの算出（ステップＳ８０８）については、学習用特徴ベクトル生成処理（ステップＳ８０５）で生成される学習用特徴ベクトルＸｎｍを用いるため、学習用特徴ベクトル生成処理（ステップＳ８０５）の説明後に詳細を説明する。
【００８９】
これにより、学習処理部３６１は、学習処理（ステップＳ７０２）を終了し、ステップＳ７０３を実行する。
【００９０】
図９は、図８に示した学習用特徴ベクトル生成処理（ステップＳ８０５）の詳細な処理手順例を示すフローチャートである。まず、学習処理部３６１は、ａ−ｂｉｔハッシュ関数個数ｋの初期値として、ｋ＝１を設定する（ステップＳ９０１）。
【００９１】
つぎに、学習処理部３６１は、ハッシュプールＧｍについて、ａ−ｂｉｔハッシュ関数Ｈｋｍを設定する（ステップＳ９０２）。ａ−ｂｉｔハッシュ関数は、ｂ−ｂｉｔハッシュ関数と同様、ランダム値をシードとしたハッシュ関数である。具体的には、たとえば、学習処理部３６１は、図６の設定画面６００のａ−ｂｉｔハッシュ関数タイプ選択欄６０３で選択されたアルゴリズムを用いて、当該アルゴリズムに応じたハッシュテーブルを、ランダム値を用いて生成する。このハッシュテーブルは、ランダム値と、当該ランダム値をａ−ｂｉｔハッシュ関数に与えて得られたハッシュ値とを対応付けたテーブルとなる。ハッシュ値のハッシュ幅は、図６のａ−ｂｉｔ幅入力欄６０５で入力された値となる。この処理は、図２の（Ｂ）ａ−ｂｉｔハッシュ計算に相当する処理である。
【００９２】
なお、ハッシュプールＧｍ内において、ｍ，ｋが一致するａ−ｂｉｔハッシュ関数Ｈｋｍが生成された場合には、ハッシュプールＧｍ内において上書きされる。
【００９３】
つぎに、学習処理部３６１は、ＩＤ４００の値ｎをｎ＝１に設定し（ステップＳ９０３）、項目値ペアＳｎｍを生成する（ステップＳ９０４）。具体的には、たとえば、学習処理部３６１は、ｎｏｒ（ｘｎｉ）の各々について、正規化前の値ｘｎｉが非０であるｎｏｒ（ｘｎｉ）を選択する。学習処理部３６１は、選択したｎｏｒ（ｘｎｉ）については、ｉをｊで採番し、項目値ペアＳｎｍを生成する。
【００９４】
Ｓｎｍ＝｛ｊ，ｎｏｒ（ｘｎｊ）｜ｊ∈Ｊ⊆Ｉ  ｓ．ｔ．ｘｎｉ≠０｝・・・（８）
【００９５】
つぎに、学習処理部３６１は、ａ−ｂｉｔハッシュ値集合Ｔｋｍを算出する（ステップＳ９０５）。具体的には、たとえば、学習処理部３６１は、ａ−ｂｉｔハッシュ関数Ｈｋｍを項目値ペアＳｎｍに適用し、ａ−ｂｉｔハッシュ値集合Ｔｋｍを算出する。この処理は、図２の（Ｃ）重み付けに相当する処理である。
【００９６】
Ｔｋｍ＝｛ｔｊｍ｜ｊ∈Ｊ｝・・・（９）
ｔｊｍ＝Ｈｋｍ（ｊ）×ｎｏｒ（ｘｎｊ）・・・（１０）
【００９７】
そして、学習処理部３６１は、ステップＳ９０６で算出されたａ−ｂｉｔハッシュ値集合Ｔｋｍの中から、最小値である最小ハッシュ値ｕｋｍを選択する（ステップＳ９０６）。この処理は、図２の（Ｄ）最小値選択に相当する処理である。
【００９８】
つぎに、学習処理部３６１は、最小ハッシュ値ｕｋｍをｂ−ｂｉｔハッシュ関数ｈｍに与えて、ｂ−ｂｉｔハッシュ値ｖを算出する（ステップＳ９０７）。
【００９９】
そして、学習処理部３６１は、サブ特徴ベクトルｘｎｍからステップＳ９０７で求めたｖ次元の値ｑ（＝ｑＯＬＤ）を取り出し、下記式（１１）により、Ｏｄｄ−ｆｉｌｔｅｒｉｎｇによるモジュラ計算を実行する（ステップＳ９０８）。
【０１００】
ｑＮＥＷ＝ｍｏｄ（ｑＯＬＤ＋１，２）・・・（１１）
【０１０１】
そして、学習処理部３６１は、サブ特徴ベクトルｘｎｍのｖ次元の値ｑＯＬＤを、ステップＳ９０８で算出された値ｑＮＥＷで上書き保存する（ステップＳ９０９）。すなわち、式（１１）において基数を２にしたことで、ｖ次元の要素は、「０」から「１」へ、または、「１」から「０」へのフリップを繰り返す。また、基数を２としたことで、ｖ次元の値は「０」または「１」に集約されるため、省メモリ化を図ることができる。この処理は、図１の（Ｂ）に相当する処理である。
【０１０２】
このあと、学習処理部３６１は、ＩＤ４００の値ｎが最大値Ｎ以下であるか否かを判断する（ステップＳ９１０）。最大値Ｎ以下である場合（ステップＳ９１０：Ｙｅｓ）、処理すべき未選択ＩＤが存在するため、学習処理部３６１は、ｎをインクリメントして（ステップＳ９１１）、ステップＳ９０４に戻る。
【０１０３】
一方、ｎが最大値Ｎ以下でない場合（ステップＳ９１０：Ｎｏ）、学習処理部３６１は、ａ−ｂｉｔハッシュ関数個数ｋが最大値Ｋ以下であるか否かを判断する（ステップＳ９１２）。最大値Ｋ以下である場合（ステップＳ９１２：Ｙｅｓ）、学習処理部３６１は、試行すべきａ−ｂｉｔハッシュ関数Ｈｋｍが存在するため、ａ−ｂｉｔハッシュ関数個数ｋをインクリメントし（ステップＳ９１３）、ステップＳ９０２に戻る。
【０１０４】
一方、ｋが最大値Ｋ以下でない場合（ステップＳ９１２：Ｎｏ）、学習処理部３６１は、下記式（１２）により、特徴ベクトルＸｎにサブ特徴ベクトルｘｎｍをスタックすることで、特徴ベクトルＸｎを更新する（ステップＳ９１４）。
【０１０５】
Ｘｎ＝ｓｔａｃｋ（Ｘｎ，ｘｎｍ）・・・（１２）
【０１０６】
なお、式（１２）のｓｔａｃｋ関数は、ベクトルｃ＝（ｃ１，ｃ２）ｔ、ベクトルｄ＝（ｄ１，ｄ２）ｔとした場合、下記式（１３）にようにベクトルｃ、ｄを連結する関数である。
【０１０７】
ｓｔａｃｋ（ｃ，ｄ）＝（ｃ１，ｃ２，ｄ１，ｄ２）ｔ・・・（１３）
【０１０８】
これにより、ＩＤ４００の値ｎごとに、特徴ベクトルＸｎが生成され、学習処理部３６１は、学習用特徴ベクトル生成処理（ステップＳ８０５）を終了し、ステップＳ８０６を実行する。
【０１０９】
そして、図８に戻り、ステップＳ８０８では、学習パラメータｗが算出される。具体的には、学習パラメータｗは、ｙｎｉを教師データとすると、下記式（１４）により算出される。
【０１１０】
ｙｎｉ＝ｆ（Ｘｎ，ｗ）・・・（１４）
【０１１１】
教師データｙｎｉは、たとえば、学習対象となるデータ項目ｉについて学習用出力データ群（学習用診断データ群Ｙ）の寛解の見通し４２１が選択された場合、ＩＤ４００の値１〜Ｎ（＝３００，０００）までの値の列（軽減（＝３）、不変（＝２）、増悪（＝１）、…、寛解（＝４））である。
【０１１２】
式（１４）の関数ｆには、たとえば、識別関数が用いられる。識別関数の例としては、ＳＶＭやニューラルネットワークを用いた既知の関数が適用される。なお、薬剤の処方量といった量的データが教師データとして選択された場合、関数ｆには回帰関数が用いられる。例えば、既知のＳＶＭ回帰関数が用いられる。
【０１１３】
これにより、学習処理部３６１は、学習結果３６５として、式（７）に示した正規化係数Ｚｎｉ、学習パラメータｗ、およびハッシュプール族ＧをサーバＤＢ３６３に保存する。ハッシュプール族Ｇには、生成済みのａ−ｂｉｔハッシュ関数Ｈｋｍおよびｂ−ｂｉｔハッシュ関数ｈｍが含まれる。
【０１１４】
図１０は、図７に示した予測処理（ステップＳ７０５）の詳細な処理手順例を示すフローチャートである。まず、予測処理部３６２は、予測用入力データ群（予測用因子データ群Ｄ´）を、ステップＳ８０１と同じ手法で正規化する（ステップＳ１００１）。具体的には、たとえば、予測処理部３６２は、各予測用因子データＤ´ｎ´について、下記式（１５）によりデータ項目ごとに正規化する。下記式（１５）において、ｘ´ｎ´ｉは、正規化前におけるＩＤ５００がｎ´であるデータ項目ｉの値、ｘ´ｎ´ｉｍａｘは、データ項目ｉの列の値ｘ´ｎ´ｉの最大値、ｘ´ｎ´ｉｍｉｎは、データ項目ｉの列の値ｘ´ｎ´の最小値、ｎｏｒ（ｘ´ｎ´ｉ）は、ｘ´ｎ´ｉを正規化した値である。
【０１１５】
【数２】
0006334431.tif 000003
【０１１６】
また、予測用因子データＤ´ｎ´の正規化後の予測用因子データｎｏｒ（Ｄ´ｎ´）は、以下の通りである。
【０１１７】
ｎｏｒ（Ｄ´ｎ´）＝｛ｎｏｒ（ｘ´ｎ´ｉ）｜ｉ∈Ｉ´｝・・・（１６）
【０１１８】
最大値ｘ´ｎ´ｉｍａｘおよび最小値ｘ´ｎ´ｉｍｉｎは正規化係数であり、予測処理部３６２は、正規化集合Ｚ´ｎ´ｉとして保存する。
【０１１９】
Ｚ´ｎ´ｉ＝｛（ｘ´ｎ´ｉｍｉｎ，ｘ´ｎ´ｉｍａｘ）｜ｉ∈Ｉ´｝・・・（１７）
【０１２０】
つぎに、予測処理部３６２は、ハッシュプール数ｍをｍ＝１に設定し（ステップＳ１００２）、学習結果３６５に含まれているハッシュプール族ＧからハッシュプールＧｍを取得する（ステップＳ１００３）。予測処理部３６２は、正規化後の予測用因子データｎｏｒ（Ｄ´ｎ´）の各々について、ｂ２次元のゼロべクトルであるサブ特徴ベクトルｘ´ｎ´ｍを生成する。
【０１２１】
つぎに、予測処理部３６２は、ハッシュプールＧｍについて、学習結果３６５に含まれているハッシュプール族Ｇからｂ−ｂｉｔハッシュ関数ｈｍを取得する（ステップＳ１００４）。
【０１２２】
そして、予測処理部３６２は、図１および図２に示したように、予測用特徴ベクトル生成処理を実行する（ステップＳ１００５）。予測用特徴ベクトル生成処理（ステップＳ１００５）の詳細については図１１で説明する。予測用特徴ベクトル生成処理（ステップＳ１００５）では、ハッシュプールＧｍについて、予測用特徴ベクトルＸ´ｎ´ｍが生成される。予測用特徴ベクトルＸ´ｎ´ｍは、ハッシュプールＧｍにおいて予測用因子データＤ´ｎ´の特徴を示す特徴ベクトルである。
【０１２３】
このあと、予測処理部３６２は、ハッシュプール数ｍがハッシュプール数ｍの最大値Ｍ以下であるか否かを判断する（ステップＳ１００６）。最大値Ｍ以下である場合（ステップＳ１００６：Ｙｅｓ）、予測処理部３６２はハッシュプールＧｍを取得する必要があるため、ハッシュプール数ｍをインクリメントして（ステップＳ１００７）、ステップＳ１００３に戻る。
【０１２４】
一方、最大値Ｍ以下でない場合（ステップＳ１００６：Ｎｏ）、予測処理部３６２は、予測値ｙ´ｎ´ｉを算出する（ステップＳ１００８）。たとえば、予測対象となるいずれかのデータ項目ｉとして寛解の見通し４２１が選択された場合、予測処理部３６２は、予測用因子データ群Ｄ´のＩＤ５００の各値ｎ´に対応する寛解の見通し４２１の予測値ｙ´ｎ´ｉを算出する。予測値ｙ´ｎ´ｉの算出（ステップＳ１００８）については、予測用特徴ベクトル生成処理（ステップＳ１００５）で生成される予測用特徴ベクトルＸ´ｎ´ｍを用いるため、予測用特徴ベクトル生成処理（ステップＳ１００５）の説明後に詳細を説明する。
【０１２５】
これにより、予測処理部３６２は、予測処理（ステップＳ７０５）を終了し、ステップＳ７０６を実行する。
【０１２６】
図１１は、図１０に示した予測用特徴ベクトル生成処理（ステップＳ１００５）の詳細な処理手順例を示すフローチャートである。まず、予測処理部３６２は、ａ−ｂｉｔハッシュ関数個数ｋの初期値として、ｋ＝１を設定する（ステップＳ１１０１）。
【０１２７】
つぎに、予測処理部３６２は、学習結果３６５に含まれているハッシュプール族ＧからハッシュプールＧｍのａ−ｂｉｔハッシュ関数Ｈｋｍを取得する（ステップＳ１１０２）。
【０１２８】
つぎに、予測処理部３６２は、ＩＤ５００の値ｎ´をｎ´＝１に設定し（ステップＳ１１０３）、項目値ペアＳ´ｎ´ｍを生成する（ステップＳ１１０４）。具体的には、たとえば、予測処理部３６２は、ｎｏｒ（ｘ´ｎ´ｉ）の各々について、正規化前の値ｘ´ｎ´ｉが非０であるｎｏｒ（ｘ´ｎ´ｉ）を選択する。予測処理部３６２は、選択したｎｏｒ（ｘ´ｎ´ｉ）については、ｉをｊで採番し、項目値ペアＳ´ｎ´ｍを生成する。
【０１２９】
Ｓ´ｎ´ｍ＝｛ｊ，ｎｏｒ（ｘ´ｎ´ｊ）｜ｊ∈Ｊ´⊆Ｉ´  ｓ．ｔ．ｘ´ｎ´ｉ≠０｝
・・・（１８）
【０１３０】
つぎに、予測処理部３６２は、ａ−ｂｉｔハッシュ値集合Ｔ´ｋｍを算出する（ステップＳ１１０５）。具体的には、たとえば、予測処理部３６２は、ａ−ｂｉｔハッシュ関数Ｈｋｍを項目値ペアＳ´ｎ´ｍに適用し、ａ−ｂｉｔハッシュ値集合Ｔ´ｋｍを算出する。この処理は、図２の（Ｃ）重み付けに相当する処理である。
【０１３１】
Ｔ´ｋｍ＝｛ｔ´ｊｍ｜ｊ∈Ｊ´｝・・・（１９）
ｔ´ｊｍ＝Ｈｋｍ（ｊ）×ｎｏｒ（ｘ´ｎ´ｊ）・・・（２０）
【０１３２】
そして、予測処理部３６２は、ステップＳ１１０６で算出されたａ−ｂｉｔハッシュ値集合Ｔ´ｋｍの中から、最小値である最小ハッシュ値ｕ´ｋｍを選択する（ステップＳ１１０６）。この処理は、図２の（Ｄ）最小値選択に相当する処理である。
【０１３３】
つぎに、予測処理部３６２は、最小ハッシュ値ｕ´ｋｍをｂ−ｂｉｔハッシュ関数ｈｍに与えて、ｂ−ｂｉｔハッシュ値ｖ´を算出する（ステップＳ１１０７）。
【０１３４】
そして、予測処理部３６２は、サブ特徴ベクトルｘ´ｎ´ｍからステップＳ１１０７で求めたｖ´次元の値ｑ´（＝ｑ´ＯＬＤ）を取り出し、下記式（２１）により、Ｏｄｄ−ｆｉｌｔｅｒｉｎｇ計算を実行する（ステップＳ１１０８）。
【０１３５】
ｑ´ＮＥＷ＝ｍｏｄ（ｑ´ＯＬＤ＋１，２）・・・（２１）
【０１３６】
そして、予測処理部３６２は、サブ特徴ベクトルｘ´ｎ´ｍのｖ´次元の値ｑ´ＯＬＤを、ステップＳ１１０８で算出された値ｑ´ＮＥＷで上書き保存する（ステップＳ１１０９）。すなわち、式（２１）において基数を２にしたことで、ｖ´次元の要素は、「０」から「１」へ、または、「１」から「０」へのフリップを繰り返す。また、基数を２としたことで、ｖ´次元の値は「０」または「１」に集約されるため、省メモリ化を図ることができる。この処理は、図１の（Ｂ）に相当する処理である。
【０１３７】
このあと、予測処理部３６２は、ＩＤ５００の値ｎ´が最大値Ｎ´以下であるか否かを判断する（ステップＳ１１１０）。最大値Ｎ´以下である場合（ステップＳ１１１０：Ｙｅｓ）、処理すべき未選択ＩＤが存在するため、予測処理部３６２は、ｎ´をインクリメントして（ステップＳ１１１１）、ステップＳ１１０４に戻る。
【０１３８】
一方、ｎ´が最大値Ｎ以下でない場合（ステップＳ１１１０：Ｎｏ）、予測処理部３６２は、ａ−ｂｉｔハッシュ関数個数ｋが最大値Ｋ以下であるか否かを判断する（ステップＳ１１１２）。最大値Ｋ以下である場合（ステップＳ１１１２：Ｙｅｓ）、予測処理部３６２は、試行すべきａ−ｂｉｔハッシュ関数Ｈｋｍが存在するため、ａ−ｂｉｔハッシュ関数個数ｋをインクリメントし（ステップＳ１１１３）、ステップＳ１１０２に戻る。
【０１３９】
一方、ｋが最大値Ｋ以下でない場合（ステップＳ１１１２：Ｎｏ）、予測処理部３６２は、上記式（１２）、（１３）で説明したｓｔａｃｋ関数を用いて、予測用特徴ベクトルＸ´ｎ´にサブ特徴ベクトルｘ´ｎ´ｍをスタックすることで、予測用特徴ベクトルＸ´ｎ´を更新する（ステップＳ１１１４）。
【０１４０】
Ｘ´ｎ´＝ｓｔａｃｋ（Ｘ´ｎ´，ｘ´ｎ´ｍ）・・・（２２）
【０１４１】
これにより、ＩＤ５００の値ｎ´ごとに、予測用特徴ベクトルＸ´ｎ´が生成され、予測処理部３６２は、予測用特徴ベクトル生成処理（ステップＳ１００５）を終了し、ステップＳ１００６を実行する。
【０１４２】
そして、図１０に戻り、ステップＳ１００８では、予測値ｙ´ｎ´ｉが算出される。具体的には、予測値ｙ´ｎ´ｉは、上記式（１４）で示した関数ｆと、学習パラメータｗおよび予測用特徴ベクトルＸ´ｎ´を用いて、下記式（２４）により算出される。
【０１４３】
ｙ´ｎ´ｉ＝ｆ（Ｘ´ｎ´，ｗ）・・・（２４）
【０１４４】
予測値ｙ´ｎ´ｉは、たとえば、データ項目ｉとして予測用出力データ群（予測用診断データ群Ｙ´）の寛解の見通し４２１が選択された場合、ＩＤ５００の値１〜Ｎ（＝３００，０００）までの予測値の列である。
【０１４５】
このように、実施例１によれば、データ数Ｎ、Ｎ´やデータ項目Ｉ，Ｉ´の数が膨大であっても、高速かつ省メモリで高精度なデータ分析が可能となる。また、データ項目Ｉ，Ｉ´の値が多値や実数値を持つ場合であっても、高速かつ省メモリで高精度なデータ分析が可能となる。
【実施例２】
【０１４６】
実施例２では、実施例１の図１の（Ｂ）に示した集約処理において、Ｏｄｄ−ｆｉｌｔｅｒｉｎｇによるモジュラ計算に替えて、フォールディング計算を実行する例である。フォールディング計算は、データ項目ｉの値ｘｎｉを特徴ベクトルの値に累積加算する処理であり、これにより、データ分析システムは、直接的に多値や実数値のデータ項目ｉを分析することができる。換言すれば、実施例１と比較して、計算機のメモリ消費量よりも、データ分析の精度を重視した構成例である。なお、実施例２の説明においては、実施例１との相違点を中心に説明し、実施例１と同一処理については説明を省略する。
【０１４７】
図１２は、実施例２にかかる特徴量算出処理ＨＴ１の詳細な処理例を示す説明図である。図２に示した実施例１の特徴量算出処理ＨＴ１では、（Ｂ）ａ−ｂｉｔハッシュ計算のあとに（Ｃ）重みづけを実行したが、実施例２では、（Ｃ）重みづけを実行せずに、（Ｄ）最小値選択が実行される。そのあと、特徴量算出処理ＨＴ１は、（Ｅ）（Ｄ）の最小値選択で選択された最小値を正規化する。（Ｅ）正規化は、（Ａ）正規化と同じ計算方法で実行される。
【０１４８】
なお、図１２の特徴量算出処理ＨＴ１では、学習用因子データＤ１を用いた場合について説明したが、学習用因子データＤ２〜ＤＮについても特徴量算出処理ＨＴ１が実行される。また、図１２では、特徴量算出処理ＨＴ１について説明したが、他の特徴量算出処理ＨＴ２〜ＨＴＫでも同様に実行される。
【０１４９】
図１３は、実施例２にかかる特徴ベクトルの生成例を示す説明図である。図１に示した実施例１の特徴ベクトルの生成例では、（Ｂ）集約でＯｄｄ−ｆｉｌｔｅｒｉｎｇによるモジュラ計算を実行したが、実施例２の（Ｂ）集約では、フォールディング計算を実行する。
【０１５０】
フォールディング計算は、特徴量算出処理ＨＴｋからの出力である正規化済み最小値に対応するハッシュ値をｂ−ｂｉｔハッシュ関数ｈｍにより求める。フォールディング計算では、ハッシュ値が同一の正規化済み最小値が累積加算される。
【０１５１】
たとえば、学習用因子データＤ１を用いた特徴量算出処理ＨＴ１で得られた正規化済み最小値「０．４」は、ｂ−ｂｉｔハッシュ関数により生成されるハッシュテーブルのハッシュ値ｈｂ１〜ｈｂ（ｂ２）のうち、ハッシュ値ｈｂ２に対応する。したがって、ハッシュ値ｈｂ２に対応する集約値は初期値の「０」に正規化済み最小値「０．４」が累積加算されて「０．４」になる。つぎに、学習用因子データＤ１を用いた特徴量算出処理ＨＴ２で得られた正規化済み最小値「０．２」も、ハッシュ値ｈｂ２に対応する。したがって、ハッシュ値ｈｂ２に対応する集約値は「０．４」に正規化済み最小値「０．２」が加算されて「０．６」になる。
【０１５２】
ｂの値を小さくするほど、同一ハッシュ値に衝突する可能性が高くなる。（Ｂ）集約処理では、この性質を利用して、（Ａ）特徴量算出処理で得られた最小値を集約する。
【０１５３】
このように（Ｂ）集約処理が完了することにより、ハッシュ値ｈｂ１〜ｈｂ（ｂ２）の集約値が配列したサブ特徴ベクトルｘ１１が生成される。ハッシュプールＧ２〜Ｇｍについても同様にして、サブ特徴ベクトルｘ１２〜ｘ１Ｍが生成される。そして、サブ特徴ベクトルｘ１１〜ｘ１Ｍを連結することにより、学習用因子データＤ１の特徴を示す学習用特徴ベクトルＸ１が生成される。なお、学習用因子データＤ２〜ＤＮについても同様にして、学習用因子データＤ２〜ＤＮの特徴を示す学習用特徴ベクトルＸ２〜ＸＮが生成される。
【０１５４】
＜学習用特徴ベクトル生成処理（ステップＳ８０５）＞
図１４は、実施例２にかかる学習用特徴ベクトル生成処理（ステップＳ８０５）の詳細な処理手順例を示すフローチャートである。図９に示した実施例１にかかる学習用特徴ベクトル生成処理（ステップＳ８０５）と同一ステップには同一ステップ番号を付し、その説明を省略する。
【０１５５】
ステップＳ９０５のあと、学習処理部３６１は、図１２の（Ｂ）最小値選択で示したように、ａ−ｂｉｔハッシュ関数Ｈｋｍで得られたａ−ｂｉｔハッシュ値群から最小値ｕｋｍを特定し、（Ｅ）正規化で示したように、最小値ｕｋｍを正規化して、正規化済み最小値αｋｍを算出する（ステップＳ１４０６）。
【０１５６】
このあと、学習処理部３６１は、正規化済み最小値αｋｍをｂ−ｂｉｔハッシュ関数ｈｍに与えて、ｂ−ｂｉｔハッシュ値ｖを算出する（ステップＳ１４０７）。
【０１５７】
そして、学習処理部３６１は、サブ特徴ベクトルｘｎｍからステップＳ１４０７で求めたｖ次元の値ｑ（＝ｑＯＬＤ）を取り出し、下記式（２５）により、フォールディング計算を実行する（ステップＳ１４０８）。
【０１５８】
ｑＮＥＷ＝ｑＯＬＤ＋αｋｍ・・・（２５）
【０１５９】
そして、学習処理部３６１は、サブ特徴ベクトルｘｎｍのｖ次元の値ｑＯＬＤを、ステップＳ１４０８で算出された値ｑＮＥＷで上書き保存する（ステップＳ１４０９）。このように、ｂ−ｂｉｔハッシュ値が同一である正規化済み最小値αｋｍを累積加算することにより、学習用因子データＤｎの特徴をより詳細に反映することができる。したがって、データ分析の高精度化を図ることができる。なお、この処理は、図１３の（Ｂ）に相当する処理である。
【０１６０】
このように、実施例２では、ａ−ｂｉｔハッシュ関数を用いて、特徴量算出処理ＨＴｋにより学習用因子データＤｎの各データ項目の値に対応する特徴量の正規化済み最小値を算出し、ｂ−ｂｉｔハッシュ関数を用いて、正規化済み最小値を集約するため、データ分析の高速化を実現することができる。
【０１６１】
また、学習用因子データＤｎの正規化済み最小値を、フォールディング計算で集約することにより、学習用特徴ベクトルＸｎが生成されるため、学習用特徴ベクトルＸｎの各要素は、学習用因子データＤｎの各データ項目の２値、多値、実数値が考慮された値となる。したがって、データ分析の高精度化を図ることができる。
【０１６２】
また、集約処理において、フォールディング計算で正規化済み最小値を集約することにより、学習用因子データＤｎの特徴をより詳細に表現することができる。したがって、データ項目の値が多値や実数値の場合に適しており、より高精度はデータ分析を実現することができる。
【実施例３】
【０１６３】
実施例３は、実施例１および実施例２において生成されるサブ特徴ベクトルの高精度化を図る例である。具体的には、実施例３のデータ分析システムは、学習処理（ステップＳ７０２）において、学習パラメータｗを求める前に、分析精度が低くなるようなサブ特徴ベクトルを特定し、分析精度が一定以上になるまで、ｓｔａｃｋ関数で当該サブ特徴ベクトルをスタックさせずに、学習用特徴ベクトル生成処理（ステップＳ８０５）を再実行する。
【０１６４】
これにより、サブ特徴ベクトルの分析精度が一定以上の学習用特徴ベクトルが生成されるため、高精度の学習パラメータｗを算出することができる。このような高精度な学習パラメータｗを予測処理（ステップＳ７０４）で用いることにより、予測値の精度向上を図ることができる。
【０１６５】
学習用特徴ベクトル生成処理（ステップＳ８０５）を再実行する仕組みとして、たとえば、交差検証が実行される。
【０１６６】
図１５は、交差検証の実行例を示す説明図である。交差検証では、学習処理部３６１は、（１）分類、（２）学習パラメータ算出、（３）予測データ算出、（４）検証の順に実行する。
【０１６７】
（１）分類では、学習処理部３６１は、学習用因子データ群Ｄおよび学習用診断データ群Ｙをあるデータ項目ｉについて任意のＩＤ４００でサンプリングすることで２つのグループに分類する。任意のＩＤでサンプリングした方の第１グループｇ１は、第１学習用因子データ群Ｄ１と第１教師データｙ１ｎｉとを含む。残余のＩＤ４００である第２グループｇ２は、第２学習用因子データ群Ｄ１と第２教師データｙ２ｎｉとを含む。
【０１６８】
（２）学習パラメータ算出では、学習処理部３６１は、第１学習用因子データ群Ｄ１と第１教師データｙ１ｎｉとを、たとえば、ＳＶＭなどの識別器にあたえることにより、学習パラメータｗ１を算出する。なお、上述した図８のステップＳ８０８で示した処理を適用して、学習パラメータｗ１を算出してもよい。
【０１６９】
（３）予測データ算出では、学習処理部３６１は、図１０のステップＳ１００８で説明した場合と同様の処理により、学習パラメータｗ１と、第２学習用因子データ群Ｄ２とを用いて、予測データｙ２´ｎｉを算出する。
【０１７０】
（４）検証では、学習処理部３６１は、第２教師データｙ２ｎｉと予測データｙ２´ｎｉとを比較し、その差分を誤差としてｎごとに算出する。そして、学習処理部３６１は、ｎごとの誤差の二乗和の平方根を求め、その逆数を予測精度として算出する。
【０１７１】
学習処理部３６１は、（１）でサンプリングするＩＤを替えて、（１）〜（４）の処理を複数回実行する。そして、学習処理部３６１は、各々の回の（４）検証で得られた予測精度の平均値である平均予測精度を算出する。なお、予測精度の平均ではなく、予測精度の最大値、最小値、中央値、ランダムに選ばれた値など他の統計的条件を満たす統計値でもよい。以下では、例として平均予測精度として説明する。
【０１７２】
学習処理部３６１は、平均予測精度がしきい値を超えるまで、（２）学習パラメータ算出で算出された学習パラメータｗ１および予測データｙ２´ｎｉは、要求精度を満たしていないことになる。この場合は、学習処理部３６１は、ｂ−ｂｉｔハッシュ関数ｈｍおよびａ−ｂｉｔハッシュ関数Ｈｋｍを再生成して、再度交差検証を実行することになる。
【０１７３】
図１６は、実施例３にかかる学習用特徴ベクトル生成処理（ステップＳ８０５）の詳細な処理手順例１を示すフローチャートである。図１６は、図９に示した実施例１にかかる学習用特徴ベクトル生成処理（ステップＳ８０５）において交差検証を実行する処理手順例である。なお、図１６において、図９と同一ステップには同一ステップ場号を付し、その説明を省略する。
【０１７４】
図１７は、実施例３にかかる学習用特徴ベクトル生成処理（ステップＳ８０５）の詳細な処理手順例２を示すフローチャートである。図１７は、図１４に示した実施例２にかかる学習用特徴ベクトル生成処理（ステップＳ８０５）において交差検証を実行する処理手順例である。なお、図１７において、図１４と同一ステップには同一ステップ場号を付し、その説明を省略する。
【０１７５】
図１６および図１７において、ステップＳ９１２のあと、学習処理部３６１は、図１５に示した交差検証を実行する（ステップＳ１６１４）。ハッシュプールＧｍにおいて、交差検証で得られた平均予測精度をＰｍとし、しきい値をＴｈｒとする。Ｐｍ≦Ｔｈｒである場合（ステップＳ１６１５：Ｙｅｓ）、図８のステップＳ８０４に移行して、学習処理部３６１は、ｂ−ｂｉｔハッシュ関数を再生成する（ステップＳ８０４）し、再生成したｂ−ｂｉｔハッシュ関数を用いて、図１６（実施例１の場合）または図１７（実施例２の場合）の学習用特徴ベクトル生成処理（ステップＳ８０５）を再実行する。
【０１７６】
このように、図１６の学習用特徴ベクトル生成処理（ステップＳ８０５）によれば、実施例１において、交差検証が適用される。したがって、実施例１において信頼性の高い学習パラメータｗを得ることができ、データ分析精度の向上を図ることができる。
【０１７７】
また、図１７の学習用特徴ベクトル生成処理（ステップＳ８０５）によれば、実施例２において、交差検証が適用される。したがって、実施例２において信頼性の高い学習パラメータｗを得ることができ、データ分析精度の向上を図ることができる。
【０１７８】
以上説明したように、本実施例によれば、データ項目の値により重み付けられたａ−ｂｉｔハッシュ関数により生成されたハッシュ値から、さらにｂ−ｂｉｔハッシュ関数を用いて、ｂ−ｂｉｔハッシュ値を計算することで、特徴ベクトルの次元削減を実現する。これにより、高速かつ高精度なデータ分析をすることができる。また、データ項目の数が膨大であり、多値や実数値を持つ場合であっても、高速かつ省メモリで高精度なデータ分析が可能となる。
【０１７９】
なお、上述した実施例では、薬効分析を例に挙げて説明したが、商品レコメンデーションにも適用可能である。この場合、図４に示した学習用入力ＤＢ４１０のＩＤ４００は、患者ではなく顧客を示し、データ項目４１１〜４１５は、商品またはサービス（商品またはサービスのジャンルでもよい）を示し、その値は購入数または購入金額（商品の場合）や利用回数または利用金額（サービスの場合）を示す。また、学習用出力ＤＢ４２０のデータ項目４２１〜４２５は、顧客の購入傾向や顧客の趣味などを示す嗜好の種類となる。予測用入力ＤＢ５１０および学習用出力ＤＢ５２０についても同様である。
【０１８０】
また、ニュース記事の分析の場合、図４に示した学習用入力ＤＢ４１０のＩＤ４００は、新聞や雑誌、ｗｅｂページに掲載されたニュース記事を示し、データ項目４１１〜４１５は、単語を示し、その値は単語の出現回数を示す。また、学習用出力ＤＢ４２０のデータ項目４２１〜４２５は、政治、社会、スポーツ、天気といったニュース記事のジャンルとなる。予測用入力ＤＢ５１０および学習用出力ＤＢ５２０についても同様である。
【０１８１】
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加、削除、または置換をしてもよい。
【０１８２】
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
【０１８３】
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶装置、又は、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に格納することができる。
【０１８４】
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。
【図１】
0006334431.tif 000004
【図２】
0006334431.tif 000005
【図３】
0006334431.tif 000006
【図４】
0006334431.tif 000007
【図５】
0006334431.tif 000008
【図６】
0006334431.tif 000009
【図７】
0006334431.tif 000010
【図８】
0006334431.tif 000011
【図９】
0006334431.tif 000012
【図１０】
0006334431.tif 000013
【図１１】
0006334431.tif 000014
【図１２】
0006334431.tif 000015
【図１３】
0006334431.tif 000016
【図１４】
0006334431.tif 000017
【図１５】
0006334431.tif 000018
【図１６】
0006334431.tif 000019
【図１７】
0006334431.tif 000020