(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023156850
(43)【公開日】2023-10-25
(54)【発明の名称】相関係数算出プログラム、情報処理装置および相関係数算出方法
(51)【国際特許分類】
G06F 17/15 20060101AFI20231018BHJP
【FI】
G06F17/15
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022066461
(22)【出願日】2022-04-13
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】松田 一仁
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056BB23
5B056FF03
(57)【要約】
【課題】相関が現れる条件を採用する場合に用いられる相関係数を効率的に算出する。
【解決手段】情報処理装置1は、観測値リスト21から第1の属性の値を抜き出した第1の列データに条件Xをマスクして残った要素の平均値Xを算出し、第1の列データに条件Xを否定する条件Yをマスクして残った要素の平均値Yを算出し、第1の列データを第1のレジスタにロードし、平均値Xに条件Xをマスクした値と、平均値Yに条件Yをマスクした値とを第2のレジスタにロードし、演算器を用いて、第1のレジスタにロードされた値列と第2のレジスタにロードされた値列との第1の減算を行い、第2の列データについて、第1の減算を行う処理と同じ方法で第2の減算を行い、第1の減算によって得られた第1の値列と、第2の減算によって得られた第2の値列とを用いて、条件Xおよび条件Yにおける第1の列データと第2の列データとの間の相関係数を算出する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
サンプル毎に各サンプルが持つ複数の属性の値を蓄積した表データから第1の属性の値を抜き出した第1の列データに第1の条件をマスクして残った要素の第1の平均値を算出し、
前記第1の列データに前記第1の条件を否定する第2の条件をマスクして残った要素の第2の平均値を算出し、
前記第1の列データを第1のレジスタにロードし、
前記第1の平均値に前記第1の条件をマスクした値と、前記第2の平均値に前記第2の条件をマスクした値とを第2のレジスタにロードし、
前記第1のレジスタと前記第2のレジスタを入力として演算器を用いて、前記第1のレジスタにロードされた値列と前記第2のレジスタにロードされた値列との第1の減算を行い、
前記第1の属性と異なる第2の属性の値を抜き出した第2の列データについて、前記第1の減算を行う処理と同じ方法で第2の減算を行い、
前記第1の減算によって得られた第1の値列と、前記第2の減算によって得られた第2の値列とを用いて、前記第1の条件および前記第2の条件における前記第1の列データと前記第2の列データとの間の相関係数を算出する
処理をコンピュータに実行させる相関係数算出プログラム。
【請求項2】
前記相関係数を算出する処理は、
前記第1の値列を前記第1のレジスタおよび前記第2のレジスタにロードし、前記第1のレジスタと前記第2のレジスタを入力として前記演算器を用いて、前記第1の値列の2乗の第1の計算を算出し、
前記第2の値列を前記第1のレジスタおよび前記第2のレジスタにロードし、前記第1のレジスタと前記第2のレジスタを入力として前記演算器を用いて、前記第2の値列の2乗の第2の計算を算出し、
前記第1の値列を前記第1のレジスタにロードし、前記第2の値列を前記第2のレジスタにロードし、前記第1のレジスタと前記第2のレジスタを入力として前記演算器を用いて、前記第1の値列と前記第2の値列との乗算の第3の計算を算出し、
前記第1の計算の計算結果、前記第2の計算の計算結果、および前記第3の計算の計算結果を用いて、前記第1の条件および前記第2の条件における前記第1の列データと前記第2の列データとの間の相関係数を算出する
ことを特徴とする請求項1に記載の相関係数算出プログラム。
【請求項3】
前記第2のレジスタにロードする処理は、プレディケートレジスタを用いて、前記第1の平均値に前記第1の条件をマスクしてコピーした値と、前記第2の平均値に前記第2の条件をマスクしてコピーした値とを第2のレジスタにロードする
ことを特徴とする請求項1に記載の相関係数算出プログラム。
【請求項4】
前記相関係数を算出する処理は、
さらに、プリディケートレジスタを用いて、前記第1の計算の計算結果、前記第2の計算の計算結果、前記第3の計算の計算結果にそれぞれ前記第1の条件をマスクした値列を算出し、算出したそれぞれの値列を用いて、前記第1の条件における前記第1の列データと前記第2の列データとの間の相関係数を算出し、
前記プリディケートレジスタを用いて、前記第1の計算の計算結果、前記第2の計算の計算結果、前記第3の計算の計算結果にそれぞれ前記第2の条件をマスクした値列を算出し、算出したそれぞれの値列を用いて、前記第2の条件における前記第1の列データと前記第2の列データとの間の相関係数を算出する
ことを特徴とする請求項2に記載の相関係数算出プログラム。
【請求項5】
サンプル毎に各サンプルが持つ複数の属性の値を蓄積した表データから第1の属性の値を抜き出した第1の列データに第1の条件をマスクして残った要素の第1の平均値を算出する第1の平均値計算部と、
前記第1の列データに前記第1の条件を否定する第2の条件をマスクして残った要素の第2の平均値を算出する第2の平均値計算部と、
前記第1の列データを第1のレジスタにロードし、前記第1の平均値に前記第1の条件をマスクした値と、前記第2の平均値に前記第2の条件をマスクした値とを第2のレジスタにロードする第1の偏差計算部と、
前記第1のレジスタと前記第2のレジスタを入力として演算器を用いて、前記第1のレジスタにロードされた値列と前記第2のレジスタにロードされた値列との第1の減算を行う第2の偏差計算部と、
前記第1の属性と異なる第2の属性の値を抜き出した第2の列データについて、前記第1の減算を行う処理と同じ方法で第2の減算を行う第3の偏差計算部と、
前記第1の減算によって得られた第1の値列と、前記第2の減算によって得られた第2の値列とを用いて、前記第1の条件および前記第2の条件における前記第1の列データと前記第2の列データとの間の相関係数を算出する相関係数計算部と、
を有することを特徴とする情報処理装置。
【請求項6】
サンプル毎に各サンプルが持つ複数の属性の値を蓄積した表データから第1の属性の値を抜き出した第1の列データに第1の条件をマスクして残った要素の第1の平均値を算出し、
前記第1の列データに前記第1の条件を否定する第2の条件をマスクして残った要素の第2の平均値を算出し、
前記第1の列データを第1のレジスタにロードし、
前記第1の平均値に前記第1の条件をマスクした値と、前記第2の平均値に前記第2の条件をマスクした値とを第2のレジスタにロードし、
前記第1のレジスタと前記第2のレジスタを入力として演算器を用いて、前記第1のレジスタにロードされた値列と前記第2のレジスタにロードされた値列との第1の減算を行い、
前記第1の属性と異なる第2の属性の値を抜き出した第2の列データについて、前記第1の減算を行う処理と同じ方法で第2の減算を行い、
前記第1の減算によって得られた第1の値列と、前記第2の減算によって得られた第2の値列とを用いて、前記第1の条件および前記第2の条件における前記第1の列データと前記第2の列データとの間の相関係数を算出する
処理をコンピュータが実行する相関係数算出方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、相関係数算出プログラムなどに関する。
【背景技術】
【0002】
近年、相関関係を持つ条件の抽出により、因果探索すべき条件の数を効率的に絞り込む研究がなされている。
図17は、統計的因果探索のための条件抽出を示す参考図である。
図17に示すように、かかる技術では、AIに学習させるための過去のデータから相関関係を持つデータの条件候補をすべて抽出する。そして、当該技術では、抽出したデータの条件候補から因果関係をもつデータの条件をすべて抽出する。ところが、当該技術では、すべてのデータの条件候補に対して因果関係を探索するが、計算量の観点から非現実的であるという問題がある。
【0003】
そこで、条件の探索対象を、因果関係から相関関係に緩和することで、因果探索すべき条件の数を効率的に絞り込む技術が開示されている(例えば、非特許文献)。
図18は、個々の特徴的な因果関係を発見する技術を示す参考図である。
図18に示すように、かかる技術では、まず、顕在パターン発見技術を用いて、過去のサンプル集合から、特定の条件下で目的変数と強い相関を持つ重要因子候補と、その時の条件との組を網羅的に求める。なお、過去のサンプル集合は、閾値に基づき2値化した後に使用される。
【0004】
その後、求めた条件それぞれに対して、因果探索技術を用いて、その条件下での重要因子候補が正しく重要因子であるかを判定する。例えば、「x1∧x3∧x4→y」(x1=x3=x4=1ならばy=1)がある場合とする。かかる場合には、左辺から選んだ1変数を「重要因子の候補」、残りを「条件」とする。ここでは、x4が「重要因子の候補」、残りの「x1∧x3」が「条件」を示すとする。かかる技術では、「条件」を満たす過去のサンプル集合の中で「重要因子の候補」と右辺のyとに高い相関があれば、その「条件」を採用する。このように求めた条件と重要因子は、DB(DataBase)に保持される。そして、適用時には、因果関係を知りたいサンプルに対して、そのサンプルが満たす条件をDBから選択し、対応する重要因子を提示する。
【0005】
ここで、相関を取ろうとする2種類の信号を、ダイナミックレンジの中間値未満か否かに応じた1ビット信号に変換し、相関演算に関する演算量を低減させる技術が開示されている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0006】
【非特許文献】
【0007】
【非特許文献1】小柳 祐介,他4名,“個々の特徴的な因果関係を発見する技術の開発とマーケティングデータへの適用”,人工知能学会第18回ビジネスインフォマティクス研究会,2021年3月,<URL:http://sig-bi.jp/doc/18thSIG-BI2021/18thSIG-BI2021 paper13.pdf>
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、過去のサンプル集合を抽出するための条件を採用する場合に、「重要因子の候補」と右辺のyとの間で相関係数を算出するが、相関係数を効率的に算出することが求められている。
【0009】
本発明は、1つの側面では、相関が現れる条件を採用する場合に用いられる相関係数を効率的に算出することを目的とする。
【課題を解決するための手段】
【0010】
1つの態様では、相関係数算出プログラムが、サンプル毎に各サンプルが持つ複数の属性の値を蓄積した表データから第1の属性の値を抜き出した第1の列データに第1の条件をマスクして残った要素の第1の平均値を算出し、前記第1の列データに前記第1の条件を否定する第2の条件をマスクして残った要素の第2の平均値を算出し、前記第1の列データを第1のレジスタにロードし、前記第1の平均値に前記第1の条件をマスクしてコピーした値と、前記第2の平均値に前記第2の条件をマスクしてコピーした値とを第2のレジスタにロードし、前記第1のレジスタと前記第2のレジスタを入力として演算器を用いて、前記第1のレジスタにロードされた値列と前記第2のレジスタにロードされた値列との第1の減算を行い、前記第1の属性と異なる第2の属性の値を抜き出した第2の列データについて、前記第1の減算を行う処理と同じ方法で第2の減算を行い、前記第1の減算によって得られた第1の値列と、前記第2の減算によって得られた第2の値列とをそれぞれ前記第1のレジスタまたは前記第2のレジスタにロードし、前記第1のレジスタと前記第2のレジスタを入力として前記演算器を用いて、前記第1の条件および前記第2の条件における前記第1の列データと前記第2の列データとの間の相関係数を算出する、処理をコンピュータに実行させる。
【発明の効果】
【0011】
1実施態様によれば、相関が現れる条件を採用する場合に用いられる相関係数を効率的に算出することができる。
【図面の簡単な説明】
【0012】
【
図1】
図1は、実施例に係る情報処理装置の構成を示す機能ブロック図である。
【
図2】
図2は、観測値リストの一例を示す図である。
【
図4A】
図4Aは、実施例に係る演算方法の原理を示す図(1)である。
【
図4B】
図4Bは、実施例に係る演算方法の原理を示す図(2)である。
【
図5】
図5は、実施例に係る平均値計算方法を示す図である。
【
図6】
図6は、実施例に係る偏差計算方法を示す図である。
【
図7A】
図7Aは、実施例に係る相関係数計算方法を示す図(1)である。
【
図7B】
図7Bは、実施例に係る相関係数計算方法を示す図(2)である。
【
図8A】
図8Aは、実施例に係る相関係数計算処理の流れの一例を示す図(1)である。
【
図8B】
図8Bは、実施例に係る相関係数計算処理の流れの一例を示す図(2)である。
【
図8C】
図8Cは、実施例に係る相関係数計算処理の流れの一例を示す図(3)である。
【
図8D】
図8Dは、実施例に係る相関係数計算処理の流れの一例を示す図(4)である。
【
図8E】
図8Eは、実施例に係る相関係数計算処理の流れの一例を示す図(5)である。
【
図8F】
図8Fは、実施例に係る相関係数計算処理の流れの一例を示す図(6)である。
【
図9】
図9は、実施例に係る相関係数計算処理の全体のフローチャートの一例を示す図である。
【
図10】
図10は、実施例に係る平均値計算処理のフローチャートの一例を示す図である。
【
図11】
図11は、実施例に係る偏差計算処理のフローチャートの一例を示す図である。
【
図12】
図12は、実施例に係る相関係数計算/判定処理のフローチャートの一例を示す図である。
【
図13】
図13は、情報処理プログラムを実行するコンピュータの一例を示す図である。
【
図14A】
図14Aは、相関関係を持つサンプル群抽出のための条件列挙を説明する参考図(1)である。
【
図14B】
図14Bは、相関関係を持つサンプル群抽出のための条件列挙を説明する参考図(2)である。
【
図14C】
図14Cは、相関関係を持つサンプル群抽出のための条件列挙を説明する参考図(3)である。
【
図15】
図15は、観測値に対する相関係数演算を説明する参考図である。
【
図16】
図16は、SIMDレジスタとpredicateレジスタを用いた相関係数演算を説明する参考図である。
【
図17】
図17は、統計的因果探索のための条件抽出を示す参考図である。
【
図18】
図18は、個々の特徴的な因果関係を発見する技術を示す参考図である。
【発明を実施するための形態】
【0013】
以下に、本願の開示する相関係数算出プログラム、情報処理装置および相関係数算出方法の実施例を図面に基づいて詳細に説明する。なお、本発明は、実施例により限定されるものではない。
【実施例0014】
まず、個々のインスタンスに関して観測した複数事象の数値データ群に対して、「相関関係を持つ観測値ペアを有する」サンプル集合を抽出するための条件を列挙することを考える。
図14A~
図14Cは、相関関係を持つサンプル群抽出のための条件列挙を説明する参考図である。
【0015】
図14A左図には、観測値リストが表わされている。観測値リストは、インスタンスidに対して観測した複数の観測値(属性)の数値データ群を記憶したリストである。
図14A右図には、条件リストが表わされている。条件リストは、「相関関係を持つ観測値ペアを有する」サンプル集合を抽出するための条件候補のリストである。条件は、例えば、観測値から生成されるが、これに限定されるものではない。条件は、網羅的な探索を目的とするため、1つの条件に対し、not条件が含まれる。ここでは、1つの条件が「a<5」である場合に、not条件として「not(a<5)」が記憶される。
【0016】
図14Bに示すように、条件式Xは、全条件からk個抜き出して作成される。ここでは、条件式Xは、「a<5」と「not(c=1)」との論理積を示す「(a<5) and not(c=1)」である。条件列挙処理は、条件リストから条件式Xを用いて論理積を計算し、サンプルのフィルタリングを行う。フィルタリングされた観測値リストが
図14B右下に表わされている。すなわち、条件式Xを用いて論理積を計算した結果が「1」を示すサンプル集合が表わされている。
【0017】
図14Cには、条件式Xでフィルタリングされた観測値リストが表わされている。かかる観測値リストは、
図14B右下の図と同じである。条件列挙処理は、フィルタリングされた観測値リストから2つの観測値を抜き出して、抜き出した観測値ペアに対する相関係数を計算する。例えば、観測値aと観測値bが抜き出され、観測値a-b間の相関係数が計算される。観測値aと観測値cが抜き出され、観測値a-c間の相関係数が計算される。観測値bと観測値cが抜き出され、観測値b-c間の相関係数が計算される。そして、条件列挙処理は、相関係数が閾値を超える観測値ペアがn個以上ある等の判定を行い、合致する場合にフィルタリングに使用した条件を列挙する。ここでは、列挙された1つの条件は、「(a<5) and not(c=1)」となる。
【0018】
条件を網羅的に探索する場合、全条件数dx、抜き出される条件数kに対して、dxCkパターンの条件式が判定されることになる。すなわち、それぞれの条件式が、「相関関係を持つ観測値ペアを有する」サンプル集合を抽出するための条件であるかどうかについて個別に判定されることになる。
【0019】
図15は、観測値に対する相関係数演算を説明する参考図である。
図15に示すように、相関係数演算処理は、条件Xでフィルタリングされた観測値リストから2つの観測値を抜き出した行列Y1、Y2に関して、以下の式(1)~(4)を用いて相関係数R
Y12を求める。なお、式(1)および式(2)に示されるY
1aveは、行列Y1の平均値である。Y
2aveは、行列Y2の平均値である。
【数1】
【数2】
【数3】
【数4】
【0020】
すなわち、相関係数演算処理は、条件Xで行列Y1および行列Y2をマスクし、残った要素(X行列で1になっている行の要素)だけで相関係数を計算する。
【0021】
ところで、Arm社のSVE(Scalable Vector Extension)では、predicateレジスタに入力されたビット列によって、演算を有効にするか否かを制御できる。
図16は、SIMDレジスタとpredicateレジスタを用いた相関係数演算を説明する参考図である。なお、ここでは、相関係数演算の中の式(2)の演算について説明する。
【0022】
相関係数演算処理は、SIMDレジスタaに行列Y1をロードし、SIMDレジスタbに平均値Y
1aveをロードし、predicateレジスタにX行列を与える。すると、相関係数演算処理は、predicateレジスタに与えられたX行列によってALU(演算器)がマスクされるので、
図14B右下に示されるフィルタリングされたYを生成しないで、SIMD計算することができる。ここでは、X行列が「0110」である場合には、1ビット目と4ビット目に対するALUが不活性(in-active)となり、式(2)が計算されない。そして、2ビット目と3ビット目に対するALUは活性(active)となり、式(2)が計算される。
【0023】
ところが、相関係数演算処理は、predicateレジスタによってマスクをかけた部分のALUを有効活用できないので、CPU利用率が低下するという問題がある。そこで、実施例では、ALUを有効活用できる相関係数演算処理について説明する。
【0024】
[情報処理装置の構成]
図1は、実施例に係る情報処理装置の構成を示す機能ブロック図である。
【0025】
情報処理装置1は、制御部10と、記憶部20とを有する。制御部10は、平均値計算処理部11と、偏差計算処理部12と、相関係数計算部13と、判定部14とを有する。記憶部20は、観測値リスト21と、条件リスト22とを有する。
【0026】
観測値リスト21は、観測値リスト21は、インスタンスidに対して観測した複数の観測値の数値データ群を記憶したリストである。言い換えれば、観測値リスト21は、各インスタンスidが持つ複数の観測値(属性)の値を蓄積した表データである。ここでいうインスタンスidとは、個々の人などを一意に識別する識別子である。観測値リスト21の各列は、各観測値(属性)に対応する。ここで、観測値リスト21の一例を、
図2を参照して説明する。
【0027】
図2は、観測値リストの一例を示す図である。
図2に示すように、観測値リスト21は、インスタンスidと、観測値aと、観測値bと、観測値cと、・・・を対応付けたリストである。一例として、インスタンスidが「1」である場合に、観測値aとして「1.3」、観測値bとして「4.8」、観測値cとして「1」が記憶されている。インスタンスidが「2」である場合に、観測値aとして「2.1」、観測値bとして「3.7」、観測値cとして「0」が記憶されている。
【0028】
図1に戻って、条件リスト22は、「相関関係を持つ観測値ペアを有する」インスタンスidのサンプル集合を抽出するための条件候補のリストである。言い換えれば、条件リスト22は、観測値リスト21から、各インスタンスidが持つ複数の観測値(属性)の値を条件候補に基づいて2値化した表データである。すなわち、条件リスト22の列単位の配列は、条件に対するビット列となる。条件は、例えば、観測値から生成されるが、これに限定されるものではない。また、条件は、網羅的な探索を目的とするため、1つの条件に対し、not条件が含まれる。ここで、条件リスト22の一例を、
図3を参照して説明する。
【0029】
図3は、条件リストの一例を示す図である。条件リスト22は、インスタンスid、各種条件を対応付けたリストである。条件の一例として、「a<5」、「b>4」、「c=1」が記憶されている。そして、これらの条件に対し、not条件である「not(a<5)」、「not(b>4)」、「not(c=1)」が記憶されている。条件「a<5」は、観測値aが「5」より小さいという条件を示している。条件「not(a<5)」は、観測値aが「5」より小さいという条件の否定条件、すなわち、観測値aが「5」以上という条件を示している。
【0030】
そして、各種条件について、それぞれ条件を満たす場合には「1」が設定され、条件を満たさない場合には「0」が設定されている。値の一例として、インスタンスidが「1」である場合には、条件「a<5」について、観測値aが「1.3」であり、観測値aが「5」より小さいので、「1」が設定されている。条件「not(a<5)」について、観測値aが「1.3」であり、観測値aが「5」より小さいので、「0」が設定されている。そして、条件「a<5」に対する列単位の配列は、「111・・・」のビット列となっている。条件「not(a<5)」に対する列単位の配列は、「000・・・」のビット列となっている。
【0031】
図1に戻って、情報処理装置1は、観測値リスト21の数値データ群に対して、「相関関係を持つ観測値ペアを有する」インスタンスidのサンプル集合を抽出するための条件を列挙する。情報処理装置1は、条件を探索する際に、探索する複数の条件の中にある条件と対になる否定条件を含めることを利用して、ある条件とある条件の否定条件との相関係数の演算を一括して行う。
【0032】
ここで、相関係数の演算方法の原理を、
図4Aおよび
図4Bを参照して説明する。
図4Aおよび
図4Bは、実施例に係る演算方法の原理を示す図である。
図4Aに示すように、条件x
1に対し、必ず条件x
1の否定条件を含めることを利用する。例えば、ある条件式Xが(x
0∧x
1)である場合には、ある条件式Xに対し、x
1をx
1の否定条件に置換した条件式X‘(x
0∧not(x
1))も判定する条件として含める。そうすると、条件式Xに対応するビット列と条件式X´に対応するビット列とは、条件x
0を軸として排他的なビット列となる。
【0033】
つまり、条件式Xに対応するビット列は、条件x0に対応するビット列と条件x1に対応するビット列とのbitand(論理積)で計算される。一方、条件式X´に対応するビット列は、条件x0に対応するビット列と条件not(x1)に対応するビット列とのbitand(論理積)で計算される。条件式Xに対応するビット列と条件式X´に対応するビット列との論理和は、条件x0に対応するビット列となる。したがって、条件式Xと条件式X´とは、条件x0を共通とした重複しない条件式であるので、一括して判定することができる。
【0034】
図4Bには、SIMDレジスタとpredicateレジスタを用いた式(2)に含まれる偏差計算を実行する模式図が表わされている。ここでは、条件式Xは、「0110」であり、条件式X´は、「1001」であるとする。
図4Bに示すように、predicateレジスタに与えられた条件式Xに対応するビット列によってALU(演算器)がマスクされるので、SIMDレジスタにロードされた平均値Y
1Xaveがマスクされないビットに対応するALUが活性化し、C[1]、C[2]に結果が算出される。また、predicateレジスタに与えられた条件式X´のビット列によってALU(演算器)がマスクされるので、SIMDレジスタにロードされた平均値Y
1X´aveがマスクされないビットに対応するALUが活性化し、C´[1]、C´[2]に結果が算出される。このように、条件式Xに対応するビット列と条件式X´に対応するビット列とは、条件x
0を軸として排他的なビット列であるので、条件式Xと条件式X´とを一括して判定することができる。
【0035】
図1に戻って、平均値計算処理部11は、観測値リスト21から1つの観測値を抜き出した行列Y1に関して、プレディケートレジスタおよびSIMDレジスタを利用して、条件式X(=x
0∧x
1)をマスクして残った要素の平均値を計算する。また、平均値計算処理部11は、同じ行列Y1に関して、プレディケートレジスタおよびSIMDレジスタを利用して、条件式X´(=x
0∧not(x
1))をマスクして残った要素の平均値を計算する。条件式X´は、条件式Xを否定する条件式である。
【0036】
ここで、平均値計算処理部11によって行われる平均値計算方法を、
図5を参照して説明する。
図5は、実施例に係る平均値計算方法を示す図である。
【0037】
図5に示すように、平均値計算処理部11は、観測値リスト21から第1の観測値の値を抜き出した行列Y1をSIMDレジスタAにロードする。平均値計算処理部11は、行列Y1の要素を条件式Xで2値化した第1のビット列をプレディケートレジスタにロードする。そして、平均値計算処理部11は、演算器(ALU)をプレディケートレジスタでマスクして、SIMDレジスタAの要素の第1の平均値Y1
Xaveを算出する(符号a1)。すなわち、平均値計算処理部11は、SIMDレジスタAの要素をプレディケートレジスタでマスクして残った要素の第1の平均値Y1
Xaveを算出する。
【0038】
また、平均値計算処理部11は、観測値リスト21から第1の観測値の値を抜き出した行列Y1の要素をSIMDレジスタAにロードする。平均値計算処理部11は、行列Y1の要素を条件式X´で2値化した第2のビット列をプレディケートレジスタにロードする。そして、平均値計算処理部11は、演算器(ALU)をプレディケートレジスタでマスクして、SIMDレジスタAの要素の第2の平均値Y1X´aveを算出する(符号a2)。すなわち、平均値計算処理部11は、SIMDレジスタAの要素をプレディケートレジスタでマスクして残った要素の第2の平均値Y1X´aveを算出する。
【0039】
また、平均値計算処理部11は、条件式Xで2値化した第1のビット列をプレディケートレジスタにロードする。平均値計算処理部11は、第1の平均値Y1XaveをSIMDレジスタAにロードする。そして、平均値計算処理部11は、第1の平均値Y1Xaveを、プレディケートレジスタでマスクしてSIMDレジスタBにコピーする(符号a3)。また、平均値計算処理部11は、条件式X´で2値化した第2のビット列をプレディケートレジスタにロードする。平均値計算処理部11は、第2の平均値Y1X´aveをSIMDレジスタAにロードする。そして、平均値計算処理部11は、第2の平均値Y1X´aveを、プレディケートレジスタでマスクしてSIMDレジスタBにコピーする(符号a4)。条件式Xで2値化した第1のビット列と条件式X´で2値化した第2のビット列とは、共通する条件x0を軸として排他的なビット列であるので、SIMDレジスタBにコピーされた第1の平均値Y1Xaveおよび第2の平均値Y1X´aveは同じビットにコピーされない。したがって、平均値計算処理部11は、プレディケートレジスタを利用して、条件式Xと条件式X´のそれぞれでマスクされた第1の観測値の平均値Y1Xave、Y1X´aveをSIMDレジスタBにロードできる。
【0040】
また、平均値計算処理部11は、行列Y1の場合と同様に、観測値リスト21から第2の観測値を抜き出した行列Y2に関して、条件式X(=x0∧x1)をマスクして残った要素の平均値Y2Xaveを計算すれば良い。また、平均値計算処理部11は、行列Y1の場合と同様に、同じ行列Y2に関して、条件式X´(=x0∧not(x1))をマスクして残った要素の平均値Y2X´aveを計算すれば良い。そして、平均値計算処理部11は、プレディケートレジスタを利用して、条件式Xと条件式X´のそれぞれでマスクされた第2の観測値の平均値Y2Xave、Y2X´aveをSIMDレジスタBにロードすれば良い。
【0041】
図1に戻って、偏差計算処理部12は、プレディケートレジスタおよびSIMDレジスタを利用して、観測値リスト21から第1の観測値を抜き出した行列Y1と、条件式XおよびX´それぞれでマスクされ得られた平均値の列との偏差を計算する。
【0042】
ここで、偏差計算処理部12によって行われる偏差計算方法を、
図6を参照して説明する。
図6は、実施例に係る偏差計算方法を示す図である。
【0043】
図6に示すように、SIMDレジスタBには、平均値計算処理部11によって条件式X、X´それぞれでマスクされた平均値(Y1
Xave、Y1
X´ave)の列が設定されている(符号b2)。また、SIMDレジスタAには、第1の観測値の値を抜き出した行列Y1の要素が設定されている(符号b1)。偏差計算処理部12は、条件式X、X´の共通の条件x
0をプレディケートレジスタにロードする(符号b3)。そして、偏差計算処理部12は、演算器(ALU)をプレディケートレジスタでマスクして、SIMDレジスタAからSIMDレジスタBを減算する演算を実行する。そして、偏差計算処理部12は、減算結果をSIMDレジスタCにロードする(符号b4)。この結果、偏差計算処理部12は、条件式Xおよび条件式X´に対する「Y1-Y1
ave」を計算できる。
【0044】
また、偏差計算処理部12は、行列Y1の場合と同様に、観測値リスト21から第2の観測値を抜き出した行列Y2についても、条件式Xおよび条件式X´に対する「Y2-Y2ave」を計算すれば良い。このように、偏差計算処理部12は、条件式X、X´の共通の条件x0をプレディケートレジスタにロードして計算することで、条件式X、X´に対する偏差計算を一括して行うことができる。
【0045】
相関係数計算部13は、プレディケートレジスタおよびSIMDレジスタを利用して、条件式Xに対する第1の観測値の行列Y1と第2の観測値の行列Y2との相関係数および条件式X´に対する行列Y1と行列Y2との相関係数を一括して計算する。
【0046】
ここで、相関係数計算部13によって行われる相関係数計算方法を、
図7Aおよび
図7Bを参照して説明する。
図7Aおよび
図7Bは、実施例に係る相関係数計算方法を示す図である。
【0047】
図7Aに示すように、相関係数計算部13は、第1の観測値の行列Y1について、偏差計算処理部12によって処理された条件式Xおよび条件式X´における「Y1-Y1
ave」の列値をSIMDレジスタAおよびSIMDレジスタBにロードする(符号c1)。相関係数計算部13は、条件式X、X´の共通の条件x
0をプレディケートレジスタにロードする(符号c2)。そして、相関係数計算部13は、演算器(ALU)をプレディケートレジスタでマスクして、SIMDレジスタAとSIMDレジスタBとを乗算する演算を実行する。そして、相関係数計算部13は、乗算結果をSIMDレジスタCにロードする(符号c6)。この結果、相関係数計算部13は、第1の観測値の行列Y1について、条件式Xおよび条件式X´に対する式(2)を一括して計算して、S
y1を求める。
【0048】
また、相関係数計算部13は、第2の観測値の行列Y2について、偏差計算処理部12によって処理された条件式Xおよび条件式X´における「Y2-Y2ave」の列値をSIMDレジスタAおよびSIMDレジスタBにロードする(符号c4)。そして、相関係数計算部13は、演算器(ALU)をプレディケートレジスタでマスクして、SIMDレジスタAとSIMDレジスタBとを乗算する演算を実行する。そして、相関係数計算部13は、乗算結果をSIMDレジスタCにロードする(符号c6)。この結果、相関係数計算部13は、第2の観測値の行列Y2について、条件式Xおよび条件式X´に対する式(3)を一括して計算して、Sy2を求める。
【0049】
また、相関係数計算部13は、第1の観測値の行列Y1について、条件式Xおよび条件式X´における「Y1-Y1ave」の列値をSIMDレジスタAにロードする(符号c7)。相関係数計算部13は、第2の観測値の行列Y2について、条件式Xおよび条件式X´における「Y2-Y2ave」の列値をSIMDレジスタBにロードする(符号c8)。そして、相関係数計算部13は、演算器(ALU)をプレディケートレジスタでマスクして、SIMDレジスタAとSIMDレジスタBとを乗算する演算を実行する。そして、相関係数計算部13は、乗算結果をSIMDレジスタCにロードする(符号c10)。この結果、相関係数計算部13は、第1の観測値の行列Y1および第2の観測値の行列Y2について、条件式Xおよび条件式X´に対する式(1)を一括して計算して、Sy12を求める。
【0050】
図7Bに示すように、相関係数計算部13は、プレディケートレジスタを利用して、条件式Xおよび条件式X´について一括して計算された結果を分ける。
【0051】
例えば、相関係数計算部13は、プレディケートレジスタに、行列Y1の要素を条件式Xで2値化した第1のビット列をロードする(符号d1)。相関係数計算部13は、式(2)によって計算された、条件式Xおよび条件式X´に対するSy1をSIMDレジスタAにロードする(符号d2)。そして、相関係数計算部13は、SIMDレジスタAをプレディケートレジスタでマスクして、マスクされない要素の和(sum)を計算して、「sumSy1X」を求める(符号d3)。
【0052】
そして、相関係数計算部13は、プレディケートレジスタに、行列Y1の要素を条件式X´で2値化した第2のビット列をロードする(符号d4)。そして、相関係数計算部13は、SIMDレジスタAをプレディケートレジスタでマスクして、マスクされない要素の和(sum)を計算して、「sumSy1X´」を求める(符号d5)。
【0053】
また、相関係数計算部13は、同様に、式(2)によって計算された、条件式Xおよび条件式X´に対するSy2から、「sumSy2X」を「sumSy2X´」を求める。相関係数計算部13は、同様に、式(1)によって計算された、条件式および条件式X´に対するSy12から、「sumSy12X」を「sumSy12X´」を求める。
【0054】
そして、相関係数計算部13は、
図7B右図上段の式(4)に基づいて、行条件式Xに対する第1の観測値の行列Y1と第2の観測値の行列Y2との相関係数R
y12Xを計算する。相関係数計算部13は、
図7B右図下段の式(4)に基づいて、条件式X´に対する第1の観測値の行列Y1と第2の観測値の行列Y2との相関係数R
y12X´を計算する。
【0055】
同様にして、相関係数計算部13は、条件式X、X´に対する別の観測値ペアの相関係数を計算する。これにより、相関係数計算部13は、条件式Xに対し、否定条件X´を一括して計算可能であるため、相関係数演算のうち、式(2)で示されるSy1,式(3)で示されるSy2,式(1)で示されるSy12の計算に必要なサイクル数を半減させることができる。
【0056】
図1に戻って、判定部14は、フィルタリングに利用した個々の条件に対し、相関係数が閾値を超える観測値ペアがn個以上あるか否かを判定する。ここでいうnは、「1」でも良いし、予め定義されれば良い。そして、判定部14は、相関係数が閾値を超える観測値ペアがn個以上あれば、フィルタリングに使用した条件を保存する。
【0057】
[相関係数計算処理の流れ]
図8A~
図8Fは、実施例に係る相関係数計算処理の流れの一例を示す図である。
【0058】
図8Aには、観測値リスト21および条件リスト22が表わされている。観測値リスト21には、インスタンスidに対応付けた観測値aの値、観測値bの値、観測値cの値が記憶されている。すなわち、観測値aの列単位の配列、観測値bの列単位の配列、観測値cの列単位の配列が記憶されている。そして、条件リスト22には、インスタンスidに対応付けて、各条件に対応する「0」または「1」が記憶されている。「0」は、条件に合致していないことを示し、「1」は、条件に合致していることを示している。また、条件リスト22に含まれる条件には、対になるnot条件が存在する。
【0059】
そして、条件リスト22から条件式が生成される。
図8Bでは、条件式は、全条件から3個抜き出して生成されるものとする。ここでは、条件式は、「a<5」と「b>4」と「c=1」との論理積を示す「(a<5) and (b>4) and (c=1)」である。この条件式をXとする。また、3つ目の条件「c=1」を否定条件に変えた条件式「(a<5) and (b>4) and not(c=1)」をX´とする。そして、条件式Xを用いてbitand(論理積)が算出される。条件式X´を用いてbitand(論理積)が算出される。なお、ここでは、条件式X、X´の共通の条件であるx
0「(a<5) and (b>4)」のビット列は、「1111」となる。
【0060】
図8Cに示すように、平均値計算処理部11は、相関係数を判定する観測値のペアを選択する。ここでは、観測値a、観測値bのペアが選択されるとする。平均値計算処理部11は、条件式Xで2値化したビット列をプレディケートレジスタにロードする。そして、平均値計算処理部11は、演算器(ALU)をプレディケートレジスタでマスクして、観測値aの平均値Ya
aveXを計算する。平均値計算処理部11は、演算器(ALU)をプレディケートレジスタでマスクして、観測値bの平均値Yb
aveXを計算する。ここでは、(Ya
aveX,Yb
aveX)は、(3.5(=(2.1+4.9)×0.5),3.6(=(3.7+3.5)×0.5))と計算される。
【0061】
同様に、平均値計算処理部11は、条件式X´で2値化したビット列をプレディケートレジスタにロードする。そして、平均値計算処理部11は、演算器(ALU)をプレディケートレジスタでマスクして、観測値aの平均値YaaveX´を計算する。平均値計算処理部11は、演算器(ALU)をプレディケートレジスタでマスクして、観測値bの平均値YbaveX´を計算する。ここでは、(YaaveX´,YbaveX´)は、(1.85(=(1.3+2.4)×0.5),4.0(=(4.8+3.2)×0.5))と計算される。
【0062】
図8Dに示すように、平均値計算処理部11は、条件式Xで2値化したビット列「0101」をプレディケートレジスタにロードする。そして、平均値計算処理部11は、平均値Ya
aveXを、プレディケートレジスタでマスクしてSIMDレジスタz0にコピーする。ここでは、SIMDレジスタz0の2ビット目と4ビット目に平均値Ya
aveX「3.5」がコピーされている。
【0063】
また、平均値計算処理部11は、条件式X´で2値化したビット列「1010」をプレディケートレジスタにロードする。そして、平均値計算処理部11は、平均値YaaveX´を、プレディケートレジスタでマスクしてSIMDレジスタz0にコピーする。ここでは、SIMDレジスタz0の1ビット目と3ビット目に平均値YaaveX´「1.85」がコピーされている。
【0064】
図8Eに示すように、偏差計算処理部12は、条件式X、X´の共通の条件x
0で2値化したビット列「1111」をプレディケートレジスタにロードする。そして、偏差計算処理部12は、演算器(ALU)をプレディケートレジスタでマスクして、観測値aの値を抜き出した行列YaからSIMDレジスタz0を減算する演算を実行する。そして、偏差計算処理部12は、減算結果をSIMDレジスタS
atmpにロードする。すなわち、偏差計算処理部12は、条件式Xおよび条件式X´に対する「Ya-Ya
ave」を一括して計算できる。
【0065】
観測値bについても、観測値aの場合と同様に、偏差計算処理部12は、演算器(ALU)をプレディケートレジスタでマスクして、観測値bの値を抜き出した行列YbからSIMDレジスタz0を減算する演算を実行する。そして、偏差計算処理部12は、減算結果をSIMDレジスタSbtmpにロードする。すなわち、偏差計算処理部12は、条件式Xおよび条件式X´に対する「Yb-Ybave」を一括して計算できる。
【0066】
図8Fに示すように、相関係数計算部13は、プレディケートレジスタを利用して、SIMDレジスタS
atmpの値列の2乗を計算して、SIMDレジスタS
aにロードする。かかる場合のプレディケートレジスタには、条件式X、X´の共通の条件x
0で2値化したビット列「1111」がロードされる。この結果、相関係数計算部13は、観測値aの行列Yaについて、条件式Xおよび条件式X´に対する式(2)を一括して計算して、S
aを求める。
【0067】
観測値bについても、観測値aの場合と同様に、相関係数計算部13は、プレディケートレジスタを利用して、SIMDレジスタSbtmpの値列の2乗を計算して、SIMDレジスタSbにロードする。かかる場合のプレディケートレジスタには、条件式X、X´の共通の条件x0で2値化したビット列「1111」がロードされる。この結果、相関係数計算部13は、観測値bの行列Ybについて、条件式Xおよび条件式X´に対する式(2)を一括して計算して、Sbを求める。
【0068】
また、相関係数計算部13は、プレディケートレジスタを利用して、SIMDレジスタSatmpの値列とSIMDレジスタSbtmpの値列とを乗算して、SIMDレジスタSabにロードする。かかる場合のプレディケートレジスタには、条件式X、X´の共通の条件x0で2値化したビット列「1111」がロードされる。この結果、相関係数計算部13は、観測値aの行列Yaおよび観測値bの行列Ybについて、条件式Xおよび条件式X´に対する式(1)を一括して計算して、Sabを求める。
【0069】
そして、相関係数計算部13は、プレディケートレジスタに条件式Xで2値化したビット列「0101」をロードする。そして、相関係数計算部13は、条件式Xおよび条件式X´に対するSaをプレディケートレジスタでマスクして、マスクされない要素の和(sum)を計算して、「sumSaX」を求める。相関係数計算部13は、条件式Xおよび条件式X´に対するSbをプレディケートレジスタでマスクして、マスクされない要素の和(sum)を計算して、「sumSbX」を求める。相関係数計算部13は、条件式Xおよび条件式X´に対するSabをプレディケートレジスタでマスクして、マスクされない要素の和(sum)を計算して、「sumSabX」を求める。
【0070】
そして、相関係数計算部13は、プレディケートレジスタに条件式X´で2値化したビット列「1010」をロードする。そして、相関係数計算部13は、条件式Xおよび条件式X´に対するSaをプレディケートレジスタでマスクして、マスクされない要素の和(sum)を計算して、「sumSaX´」を求める。相関係数計算部13は、条件式Xおよび条件式X´に対するSbをプレディケートレジスタでマスクして、マスクされない要素の和(sum)を計算して、「sumSbX´」を求める。相関係数計算部13は、条件式Xおよび条件式X´に対するSabをプレディケートレジスタでマスクして、マスクされない要素の和(sum)を計算して、「sumSabX´」を求める。
【0071】
そして、相関係数計算部13は、(SaX,SbX,SabX)を用いて、条件式Xに対する、観測値aと観測値bとの相関係数RyabXを計算する。相関係数計算部13は、(SaX´,SbX´,SabX´)を用いて、条件式X´に対する観測値aと観測値bとの相関係数RyabX´を計算する。
【0072】
[相関係数計算処理のフローチャート]
図9は、実施例に係る相関係数計算処理の全体のフローチャートの一例を示す図である。なお、観測値リスト21および条件リスト22は、記憶部20に格納されている。そして、情報処理装置1は、観測値リスト21から選択された観測値行列Y
1、Y
2および条件リスト22から選択された条件x
0、x
1を受け付けたとする。観測値行列Y
1、Y
2は、観測値リスト21から2つの観測値の行列を抜き出したものである。
【0073】
情報処理装置1は、条件x0、x1を用いて、観測値行列Y1、Y2における平均値計算処理を実行する(ステップS11)。なお、平均値計算処理のフローチャートについては、後述する。
【0074】
情報処理装置1は、条件x0、x1を用いて、観測値行列Y1、Y2における偏差計算処理を実行する(ステップS12)。なお、偏差計算処理のフローチャートについては、後述する。
【0075】
情報処理装置1は、条件x0、x1を用いて、観測値行列Y1、Y2における相関係数処理および判定処理を実行する(ステップS13)。なお、相関係数処理/判定処理のフローチャートについては、後述する。そして、情報処理装置1は、相関係数計算処理のプロセスを終了する。
【0076】
[平均値計算処理のフローチャート]
図10は、実施例に係る平均値計算処理のフローチャートの一例を示す図である。なお、フローチャートで示すpレジスタは、プレディケートレジスタである。
【0077】
まず、平均値計算処理部11は、観測値行列Y1、Y2の全要素を順番に処理するまで、ステップS21~S28をループする。平均値計算処理部11は、観測値行列Y1をSIMDレジスタz0に最大数ロードする(ステップS21)。平均値計算処理部11は、観測値行列Y2をSIMDレジスタz1に最大数ロードする(ステップS22)。
【0078】
そして、平均値計算処理部11は、条件式X「x0∧x1」に対応するビット列をpレジスタに最大数ロードする(ステップS23)。そして、平均値計算処理部11は、SIMDレジスタz0の処理対象の位置の要素をpレジスタでマスクした上でY1Xaveに加算する(ステップS24)。平均値計算処理部11は、SIMDレジスタz1の処理対象の同じ位置の要素をpレジスタでマスクした上でY2Xaveに加算する(ステップS25)。
【0079】
そして、平均値計算処理部11は、条件式X´「x0∧not(x1)」に対応するビット列をpレジスタに最大数ロードする(ステップS26)。そして、平均値計算処理部11は、SIMDレジスタz0の処理対象の位置の要素をpレジスタでマスクした上でY1X´aveに加算する(ステップS27)。平均値計算処理部11は、SIMDレジスタz1の処理対象の同じ位置の要素をpレジスタでマスクした上でY2X´aveに加算する(ステップS28)。
【0080】
続いて、平均値計算処理部11は、観測値行列Y1、Y2の全要素を処理すると、Y1Xave、Y1X´aveを、観測値行列Y1の要素数で除算する(ステップS29)。すなわち、平均値計算処理部11は、観測値行列Y1の要素を条件式Xに対応するビット列でマスクして残った要素の平均値Y1Xaveを算出する。平均値計算処理部11は、観測値行列Y1の要素を条件式X´に対応するビット列でマスクして残った要素の平均値Y1X´aveを算出する。
【0081】
加えて、平均値計算処理部11は、Y2Xave、Y2X´aveを、観測値行列Y2の要素数で除算する(ステップS30)。平均値計算処理部11は、観測値行列Y2の要素を条件式Xに対応するビット列でマスクして残った要素の平均値Y2Xaveを算出する。平均値計算処理部11は、観測値行列Y2の要素を条件式X´に対応するビット列でマスクして残った要素の平均値Y2X´aveを算出する。
【0082】
そして、平均値計算処理部11は、平均値計算処理を終了する。
【0083】
[偏差計算処理のフローチャート]
図11は、実施例に係る偏差計算処理のフローチャートの一例を示す図である。
【0084】
偏差計算処理部12は、観測値行列Y1の全要素を順番に処理するまで、ステップS41~S47をループする。偏差計算処理部12は、条件式X「x0∧x1」に対応するビット列をpレジスタに最大数ロードする(ステップS41)。偏差計算処理部12は、平均値Y1Xaveをpレジスタでマスクした上でSIMDレジスタz0に最大数コピーする(ステップS42)。
【0085】
そして、偏差計算処理部12は、条件式X´「x0∧not(x1)」に対応するビット列をpレジスタに最大数ロードする(ステップS43)。偏差計算処理部12は、平均値Y1X´aveをpレジスタでマスクした上でSIMDレジスタz0に最大数コピーする(ステップS44)。
【0086】
そして、偏差計算処理部12は、条件式XとX´の共通の条件x0に対応するビット列をpレジスタに最大数ロードする(ステップS45)。偏差計算処理部12は、観測値行列Y1をSIMDレジスタz1に最大数ロードする(ステップS46)。そして、偏差計算処理部12は、pレジスタでマスクした上でSIMDレジスタz1からSIMDレジスタz0を減算し、一次配列S1tmpに格納する(ステップS47)。すなわち、偏差計算処理部12は、条件式Xおよび条件式X´に対する「観測値行列Y1-Y1ave」を計算して、一次配列S1tmpに格納する。
【0087】
続いて、偏差計算処理部12は、観測値行列Y1の全要素を処理すると、観測値行列Y2の全要素を順番に処理するまで、ステップS48~S54をループする。偏差計算処理部12は、条件式X「x0∧x1」に対応するビット列をpレジスタに最大数ロードする(ステップS48)。偏差計算処理部12は、平均値Y2Xaveをpレジスタでマスクした上でSIMDレジスタz0に最大数コピーする(ステップS49)。
【0088】
そして、偏差計算処理部12は、条件式X´「x0∧not(x1)」に対応するビット列をpレジスタに最大数ロードする(ステップS50)。偏差計算処理部12は、平均値Y2X´aveをpレジスタでマスクした上でSIMDレジスタz0に最大数コピーする(ステップS51)。
【0089】
そして、偏差計算処理部12は、条件式XとX´の共通の条件x0に対応するビット列をpレジスタに最大数ロードする(ステップS52)。偏差計算処理部12は、観測値行列Y2をSIMDレジスタz1に最大数ロードする(ステップS53)。そして、偏差計算処理部12は、pレジスタでマスクした上でSIMDレジスタz1からSIMDレジスタz0を減算し、一次配列S2tmpに格納する(ステップS54)。すなわち、偏差計算処理部12は、条件式Xおよび条件式X´に対する「観測値行列Y2-Y2ave」を計算して、一次配列S2tmpに格納する。
【0090】
[相関係数計算/判定処理のフローチャート]
図12は、実施例に係る相関係数計算/判定処理のフローチャートの一例を示す図である。
【0091】
図12に示すように、相関係数計算部13は、「観測値行列Y
1-Y
1ave」を格納した一次配列S
1tmp,「観測値行列Y
2-Y
2ave」を格納した一次配列S
2tmpの全要素を順番に処理するまで、ステップS61~S70をループする。相関係数計算部13は、「観測値行列Y
1-Y
1ave」を格納した一次配列S
1tmpをSIMDレジスタz0に最大数ロードする(ステップS61)。相関係数計算部13は、「観測値行列Y
2-Y
2ave」を格納した一次配列S
2tmpをSIMDレジスタz1に最大数ロードする(ステップS62)。
【0092】
相関係数計算部13は、条件式X「x0∧x1」に対応するビット列をpレジスタに最大数ロードする(ステップS63)。相関係数計算部13は、SIMDレジスタz0をpレジスタでマスクした上で自乗し、S1Xに加算する(ステップS64)。すなわち、相関係数計算部13は、条件式Xに対応する「sum(観測値行列Y1-Y1ave)2」を計算する。
【0093】
相関係数計算部13は、SIMDレジスタz1をpレジスタでマスクした上で自乗し、S2Xに加算する(ステップS65)。すなわち、相関係数計算部13は、条件式Xに対応する「sum(観測値行列Y2-Y2ave)2」を計算する。相関係数計算部13は、pレジスタでマスクした上で、SIMDレジスタz0とSIMDレジスタz1とを乗算し、S12Xに加算する(ステップS66)。すなわち、相関係数計算部13は、条件式Xに対応する「sum{(観測値行列Y1-Y1ave)×(観測値行列Y2-Y2ave)}」を計算する。
【0094】
相関係数計算部13は、条件式X「x0∧not(x1)」に対応するビット列をpレジスタに最大数ロードする(ステップS67)。相関係数計算部13は、SIMDレジスタz0をpレジスタでマスクした上で自乗し、S1X´に加算する(ステップS68)。すなわち、相関係数計算部13は、条件式X´に対応する「sum(観測値行列Y1-Y1ave)2」を計算する。
【0095】
相関係数計算部13は、SIMDレジスタz1をpレジスタでマスクした上で自乗し、S2X´に加算する(ステップS69)。すなわち、相関係数計算部13は、条件式X´に対応する「sum(観測値行列Y2-Y2ave)2」を計算する。相関係数計算部13は、pレジスタでマスクした上で、SIMDレジスタz0とSIMDレジスタz1とを乗算し、S12X´に加算する(ステップS70)。すなわち、相関係数計算部13は、条件式X´に対応する「sum{(観測値行列Y1-Y1ave)×(観測値行列Y2-Y2ave)}」を計算する。
【0096】
続いて、相関係数計算部13は、一次配列S1tmp,一次配列S2tmpの全要素を処理すると、条件式Xに対応するS1X、S2X、S12Xから相関係数R12Xを計算し、判定部14は、閾値の判定処理を行う(ステップS71)。例えば、判定部14は、式(1)に基づいて相関係数R12Xを計算する。そして、判定部14は、相関係数R12Xが閾値を超えるか否かを判定し、判定結果を保持する。また、相関係数計算部13は、条件式X´に対応するS1X´、S2X´、S12X´から相関係数R12X´を計算し、判定部14は、閾値の判定処理を行う(ステップS72)。例えば、判定部14は、式(1)に基づいて相関係数R12X´を計算する。そして、判定部14は、相関係数R12X´が閾値を超えるか否かを判定し、判定結果を保持する。
【0097】
この後、相関係数計算部13は、観測値行列Y1、Y2のペアを変えて、条件式X,X´に対応する相関係数を計算する。そして、判定部14は、相関係数が閾値を超える観測値ペアが予め定められたn個以上あるか否かを判定し、判定条件に合致する場合には、抽出に使用した条件式を保存する。
【0098】
このようにして、相関係数計算部13は、条件Xに対応するS12X,S1X、S2Xの計算を、条件X´に対応するS12X´,S1X´、S2X´の計算と一括して行うことができるので、条件Xおよび条件X´における相関係数を効率的に計算できる。この結果、相関係数計算部13は、条件式の判定に至る工程を従来に比較して迅速に行うことができる。
【0099】
[実施例の効果]
上記実施例によれば、情報処理装置1は、サンプル毎に各サンプルが持つ複数の属性の値を蓄積した表データから第1の属性の値を抜き出した第1の列データに第1の条件をマスクして残った要素の第1の平均値を算出する。情報処理装置1は、第1の列データに第1の条件を否定する第2の条件をマスクして残った要素の第2の平均値を算出する。情報処理装置1は、第1の列データを第1のレジスタにロードする。情報処理装置1は、第1の平均値に第1の条件をマスクした値と、第2の平均値に第2の条件をマスクした値とを第2のレジスタにロードする。情報処理装置1は、第1のレジスタと第2のレジスタを入力として演算器を用いて、第1のレジスタにロードされた値列と第2のレジスタにロードされた値列との第1の減算を行う。情報処理装置1は、第1の属性と異なる第2の属性の値を抜き出した第2の列データについて、第1の減算を行う処理と同じ方法で第2の減算を行う。そして、情報処理装置1は、第1の減算によって得られた第1の値列と、第2の減算によって得られた第2の値列とを用いて、第1の条件および第2の条件における第1の列データと第2の列データとの間の相関係数を算出する。かかる構成によれば、情報処理装置1は、相関関係を持つ属性のペアを有するサンプル群を抽出するための条件を見つける場合に、第1の条件および第1の条件を否定する第2の条件における属性のペアの相関係数を、効率良く演算器を活用して計算できる。すなわち、情報処理装置1は、第1の条件と第2の条件における属性のペアの相関係数の減算の計算について、個々の条件の演算では不活性であった演算器を活用できることとなり、効率良く演算器を活用して計算できる。この結果、情報処理装置1は、CPU利用率を向上させることができる。
【0100】
また、上記実施例によれば、情報処理装置1は、第1の値列を第1のレジスタおよび第2のレジスタにロードし、第1のレジスタと第2のレジスタを入力として演算器を用いて、第1の値列の2乗の第1の計算を算出する。情報処理装置1は、第2の値列を第1のレジスタおよび第2のレジスタにロードし、第1のレジスタと第2のレジスタを入力として演算器を用いて、第2の値列の2乗の第2の計算を算出する。情報処理装置1は、第1の値列を第1のレジスタにロードし、第2の値列を第2のレジスタにロードし、第1のレジスタと第2のレジスタを入力として演算器を用いて、第1の値列と第2の値列との乗算の第3の計算を算出する。そして、情報処理装置1は、第1の計算結果、第2の計算結果、および第3の計算結果を用いて、第1の条件および第2の条件における第1の列データと第2の列データとの間の相関係数を算出する。かかる構成によれば、情報処理装置1は、第1の条件と第2の条件における属性のペアの相関係数の減算結果を乗算する計算について、個々の条件の演算では不活性であった演算器を活用できることとなり、効率良く演算器を活用して計算できる。
【0101】
また、上記実施例によれば、情報処理装置1は、プレディケートレジスタを用いて、第1の平均値に第1の条件をマスクしてコピーした値と、第2の平均値に第2の条件をマスクしてコピーした値とを第2のレジスタにロードする。かかる構成によれば、情報処理装置1は、プレディケートレジスタを用いることで、第1の条件および第2の条件をそれぞれマスクしてそれぞれの平均値を同一のレジスタにロードすることができる。
【0102】
また、上記実施例によれば、情報処理装置1は、さらに、プリディケートレジスタを用いて、第1の計算結果、第2の計算結果、第3の計算結果にそれぞれ第1の条件をマスクした値列を算出し、算出したそれぞれの値列を用いて、第1の条件における第1の列データと第2の列データとの間の相関係数を算出する。そして、情報処理装置1は、プリディケートレジスタを用いて、第1の計算結果、第2の計算結果、第3の計算結果にそれぞれ第2の条件をマスクした値列を算出し、算出したそれぞれの値列を用いて、第2の条件における第1の列データと第2の列データとの間の相関係数を算出する。かかる構成によれば、情報処理装置1は、プレディケートレジスタを用いることで、第1の条件と第2の条件をそれぞれマスクして計算結果を分離することができる。この結果、情報処理装置1は、第1の条件と第2の条件における属性のペアの相関係数を効率良く計算することができる。
【0103】
なお、図示した情報処理装置1の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、情報処理装置1の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。また、記憶部20を情報処理装置1の外部装置としてネットワーク経由で接続するようにしても良い。
【0104】
また、上記実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、
図1に示した情報処理装置1と同様の機能を実現する情報処理プログラムを実行するコンピュータの一例を説明する。ここでは、情報処理装置1と同様の機能を実現する情報処理プログラムを一例として説明する。
図13は、情報処理プログラムを実行するコンピュータの一例を示す図である。
【0105】
図13に示すように、コンピュータ200は、各種演算処理を実行するCPU203と、ユーザからのデータの入力を受け付ける入力装置215と、表示装置209を制御する表示制御部207とを有する。また、コンピュータ200は、記憶媒体からプログラムなどを読取るドライブ装置213と、ネットワークを介して他のコンピュータとの間でデータの授受を行う通信制御部217とを有する。また、コンピュータ200は、各種情報を一時記憶するメモリ201と、HDD(Hard Disk Drive)205を有する。そして、メモリ201、CPU203、HDD205、表示制御部207、ドライブ装置213、入力装置215、通信制御部217は、バス219で接続されている。
【0106】
ドライブ装置213は、例えばリムーバブルディスク210用の装置である。HDD205は、情報処理プログラム205aおよび情報処理関連情報205bを記憶する。
【0107】
CPU203は、情報処理プログラム205aを読み出して、メモリ201に展開し、プロセスとして実行する。かかるプロセスは、情報処理装置1の各機能部に対応する。情報処理関連情報205bは、観測値リスト21および条件リスト22に対応する。そして、例えばリムーバブルディスク210が、情報処理プログラム205aなどの各情報を記憶する。
【0108】
なお、情報処理プログラム205aについては、必ずしも最初からHDD205に記憶させておかなくても良い。例えば、コンピュータ200に挿入されるフレキシブルディスク(FD)、CD-ROM(Compact Disk Read Only Memory)、DVD(Digital Versatile Disk)、光磁気ディスク、IC(Integrated Circuit)カードなどの「可搬用の物理媒体」に当該プログラムを記憶させておく。そして、コンピュータ200がこれらから情報処理プログラム205aを読み出して実行するようにしても良い。