(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-01-08
(45)【発行日】2025-01-17
(54)【発明の名称】情報処理装置、方法及びプログラム
(51)【国際特許分類】
G06F 16/2453 20190101AFI20250109BHJP
【FI】
G06F16/2453
(21)【出願番号】P 2023526708
(86)(22)【出願日】2021-06-09
(86)【国際出願番号】 JP2021021852
(87)【国際公開番号】W WO2022259400
(87)【国際公開日】2022-12-15
【審査請求日】2023-12-04
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100149548
【氏名又は名称】松沼 泰史
(74)【代理人】
【識別番号】100181135
【氏名又は名称】橋本 隆史
(72)【発明者】
【氏名】石坂 一久
【審査官】原 秀人
(56)【参考文献】
【文献】特開平06-208491(JP,A)
【文献】米国特許出願公開第2009/0177621(US,A1)
【文献】特開2007-073024(JP,A)
【文献】特開2007-334388(JP,A)
【文献】米国特許出願公開第2017/0068891(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/2453
(57)【特許請求の範囲】
【請求項1】
変換対象のプログラム中で、テーブル結合命令である第1テーブル結合命令に続けて実行される前記テーブル結合命令である第2テーブル結合命令の1つ目の引数となるデータテーブルが、前記第1テーブル結合命令で生成されるデータテーブルであり、かつ、前記第2テーブル結合命令の2つ目の引数となるデータテーブルが、前記第1テーブル結合命令の1つ目の引数となるデータテーブルを引数とする中間テーブル生成命令である第1中間テーブル生成命令で生成されるデータテーブルである場合、前記第1テーブル結合命令の1つ目の引数となる前記データテーブルを、前記第2テーブル結合命令の1つ目の引数に入力するよう設定し、前記第1テーブル結合命令の2つ目の引数となるデータテーブルを、前記第1テーブル結合命令の1つ目の引数に入力するよう設定し、前記第1テーブル結合命令の2つ目の引数に前記第1中間テーブル生成命令で生成される前記データテーブルを設定し、前記第2テーブル結合命令の2つ目の引数に引数変更後の前記第1テーブル結合命令で生成されるデータテーブルを設定する結合変換手段、を備える
情報処理装置。
【請求項2】
前記結合変換手段は、前記第2テーブル結合命令の1つ目の引数となるデータテーブルが、前記第1テーブル結合命令で生成されるデータテーブルであり、前記第2テーブル結合命令の2つ目の引数となるデータテーブルが、前記第1中間テーブル生成命令で生成されるデータテーブルであり、かつ、前記第1テーブル結合命令の2つ目の引数となるデータテーブルが、前記第1中間テーブル生成命令でのデータテーブルの行に対するグループ分けによるグループと同じグループ、または、前記第1中間テーブル生成命令でのデータテーブルの行に対するグループ分けによるグループと包含関係のあるグループを形成するグループ分けを含む中間テーブル生成命令である第2中間テーブル生成命令で生成されるデータテーブルである場合に、前記第1テーブル結合命令の1つ目の引数となるデータテーブルを、前記第2テーブル結合命令の1つ目の引数に入力するよう設定し、前記第1テーブル結合命令の2つ目の引数となるデータテーブルを、前記第1テーブル結合命令の1つ目の引数に入力するよう設定し、前記第1テーブル結合命令の2つ目の引数に、前記第1中間テーブル生成命令で生成されるデータテーブルを設定し、前記第2テーブル結合命令の2つ目の引数に、引数変更後の前記第1テーブル結合命令で生成されるデータテーブルを設定する処理を行う、
請求項1に記載の情報処理装置。
【請求項3】
前記結合変換手段は、前記変換対象のプログラム中に含まれる複数の前記テーブル結合命令のうち、第3テーブル結合命令と、前記第3テーブル結合命令よりも後から実行される第4テーブル結合命令との間に1つ以上の中間テーブル生成命令が含まれ、それら中間テーブル生成命令の引数となるデータテーブルの何れも、前記第3テーブル結合命令で生成されるデータテーブルと異なる場合、前記第3テーブル結合命令を、前記1つ以上の中間テーブル生成命令と前記第4テーブル結合命令との間に設定する処理を行った後、前記第2テーブル結合命令の1つ目の引数となるデータテーブルが、前記第1テーブル結合命令で生成されるデータテーブルであり、かつ、前記第2テーブル結合命令の2つ目の引数となるデータテーブルが、前記第1中間テーブル生成命令で生成されるデータテーブルである場合に、前記第1テーブル結合命令の1つ目の引数となるデータテーブルを、前記第2テーブル結合命令の1つ目の引数に入力するよう設定し、前記第1テーブル結合命令の2つ目の引数となるデータテーブルを、前記第1テーブル結合命令の1つ目の引数に移動させ、前記第1テーブル結合命令の2つ目の引数に、前記第1中間テーブル生成命令で生成されるデータテーブルを設定し、前記第2テーブル結合命令の2つ目の引数に、引数変更後の前記第1テーブル結合命令で生成されるデータテーブルを設定する処理を行う、
請求項1または請求項2に記載の情報処理装置。
【請求項4】
前記変換対象のプログラム中に含まれる中間テーブル生成命令である第3中間テーブル生成命令の引数となる前記データテーブルが前記テーブル結合命令である第5テーブル結合命令で生成され、前記第5テーブル結合命令の引数となる2つのデータテーブルのうち一方のデータテーブルが、前記2つのデータテーブルのうちもう一方のデータテーブルを引数とする中間テーブル生成命令である第4中間テーブル生成命令によって生成され、かつ、前記第5テーブル結合命令で生成される前記データテーブルの列のうち、前記第3中間テーブル生成命令で参照される列が、前記第4中間テーブル生成命令の引数となる前記データテーブルの列に含まれる場合、第3中間テーブル生成命令の引数に、前記第4中間テーブル生成命令の引数となる前記データテーブルを設定する集約変換手段をさらに備え、
前記結合変換手段は、前記集約変換手段による処理後の前記プログラムに対して、前記第2テーブル結合命令の1つ目の引数となるデータテーブルが、前記第1テーブル結合命令で生成されるデータテーブルであり、かつ、前記第2テーブル結合命令の2つ目の引数となるデータテーブルが、前記第1中間テーブル生成命令で生成されるデータテーブルである場合に、前記第1テーブル結合命令の1つ目の引数に、前記第2テーブル結合命令の1つ目の引数となるデータテーブルを設定し、前記第1テーブル結合命令の2つ目の引数となるデータテーブルを、前記第1テーブル結合命令の1つ目の引数に入力するよう設定し、前記第1テーブル結合命令の2つ目の引数となるデータテーブルを前記第1中間テーブル生成命令で生成されるデータテーブルに入力するよう設定し、前記第2テーブル結合命令の2つ目の引数に、引数変更後の前記第1テーブル結合命令で生成されるデータテーブルを設定する処理を行う、
請求項1から3の何れか一項に記載の情報処理装置。
【請求項5】
前記第2テーブル結合命令によって生成されるデータテーブルは、機械学習において教師データとして用いられる特徴量を含む
請求項1から4の何れか一項に記載の情報処理装置。
【請求項6】
引数変更後の前記第2テーブル結合命令の1つ目の引数となるデータテーブルは、第1の複数の値と、前記第1の複数の値に対応する第2の複数の値を含む
請求項1から5の何れか一項に記載の情報処理装置。
【請求項7】
前記第1中間テーブル生成命令でのデータテーブルの行に対するグループ分けによるグループは、所定の基準に基づいてグループ化され、前記特徴量を含む
請求項5に記載の情報処理装置。
【請求項8】
コンピュータに用いられる方法であって、
変換対象のプログラム中で、テーブル結合命令である第1テーブル結合命令に続けて実行される前記テーブル結合命令である第2テーブル結合命令の1つ目の引数となるデータテーブルが、前記第1テーブル結合命令で生成されるデータテーブルであり、かつ、前記第2テーブル結合命令の2つ目の引数となるデータテーブルが、前記第1テーブル結合命令の1つ目の引数となるデータテーブルを引数とする中間テーブル生成命令である第1中間テーブル生成命令で生成されるデータテーブルである場合、前記第1テーブル結合命令の1つ目の引数となる前記データテーブルを、前記第2テーブル結合命令の1つ目の引数に入力するよう設定し、
前記第1テーブル結合命令の2つ目の引数となるデータテーブルを、前記第1テーブル結合命令の1つ目の引数に入力するよう設定し、
前記第1テーブル結合命令の2つ目の引数に前記第1中間テーブル生成命令で生成される前記データテーブルを設定し、
前記第2テーブル結合命令の2つ目の引数に引数変更後の前記第1テーブル結合命令で生成されるデータテーブルを設定するステップを有する
方法。
【請求項9】
コンピュータに、
変換対象のプログラム中で、テーブル結合命令である第1テーブル結合命令に続けて実行される前記テーブル結合命令である第2テーブル結合命令の1つ目の引数となるデータテーブルが、前記第1テーブル結合命令で生成されるデータテーブルであり、かつ、前記第2テーブル結合命令の2つ目の引数となるデータテーブルが、前記第1テーブル結合命令の1つ目の引数となるデータテーブルを引数とする中間テーブル生成命令である第1中間テーブル生成命令で生成されるデータテーブルである場合、前記第1テーブル結合命令の1つ目の引数となる前記データテーブルを、前記第2テーブル結合命令の1つ目の引数に入力するよう設定し、
前記第1テーブル結合命令の2つ目の引数となるデータテーブルを、前記第1テーブル結合命令の1つ目の引数に入力するよう設定し、
前記第1テーブル結合命令の2つ目の引数に前記第1中間テーブル生成命令で生成される前記データテーブルを設定し、
前記第2テーブル結合命令の2つ目の引数に引数変更後の前記第1テーブル結合命令で生成されるデータテーブルを設定するステップを実行させるプログラム
。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理装置、方法及びプログラムに関する。
【背景技術】
【0002】
特許文献1において、膨大なデータからデータの特徴を効率よく抽出するために、互いに異種なテーブルPQRが入力された場合、まずPRを結合し、その後にQを結合することによって3テーブルを1テーブルに結合できること、また、さらに結合したテーブルを用いてフィールドBとDにあるデータ値同士の関係を分析できることが記載されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に記載された発明において、複数のテーブルを集約及び結合する際、その過程に生成される中間テーブルのサイズを小さくすることは記載されていない。
【0005】
上記事情に鑑み、この発明は、上述の課題を解決する情報処理装置、方法及びプログラムを提供することを目的としている。
【課題を解決するための手段】
【0006】
(1)本開示の一態様は、変換対象のプログラム中で、テーブル結合命令である第1テーブル結合命令に続けて実行される前記テーブル結合命令である第2テーブル結合命令の1つ目の引数となるデータテーブルが、前記第1テーブル結合命令で生成されるデータテーブルであり、かつ、前記第2テーブル結合命令の2つ目の引数となるデータテーブルが、前記第1テーブル結合命令の1つ目の引数となるデータテーブルを引数とする中間テーブル生成命令である第1中間テーブル生成命令で生成されるデータテーブルである場合、前記第1テーブル結合命令の1つ目の引数となる前記データテーブルを、前記第2テーブル結合命令の1つ目の引数に入力するよう設定し、前記第1テーブル結合命令の2つ目の引数となるデータテーブルを、前記第1テーブル結合命令の1つ目の引数に入力するよう設定し、前記第1テーブル結合命令の2つ目の引数に前記第1中間テーブル生成命令で生成される前記データテーブルを設定し、前記第2テーブル結合命令の2つ目の引数に引数変更後の前記第1テーブル結合命令で生成されるデータテーブルを設定する結合変換手段、を備える情報処理装置である。
【0007】
(2)本開示の一態様は、コンピュータに用いられる方法であって、変換対象のプログラム中で、テーブル結合命令である第1テーブル結合命令に続けて実行される前記テーブル結合命令である第2テーブル結合命令の1つ目の引数となるデータテーブルが、前記第1テーブル結合命令で生成されるデータテーブルであり、かつ、前記第2テーブル結合命令の2つ目の引数となるデータテーブルが、前記第1テーブル結合命令の1つ目の引数となるデータテーブルを引数とする中間テーブル生成命令である第1中間テーブル生成命令で生成されるデータテーブルである場合、前記第1テーブル結合命令の1つ目の引数となる前記データテーブルを、前記第2テーブル結合命令の1つ目の引数に入力するよう設定し、前記第1テーブル結合命令の2つ目の引数となるデータテーブルを、前記第1テーブル結合命令の1つ目の引数に入力するよう設定し、前記第1テーブル結合命令の2つ目の引数に前記第1中間テーブル生成命令で生成される前記データテーブルを設定し、前記第2テーブル結合命令の2つ目の引数に引数変更後の前記第1テーブル結合命令で生成されるデータテーブルを設定するステップを有する方法である。
【0008】
(3)本開示の一態様は、コンピュータに、変換対象のプログラム中で、テーブル結合命令である第1テーブル結合命令に続けて実行される前記テーブル結合命令である第2テーブル結合命令の1つ目の引数となるデータテーブルが、前記第1テーブル結合命令で生成されるデータテーブルであり、かつ、前記第2テーブル結合命令の2つ目の引数となるデータテーブルが、前記第1テーブル結合命令の1つ目の引数となるデータテーブルを引数とする中間テーブル生成命令である第1中間テーブル生成命令で生成されるデータテーブルである場合、前記第1テーブル結合命令の1つ目の引数となる前記データテーブルを、前記第2テーブル結合命令の1つ目の引数に入力するよう設定し、前記第1テーブル結合命令の2つ目の引数となるデータテーブルを、前記第1テーブル結合命令の1つ目の引数に入力するよう設定し、前記第1テーブル結合命令の2つ目の引数に前記第1中間テーブル生成命令で生成される前記データテーブルを設定し、前記第2テーブル結合命令の2つ目の引数に引数変更後の前記第1テーブル結合命令で生成されるデータテーブルを設定するステップを実行させるプログラムが記録された記録媒体である。
【発明の効果】
【0009】
本開示によれば、中間テーブルの生成を経て、入力データの特徴量を集約した結果を含む最終テーブルを取得する際に、中間テーブルのサイズを削減することができるため、処理負荷を抑えることができる。
【図面の簡単な説明】
【0010】
【
図1】第1の実施形態における情報処理装置1の動作概要を示す図である。
【
図2】第1の実施形態における情報処理装置1のハードウェア構成を示すブロック図である。
【
図3】第1の実施形態における情報処理装置1の機能ブロック図である。
【
図4】第1の実施形態における集約及び結合処理を示す概略図である。
【
図5】第1の実施形態における集約及び結合処理を示す概略図である。
【
図6】第1の実施形態における処理フロー1の処理の流れを示すフローチャートである。
【
図7】第1の実施形態における集約及び結合処理を示す概略図である。
【
図8】第1の実施形態におけるプログラム変換処理の流れを示すフローチャートである。
【
図9】第2の実施形態におけるプログラム変換処理の流れを示すフローチャートである。
【
図10】第3の実施形態におけるプログラム変換処理の流れを示すフローチャートである。
【
図11】第4の実施形態におけるプログラム変換処理の流れを示すフローチャートである。
【
図12】第5の実施形態におけるプログラム変換処理の流れを示すフローチャートである。
【
図13】第5の実施形態におけるプログラム変換処理の流れを示すフローチャートである。
【
図14】本開示における情報処理装置1の最小構成を示す図である。
【発明を実施するための形態】
【0011】
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態で説明されている特徴の組み合わせの全てが発明に必須のものとは限らない。実施形態で説明されている複数の特徴のうち二つ以上の特徴が任意に組み合わされてもよい。また、同一若しくは同様の構成には同一の参照番号を付し、重複した説明は省略する。
【0012】
(第1の実施形態)
図1は、第1の実施形態における情報処理装置1の動作概要を示す図である。本開示の情報処理は、入力したテーブルに対して、選択、グルーピング及び集約処理を行い、集約した結果得られたデータ(特徴量)を、入力したテーブルに対して結合する技術に関する。本開示の情報処理において、情報処理装置1が備える集約変換部113及び結合変換部114は、
図1に示す第1の処理フロー(処理フロー1)を実行するためのプログラムを、第2の処理フロー(処理フロー2)を実行するためのプログラムに変換する。なお、プログラムの変換は、結合変換部114のみによって実現されてもよい。
【0013】
後述するように、処理フロー2の方が処理フロー1よりも処理負荷が軽い。そこで、処理負荷軽減のために、集約変換部113及び結合変換部114は上記のような変換処理を実行する。プログラムは、高級言語、低級言語及びアセンブリ言語を含むプログラム言語により記述される。集約変換部113及び結合変換部114による処理については後述する。
【0014】
本実施形態において、入力されるテーブルは、2行以上の要素と、少なくとも2列の要素と、を含む。1列目の要素は、時刻の情報を含む。2列目の要素は、1列目の各行に含まれる時刻に対応する価格の情報を含む。価格は、例えば仮想通貨の価格でもよいし、所定の銘柄の株価又は投資信託の基準価額でもよい。情報処理装置1が備える集約結合処理部112は、入力したテーブルに含まれる価格の列を選択(select)し、1時間ごとに時刻が区切られた時間帯ごとにグループ化(groupby)する。なお、行と列との記載内容は入れ替えられてもよい。つまり、例えば、1行目の各列に含まれる各々の時刻に対応する価格の情報が、2行目に含まれていてもよい。
【0015】
集約結合処理部112は、グループ化された各グループ内の価格を集約する(aggregate)ことにより、特徴量を生成する。特徴量は、各グループ内の価格の平均値、最大値又は最小値を含む。集約結合処理部112は、特徴量を、各グループに含まれる時刻が含まれる行の新たな列に結合する。
【0016】
図1において、初期テーブルT0は初期入力データを含むテーブルである。情報処理装置1が備える取得部111は、初期テーブルT0を取得する。中間テーブルT1は、初期テーブルT0に対して、集約結合処理部112が、初期テーブルT0から、集約処理を実行する対象列を選択(select)、グルーピング(groupby)及び集約(aggregation)処理を行った後に得られる中間テーブルである。これらの頭文字を取って、入力/選択、グルーピング及び集約に係る一連の処理を、SGA処理(あるいは、単にSGA)とも称する。SGAの詳細については後述する。
【0017】
中間テーブルT0’は、集約結合処理部112が、初期テーブルT0に対して、中間テーブルT1を結合する1回目の結合(join)処理を行った際に得られる中間テーブルである。結合処理を、JOINとも称する。1回目の結合処理を、JOIN1とも称する。JOIN処理の詳細については後述する。集約結合処理部112が、中間テーブルT0’に対して2回目のSGA処理(SGA2)を行うことにより、中間テーブルT2が得られる。集約結合処理部112は、初期テーブルT0’及び中間テーブルT2を用いて2回目のJOIN処理(JOIN2)を行い、最終テーブルT0’’が得られる。
【0018】
初期テーブルT0は、複数行及び複数列の要素を含むテーブルである。中間テーブルT1及び中間テーブルT2は、入力されたテーブルの特徴量を含む。集約結合処理部112は、入力されたテーブルの特徴量を、入力されたテーブルに対してSGAを実行することにより抽出する。特徴量が抽出される結果、中間テーブルT1及び中間テーブルT2に含まれる要素の行の数は、初期テーブルT0に含まれる要素の行の数より少ない。中間テーブルT1及び中間テーブルT2に含まれる要素の列の数は、初期テーブルT0に含まれる要素の列の数より少なくてもよいし、多くてもよい。
【0019】
例えば、初期テーブルT0は5行の要素を含み、中間テーブルT1及び中間テーブルT2は、3行の要素を含んでいてもよい。中間テーブルT0’は、JOIN1処理の後、5行の要素を含む。最終テーブルT0’’は、集約結合処理部112によるJOIN処理2の後、5行の要素を含む。
【0020】
処理フロー2において、集約変換部113及び結合変換部114は、SGA処理及びJOIN処理の一部の入力及びその順序を、処理フロー1から変換している。SGA1及びその結果得られる中間テーブルT1については処理フロー1と同様である。処理フロー2において、SGA2の入力及び出力、JOIN1の入力及び出力、JOIN2の入力及び出力が処理フロー1と異なる。
【0021】
具体的には、処理フロー2のSGA2は、入力を初期テーブルT0とする点で処理フロー1と異なる。処理フロー2のJOIN1において、入力は中間テーブルT1及び中間テーブルT2である。中間テーブルT1及び中間テーブルT2は、3行の要素を含む。JOIN1の入力及び出力は、ともに3行の行数を含む点で処理フロー1と異なる。つまり、処理フロー2におけるJOIN1の入力及び出力に含まれる行数は、処理フロー1におけるJOIN1の出力に含まれる行数よりも少ない。したがって、処理フロー2の方が処理フロー1よりも中間テーブルのサイズを小さくすることができる。
【0022】
図2は、第1の実施形態における情報処理装置1のハードウェア構成を示すブロック図である。情報処理装置1は、電子計算機である。情報処理装置1は、パーソナルコンピュータ(PC)でもよいし、ワークステーションでもよいし、スマートフォンでもよいし、タブレットコンピュータでもよい。情報処理装置1は、中央処理部(Central processing unit:CPU)101、ランダムアクセスメモリ(Random access memory:RAM)102、リードオンリーメモリ(Read only memory:ROM)103及びハードディスクドライブ(Hard disc drive:HDD)104を備える。
【0023】
情報処理装置1は、通信インターフェイス(Interface:IF)105、入力装置106及び出力装置107を備える。なお、
図2において示されていないバス、配線、駆動装置等を介して、CPU101、RAM102、ROM103、HDD104、通信IF105、入力装置106及び出力装置107は相互に接続される。
【0024】
CPU101は、ROM103、HDD104等に記憶されたプログラムに従って所定の演算を行う。CPU101は、情報処理装置1の各部を制御する機能をも有する処理装置である。RAM102は、揮発性記憶媒体から構成される。RAM102は、一時的なメモリ領域を提供する。当該一時的なメモリ領域は、CPU101の動作に必要である。
【0025】
ROM103は、不揮発性記憶媒体から構成される。ROM103は、情報処理装置1の動作に用いられるプログラム等の必要な情報を記憶する。HDD104は、不揮発性記憶媒体から構成され、イヤホン2と送受信するデータの一時記憶、情報処理装置1の動作用プログラムの記憶等を行う記憶装置である。HDD104は、HDDではなくてSolid state drive(SSD)でもよい。
【0026】
通信IF105は、他の装置とデータ及び制御情報等の送受信を可能とする通信インターフェイスである。通信IF105は、例えばBluetooth(登録商標)、Wi-Fi(登録商標)等の規格に基づいている。
【0027】
入力装置106は、ユーザHが情報処理装置1を操作するために用いられる装置である。入力装置106は、例えばタッチスクリーンパネルでもよいし、キーボード、マウス、トラックボール、ペン型入力装置でもよい。
【0028】
出力装置107は、情報の表示、操作入力用のグラフィカルユーザインターフェイス(Graphical user interface:GUI)等の表示に用いられる表示装置である。出力装置107は、液晶ディスプレイ、有機エレクトロルミネッセンス(Electro-Luminescence:EL)ディスプレイ等である。入力装置106及び出力装置107は、タッチパネルとして一体に形成されていてもよい。
【0029】
なお、
図2に示されているハードウェア構成は例示である。
図2に示された装置以外の装置が追加されていてもよいし、一部の装置が設けられていなくてもよい。また、
図2に示された装置のうち、一部の装置は、同様の機能を有する別の装置に置換されていてもよい。更に、本実施形態の一部の機能がネットワークを介して他の装置により提供されてもよい。本実施形態の機能は、複数の装置に分散されて実現されるものであってもよい。
図2に示されているハードウェア構成は適宜変更可能である。
【0030】
図3は、第1の実施形態における情報処理装置1の機能ブロック図である。情報処理装置1は、取得部111、集約結合処理部112、集約変換部113、結合変換部114、出力部115及び記憶部116を備える。取得部111の機能は、通信IF105及び/又は入力装置106により実現される。
【0031】
集約結合処理部112、集約変換部113及び結合変換部114の機能は、CPU101が、ROM103、HDD104等に記憶されたプログラムをRAM102にロードして実行することにより実現される。出力部115の機能は、通信IF105及び/又は出力装置107により実現される。記憶部116は、RAM102、ROM103及びHDD104の少なくともいずれかである。記憶部116は、外付けHDDあるいはフラッシュメモリ等でもよい。
【0032】
図4は、第1の実施形態における集約及び結合処理を示す概略図である。初期入力テーブル(t0)は、5行2列のテーブルにより表されるが、行数及び列数はこれに限られない。初期入力テーブルは、時刻と、その時刻に対応する仮想通貨の額とを表している。取得部111は時刻と、その時刻に対応する仮想通貨の額とを取得する。初期入力テーブルにおける時刻を第1の複数の値と称し、仮想通貨の額を第2の複数の値と称してもよい。
【0033】
まず、処理(1)として、時刻を1時間ごとに区切るというルール(第1の基準)により、集約結合処理部112は初期入力テーブルをグループ化し、各グループ仮想通貨の額をグループ化する。例えば、集約結合処理部112は、初期入力テーブルを、5月28日の10:00から11:00の間に取得した額と、5月28日の11:00から12:00の間に取得した額と、5月29日の9:00から10:00の間に取得した額にグループ化する。
【0034】
処理(2)において、集約結合処理部112は、第1の集約処理として、各時間帯(グループ)ごとに平均値を集約テーブル(t1)として集約する。第1の集約処理において、「平均値を取る」というルールを、第2の基準と称してもよい。集約結合処理部112は、取得部111が取得した時刻を1時間ごとにグループ化しているので、t1の行数は3となる。つまり、入力テーブルに対して、集約結合処理部112は1時間ごとの平均値(特徴量の一例)を抽出しているので、入力の行数5に対して、出力t1の行数が3に減る。本開示において、集約処理を集約命令と言い換えてもよいし、中間テーブル生成命令と言い換えてもよい。
【0035】
処理(3)において、集約結合処理部112は、第1の結合処理として、t1を、もとのテーブルの対応する時間に結合する。結合結果はt2として表される。t2において、集約結合処理部112は、10時台の平均値23522.5を、時刻10:23及び10:45の対応する欄に追加(結合)する。集約結合処理部112は、11時台の平均値23336.5を、時刻11:45及び11:52の対応する欄に追加(結合)する。集約結合処理部112は、5月29日9時台の平均値24468を、時刻9:42の対応する欄に追加(結合)する。ここで、第1の結合処理によって、結合後のテーブル(中間テーブルt2)の行数は5行になっている。
【0036】
本開示において、結合処理(結合命令)は、2つのテーブルを引数とする処理又は命令である。結合処理によって、1つ目の引数となるテーブルに対して、2つ目の引数となるテーブルに含まれるデータが追加される。初期入力テーブルを取得(選択)し、グループ化し、集約する処理をまとめて、SGAと表してもよい。
【0037】
図5は、第1の実施形態における集約及び結合処理を示す概略図である。
図5に示す図は、
図4に示した処理の続きを示すものである。
図5に示す処理は、
図4と同様に処理フロー1に関する。処理(4)として、集約結合処理部112は、結合テーブルt2の取得(選択)後、第2の集約処理を実行する。第2の集約処理において、集約結合処理部112は、仮想通貨の額を、時刻1時間ごとにグループ化する。集約結合処理部112は、各時間帯ごとに最大値を、集約テーブルt3として取得する。第2の集約処理において最大値を取るというルールを、第4の基準と称してもよい。入力テーブルに対して、集約結合処理部112は1時間ごとの最大値(特徴量の一例)を抽出しているので、入力の行数5に対して、出力t3の行数が3に減る。
【0038】
処理(5)において、第2の結合処理として、集約結合処理部112は、t3を、テーブルt2に結合する。結合結果は、結合テーブルt4として表される。結合テーブルt4として、初期入力テーブルt0に結合された集約処理の結果(つまり、各時間帯ごとの平均値及び最大値)を、入力テーブルの特徴量と称してもよい。特徴量は、機械学習における教師データとして用いられてもよい。
【0039】
図6は、第1の実施形態における特徴量抽出プログラムによる処理フロー1の処理の流れを示すフローチャートである。
図6の例では、特徴量抽出プログラムは、処理フロー1の実行を命令する命令群を含む。
図6に示すフローチャートは、
図4及び5の処理フローに相当する。
【0040】
ステップS101において、特徴量抽出プログラムは、入力テーブル(初期入力テーブル)の取得を命令する。入力テーブルは、第1の複数の値と、第2の複数の値を含む。第2の複数の値のそれぞれは、第1の複数の値のそれぞれに対応する。入力テーブルは、複数の行及び列によって表される。入力テーブルは、初期テーブルT0でもよい。
【0041】
ステップS102において、特徴量抽出プログラムは、取得した入力テーブルに含まれるデータを所定のルール(第1の基準)によってグループ化することを命令する。第1の基準の詳細については後述する。
【0042】
ステップS103において、特徴量抽出プログラムは、グループ化(グループ分け)されたグループごとに、所定のルール(第2の基準)によって第1の集約処理を行うことを命令する。第1の集約処理を、t1 = sga1(t0, R2)と表してもよい。t0及びt1はそれぞれ入力及び出力を表す。t0を、第1の引数と表してもよい。R2は、第2の基準を示す。第1の集約処理の詳細、及び第2の基準については後述する。
【0043】
ステップS104において、特徴量抽出プログラムは、t0に対する第1の結合処理の実行を命令する。第1の結合処理は、t0に対してt1を結合する処理である。第1の結合処理を、t2 = join1(t0, t1)と表してもよい。結合する処理を、第3の基準と称してもよい。第1の結合処理の詳細については後述する。
【0044】
ステップS105において、特徴量抽出プログラムは、t2(第1の結合処理の出力)に対する第2の集約処理の実行を命令する。第2の集約処理を、t3 = sga2(t2, R4)と表してもよい。R4は第4の基準を表す。第2の集約処理の詳細、及び第4の基準については後述する。
【0045】
ステップS106において、特徴量抽出プログラムは、t2に対する第2の結合処理の実行を命令する。第2の結合処理は、t2に対してt3を結合する処理である。第2の結合処理を、t4 = join2(t2, t3)と表してもよい。第2の結合処理の詳細については後述する。特徴量抽出プログラムによる命令は以上で終了する。
【0046】
図7は、第1の実施形態における集約及び結合処理を示す概略図である。言い換えると、
図7は、
図1における処理フロー2の流れを示す。集約変換部113は、処理フロー1における第2の集約処理の入出力を変更するように集約変換処理を実行し、特徴量抽出プログラムを書き換える。
図7の例では、特徴量抽出プログラムは、処理フロー2の実行を命令する命令群である。
【0047】
結合変換部114は、第1及び第2の結合処理の入力と、第1の結合処理の出力を変更するように、結合変換処理を実行し、特徴量抽出プログラムを書き換える。その結果、特徴量抽出プログラムが示す処理は、処理フロー2に相当する。集約変換部113及び結合変換部114の処理については後述する。
【0048】
初期入力テーブルt0の取得(選択)後、処理(1)として、集約結合処理部112は、第1の集約処理において、仮想通貨の額を時刻1時間ごとにグループ化した際の、各時間帯ごとの平均値を、集約テーブルt1として集約する。
【0049】
処理(2)として、第2の集約処理において、集約結合処理部112は、仮想通貨の額を時刻1時間ごとにグループ化する。集約結合処理部112は、各時間帯ごとに最大値を、集約テーブルt2として集約する。
【0050】
処理(3)として、集約結合処理部112は、第1の結合処理において、集約テーブルt1及びt2を結合し、結合テーブルt3を得る。第1の結合処理によって、結合後のテーブル(中間テーブルt3)の行数は3のままであり、この点において処理フロー2は処理フロー1と異なる。
【0051】
処理(4)として、集約結合処理部112は、第2の結合処理において、初期入力テーブルt0及び結合テーブルt3を結合し、結合テーブルt4を得る。
【0052】
図4及び5に示した処理フロー1により得られる最終的な結合テーブルt4と、
図7に示した処理フロー2により得られる最終的な結合テーブルt4の中身は同一である。
【0053】
一方、
図4及び5に示した処理フロー1において、集約結合処理部112が第1の結合処理を行う際、行数が5の初期入力テーブルt0に対して、行数が3の集約テーブルt1を結合する結果、中間テーブルとして結合テーブルt2を得る。この結果、中間テーブルt2は5行の要素を有する。一方、
図7に示した処理フロー2において、集約結合処理部112が第1の結合処理を行う際、結合対象のt1及びt2の行数は3である。その結果、集約結合処理部112は、中間テーブルとして結合テーブルt3を得るが、t3の行数は3である。したがって、処理フロー2の方が処理フロー1よりも中間テーブルのサイズを小さくすることができる。言い換えると、処理フロー2への変換により、処理フロー1よりも処理負荷を軽減することができる。
【0054】
図8は、第1の実施形態におけるプログラム変換処理の流れを示すフローチャートである。プログラム変換処理は、結合変換部114が、処理フロー1を実行するプログラムを、処理フロー2を実行するプログラムに変換する処理である。
【0055】
ステップS1101において、取得部111は、特徴量抽出プログラムを取得する。
図6及び7の例と同様、
図8の例において、特徴量抽出プログラムは、処理フロー1に係る一連の処理の実行を命令する命令群である。取得部111は、特徴量抽出プログラムを、記憶部116から読み出してもよい。特徴量抽出プログラムは、第1テーブル結合命令、第2テーブル結合命令及び第1中間テーブル生成命令を含む。
【0056】
第1テーブル結合命令及び第2テーブル結合命令は、テーブル結合処理を実行する命令である。集約結合処理部112は、第2テーブル結合命令を、第1テーブル結合命令に続けて実行する。第1中間テーブル生成命令は、初期入力テーブルの生成後、最終的な結合テーブルの生成前に存在する中間テーブルの生成を命令するものである。第1中間テーブル生成命令は、集約処理(SGA)を実行する命令でもよい。処理はステップS1102に進む。
【0057】
ステップS1102において、第2テーブル結合命令の1つ目の引数の1つ目の引数となるデータテーブルが第1テーブル結合命令で生成されるデータテーブルか否かを、結合変換部114は判定する。判定結果がYesの場合、処理はステップS1103に進む。判定結果がNoの場合、処理は終了する。
【0058】
ステップS1103において、第2テーブル結合命令の2つ目の引数となるデータテーブルが第1中間テーブル結合命令で生成されるデータテーブルか否かを、結合変換部114は判定する。判定結果がYesの場合、処理はステップS1104に進む。判定結果がNoの場合、処理は終了する。
【0059】
ステップS1104において、結合変換部114は、第1テーブル結合命令の1つ目の引数であるデータテーブルを、第2テーブル結合命令の1つ目の引数に設定する。ここで、第1テーブル結合命令の1つ目の引数であるデータテーブルは、初期入力テーブルでもよい。処理はステップS1105に進む。
【0060】
ステップS1105において、結合変換部114は、第1テーブル結合命令の2つ目の引数であるデータテーブルを、第1テーブル結合命令の1つ目の引数に設定する。第1テーブル結合命令の2つ目の引数であるデータテーブルは、SGA処理によって生成されていてもよい。処理はステップS1106に進む。
【0061】
ステップS1106において、結合変換部114は、第1テーブル結合命令の2つ目の引数に、第1中間テーブル生成命令により生成されるデータテーブルを設定する。処理はステップS1107に進む。
【0062】
ステップS1107において、結合変換部114は、第2テーブル結合命令の2つ目の引数に、ステップS1105及びステップS1106における引数変更後の第1テーブル結合命令で生成されるデータテーブルを設定する。集約結合処理部112は、第2テーブル結合命令を実行することにより最終テーブルを得る。ここで、第1テーブル結合命令は第1の結合処理に対応し、第2テーブル結合命令は、第2の結合処理に対応している。引数変更後の第1テーブル結合命令における1つ目の引数は、初期入力テーブルでもよい。
【0063】
ステップS1105及びステップS1106において、第1テーブル結合命令における2つの引数は、いずれもSGA処理により得られる場合、第1テーブル結合命令で生成されるデータテーブル(つまり、中間テーブル)のサイズは小さくなっている。これにより、中間テーブルの生成を経て、入力データの特徴量を最終テーブルとして取得する際に、中間テーブルのサイズを削減することができるため、処理負荷を抑えることができる。
【0064】
(第2の実施形態)
図9は、第2の実施形態におけるプログラム変換処理の流れを示すフローチャートである。
【0065】
ステップS2101において、取得部111は、特徴量抽出プログラムを取得する。処理はステップS2102に進む。
【0066】
ステップS2102において、第2テーブル結合命令の1つ目の引数が、第1テーブル結合命令で生成されるデータテーブルであるか否かを結合変換部114は判定する。判定結果がYesの場合、処理はステップS2103に進む。判定結果がNoの場合、処理は終了する。
【0067】
ステップS2103において、第2テーブル結合命令の2つ目の引数が、第1中間テーブル生成命令で生成されるデータテーブルであるか否かを結合変換部114は判定する。判定結果がYesの場合、処理はステップS2104に進む。判定結果がNoの場合、処理は終了する。
【0068】
ステップS2104において、第1テーブル結合命令の2つ目の引数が、第2中間テーブル生成命令で生成されるか否かを、結合変換部114は判定する。第2中間テーブル生成命令は、第1中間テーブル生成命令でのデータテーブルの行に対するグループ分けによるグループと同じグループを形成するグループ分けを含む中間テーブル生成命令である。判定結果がYesの場合、処理はステップS2105に進む。この場合、第1実施形態のステップS1104以降の処理が実行される。判定結果がNoの場合、処理はステップS2106に進む。
【0069】
ステップS2106において、第1テーブル結合命令の2つ目の引数が、第2中間テーブル生成命令で生成されるか否かを結合変換部114は判定する。ここで、第2中間テーブル生成命令は、第1中間テーブル生成命令でのデータテーブルの行に対するグループ分けによるグループと包含関係のあるグループを形成するグループ分けを含む中間テーブル生成命令であってもよい。判定結果がYesの場合、処理はステップS2107に進む。この場合、第1実施形態のステップS1104以降の処理が実行される。集約結合処理部112は、第2テーブル結合命令を実行することにより最終テーブルを得る。
【0070】
ここで、「包含関係のある」とは、一方のグループ分けの単位が、他方のグループ分けの単位を包含する場合を指す。例えば一方のグループ分けの単位が、データテーブルに含まれる値を5分おきにグループ分けし、他方のグループ分けが、データテーブルに含まれる値を60分おきにグループ分けする場合を考える。この場合、60は5の倍数なので、一方のグループ分けの単位は、他方のグループ分けの単位を包含すると捉えることが出来る。
【0071】
ステップS1105及びステップS1106において、第1テーブル結合命令における2つの引数は、いずれもSGA処理により得られる場合、第1テーブル結合命令で生成されるデータテーブル(つまり、中間テーブル)のサイズは小さくなっている。これにより、中間テーブルの生成を経て、入力データの特徴量を最終テーブルとして取得する際に、中間テーブルのサイズを削減することができるため、処理負荷を抑えることができる。
【0072】
(第3の実施形態)
図10は、第3の実施形態におけるプログラム変換処理の流れを示すフローチャートである。
【0073】
ステップS3101において、取得部111は、特徴量抽出プログラムを取得する。処理はステップS3102に進む。
【0074】
ステップS3102において、結合変換部114は、第3テーブル結合命令と、第4テーブル結合命令との間に1つ以上の中間テーブル生成命令が含まれるか否かを判定する。集約結合処理部112は、第3テーブル結合命令を実行した後に、第4テーブル結合命令を実行するよう構成される。判定結果がYesの場合、処理はステップS3103に進む。判定結果がNoの場合、処理は終了する。
【0075】
ステップS3103において、1つ以上の中間テーブル生成命令の引数となるデータテーブルの何れも、第3テーブル結合命令で生成されるデータテーブルと異なるか否かを結合変換部114は判定する。判定結果がYesの場合、処理はステップS3104に進む。判定結果がNoの場合、処理は終了する。
【0076】
ステップS3104において、結合変換部114は、第3テーブル結合命令を、中間テーブル生成命令と第4テーブル結合命令との間に設定する。第4テーブル結合命令は、最終テーブルを生成する命令でもよい。結合変換部114は、第2テーブル結合命令を、第1テーブル結合命令に置き換えてもよい。結合変換部114は、第4テーブル結合命令を、第2テーブル結合命令処理に置き換えてもよい。処理はステップS3105に進む。なお、第3テーブル結合命令は第1の結合処理に対応し、第4テーブル結合命令は第2の結合処理に対応する。
【0077】
ステップS3105において、結合変換部114は、ステップS1102以降の処理を実行する。その後、処理は終了する。ステップS1105及びステップS1106において、第1テーブル結合命令における2つの引数は、いずれもSGA処理により得られる場合、第1テーブル結合命令で生成されるデータテーブル(つまり、中間テーブル)のサイズは小さくなっている。これにより、中間テーブルの生成を経て、入力データの特徴量を最終テーブルとして取得する際に、中間テーブルのサイズを削減することができるため、処理負荷を抑えることができる。
【0078】
(第4の実施形態)
図11は、第4の実施形態におけるプログラム変換処理の流れを示すフローチャートである。
【0079】
ステップS4101において、取得部111は、特徴量抽出プログラムを取得する。処理はステップS4102に進む。
【0080】
ステップS4102において、集約変換部113は、第3中間テーブル生成命令の引数となるデータテーブルが、第5テーブル結合命令で生成されているか否かを判定する。判定結果がYesの場合、処理はステップS4103に進む。判定結果がNoの場合、処理は終了する。
【0081】
ステップS4103において、第5テーブル結合命令の引数となる2つのデータテーブルのうち一方が、第4中間テーブル生成命令によって生成されているか否かを、集約変換部113は判定する。なお、第5テーブル結合命令の引数となる2つのデータテーブルのうちの他方は、第4中間テーブル生成命令の引数である。判定結果がYesの場合、処理はステップS4104に進む。判定結果がNoの場合、処理は終了する。
【0082】
ステップS4104において、第5テーブル結合命令で生成されるデータテーブルの列のうち、第3中間テーブル生成命令で参照される列が、第4中間テーブル生成命令の引数となるデータテーブルの列に含まれるか否かを、集約変換部113は判定する。なお、「列」とは、
図4に示した「初期入力データ(初期入力テーブル)」における右の列の「price」に相当し、集約処理が行われる対象の列を示す。判定結果がYesの場合、処理はステップS4105に進む。判定結果がNoの場合、処理は終了する。
【0083】
ステップS4105において、集約変換部113は、第3中間テーブル生成命令の引数を、第4中間テーブル生成命令の引数となるデータテーブルに設定する。第3中間テーブル生成命令は、第2の集約処理(命令)でもよい。処理はステップS4106に進み、結合変換部114はステップS1102以降の処理を実行する。その後、処理は終了する。なお、第3中間テーブル生成命令は、第2の集約処理に対応し、第4中間テーブル生成命令は、第1の集約処理に対応する。第5テーブル結合命令は、第1の結合処理に対応する。
【0084】
ステップS1105及びステップS1106において、第1テーブル結合命令における2つの引数は、いずれもSGA処理により得られる場合、第1テーブル結合命令で生成されるデータテーブル(つまり、中間テーブル)のサイズは小さくなっている。これにより、中間テーブルの生成を経て、入力データの特徴量を最終テーブルとして取得する際に、中間テーブルのサイズを削減することができるため、処理負荷を抑えることができる。
【0085】
また、第2テーブル結合命令によって生成されるデータテーブルは、機械学習において教師データとして用いられる特徴量を含んでもよい。
【0086】
また、引数変更後の第2テーブル結合命令の1つ目の引数となるデータテーブルは、初期入力テーブルでもよいし、第1の複数の値と、第1の複数の値に対応する第2の複数の値を含んでもよい。
【0087】
また、第1中間テーブル生成命令でのデータテーブルの行に対するグループ分けによるグループは、所定の基準に基づいてグループ化され、特徴量を含む。
【0088】
(第5の実施形態)
図12は、第5の実施形態におけるプログラム変換処理の流れを示すフローチャートである。
【0089】
ステップS5101において、取得部111は、特徴量抽出プログラムを取得する。
図6及び7の例と同様、
図12の例において、特徴量抽出プログラムは、一連の処理の実行を命令する命令群である。取得部111は、特徴量抽出プログラムを、記憶部116から読み出してもよい。特徴量抽出プログラムは、第1の複数の値及び第2の複数の値を含む入力データ(初期入力データ、初期入力テーブル)を取得することを命令する。第1の複数の値は、例えば時刻である。第2の複数の値は、例えば、各時刻(第1の複数の値)に対応する仮想通貨の額である。
【0090】
また、特徴量抽出プログラムは、第1の集約処理(第1集約命令、第1中間テーブル生成命令)、第1の結合処理(第1結合命令、第1テーブル結合命令)、第2の集約処理(第2集約命令、第2中間テーブル生成命令)及び第2の結合処理(第2結合命令、第2テーブル結合命令)を実行することによって入力テーブルに含まれるデータの特徴量(最終テーブル)を生成することを命令する。
【0091】
第1の集約処理において、特徴量抽出プログラムは、第1の複数の値及び第2の複数の値を含む第1の引数(t0)と、第1の基準及び第2の基準とに基づいて、第1の集約値(集約データt1又は集約テーブルt1)を生成する。t0は、
図4に記載されたものと同じであるとする。特徴量抽出プログラムは、第1の集約処理を実行するための関数sga1()を含む。t0は、sga1()の引数である。t1は、sga1()の出力である。
【0092】
第1の結合処理において、特徴量抽出プログラムは、第1の複数の値及び第2の複数の値を含む第2の引数(t0)と、第1の集約値を含む第3の引数(t1)と、第3の基準とに基づいて第1の結合データ(中間データt2又は結合テーブルt2)を生成することを命令する。特徴量抽出プログラムは、第1の結合処理を実行するための関数join1()を含む。t0及びt1は、join1()の引数である。t2は、join1()の出力である。
【0093】
第2の集約処理において、特徴量抽出プログラムは、第1の結合データ(t2)を含む第4の引数と、第4の基準とに基づいて、第2の集約値(集約データt3又は集約テーブルt3)を生成することを命令する。特徴量抽出プログラムは、第2の集約処理を実行するための関数sga2()を含む。第4の引数は、sga2()の引数である。第2の集約値は、sga2()の出力である。
【0094】
第2の結合処理において、特徴量抽出プログラムは、第1の結合データ(t2)を含む第5の引数と、第2の集約値(t3)を含む第6の引数と、第3の基準とに基づいて、第2の結合データ(最終データt4又は最終テーブルt4)を生成することによって入力データの特徴量を生成することを命令する。特徴量抽出プログラムは、第2の結合処理を実行するための関数join2()を含む。第5及び第6の引数は、join2()の引数である。t4は、join2()の出力である。
【0095】
なお、第1の集約処理において、特徴量抽出プログラムは、第2の複数の値を第1の基準(例えば、1時間ごとのグループ化)に基づいて複数のグループにグループ化し、複数のグループの各々に含まれる値と、第2の基準(例えば、各グループごとに第2の複数の値の平均値取得)とに基づいて第1の集約値を取得することを命令する。
【0096】
また、第2の集約処理において、特徴量抽出プログラムは、第2の複数の値を、複数のグループの各々に含まれる値と、第4の基準(例えば、各グループごとに第2の複数の値の最大値取得)とに基づいて第2の集約値を取得することを命令する。
【0097】
ステップS5102において、集約変換部113は、特徴量抽出プログラムに基づいて生成されるテーブルを取得する。処理はステップS5103に進む。
【0098】
ステップS5103において、集約変換部113は、取得したテーブルが集約処理によって得られるテーブルか否かを判定する。判定結果がYesの場合、集約変換部113は処理をステップS5104に進める。判定結果がNoの場合、処理は終了する。
【0099】
ステップS5104において、集約変換部113は、取得したテーブルが、結合処理により得られるテーブルを含むか否かを判定する。具体的には、ステップS5103に記載の集約処理の引数(第4の引数)が、第7の引数及び第8の引数を入力とする結合処理(第3の基準)によって得られるテーブルかどうかを集約変換部113は判定する。判定結果がYesの場合、処理はステップS5105に進む。判定結果がNoの場合、処理は終了する。このステップの処理は、第4の実施形態におけるステップS4102の処理に相当する。
【0100】
ステップS5105において、集約変換部113は、ステップS5104における結合処理時の2番目の引数(第8の引数)が、第9の引数と、集約処理(第2又は第4の基準)とにより得られるものかどうかを判定する。判定結果がYesの場合、処理はステップS5106に進む。判定結果がNoの場合、処理は終了する。
【0101】
ステップS5106において、集約変換部113は、ステップS5104に記載の結合処理における1番目の引数(第7の引数)のテーブルと、ステップS5105に記載の集約処理の対象(第9の引数)のテーブルとが第1の複数の値及び第2の複数の値を含む初期入力データ(t0)か否かを判定する。判定結果がYesの場合、ステップS5104に記載の結合処理は、初期入力データt0から集約した結果をt0に追加している結合処理(つまり、第1の結合処理)であると集約変換部113は判定し、処理をステップS5107に進める。判定結果がNoの場合、処理は終了する。ステップS5105及びステップS5106の処理は、第4の実施形態におけるステップS4103の処理に相当する。
【0102】
ステップS5107において、集約変換部113は、ステップS5103に記載の集約処理における引数(第4の引数、又は対象テーブル)が、初期入力データを全て含むか否かを判定する。つまり、ステップS5103に記載の集約処理における引数(対象テーブル)は、集約処理がなされていないテーブルを含むか、を集約変換部113は判定する。ステップS5107の処理は、第4の実施形態におけるステップS4104の処理に相当する。
【0103】
判定結果がYesの場合、集約変換部113は、ステップS5102において取得したテーブルは、第2の集約処理によって得られるテーブルと判定する。すなわち、ステップS5103に記載の集約処理が、第2の集約処理であると集約変換部113は判定する。集約変換部113は、特徴量抽出プログラムに示されるステップS5103に記載の集約処理における対象テーブル(第4の引数)を、t0(第1の引数)に置き換える。
【0104】
この結果、ステップS5103に記載の集約処理により生成される集約値(第3の集約値)は、初期入力データt0に対して第4の基準による集約処理を集約結合部処理部112が行った結果に相当することになる。これらの処理は、第4の実施形態におけるステップS4105の処理に相当する。集約変換部113は、特徴量抽出プログラムを更新して記憶部116に記憶させてもよい。出力部115は、更新された特徴量抽出プログラムを出力ないし表示してもよい。
【0105】
図13は、第5の実施形態における結合変換処理の流れを示すフローチャートである。結合変換処理は、結合変換部114が、処理フロー1における第1及び第2の結合処理の入力を変換する処理である。その結果、処理フロー2において、第1の結合処理の出力つまり中間テーブルT1’の内容は、処理フロー1と異なることとなる。
【0106】
ステップS6101において、結合変換部114は、特徴量抽出プログラムによって生成されるテーブルを、記憶部116から読み出すことによって取得する。結合変換部114は、処理をステップS6102に進める。
【0107】
ステップS6102において、結合変換部114は、取得したテーブルが結合処理により得られるテーブルか否かを判定する。判定結果がYesの場合、処理はステップS6103に進む。判定結果がNoの場合、処理は終了する。
【0108】
ステップS6103において、ステップS6102の結合処理の1番目の引数(第5の引数)が、第10の引数及び第11の引数と、結合処理(第3の基準)によって得られるか否かを結合変換部114は判定する。このステップの処理は、第1の実施形態におけるステップS1102の処理に相当する。判定結果がYesの場合、処理はステップS6104に進む。判定結果がNoの場合、処理は終了する。
【0109】
ステップS6104において、ステップS6102の結合処理の2番目の引数(第6の引数)が、第12の引数と、第1の基準と、集約処理(第2又は第4の基準)に基づいて生成されるか否かを結合変換部114は判定する。このステップは、第1の実施形態におけるステップS1103の処理に相当する。判定結果がYesの場合、処理はステップS6105に進む。判定結果がNoの場合、処理は終了する。
【0110】
ステップS6105において、第10の引数及び第12の引数が、同じテーブル(第1の複数の値及び第2の複数の値を含む初期入力データ)か否かを判定する。判定結果がYesの場合、処理はステップS6106に進む。判定結果がNoの場合、処理は終了する。
【0111】
ステップS6106において、第11の引数が、初期入力データ(t0)と、第1の基準と、集約処理(第2又は第4の基準)とに基づいて生成されているか否かを判定する。このステップの処理は、第2の実施形態におけるステップS2105の処理に対応する。判定結果がYesの場合、処理はステップS6107に進む。判定結果がNoの場合、処理は終了する。
【0112】
ステップS6107において、結合変換部114は、ステップS6104の集約処理と、ステップS6106の集約処理とが、同じルール(第1の基準)によってグループ化されているか判定する。なお、同じルールでなく、一方のグループ化ルールが他方のグループ化ルールによって包含されていてもよい。このステップの処理は、第2の実施形態におけるステップS2106の処理に相当する。
【0113】
ここで、「包含される」とは、例えば、一方のグループ化ルールが、第1の複数の値を5分おきにグループ化し、各グループに含まれる第2の複数の値に対して第2又は第4の基準により集計処理を行うものでもよい。そして、他方のグループ化ルールは、第1の複数の値を60分おきにグループ化し、各グループに含まれる第2の複数の値に対して第2又は第4の基準により集計処理を行うものでもよい。判定結果がYesの場合、処理はステップS6108に進む。判定結果がNoの場合、処理は終了する。
【0114】
ステップS6108において、結合変換部114は、ステップS6104に記載の結合処理を第1の結合処理と判定し、第1の結合処理を代替する処理として、第3の結合処理を定義し、特徴量抽出プログラムを書き換える。第3の結合処理は、第2の引数と、第3の集約値とを入力として、第3の結合データを生成する処理である。このステップの処理は、第1の実施形態におけるステップS1105及びステップS1106の処理に相当する。処理はステップS6109に進む。
【0115】
ステップS6109において、ステップS6102において取得したテーブルは第2の結合処理によって得られると結合変換部114は判定する。結合変換部114は、第2の結合処理において、第1の引数を第5の引数の代わりに(つまり1番目の引数として)用い、第3の結合データを、第6の引数の代わりに(つまり、2番目の引数として)用いて第2の結合データを生成するように、特徴量抽出プログラムを書き換える。これらの処理は、第1の実施形態におけるステップS1104及びステップS1107の処理に相当する。結合変換部114は、書き換えた特徴量抽出プログラムを記憶部116に記憶させてもよい。出力部115は、書き換えられた特徴量抽出プログラムを出力してもよい。ここで、ステップS6109において生成される第2の結合データは、処理フロー1の場合に最終的に生成される結合データと同じである。
【0116】
以上説明したように、本開示に係る情報処理装置は、第1の複数の値及び第2の複数の値を含む入力テーブルを取得し、第1の複数の値及び第2の複数の値を含む第1の引数と、第1の基準及び第2の基準とに基づく第1の集約処理と、第1の複数の値及び第2の複数の値を含む第2の引数と、第1の集約値を含む第3の引数と、第3の基準とに基づいて第1の結合データを生成する第1の結合処理と、第1の結合データを含む第4の引数と、第4の基準とに基づく第2の集約処理と、第1の結合データを含む第5の引数と、第2の集約値を含む第6の引数と、第3の基準とに基づいて第2の結合データを生成する第2の結合処理と、を実行することによって入力データの特徴量を生成することを命令する特徴量抽出プログラムを取得する取得手段と、第4の引数の生成プロセスに基づいて、第2の集約処理において、第1の引数を第4の引数の代わりに用いることにより第3の集約値として集約する処理に置き換える集約変換手段と、第5の引数及び第6の引数の生成プロセスに基づいて、第1の結合処理において、第3の集約値を第2の引数の代わりに用いることにより第3の結合データを生成する処理に置き換え、第2の結合処理において、第1の引数を第5の引数の代わりに用い、第3の結合データを第6の引数の代わりに用いることにより第2の結合データを生成する処理に置き換える結合変換手段を備える。
【0117】
これにより、中間テーブルの生成を経て、入力データの特徴量を最終テーブルとして取得する際に、中間テーブルのサイズを削減することができるため、処理負荷を抑えることができる。
【0118】
また、第1の集約処理において、第2の複数の値を第1の基準に基づいて複数のグループにグループ化し、複数のグループの各々に含まれる値と、第2の基準とに基づいて第1の集約値として集約することを特徴量抽出プログラムは示し、第2の集約処理において、第2の複数の値を、複数のグループの各々に含まれる値と、第4の基準とに基づいて第2の集約値として集約することを特徴量抽出プログラムは示し、第4の引数が、第7の引数及び第8の引数と、第3の基準とに基づいて生成され、第8の引数が、第9の引数と、第2又は第4の基準とに基づき生成され、第7の引数及び第9の引数が、第1の複数の値及び第2の複数の値を含み、第4の引数が、入力データを含むことを特徴量抽出プログラムが示す場合、集約変換手段は、第2の集約処理において、第1の引数を第4の引数の代わりに用いることにより第3の集約値として集約する処理に置き換え、第5の引数が、第10の引数、第11の引数及び第3の基準に基づいて生成され、第6の引数が、第12の引数と、第1の基準と、第2又は第4の基準とに基づいて生成され、第10の引数及び第12の引数が、第1の複数の値及び第2の複数の値を含み、第11の引数が、第1の引数と、第1の基準と、第2又は第4の基準とに基づいて生成されていることを特徴量抽出プログラムが示す場合、結合変換手段は、第1の結合処理において、第3の集約値を第2の引数の代わりに用いることにより第3の結合データを生成する処理に置き換え、第2の結合処理において、第1の引数を第5の引数の代わりに用い、第3の結合データを第6の引数の代わりに用いることにより第2の結合データを生成する処理に置き換える。
【0119】
これにより、中間テーブルの生成を経て、入力データの特徴量を最終テーブルとして取得する際に、中間テーブルのサイズを削減することができるため、処理負荷を抑えることができる。
【0120】
また、特徴量は、機械学習における教師データとして用いられてもよい。また、第2の複数の値の各々は、第1の複数の値の各々に対応する。
【0121】
また、第1の集約値は、複数のグループの各々に対応する集約値を含む。
【0122】
また、前記複数のグループの各々に対応する集約値は、前記複数のグループの各々に含まれる値の平均値、最小値又は最大値である。
【0123】
これにより、中間テーブルの生成を経て、入力データの特徴量を最終テーブルとして取得する際に、中間テーブルのサイズを削減することができるため、処理負荷を抑えることができる。
【0124】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【0125】
上述の実施形態の機能を実現するように該実施形態の構成を動作させるプログラムを記憶媒体に記録させ、記憶媒体に記録されたプログラムをコードとして読み出し、コンピュータにおいて実行する処理方法も各実施形態の範疇に含まれる。すなわち、コンピュータ読取可能な記憶媒体も各実施形態の範囲に含まれる。また、上述のプログラムが記録された記憶媒体だけでなく、そのプログラム自体も各実施形態に含まれる。また、上述の実施形態に含まれる1又は2以上の構成要素は、各構成要素の機能を実現するように構成されたASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)等の回路であってもよい。
【0126】
該記憶媒体としては例えばフロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、CD(Compact Disk)-ROM、磁気テープ、不揮発性メモリカード、ROMを用いることができる。また該記憶媒体に記録されたプログラム単体で処理を実行しているものに限らず、他のソフトウェア、拡張ボードの機能と共同して、OS(Operating System)上で動作して処理を実行するものも各実施形態の範疇に含まれる。
【0127】
上述の各実施形態の機能により実現されるサービスは、SaaS(Software as a Service)の形態でユーザに対して提供することもできる。
【0128】
なお、上述の実施形態は、いずれも本開示を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本開示の技術的範囲が限定的に解釈されてはならないものである。すなわち、本開示はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【0129】
図14は、本開示における情報処理装置1の最小構成を示す図である。
本実施形態による情報処理装置1は、少なくとも結合変換部114を備えればよい。結合変換部114による処理の流れは、
図8に記載したフローチャートにおけるステップS1102からステップS1107の処理の通りである。
【符号の説明】
【0130】
1 情報処理装置
101 CPU
102 RAM
103 ROM
104 HDD
105 通信IF
106 入力装置
107 出力装置
111 取得部
112 集約結合処理部
113 集約変換部
114 結合変換部
115 出力部
116 記憶部