(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024124254
(43)【公開日】2024-09-12
(54)【発明の名称】探索プログラム、探索方法および情報処理装置
(51)【国際特許分類】
G06F 17/15 20060101AFI20240905BHJP
G06F 16/901 20190101ALI20240905BHJP
【FI】
G06F17/15
G06F16/901
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2023032272
(22)【出願日】2023-03-02
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】栗原 康志
(72)【発明者】
【氏名】川上 健太郎
【テーマコード(参考)】
5B056
5B175
【Fターム(参考)】
5B056AA04
5B056BB23
5B175KA07
(57)【要約】
【課題】データ間に相関がある条件の組み合わせ探索の高速化を支援する。
【解決手段】実施形態の探索プログラムは、各データを行、当該データに含まれる属性が所定の条件を満たすか否かを列とする行列に基づいて各データにおいて相関を有する1または複数の条件を探索する際に、算出する処理と、ソートする処理と、割り当てる処理とをコンピュータに実行させる。算出する処理は、行列の列ごとに、条件を満たすデータ数を算出する。ソートする処理は、算出した列ごとのデータ数に基づいて、行列の列の並び順をソートする。割り当てる処理は、ソートした列の並び順に基づいて、列に対応する条件の組み合わせを、相関の有無を計算する各プロセスに割り当てる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
各データを行、当該データに含まれる属性が所定の条件を満たすか否かを列とする行列に基づいて前記各データにおいて相関を有する1または複数の条件を探索する際に、
前記行列の列ごとに、前記条件を満たすデータ数を算出し、
算出した前記列ごとのデータ数に基づいて、前記行列の列の並び順をソートし、
ソートした前記列の並び順に基づいて、前記列に対応する条件の組み合わせを、前記相関の有無を計算する各プロセスに割り当てる、
処理をコンピュータに実行させることを特徴とする探索プログラム。
【請求項2】
前記割り当てる処理は、前記列の並び順に1または複数の列を選択して得られた前記条件の組み合わせを順に前記各プロセスに割り当てる、
ことを特徴とする請求項1に記載の探索プログラム。
【請求項3】
前記行列は、前記条件を満たすか否かを0または1の2値で表し、
前記算出する処理は、前記行列の列ごとに、値が1である行数をカウントして前記データ数を算出する、
ことを特徴とする請求項1に記載の探索プログラム。
【請求項4】
前記各プロセスは、前記データ数が所定値以上である組み合わせについて前記相関の有無を計算する、
ことを特徴とする請求項1に記載の探索プログラム。
【請求項5】
各データを行、当該データに含まれる属性が所定の条件を満たすか否かを列とする行列に基づいて前記各データにおいて相関を有する1または複数の条件を探索する際に、
前記行列の列ごとに、前記条件を満たすデータ数を算出し、
算出した前記列ごとのデータ数に基づいて、前記行列の列の並び順をソートし、
ソートした前記列の並び順に基づいて、前記列に対応する条件の組み合わせを、前記相関の有無を計算する各プロセスに割り当てる、
処理をコンピュータが実行することを特徴とする探索方法。
【請求項6】
各データを行、当該データに含まれる属性が所定の条件を満たすか否かを列とする行列に基づいて前記各データにおいて相関を有する1または複数の条件を探索する際に、
前記行列の列ごとに、前記条件を満たすデータ数を算出し、
算出した前記列ごとのデータ数に基づいて、前記行列の列の並び順をソートし、
ソートした前記列の並び順に基づいて、前記列に対応する条件の組み合わせを、前記相関の有無を計算する各プロセスに割り当てる、
処理を実行する制御部を含むことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、探索プログラム、探索方法および情報処理装置に関する。
【背景技術】
【0002】
従来、消費者の購買傾向などを分析するため、顧客の購買履歴などのサンプルデータ群をもとに、サンプルデータ間に相関がある条件の組み合わせを求めるデータ解析が行われている。
【0003】
図7は、従来の相関計算を説明する説明図である。
図7に示すように、従来の情報処理装置では、サンプルデータ群をもとに、サンプルデータのそれぞれが各条件を満たすか否かを示す行列D100を作成する。この行列D100の各行は、識別情報(サンプルid)で識別されるサンプルデータを示す。また、行列D100の各列は、サンプルデータに含まれる属性(例えば年齢)が所定の条件(例えば20歳未満)を満たすか否かを1/0の2値で示す。
【0004】
従来の情報処理装置では、探索対象とする条件の組み合わせについて、行列D100をもとに、組み合わせた条件に該当するサンプルデータを抽出する。例えば、「年齢が20歳未満」、「体重が50kg以上」の条件の組み合わせについては、両方の条件に対応する2列の値が1(条件を満たす)であるサンプルデータ(図示例ではid=1,4)が抽出される。ついで、従来の情報処理装置では、抽出したサンプルデータについて、2つの属性を抜き出して属性間の相関を示す相関係数を計算する。従来の情報処理装置は、この相関係数の計算結果をもとに、相関係数が閾値を超える属性ペアが1または複数ある場合、探索対象とする条件の組み合わせ(例えば、「年齢が20歳未満」、「体重が50kg以上」)についてサンプルデータ間に相関があるものとする。
【0005】
このように条件を組み合わせて相関計算を行う探索は、条件の数をdx、組み合わせる条件の数をkとすると、dxCk回実施される。このため、dxやkが大きくなると探索回数は爆発的に増加する。例えば、dx=10000、k=3とすると、10000C3=1.33×1012となる。
【0006】
この探索は、条件の組み合わせごとに独立して行うことができるため、条件の組み合わせを各プロセスに割り当てて並列化することで、処理を高速化することができる。
【先行技術文献】
【特許文献】
【0007】
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、上記の従来技術では、並列化したプロセス間の計算量に不均衡が生じ、プロセス間の計算時間にばらつきが生じるという問題がある。このため、計算量が過大なプロセスの計算時間によって全プロセスの終了時間が遅くなり、結果的に処理の高速化が実現できないことがある。
【0009】
図8は、従来の相関計算を説明する説明図である。
図8に示す行列D100に対し、従来の情報処理装置が条件(列)の組を順に2プロセス(rank0,rank1)に割り当てて並列に処理する場合を考える。
【0010】
条件(列)の組み合わせ数がk=1の場合、rank0のプロセスに割り当てる組み合わせは、(x0)、(x2)、(x4)となる。また、rank1のプロセスに割り当てる組み合わせは、(x1)、(x3)、(x5)となる。
【0011】
条件(列)の組み合わせ数がk=2の場合、rank0のプロセスに割り当てる組み合わせは、(x0,x1)、(x0,x2)、…、(x0,x5)、(x2,x3)、(x2,x4)、(x2,x5)、(x4,x5)となる。また、rank1のプロセスに割り当てる組み合わせは、(x1,x2)、(x1,x3)、…、(x1,x5)、…、(x3,x4)、(x3,x5)となる。
【0012】
条件(列)の組み合わせ数がk=3の場合、rank0のプロセスに割り当てる組み合わせは、(x0,x1,x2)、(x0,x1,x3)、…、(x0,x1,x5)、…、(x2,x3,x4)、(x2,x3,x5)となる。また、rank1のプロセスに割り当てる組み合わせは、(x1,x2,x3)、(x1,x2,x4)、(x1,x2,x5)、…、(x3,x4,x5)となる。
【0013】
rank0のプロセスに割り当てられた組み合わせでは、相関係数の計算を行うサンプルデータ(条件に対応する列の値が1(条件を満たす))が複数存在する。これに対し、rank1のプロセスに割り当てられた組み合わせでは、相関係数の計算を行うサンプルデータが存在しない。このため、rank1のプロセスに対し、rank0のプロセスは、相関係数の計算に要する分、計算量が過大となる。このため、rank0のプロセスの計算時間により、全プロセスの終了時間が遅くなる。
【0014】
1つの側面では、データ間に相関がある条件の組み合わせ探索の高速化を支援できる探索プログラム、探索方法および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0015】
1つの案では、探索プログラムは、各データを行、当該データに含まれる属性が所定の条件を満たすか否かを列とする行列に基づいて各データにおいて相関を有する1または複数の条件を探索する際に、算出する処理と、ソートする処理と、割り当てる処理とをコンピュータに実行させる。算出する処理は、行列の列ごとに、条件を満たすデータ数を算出する。ソートする処理は、算出した列ごとのデータ数に基づいて、行列の列の並び順をソートする。割り当てる処理は、ソートした列の並び順に基づいて、列に対応する条件の組み合わせを、相関の有無を計算する各プロセスに割り当てる。
【発明の効果】
【0016】
データ間に相関がある条件の組み合わせ探索の高速化を支援できる。
【図面の簡単な説明】
【0017】
【
図1】
図1は、実施形態の概要を説明する説明図である。
【
図2】
図2は、実施形態にかかる情報処理装置の機能構成例を示すブロック図である。
【
図3】
図3は、サンプルデータ群と行列情報の一例を示す説明図である。
【
図4】
図4は、実施形態にかかる情報処理装置の動作例を示すフローチャートである。
【
図5】
図5は、実施形態にかかる情報処理装置の動作例を示すフローチャートである。
【
図6】
図6は、コンピュータ構成の一例を説明する説明図である。
【
図7】
図7は、従来の相関計算を説明する説明図である。
【
図8】
図8は、従来の相関計算を説明する説明図である。
【発明を実施するための形態】
【0018】
以下、図面を参照して、実施形態にかかる探索プログラム、探索方法および情報処理装置を説明する。実施形態において同一の機能を有する構成には同一の符号を付し、重複する説明は省略する。なお、以下の実施形態で説明する探索プログラム、探索方法および情報処理装置は、一例を示すに過ぎず、実施形態を限定するものではない。また、以下の各実施形態は、矛盾しない範囲内で適宜組みあわせてもよい。
【0019】
図1は、実施形態の概要を説明する説明図である。
図1に示すように、実施形態にかかる情報処理装置では、各データを行、データに含まれる属性が所定の条件を満たすか否かを列とする行列(X)の値をもとに、各データにおいて相関を有する1または複数の条件を探索する。
【0020】
ここで、行列(X)における列の値は、データに含まれる属性(例えば年齢)が所定の条件(例えば20歳未満)を満たすか否かを1/0の2値で示している。なお、図示例の行列(X)において、x0、x2、x4の列はすべて1であり、x0、x2、x4に対応する条件はすべてのデータが満たしているものとする。逆に、図示例の行列(X)において、x1、x3、x5の列はすべて0であり、x1、x3、x5に対応する条件はいずれのデータも条件を満たしていないものとする。
【0021】
実施形態にかかる情報処理装置は、行列(X)の列ごとに、条件を満たすデータ数を算出し、算出した列ごとのデータ数に基づいて、行列(X)の列の並び順をソートする。具体的には、実施形態にかかる情報処理装置は、行列(X)の列ごとに、値が1である行数を求める。ついで、実施形態にかかる情報処理装置は、値が1である行数が多い順に列のindexを並び替える(S1)。これにより、行列(X)の列は、index{x0,x2,x4,x1,x3,x5}のような並び順となる。
【0022】
ついで、実施形態にかかる情報処理装置は、ソートした列の並び順に基づいて、列に対応する条件の組み合わせを、相関の有無を計算する各プロセスに割り当てる。具体的には、実施形態にかかる情報処理装置は、列のindex{x0,x2,x4,x1,x3,x5}の順番に列を選択し、各プロセスへの割り当てを行う(S2)。
【0023】
例えば、相関の有無を計算するプロセスがrank0のプロセスP1と、rank1のプロセスP2の2つである場合、実施形態にかかる情報処理装置は、rank0にはx0,x4,x3を割り当て、rank1にはx2,x1,x5を割り当てる。
【0024】
これにより、rank0のプロセスP1では、x0,x4,x3から始まる列(条件)の組み合わせについて、相関の有無を計算する処理を担当する。同様に、rank1のプロセスP2では、x2,x1,x5から始まる列(条件)の組み合わせについて、相関の有無を計算する処理を担当する。
【0025】
例えば、rank0のプロセスP1が担当する組み合わせは、(x0,x1),(x0,x2)、…、(x0,x5),(x4,x5)、(x3,x4)、(x3,x5)などがある。この組み合わせの中で、相関計算の実施が必要な組み合わせ(条件に対応する列の値が1(条件を満たす))は、(x0,x2)、(x0,x4)である。
【0026】
また、rank1のプロセスP2が担当する組み合わせは、(x2,x3),(x2,x4)、…、(x1,x2)、…、(x1,x4)、(x1,x5)などがある。この組み合わせの中で、相関計算の実施が必要な組み合わせ(条件に対応する列の値が1(条件を満たす))は、(x2,x4)である。
【0027】
このように、実施形態にかかる情報処理装置では、相関計算の実施が必要な組み合わせ(x0,x2)、(x0,x4)、(x2,x4)を、rank0のプロセスP1またはrank1のプロセスP2のどちらか一方に極端に偏ることがなく割り当てることができる。
【0028】
例えば、実施形態にかかる情報処理装置では、rank1のプロセスが相関計算を行わず、rank0のプロセスのみが相関計算を行うような(
図8参照)、プロセス間の計算量の不均衡が生じにくくなる。
【0029】
このため、実施形態にかかる情報処理装置では、プロセスを並列に処理して相関を有する条件を探索する際に、プロセス間の計算量の不均衡により全プロセスの終了時間が遅くなるようなケースが生じることを抑止できる。
【0030】
図2は、実施形態にかかる情報処理装置の機能構成例を示すブロック図である。
図2に示すように、情報処理装置1は、通信部10と、入力部20と、表示部30と、記憶部40と、制御部50とを有する。
【0031】
通信部10は、ネットワークを介して外部装置から各種のデータを受信する。通信部10は、通信装置の一例である。たとえば、通信部10は、サンプルデータ群41などを外部装置から受信してもよい。
【0032】
入力部20は、情報処理装置1の制御部50に各種の情報を入力する入力装置である。入力部20は、キーボードやマウス、タッチパネル等に対応する。例えば、入力部20は、サンプルデータ群41から条件に関する行列(X)の行列情報42を作成するための各条件などの入力を受け付ける。表示部30は、制御部50から出力される情報を表示する表示装置である。
【0033】
記憶部40は、サンプルデータ群41、行列情報42などのデータを格納する。記憶部40は、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子や、HDD(Hard Disk Drive)などの記憶装置に対応する。
【0034】
サンプルデータ群41は、データ間に相関がある条件の組み合わせを求めるための対象となるサンプルデータの集合である。例えば、サンプルデータ群41には、消費者の購買傾向などを分析するための顧客の購買履歴などが該当する。
【0035】
行列情報42は、サンプルデータ群41をもとに作成された、サンプルデータのそれぞれが各条件を満たすか否かを示した行例(X)の情報である。
【0036】
制御部50は、行列取得部51と、行数算出部52と、行列並び替え部53と、相関計算部54とを有する。制御部50は、例えばCPU(Central Processing Unit)やGPU(Graphics Processing Unit)、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などのハードワイヤードロジック等によって実現される。
【0037】
行列取得部51は、サンプルデータ群41に基づき、サンプルデータのそれぞれが各条件を満たすか否かを示した行例(X)の行列情報42を取得する処理部である。
【0038】
図3は、サンプルデータ群41と行列情報42の一例を示す説明図である。
図3に示すように、サンプルデータ群41は、サンプルidで識別されるサンプルデータのそれぞれが有する属性(例えば、年齢、体重、身長、最高血圧、最低血圧)を示すテーブルデータなどである。
【0039】
行列取得部51は、このサンプルデータ群41をもとに、入力部20等を介して入力された条件(例えば年齢20歳未満)の項目ごとに、属性が該当するか否かを判定する。行列取得部51は、この判定結果をもとに、条件を満たす場合は1、条件を満たさない場合は0とする行列(X)の行列情報42を作成する。
【0040】
行数算出部52は、行列情報42の行列(X)の列ごとに、条件を満たすデータ数(行数)を算出する処理部である。具体的には、行数算出部52は、行列(X)の列ごとに、値が1である行数を求める。
【0041】
行列並び替え部53は、行数算出部52が算出した列ごとのデータ数に基づいて、行列(X)の列の並び順をソートする処理部である。具体的には、行列並び替え部53は、値が1である行数が多い順に列のindexを並び替える。
【0042】
相関計算部54は、行列並び替え部53がソートした列の並び順に基づいて、列に対応する条件の組み合わせを、相関の有無を計算する各プロセスに割り当て、相関計算を行う処理部である(詳細は後述する)。相関計算部54では、相関計算の計算結果をもとに、相関値が閾値を超える属性ペアが1または複数ある場合、探索対象とする条件の組み合わせ(例えば、「年齢が20歳未満」、「体重が50kg以上」)についてサンプルデータ間に相関があるものとする。
【0043】
図4は、実施形態にかかる情報処理装置の動作例を示すフローチャートである。例えば、
図4は、条件の組み合わせを、相関の有無を並列に計算する各プロセスに割り当て、条件の組み合わせ探索を並列に処理(S20)までの具体的な処理を例示するフローチャートである。
【0044】
ここで、dxは、行列(X)の列数とする。sumは、値が1である行の総数(行数)とする。s_minは、相関係数計算の実施の有無を判定するための閾値とする。indexは、列の番号をする。listは、indexとsumをメンバに持つ構造体である。
【0045】
図4に示すように、処理が開始されると、行数算出部52は、i=1,2,,,dxのループ処理(S10~S12)を実行する。行数算出部52は、このループ処理において、list[i],index=-1,list[i].sum=0としてlist[i]を初期化する(S11)。
【0046】
ついで、行数算出部52は、i=1,2,,,dxのループ処理(S13~S18)を実行し、行列(X)の列ごとに、条件を満たすデータ数(行数)を算出する。
【0047】
具体的には、行数算出部52は、i列で値が1である行数(sum)を算出する(S14)。ついで、行数算出部52は、list[i].sum=sumとし(S15)、sum≧s_sumであるか否かを判定する(S16)。
【0048】
sum≧s_sumである場合(S16:Yes)、行数算出部52は、list[i].index=iとする(S17)。sum≧s_sumでない場合(S16:No)、行数算出部52はS17の処理をスキップする。
【0049】
ついで、行列並び替え部53は、list[i]をlist[i].sumの大きい順にソートする(S19)。
【0050】
ついで、相関計算部54は、list[i].indexを含む組み合わせの処理を、i=1から順番に相関の有無を計算する各プロセスに割り当てる。これにより、各プロセスは、条件の組み合わせ探索を並列に処理し(S20)、処理を終了する。
【0051】
図5は、実施形態にかかる情報処理装置の動作例を示すフローチャートであり、より具体的には、条件の組み合わせが割り当てられたプロセスそれぞれにおける探索処理を例示するフローチャートである。
【0052】
ここで、s_min、r_min、r_min_countはユーザが次の値の範囲で設定する値とする。
・1≦s_min≦サンプル数
・0≦r_min≦1
・1≦r_min_count≦属性の組み合わせ数(列数をdxとするとdxC2)
【0053】
図5に示すように、相関計算部54の各プロセスでは、割り当てられた条件について、任意に組み合わせを選んで処理するループ処理(S30~S41)を実行する。このループ処理の組み合わせの数は、条件の中から選ぶ個数により異なる。例えば、条件の数をdx、選ぶ個数をkとすると、組み合わせの数は、
dxC
kとなる。ループ処理(S30~S41)では、調べていない条件の組み合わせを任意に変えて、全ての条件の組み合わせを調べる。
【0054】
ループ処理が開始されると、相関計算部54の各プロセスは、任意に選んだ条件が全て1である(全ての条件を満たす)サンプルデータを抽出し、データ数をカウントするbit_and処理を行う(S31)。相関計算部54は、bit_and処理の結果をsumとする。
【0055】
ついで、相関計算部54の各プロセスは、bit_and処理のカウント結果(sum)が一定数(s_min)以上であるか否かを判定する(S32)。一定数以上でない場合(S32:No)、相関計算部54の各プロセスは、S41へ処理を進める。
【0056】
一定数以上である場合(S32:Yes)、相関計算部54の各プロセスは、抽出したサンプルデータの属性ペアの相関係数を算出し(相関係数計算)、相関係数が一定値以上であるか否かを調べる(S33~S39)。
【0057】
具体的には、相関計算部54の各プロセスは、r_count=0とし(S33)、抽出したサンプルデータの属性ペアの相関係数を算出するためのループ処理(S34~S38)を実行する。
【0058】
ループ処理(S34~S38)において、相関計算部54の各プロセスは、次の式(1)等の公知の計算手法を用いて相関係数を計算し、結果をrとする(S35)。
【0059】
【0060】
式(1)は、2つの属性(Y1,Y2)に関する相関係数Ry12を求める計算式である。Yx,iはid=iの属性Xのデータである。例えば、1つの条件の組み合わせを調べる際に、この計算式を用いた処理は、dyC2回実施される。
【0061】
ついで、相関計算部54の各プロセスは、相関係数の結果(r)が一定値(r_min)以上であるか否かを判定する(S36)。一定値以上である場合(S36:Yes)、相関計算部54の各プロセスはr_countをインクリメントする(S37)。一定値以上でない場合(S36:No)、相関計算部54の各プロセスは、S37をスキップして処理を進める。
【0062】
ループ処理(S34~S38)についで、相関計算部54の各プロセスは、r_countがr_min_count以上であるか否かを判定する(S39)。r_min_count以上である場合(S39:Yes)、相関計算部54の各プロセスは、選んだ条件の組み合わせを記録する(S40)。r_min_count以上でない場合(S39:No)、相関計算部54の各プロセスは、S40をスキップして処理を進める。
【0063】
以上のように、情報処理装置1は、各データを行、データに含まれる属性が所定の条件を満たすか否かを列とする行列(X)に基づいて各データにおいて相関を有する1または複数の条件を探索する。情報処理装置1は、行列の列ごとに、条件を満たすデータ数を算出する。情報処理装置1は、算出した列ごとのデータ数に基づいて、行列の列の並び順をソートする。情報処理装置1は、ソートした列の並び順に基づいて、列に対応する条件の組み合わせを、相関の有無を計算する各プロセスに割り当てる。
【0064】
このような相関の有無を計算する各プロセスへの割り当てにより、情報処理装置1では、プロセス間における相関係数の計算の有無(計算量)に不均衡が生じにくくなる。このため、情報処理装置1は、プロセスを並列に処理して相関を有する条件を探索する際に、プロセス間の計算量の不均衡により全プロセスの終了時間が遅くなるようなケースが生じることを抑止できる。このように、情報処理装置1は、データ間に相関がある条件の組み合わせ探索の高速化を支援できる。
【0065】
また、情報処理装置1は、ソートした行列(X)の列の並び順に1または複数の列を選択して得られた条件の組み合わせを、順に各プロセスに割り当てる。このように、情報処理装置1では、条件を満たすデータ数の並び順に選択した組み合わせを、順に各プロセスに割り当てていくことで、各プロセスにおける計算量の均一化を図ることができる。
【0066】
また、行列は条件を満たすか否かを0または1の2値で表し、情報処理装置1は、行列の列ごとに、値が1である行数をカウントすることで、条件を満たすデータ数を算出する。これにより、情報処理装置1は、条件を満たすか否かを0または1の2値で表す行列について、条件を満たすデータ数を容易に求めることができる。
【0067】
また、情報処理装置1の各プロセスは、条件を満たすデータ数が所定値以上である組み合わせについて相関の有無を計算する。これにより、情報処理装置1では、例えば、条件を満たすデータ数が所定値以上の、相関が見込まれる条件の組み合わせについてのみ相関の有無を計算することができる。そして、情報処理装置1では、相関が見込まれない条件の組み合わせについて、相関の有無の計算を省くことができる。
【0068】
なお、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【0069】
また、情報処理装置1の制御部50で行われる行列取得部51、行数算出部52、行列並び替え部53および相関計算部54の各種処理機能は、CPU(またはMPU、MCU(Micro Controller Unit)等のマイクロ・コンピュータ)上で、その全部または任意の一部を実行するようにしてもよい。また、各種処理機能は、CPU(またはMPU、MCU等のマイクロ・コンピュータ)で解析実行されるプログラム上、またはワイヤードロジックによるハードウエア上で、その全部または任意の一部を実行するようにしてもよいことは言うまでもない。また、情報処理装置1で行われる各種処理機能は、クラウドコンピューティングにより、複数のコンピュータが協働して実行してもよい。
【0070】
ところで、上記の実施形態で説明した各種の処理は、予め用意されたプログラムをコンピュータで実行することで実現できる。そこで、以下では、上記の実施形態と同様の機能を有するプログラムを実行するコンピュータ構成(ハードウエア)の一例を説明する。
図6は、コンピュータ構成の一例を説明する説明図である。
【0071】
図6に示すように、コンピュータ200は、各種演算処理を実行するCPU201と、データ入力を受け付ける入力装置202と、モニタ203と、スピーカ204とを有する。また、コンピュータ200は、記憶媒体からプログラム等を読み取る媒体読取装置205と、各種装置と接続するためのインタフェース装置206と、有線または無線により外部機器と通信接続するための通信装置207とを有する。また、情報処理装置1は、各種情報を一時記憶するRAM208と、ハードディスク装置209とを有する。また、コンピュータ200内の各部(201~209)は、バス210に接続される。
【0072】
ハードディスク装置209には、上記の実施形態で説明した機能構成(例えば行列取得部51、行数算出部52、行列並び替え部53および相関計算部54)における各種の処理を実行するためのプログラム211が記憶される。また、ハードディスク装置209には、プログラム211が参照する各種データ212が記憶される。入力装置202は、例えば、操作者から操作情報の入力を受け付ける。モニタ203は、例えば、操作者が操作する各種画面を表示する。インタフェース装置206は、例えば印刷装置等が接続される。通信装置207は、LAN(Local Area Network)等の通信ネットワークと接続され、通信ネットワークを介した外部機器との間で各種情報をやりとりする。
【0073】
CPU201は、ハードディスク装置209に記憶されたプログラム211を読み出して、RAM208に展開して実行することで、上記の機能構成(例えば行列取得部51、行数算出部52、行列並び替え部53および相関計算部54)に関する各種の処理を行う。なお、プログラム211は、ハードディスク装置209に記憶されていなくてもよい。例えば、コンピュータ200が読み取り可能な記憶媒体に記憶されたプログラム211を読み出して実行するようにしてもよい。コンピュータ200が読み取り可能な記憶媒体は、例えば、CD-ROMやDVDディスク、USB(Universal Serial Bus)メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、LAN等に接続された装置にこのプログラム211を記憶させておき、コンピュータ200がこれらからプログラム211を読み出して実行するようにしてもよい。
【0074】
以上の実施形態に関し、さらに以下の付記を開示する。
【0075】
(付記1)各データを行、当該データに含まれる属性が所定の条件を満たすか否かを列とする行列に基づいて前記各データにおいて相関を有する1または複数の条件を探索する際に、
前記行列の列ごとに、前記条件を満たすデータ数を算出し、
算出した前記列ごとのデータ数に基づいて、前記行列の列の並び順をソートし、
ソートした前記列の並び順に基づいて、前記列に対応する条件の組み合わせを、前記相関の有無を計算する各プロセスに割り当てる、
処理をコンピュータに実行させることを特徴とする探索プログラム。
【0076】
(付記2)前記割り当てる処理は、前記列の並び順に1または複数の列を選択して得られた前記条件の組み合わせを順に前記各プロセスに割り当てる、
ことを特徴とする付記1に記載の探索プログラム。
【0077】
(付記3)前記行列は、前記条件を満たすか否かを0または1の2値で表し、
前記算出する処理は、前記行列の列ごとに、値が1である行数をカウントして前記データ数を算出する、
ことを特徴とする付記1に記載の探索プログラム。
【0078】
(付記4)前記各プロセスは、前記データ数が所定値以上である組み合わせについて前記相関の有無を計算する、
ことを特徴とする付記1に記載の探索プログラム。
【0079】
(付記5)各データを行、当該データに含まれる属性が所定の条件を満たすか否かを列とする行列に基づいて前記各データにおいて相関を有する1または複数の条件を探索する際に、
前記行列の列ごとに、前記条件を満たすデータ数を算出し、
算出した前記列ごとのデータ数に基づいて、前記行列の列の並び順をソートし、
ソートした前記列の並び順に基づいて、前記列に対応する条件の組み合わせを、前記相関の有無を計算する各プロセスに割り当てる、
処理をコンピュータが実行することを特徴とする探索方法。
【0080】
(付記6)前記割り当てる処理は、前記列の並び順に1または複数の列を選択して得られた前記条件の組み合わせを順に前記各プロセスに割り当てる、
ことを特徴とする付記5に記載の探索方法。
【0081】
(付記7)前記行列は、前記条件を満たすか否かを0または1の2値で表し、
前記算出する処理は、前記行列の列ごとに、値が1である行数をカウントして前記データ数を算出する、
ことを特徴とする付記5に記載の探索方法。
【0082】
(付記8)前記各プロセスは、前記データ数が所定値以上である組み合わせについて前記相関の有無を計算する、
ことを特徴とする付記5に記載の探索方法。
【0083】
(付記9)各データを行、当該データに含まれる属性が所定の条件を満たすか否かを列とする行列に基づいて前記各データにおいて相関を有する1または複数の条件を探索する際に、
前記行列の列ごとに、前記条件を満たすデータ数を算出し、
算出した前記列ごとのデータ数に基づいて、前記行列の列の並び順をソートし、
ソートした前記列の並び順に基づいて、前記列に対応する条件の組み合わせを、前記相関の有無を計算する各プロセスに割り当てる、
処理を実行する制御部を含むことを特徴とする情報処理装置。
【0084】
(付記10)前記割り当てる処理は、前記列の並び順に1または複数の列を選択して得られた前記条件の組み合わせを順に前記各プロセスに割り当てる、
ことを特徴とする付記9に記載の情報処理装置。
【0085】
(付記11)前記行列は、前記条件を満たすか否かを0または1の2値で表し、
前記算出する処理は、前記行列の列ごとに、値が1である行数をカウントして前記データ数を算出する、
ことを特徴とする付記9に記載の情報処理装置。
【0086】
(付記12)前記各プロセスは、前記データ数が所定値以上である組み合わせについて前記相関の有無を計算する、
ことを特徴とする付記9に記載の情報処理装置。
【符号の説明】
【0087】
1…情報処理装置
10…通信部
20…入力部
30…表示部
40…記憶部
41…サンプルデータ群
42…行列情報
50…制御部
51…行列取得部
52…行数算出部
53…行列並び替え部
54…相関計算部
200…コンピュータ
201…CPU
202…入力装置
203…モニタ
204…スピーカ
205…媒体読取装置
206…インタフェース装置
207…通信装置
208…RAM
209…ハードディスク装置
210…バス
211…プログラム
212…各種データ
D100…行列
D101…サンプルデータ群
P1、P2…プロセス