IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 国立大学法人静岡大学の特許一覧

特開2024-68340データ操作プログラム、データ操作システム、およびデータ操作方法
<>
  • 特開-データ操作プログラム、データ操作システム、およびデータ操作方法 図1
  • 特開-データ操作プログラム、データ操作システム、およびデータ操作方法 図2
  • 特開-データ操作プログラム、データ操作システム、およびデータ操作方法 図3
  • 特開-データ操作プログラム、データ操作システム、およびデータ操作方法 図4
  • 特開-データ操作プログラム、データ操作システム、およびデータ操作方法 図5
  • 特開-データ操作プログラム、データ操作システム、およびデータ操作方法 図6
  • 特開-データ操作プログラム、データ操作システム、およびデータ操作方法 図7
  • 特開-データ操作プログラム、データ操作システム、およびデータ操作方法 図8
  • 特開-データ操作プログラム、データ操作システム、およびデータ操作方法 図9
  • 特開-データ操作プログラム、データ操作システム、およびデータ操作方法 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024068340
(43)【公開日】2024-05-20
(54)【発明の名称】データ操作プログラム、データ操作システム、およびデータ操作方法
(51)【国際特許分類】
   G06F 16/901 20190101AFI20240513BHJP
   G06F 16/903 20190101ALI20240513BHJP
   G06F 9/46 20060101ALI20240513BHJP
【FI】
G06F16/901
G06F16/903
G06F9/46 430
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022178710
(22)【出願日】2022-11-08
【新規性喪失の例外の表示】特許法第30条第2項適用申請有り ・ウェブサイトの掲載日 令和3年11月15日 ウェブサイトのアドレス(URL) https://www.jstage.jst.go.jp/article/jsaikbs/124/0/124_34/_article/-char/ja/ ・開催日 令和3年11月27日 集会名、開催場所 第124回 知識ベースシステム研究会(慶應義塾大学 矢上キャンパス (神奈川県横浜市港北区日吉3-14-1)ハイブリッド開催)
(71)【出願人】
【識別番号】304023318
【氏名又は名称】国立大学法人静岡大学
(74)【代理人】
【識別番号】100088155
【弁理士】
【氏名又は名称】長谷川 芳樹
(74)【代理人】
【識別番号】100124800
【弁理士】
【氏名又は名称】諏澤 勇司
(74)【代理人】
【識別番号】100144440
【弁理士】
【氏名又は名称】保坂 一之
(72)【発明者】
【氏名】山本 泰生
(72)【発明者】
【氏名】山本 裕介
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175FA01
5B175FB04
5B175KA09
(57)【要約】
【課題】ストリーミングデータの中でクエリに対応するデータがどのくらい出現するかを検索するための仕組みを提供すること。
【解決手段】データ操作プログラムは、ストリーミングデータに含まれるトランザクションのアイテム数の最大値をmとし、トランザクションを記録するためのカウンタの衝突に関する値の種類数をpとして、それぞれがp個の配列セットを含むm個の配列セットグループを生成する生成ステップであって、各配列セットが複数の1次元配列を含み、各1次元配列の各要素がカウンタに対応する、該生成ステップと、複数のトランザクションのそれぞれについて、(i)該トランザクションのアイテム数に対応する配列セットグループを選択し、(ii)該配列セットグループ内の各1次元配列において、該トランザクションに対応するカウンタをインクリメントする登録ステップとをコンピュータに実行させる。
【選択図】図1
【特許請求の範囲】
【請求項1】
ストリーミングデータに含まれるトランザクションのアイテム数の最大値をmとし、前記トランザクションを記録するためのカウンタの衝突に関する値の種類数をpとして、それぞれがp個の配列セットを含むm個の配列セットグループを生成する生成ステップであって、各配列セットが複数の1次元配列を含み、各1次元配列の各要素が前記カウンタに対応する、該生成ステップと、
複数の前記トランザクションのそれぞれについて、(i)該トランザクションのアイテム数に対応する前記配列セットグループを選択し、(ii)該配列セットグループ内の各1次元配列において、該トランザクションに対応する前記カウンタをインクリメントする登録ステップと、
をコンピュータに実行させるデータ操作プログラム。
【請求項2】
クエリに対応する前記トランザクションの出現度を算出する検索ステップを前記コンピュータに更に実行させ、
前記検索ステップが、
前記クエリのアイテム数から前記mまでの範囲に対応する少なくとも一つの前記配列セットグループのそれぞれの各配列セットについて、カーネル密度推定による推定値を算出するステップと、
前記少なくとも一つの配列セットグループのそれぞれについて、該配列セットグループの各配列セットの前記推定値と、該配列セットグループに対応するJaccard行列とに基づいて、該配列セットグループにおける部分出現度を算出するステップと、
少なくとも一つの前記部分出現度に基づいて前記出現度を算出するステップと、
を含む、
請求項1に記載のデータ操作プログラム。
【請求項3】
ストリーミングデータに含まれる複数のトランザクションのそれぞれについてデータ構造にカウンタを記録する登録ステップをコンピュータに実行させ、
前記データ構造が、トランザクションのアイテム数の最大値をmとし、前記トランザクションを記録するためのカウンタの衝突に関する値の種類数をpとして、それぞれがp個の配列セットを含むm個の配列セットグループを含み、各配列セットが複数の1次元配列を含み、各1次元配列の各要素が前記カウンタに対応し、
前記登録ステップが、前記複数のトランザクションのそれぞれについて、(i)該トランザクションのアイテム数に対応する前記配列セットグループを選択し、(ii)該配列セットグループ内の各1次元配列において、該トランザクションに対応する前記カウンタをインクリメントするステップを含む、
データ操作プログラム。
【請求項4】
ストリーミングデータに含まれる複数のトランザクションのそれぞれについてカウンタが記録されたデータ構造を参照して、クエリに対応する前記トランザクションの出現度を算出する検索ステップをコンピュータに実行させ、
前記データ構造が、トランザクションのアイテム数の最大値をmとし、前記トランザクションを記録するためのカウンタの衝突に関する値の種類数をpとして、それぞれがp個の配列セットを含むm個の配列セットグループを含み、各配列セットが複数の1次元配列を含み、各1次元配列の各要素が前記カウンタに対応し、
各配列セットグループの各1次元配列の各要素が、該配列セットグループに対応する前記トランザクションに基づいてインクリメントされたカウンタを記録し、
前記検索ステップが、
前記クエリのアイテム数から前記mまでの範囲に対応する少なくとも一つの前記配列セットグループのそれぞれの各配列セットについて、カーネル密度推定による推定値を算出するステップと、
前記少なくとも一つの配列セットグループのそれぞれについて、該配列セットグループの各配列セットの前記推定値と、該配列セットグループに対応するJaccard行列とに基づいて、該配列セットグループにおける部分出現度を算出するステップと、
少なくとも一つの前記部分出現度に基づいて前記出現度を算出するステップと、
を含む、
データ操作プログラム。
【請求項5】
少なくとも一つのプロセッサを備え、
前記少なくとも一つのプロセッサが、
ストリーミングデータに含まれるトランザクションのアイテム数の最大値をmとし、前記トランザクションを記録するためのカウンタの衝突に関する値の種類数をpとして、それぞれがp個の配列セットを含むm個の配列セットグループを生成する生成ステップであって、各配列セットが複数の1次元配列を含み、各1次元配列の各要素が前記カウンタに対応する、該生成ステップと、
複数の前記トランザクションのそれぞれについて、(i)該トランザクションのアイテム数に対応する前記配列セットグループを選択し、(ii)該配列セットグループ内の各1次元配列において、該トランザクションに対応する前記カウンタをインクリメントする登録ステップと、
を実行するデータ操作システム。
【請求項6】
少なくとも一つのプロセッサを備えるデータ操作システムによって実行されるデータ操作方法であって、
ストリーミングデータに含まれるトランザクションのアイテム数の最大値をmとし、前記トランザクションを記録するためのカウンタの衝突に関する値の種類数をpとして、それぞれがp個の配列セットを含むm個の配列セットグループを生成する生成ステップであって、各配列セットが複数の1次元配列を含み、各1次元配列の各要素が前記カウンタに対応する、該生成ステップと、
複数の前記トランザクションのそれぞれについて、(i)該トランザクションのアイテム数に対応する前記配列セットグループを選択し、(ii)該配列セットグループ内の各1次元配列において、該トランザクションに対応する前記カウンタをインクリメントする登録ステップと、
を含むデータ操作方法。
【請求項7】
少なくとも一つのプロセッサを備え、
前記少なくとも一つのプロセッサが、ストリーミングデータに含まれる複数のトランザクションのそれぞれについてカウンタが記録されたデータ構造を参照して、クエリに対応する前記トランザクションの出現度を算出する検索ステップを実行し、
前記データ構造が、トランザクションのアイテム数の最大値をmとし、前記トランザクションを記録するためのカウンタの衝突に関する値の種類数をpとして、それぞれがp個の配列セットを含むm個の配列セットグループを含み、各配列セットが複数の1次元配列を含み、各1次元配列の各要素が前記カウンタに対応し、
各配列セットグループの各1次元配列の各要素が、該配列セットグループに対応する前記トランザクションに基づいてインクリメントされたカウンタを記録し、
前記検索ステップが、
前記クエリのアイテム数から前記mまでの範囲に対応する少なくとも一つの前記配列セットグループのそれぞれの各配列セットについて、カーネル密度推定による推定値を算出するステップと、
前記少なくとも一つの配列セットグループのそれぞれについて、該配列セットグループの各配列セットの前記推定値と、該配列セットグループに対応するJaccard行列とに基づいて、該配列セットグループにおける部分出現度を算出するステップと、
少なくとも一つの前記部分出現度に基づいて前記出現度を算出するステップと、
を含む、
データ操作システム。
【請求項8】
少なくとも一つのプロセッサを備えるデータ操作システムによって実行されるデータ操作方法であって、
ストリーミングデータに含まれる複数のトランザクションのそれぞれについてカウンタが記録されたデータ構造を参照して、クエリに対応する前記トランザクションの出現度を算出する検索ステップを含み、
前記データ構造が、トランザクションのアイテム数の最大値をmとし、前記トランザクションを記録するためのカウンタの衝突に関する値の種類数をpとして、それぞれがp個の配列セットを含むm個の配列セットグループを含み、各配列セットが複数の1次元配列を含み、各1次元配列の各要素が前記カウンタに対応し、
各配列セットグループの各1次元配列の各要素が、該配列セットグループに対応する前記トランザクションに基づいてインクリメントされたカウンタを記録し、
前記検索ステップが、
前記クエリのアイテム数から前記mまでの範囲に対応する少なくとも一つの前記配列セットグループのそれぞれの各配列セットについて、カーネル密度推定による推定値を算出するステップと、
前記少なくとも一つの配列セットグループのそれぞれについて、該配列セットグループの各配列セットの前記推定値と、該配列セットグループに対応するJaccard行列とに基づいて、該配列セットグループにおける部分出現度を算出するステップと、
少なくとも一つの前記部分出現度に基づいて前記出現度を算出するステップと、
を含む、
データ操作方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の一側面は、データ操作プログラム、データ操作システム、およびデータ操作方法に関する。
【背景技術】
【0002】
非特許文献1には、高次元ストリーミングデータのカーネル密度推定のための効率的なスケッチアルゴリズムであるRACE(Repeated Array-of-Counts Estimator)が記載されている。非特許文献2には、ストリーミングデータにおける頻出アイテム集合検索(Frequent Itemset Mining in Streaming Data(FIM-SD))のためのアルゴリズムが記載されている。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Coleman, B. and Shrivastava, A.: Sub-linear RACE sketches forapproximate kernel density estimation on streaming data, Proc. of WWW'20 (2020).https://dl.acm.org/doi/fullHtml/10.1145/3366423.3380244
【非特許文献2】Yamamoto, Y., Tabei, Y. and Iwanuma, K.: PARASOL: a hybridapproximate approach for scalable frequent itemset mining in streaming data.Journal of Intelligent Information Systems (2020). https://link.springer.com/article/10.1007/s10844-019-00590-9
【発明の概要】
【発明が解決しようとする課題】
【0004】
ストリーミングデータの中でクエリに対応するデータがどのくらい出現するかを検索するための仕組みが望まれている。
【課題を解決するための手段】
【0005】
本開示の一側面に係るデータ操作プログラムは、ストリーミングデータに含まれるトランザクションのアイテム数の最大値をmとし、トランザクションを記録するためのカウンタの衝突に関する値の種類数をpとして、それぞれがp個の配列セットを含むm個の配列セットグループを生成する生成ステップであって、各配列セットが複数の1次元配列を含み、各1次元配列の各要素がカウンタに対応する、該生成ステップと、複数のトランザクションのそれぞれについて、(i)該トランザクションのアイテム数に対応する配列セットグループを選択し、(ii)該配列セットグループ内の各1次元配列において、該トランザクションに対応するカウンタをインクリメントする登録ステップとをコンピュータに実行させる。
【0006】
このような側面においては、トランザクションのアイテム数の最大値と、トランザクションを記録するためのカウンタの衝突に関する値の種類数との積の分だけ配列セットが用意される。そして、個々のトランザクションについて、トランザクションのアイテム数に対応する配列セットグループの各配列セットにおいて、対応するカウンタがインクリメントされる。このようなデータ構造の生成およびトランザクションの登録によって、ストリーミングデータの中でクエリに対応するデータがどのくらい出現するかを検索することが可能になる。
【発明の効果】
【0007】
本開示の一側面によれば、ストリーミングデータの中でクエリに対応するデータがどのくらい出現するかを検索することが可能になる。
【図面の簡単な説明】
【0008】
図1】データ操作システムの機能構成の一例を示す図である。
図2】データ操作システムを構成するコンピュータのハードウェア構成の一例を示す図である。
図3】GRACEの構造の一例を示す図である。
図4】RACEの構造の一例を示す図である。
図5】データ操作システムによる処理の一例を示すフローチャートである。
図6】ストリーミングデータをGRACEに登録する処理の一例を示すフローチャートである。
図7】カウンタを記録しようとするRACEの選択を示す図である。
図8】カウンタのインクリメントを示す図である。
図9】クエリに基づいてGRACEを検索する処理の一例を示すフローチャートである。
図10】検索におけるGRACEの参照を示す図である。
【発明を実施するための形態】
【0009】
以下、添付図面を参照しながら本開示での実施形態を詳細に説明する。図面の説明において同一または同等の要素には同一の符号を付し、重複する説明を省略する。
【0010】
[システムの構成]
本開示に係るデータ操作システムは、ストリーミングデータに関する操作を実行するコンピュータシステムである。一例では、データ操作システムは、ストリーミングデータの中でクエリに対応するデータがどのくらい出現(または存在)するかを検索するための環境を提供する。データ操作システムは、記憶容量を節約しつつその検索を実現するためのデータ構造を生成し、ストリーミングデータのデータレコードである複数のトランザクションについてのカウンタをそのデータ構造に登録する。別の例では、データ操作システムはクエリに基づく検索を実行して、そのクエリに対応するトランザクションがストリーミングデータ内にどのくらい出現するかを示す指数である出現度を算出する。出現度は割合、個数などの様々な数値によって表されてよい。
【0011】
ストリーミングデータとは1以上のデータソースから継続的に得られるデータをいう。そのデータソースは「エッジ」ともいわれる。データソースの例として様々な種類のセンサ、デバイス、およびコンピュータが挙げられる。ストリーミングデータは複数のトランザクションを含み、例えば大量のトランザクションを含む。個々のトランザクションは少なくとも一つのデータ項目を有し、本開示ではデータ項目の値を「アイテム」という。例えば、ストリーミングデータはn個のトランザクションeの列<e,e,…,e>として表され得る。或るトランザクションeが2個のデータ項目によって構成され、対応する2個のアイテムがa,bである場合には、トランザクションeは{a,b}と表され得る。或るトランザクションeが5個のデータ項目によって構成され、対応する5個のアイテムがc,f,a,b,gである場合には、トランザクションeは{c,f,a,b,g}と表され得る。
【0012】
クエリとはデータ構造を検索するための要求である。トランザクションと同様に、個々のクエリは1以上のアイテムによって表される。例えば、2個のデータ項目に対応する2個のアイテムa,cを含むトランザクションの出現度を検索するためのクエリは{a,c}と表され得る。
【0013】
図1は一例に係るデータ操作システム10の機能構成を示す図である。この例では、データ操作システム10は、機能的構成要素として生成部11、登録部12、および検索部13を備える。生成部11はストリーミングデータに関するカウンタを記憶するためのデータ構造であるGRACE(Grid-RACE)20を生成する機能モジュールである。GRACE20の詳細については後述する。登録部12はGRACE20にカウンタを記録する機能モジュールである。検索部13はストリーミングデータに対するクエリに基づいてGRACE20を検索して、クエリに対応するトランザクションの出現度の一種であるサポート近似値を算出する機能モジュールである。検索部13はサポート近似値をクエリへの応答として出力する。サポート近似値は推定値であり、したがって、真値とは異なり得る。
【0014】
図2はデータ操作システム10を構成するコンピュータ100のハードウェア構成の一例を示す図である。例えば、コンピュータ100はプロセッサ101、主記憶部102、補助記憶部103、通信制御部104、入力装置105、および出力装置106を備える。プロセッサ101はオペレーティングシステムおよびアプリケーション・プログラムを実行する。主記憶部102は例えばROMおよびRAMで構成される。補助記憶部103は例えばハードディスクまたはフラッシュメモリで構成され、一般に主記憶部102よりも大量のデータを記憶する。通信制御部104は例えばネットワークカードまたは無線通信モジュールで構成される。入力装置105は例えばキーボード、マウス、タッチパネルなどで構成される。出力装置106は例えばモニタおよびスピーカで構成される。
【0015】
コンピュータ100は据置型または携帯型のパーソナルコンピュータ(PC)でもよいし、ワークステーションでもよいし、高機能携帯電話機(スマートフォン)、携帯電話機、携帯情報端末(PDA)、ウェアラブル端末などの携帯端末でもよい。コンピュータ100は、シングルボードコンピュータ、スマートNIC(ネットワークインタフェースカード)などの他の種類のデバイスであってもよい。
【0016】
データ操作システム10の各機能モジュールは、補助記憶部103に予め記憶されるデータ操作プログラム110により実現される。各機能モジュールは、プロセッサ101または主記憶部102の上にデータ操作プログラム110を読み込ませてプロセッサ101にそのデータ操作プログラム110を実行させることで実現される。プロセッサ101はそのデータ操作プログラム110に従って、通信制御部104、入力装置105、または出力装置106を動作させ、主記憶部102または補助記憶部103におけるデータの読み出しおよび書き込みを行う。処理に必要なデータまたはデータベースは主記憶部102または補助記憶部103内に格納されてもよい。
【0017】
データ操作プログラム110は、例えば、CD-ROM、DVD-ROM、半導体メモリなどの非一時的な記録媒体に記録された上で提供されてもよい。あるいは、データ操作プログラム110は、搬送波に重畳されたデータ信号として通信ネットワークを介して提供されてもよい。
【0018】
データ操作システム10は1台のコンピュータ100で構成されてもよいし、複数台のコンピュータ100で構成されてもよい。複数台のコンピュータ100が用いられる場合には、これらのコンピュータ100がインターネット、イントラネットなどの通信ネットワークを介して接続されることで、論理的に一つのデータ操作システム10が構築される。データ操作システム10は複数種類のコンピュータを組み合わせて構築されてもよい。
【0019】
[データ構造]
GRACEは、Repeated Array of Count Estimators(RACE)という確率的データ構造が格子状に配置されたデータ構造である。RACEは、所定のカーネル関数とハッシュ値の衝突確率とが一致するような局所性鋭敏型ハッシュ(locality-sensitive hash(LSH))を用いて、各ハッシュ関数の各ハッシュ値における衝突回数を記憶する配列セットである。RACEは、その衝突回数の期待値がカーネル密度推定(kernel density estimation(KDE))と一致するように設計される。LSHは、類似したデータが高確率で同じバケットに入るようにデータを整理することを特徴とする。配列の場合には、バケットは要素に相当する。
【0020】
図3および図4を参照しながら、データ操作システム10によって用いられるGRACE20について説明する。図3はGRACE20の構造の一例を示す図である。図4はGRACE20を構成するRACE21の構造の一例を示す図である。
【0021】
図3に示すように、トランザクションeに含まれるアイテムの個数(すなわち、トランザクションeの基数)|e|の最大値をmとし、LSHのハッシュ値の衝突確率の種類数をpとして、GRACE20はp×m個のRACE21を含む。p>1かつm>1である。LSHのハッシュ値の衝突確率は、トランザクションを記録するためのカウンタの衝突に関する値の一例である。本開示では、トランザクションeの或る一つの基数に対応するp個のRACE21の群を「RACEグループ」ともいう。RACEグループは本開示における配列セットグループの一例である。図3に示すGRACE20の例では、各行が衝突確率の種類に対応し、各列がトランザクションeの基数に対応し、1列分のRACE21の集合がRACEグループ22に対応する。衝突確率の種類数pは、例えば、クエリqに含まれるアイテムの個数(すなわち、クエリqの基数)|q|の最大値であってもよい。一例では、GRACE20における衝突確率の種類は、二つのデータ列間の距離を示すJaccard距離の種類に基づいて設定される。一例では、1行目では衝突確率がJaccard距離であり、2行目では衝突確率がJaccard距離の2乗であり、…、p行目では衝突確率がJaccard距離のp乗である。すなわち、衝突確率の種類はJaccard距離の累乗によって設定されてもよい。GRACE20の1列目、2列目、…、およびm列目はそれぞれ、1個のアイテムを含むトランザクション、2個のアイテムを含むトラザクション、…、およびm個のアイテムを含むトラザクションに対応する。
【0022】
図4に示すように、それぞれのRACE21は、それぞれがR個の要素によって構成されるL個の1次元配列23を含む。R>1かつL>1である。1次元配列23は計数型配列(Array ofCount Estimators(ACE))ともいわれる。1次元配列23の各要素は、トランザクションを記録するためのカウンタ24に対応する。一例では、値Rはトランザクションのデータ項目の総数に基づいて設定され、値Lは、RACE21によって出力されるKDEでの許容誤差を考慮して設定される。トランザクションのデータ項目の総数が大きい場合には、KDEでの許容誤差に応じて適切な値へのリハッシュが行われてもよい。値Lの最大値は、LSHの一種であるMinHash関数の種類数である。MinHash関数は、全データ項目の任意の順列に従ってトランザクション内のアイテム群を並べ替え、該並べ替えられたアイテム群のバイナリ配列において最初に1が現れる要素番号をハッシュ値として設定する。そのバイナリ配列は、アイテムが存在するデータ項目を1で表し、アイテムが存在しないデータ項目を0で表す。
【0023】
図4に示すように、i行目のRACE21には、L種類のMinHash関数h ,h 、…、h が用意される。RACE21内において、1行目の1次元配列23はMinHash関数h に対応し、2行目の1次元配列23はMinHash関数h に対応し、…、L行目の1次元配列23はMinHash関数h に対応する。上述したように、GRACE20の各行において衝突確率の種類が異なる。したがって、それぞれのRACEグループ22において、i行目のRACE21内のL個のMinHash関数は、他の行に位置するRACE21内のL個のMinHash関数と異なる。
【0024】
RACE21はトランザクションをそのまま記録するのではなく、該トランザクションに対応するカウンタ24を用いて記録する。したがって、RACE21はトランザクション群の要約表現(summary)として機能する。GRACE20では、トランザクションに対応するRACE21内のカウンタ24がインクリメントされることで個々のトランザクションが記録される。インクリメントとはカウンタ値を1増分する操作をいう。サポート近似値という出現度を提供可能なGRACE20は、サポートサマリ(support summary)とも呼ばれる。GRACE20を用いることで、ストリーミングデータのサイズに依らない空間計算量で大量のトランザクションを記録しつつ、該ストリーミングデータに対する検索を実行することができる。
【0025】
[データ操作方法]
図5を参照しながら、本開示に係るデータ操作方法について説明する。図5はデータ操作システム10による処理の一例を処理フローS1として示すフローチャートである。
【0026】
ステップS10では、生成部11がカウンタを記憶するためのGRACE20を生成する。一例では、生成部11は主記憶部102上に生成する。上述したように、生成部11は、トランザクションのアイテム数の最大値をmとし、LSHのハッシュ値の衝突確率の種類数をpとして、それぞれがp個のRACE21を含むm個のRACEグループ22をGRACE20として生成する。生成部11はそれぞれのRACE21において、複数のLSH(MinHash関数)に対応する複数の1次元配列23を設定する。個々の1次元配列23はR個のカウンタ24を要素として含む。
【0027】
また、生成部11は、それぞれのRACEグループ22に対してJaccard行列Jの逆行列J-1を設定する。
【0028】
Jaccard行列Jは以下のように表される。
【数1】

Jaccard行列Jの成分はJaccard距離に基づく。或るトランザクションeとクエリqとの共通部分の基数をxとすると、トランザクションeとクエリqとのJaccard距離J(x)は式(1)のように表される。
【数2】
【0029】
上述したように、RACEグループ22内のp個のRACE21では衝突確率がJaccard距離の累乗によって設定される。したがって、1行目に位置するRACE21におけるJ(x)はJaccard距離の1乗であり、2行目に位置するRACE21におけるJ(x)はJaccard距離の2乗であり、…、p行目に位置するRACE21におけるJ(x)はJaccard距離のp乗である。このように衝突確率の種類を変えることで、サポート近似値の精度の向上が期待できる。
【0030】
Jaccard行列Jの行列式はファンデルモンドの行列式であり、Jaccard行列Jの逆行列J-1の存在が保証される。
【0031】
ステップS20では、登録部12がカウンタ24を用いてストリーミングデータをGRACE20に登録する。図6図8を参照しながらその登録処理について説明する。図6はその処理の一例を示すフローチャートである。図7はカウンタを記録しようとするRACE21の選択を示す図である。図8はカウンタ24のインクリメントを示す図である。
【0032】
ステップS21では、登録部12がストリーミングデータから一つのトランザクションを選択する。
【0033】
ステップS22では、登録部12が、そのトランザクションのアイテム数に対応するRACEグループ22を選択する。図7の例では、選択されたトランザクションeが3個のアイテムを含むので、登録部12はGRACE20の3列目に位置するRACEグループ22を選択する。
【0034】
ステップS23では、登録部12が、選択されたRACEグループ22の列カウンタをインクリメントする。列カウンタは、RACEグループ22に登録されたトランザクションの個数を示す。
【0035】
ステップS24では、登録部12が、選択されたRACEグループ22の各RACE21の各1次元配列23においてカウンタ24をインクリメントする。登録部12は各1次元配列23において、対応するMinHash関数をトランザクションに適用してハッシュ値を算出し、そのハッシュ値に対応するカウンタをインクリメントする。図8の例では、登録部12はGRACE20のj列目に位置するRACEグループ22を選択している。登録部12は各RACE21の各1次元配列23において、一つのカウンタ24をインクリメントする。それぞれの1次元配列23について、登録部12は該1次元配列23に対応するMinHash関数hをトランザクションeに適用してハッシュ値h(e)を算出し、そのハッシュ値に対応するカウンタ24をインクリメントする。「ハッシュ値に対応するカウンタ」とは、要素番号がハッシュ値である要素に記録されるカウンタをいう。図8ではインクリメントを「+1」と表す。
【0036】
図6に戻って、ステップS25に示すように、登録部12は処理すべきトランザクションをすべて処理するまでステップS21~S24の処理を繰り返す。未処理のトランザクションが存在する場合には(ステップS25においてNO)、処理はステップS21に戻る。登録部12はステップS21において次のトランザクションを選択し、そのトランザクションについてステップS22~S24の処理を実行する。すべてのトランザクションを処理した場合には、登録部12は処理を終了する。ステップS20が実行されたことで、ストリーミングデータがカウンタによってGRACE20に登録され、データ操作システム10はクエリを受け付けることが可能になる。
【0037】
図5に戻って、ステップS30では検索部13がクエリに基づいてGRACE20を検索して、サポート近似値を算出する。図9および図10を参照しながらその検索処理について説明する。図9はその処理の一例を示すフローチャートである。図10はその処理におけるGRACE20の参照を示す図である。
【0038】
ステップS31では、検索部13がクエリを取得する。例えば、検索部13は他のコンピュータからクエリを受信してもよいし、ユーザ操作によって入力されたクエリを受け付けてもよい。上述したように、クエリは1以上のアイテムの組合せによって表される。
【0039】
ステップS32では、検索部13がそのクエリのアイテム数、すなわち、クエリの基数を特定する。図10の例では、検索部13はそのアイテム数|q|を2と特定する。
【0040】
ステップS33では、検索部13が、そのアイテム数に対応する列から最後の列までの範囲に位置する各RACEグループ22(すなわち、クエリのアイテム数から値mまでの範囲に対応する各RACEグループ22)において部分サポート近似値を算出する。アイテム数を|q|と表すとすると、検索部13はGRACE20の|q|列目からm列目までの各列において部分サポート近似値を算出する。部分サポート近似値とは、クエリに対応するトランザクションが一つのRACEグループ22内にどのくらい出現するかを示す指数である。部分サポート近似値は本開示における部分出現度の一例である。
【0041】
i列目のRACEグループ22における部分サポート近似値r |q|の計算方法について説明する。RACEグループ22において、KDEの推定値のベクトルKと、Jaccard行列Jと、サポート推定値のベクトル(以下では「サポートベクトル」という)Nとは、式(2)に示される関係を有する。
K=J・N …(2)
【0042】
ベクトルKはp個の推定値K()を用いて以下のように表される。
K=(1,K(1),K(2),…,K(p))
一例では、それぞれのRACE21において推定値K()は次のように算出される。まず、RACE21内の各1次元配列23においてクエリのハッシュ値が算出され、そのハッシュ値に対応するカウンタ値が特定される。続いて、複数の1次元配列23が2以上のグループに分けられる。各グループは連続して並ぶ2以上の1次元配列23によって構成される。続いて、各グループにおいて、特定されたカウンタ値の平均値が算出される。そして、複数の平均値の中央値(MoM)が推定値K()として選択される。
【0043】
サポートベクトルNは以下のように表される。
N=(n,n,…,n|p|
成分nは、対応する一つのRACEグループ22において、クエリとの間でk個の共通アイテムを持つトランザクションの割合を表す。
【0044】
上述したようにJaccard行列Jの逆行列J-1の存在が保証されるので、式(2)から式(3)が得られる。
N=J-1・K …(3)
【0045】
式(3)を解くことで、サポートベクトルN=(n,n,…,n|p|)が導出される。部分サポート近似値r |q|はn|p|である。
【0046】
検索部13は各RACEグループ22について、式(3)を含む上記の理論に基づいてサポートベクトルNを算出し、サポートベクトルNの成分n|p|を部分サポート近似値r |q|として得る。すなわち、検索部13は、クエリのアイテム数からmまでの範囲に対応するそれぞれのRACEグループ22の各RACE21について、LSHに基づくKDEによる推定値を算出する。そして、検索部13は、それぞれのRACEグループ22について、該RACEグループ22の各RACE21の推定値および逆行列J-1に基づいて、該RACEグループ22における部分サポート近似値r |q|を算出する。図10の例では、アイテム数|q|が2であるので、検索部13はGRACE20の2列目から最後の列であるm列目までの範囲に位置する各RACEグループ22について部分サポート近似値r |q|、r |q|、…、r |q|を算出する。
【0047】
ステップS34では、検索部13が1以上の部分サポート近似値に基づいてサポート近似値を算出する。例えば、検索部13はr |q|、r |q|、…、r |q|の重み付き線形和Σ(s×r |q|)/nをサポート近似値r(q)として算出する。ここで、sはi列目のRACEグループ22に登録されたトランザクションの個数を示し、i列目の列カウンタによって保持された値である。nはストリーミングデータのトランザクションの総数を示す。
【0048】
ステップS35では、検索部13がサポート近似値をクエリへの応答として出力する。検索部13はクエリの送信元であるコンピュータにサポート近似値を送信してもよいし、クエリを入力したユーザに向けてサポート近似値をモニタ上に表示してもよいし、所定のデータベースにサポート近似値を格納してもよい。
【0049】
ステップS30において、クエリのアイテム数がmより大きい場合には、得られる部分サポート近似値の個数が0になる。この場合には、検索部13はサポート近似値として0を出力してもよい。
【0050】
[変形例]
以上、本開示での様々な例を詳細に説明した。しかし、本開示は上記の例に限定されるものではない。本開示に関しては、その要旨を逸脱しない範囲で様々な変形が可能である。
【0051】
本開示に係るデータ操作システムは、生成部、登録部、および検索部のうちの少なくとも一つまたは二つを備え、他の機能モジュールを備えなくてもよい。すなわち、生成部、登録部、および検索部のうちの少なくとも一つがデータ操作システムとは異なるコンピュータシステム上に実装されてもよい。
【0052】
上記の例では配列セットの例としてRACEを示すが、データ操作システムは、カーネル密度推定を与える別の配列セットを用いてもよい。この変形例において、カーネル関数値が、トランザクションを記録するためのカウンタの衝突に関する値として用いられてもよい。
【0053】
本開示において、「少なくとも一つのプロセッサが、第1の処理を実行し、第2の処理を実行し、…第nの処理を実行する。」との表現、またはこれに対応する表現は、第1の処理から第nの処理までのn個の処理の実行主体(すなわちプロセッサ)が途中で変わる場合を含む概念を示す。すなわち、この表現は、n個の処理のすべてが同じプロセッサで実行される場合と、n個の処理においてプロセッサが任意の方針で変わる場合との双方を含む概念を示す。
【0054】
少なくとも一つのプロセッサにより実行される方法の処理手順は上記の例に限定されない。例えば、上述したステップの一部が省略されてもよいし、別の順序で各ステップが実行されてもよい。また、上述したステップのうちの任意の2以上のステップが組み合わされてもよいし、ステップの一部が修正または削除されてもよい。あるいは、上記の各ステップに加えて他のステップが実行されてもよい。
【0055】
二つの数値の大小関係の比較では、「以上」および「よりも大きい」という二つの基準のどちらが用いられてもよく、「以下」および「未満」という二つの基準のうちのどちらが用いられてもよい。
【0056】
[付記]
上記の様々な例から把握されるとおり、本開示は以下に示す態様を含む。
(付記1)
ストリーミングデータに含まれるトランザクションのアイテム数の最大値をmとし、前記トランザクションを記録するためのカウンタの衝突に関する値の種類数をpとして、それぞれがp個の配列セットを含むm個の配列セットグループを生成する生成ステップであって、各配列セットが複数の1次元配列を含み、各1次元配列の各要素が前記カウンタに対応する、該生成ステップと、
複数の前記トランザクションのそれぞれについて、(i)該トランザクションのアイテム数に対応する前記配列セットグループを選択し、(ii)該配列セットグループ内の各1次元配列において、該トランザクションに対応する前記カウンタをインクリメントする登録ステップと、
をコンピュータに実行させるデータ操作プログラム。
(付記2)
クエリに対応する前記トランザクションの出現度を算出する検索ステップを前記コンピュータに更に実行させ、
前記検索ステップが、
前記クエリのアイテム数から前記mまでの範囲に対応する少なくとも一つの前記配列セットグループのそれぞれの各配列セットについて、カーネル密度推定による推定値を算出するステップと、
前記少なくとも一つの配列セットグループのそれぞれについて、該配列セットグループの各配列セットの前記推定値と、該配列セットグループに対応するJaccard行列とに基づいて、該配列セットグループにおける部分出現度を算出するステップと、
少なくとも一つの前記部分出現度に基づいて前記出現度を算出するステップと、
を含む、
付記1に記載のデータ操作プログラム。
(付記3)
ストリーミングデータに含まれる複数のトランザクションのそれぞれについてデータ構造にカウンタを記録する登録ステップをコンピュータに実行させ、
前記データ構造が、トランザクションのアイテム数の最大値をmとし、前記トランザクションを記録するためのカウンタの衝突に関する値の種類数をpとして、それぞれがp個の配列セットを含むm個の配列セットグループを含み、各配列セットが複数の1次元配列を含み、各1次元配列の各要素が前記カウンタに対応し、
前記登録ステップが、前記複数のトランザクションのそれぞれについて、(i)該トランザクションのアイテム数に対応する前記配列セットグループを選択し、(ii)該配列セットグループ内の各1次元配列において、該トランザクションに対応する前記カウンタをインクリメントするステップを含む、
データ操作プログラム。
(付記4)
ストリーミングデータに含まれる複数のトランザクションのそれぞれについてカウンタが記録されたデータ構造を参照して、クエリに対応する前記トランザクションの出現度を算出する検索ステップをコンピュータに実行させ、
前記データ構造が、トランザクションのアイテム数の最大値をmとし、前記トランザクションを記録するためのカウンタの衝突に関する値の種類数をpとして、それぞれがp個の配列セットを含むm個の配列セットグループを含み、各配列セットが複数の1次元配列を含み、各1次元配列の各要素が前記カウンタに対応し、
各配列セットグループの各1次元配列の各要素が、該配列セットグループに対応する前記トランザクションに基づいてインクリメントされたカウンタを記録し、
前記検索ステップが、
前記クエリのアイテム数から前記mまでの範囲に対応する少なくとも一つの前記配列セットグループのそれぞれの各配列セットについて、カーネル密度推定による推定値を算出するステップと、
前記少なくとも一つの配列セットグループのそれぞれについて、該配列セットグループの各配列セットの前記推定値と、該配列セットグループに対応するJaccard行列とに基づいて、該配列セットグループにおける部分出現度を算出するステップと、
少なくとも一つの前記部分出現度に基づいて前記出現度を算出するステップと、
を含む、
データ操作プログラム。
(付記5)
少なくとも一つのプロセッサを備え、
前記少なくとも一つのプロセッサが、
ストリーミングデータに含まれるトランザクションのアイテム数の最大値をmとし、前記トランザクションを記録するためのカウンタの衝突に関する値の種類数をpとして、それぞれがp個の配列セットを含むm個の配列セットグループを生成する生成ステップであって、各配列セットが複数の1次元配列を含み、各1次元配列の各要素が前記カウンタに対応する、該生成ステップと、
複数の前記トランザクションのそれぞれについて、(i)該トランザクションのアイテム数に対応する前記配列セットグループを選択し、(ii)該配列セットグループ内の各1次元配列において、該トランザクションに対応する前記カウンタをインクリメントする登録ステップと、
を実行するデータ操作システム。
(付記6)
少なくとも一つのプロセッサを備えるデータ操作システムによって実行されるデータ操作方法であって、
ストリーミングデータに含まれるトランザクションのアイテム数の最大値をmとし、前記トランザクションを記録するためのカウンタの衝突に関する値の種類数をpとして、それぞれがp個の配列セットを含むm個の配列セットグループを生成する生成ステップであって、各配列セットが複数の1次元配列を含み、各1次元配列の各要素が前記カウンタに対応する、該生成ステップと、
複数の前記トランザクションのそれぞれについて、(i)該トランザクションのアイテム数に対応する前記配列セットグループを選択し、(ii)該配列セットグループ内の各1次元配列において、該トランザクションに対応する前記カウンタをインクリメントする登録ステップと、
を含むデータ操作方法。
(付記7)
少なくとも一つのプロセッサを備え、
前記少なくとも一つのプロセッサが、ストリーミングデータに含まれる複数のトランザクションのそれぞれについてカウンタが記録されたデータ構造を参照して、クエリに対応する前記トランザクションの出現度を算出する検索ステップを実行し、
前記データ構造が、トランザクションのアイテム数の最大値をmとし、前記トランザクションを記録するためのカウンタの衝突に関する値の種類数をpとして、それぞれがp個の配列セットを含むm個の配列セットグループを含み、各配列セットが複数の1次元配列を含み、各1次元配列の各要素が前記カウンタに対応し、
各配列セットグループの各1次元配列の各要素が、該配列セットグループに対応する前記トランザクションに基づいてインクリメントされたカウンタを記録し、
前記検索ステップが、
前記クエリのアイテム数から前記mまでの範囲に対応する少なくとも一つの前記配列セットグループのそれぞれの各配列セットについて、カーネル密度推定による推定値を算出するステップと、
前記少なくとも一つの配列セットグループのそれぞれについて、該配列セットグループの各配列セットの前記推定値と、該配列セットグループに対応するJaccard行列とに基づいて、該配列セットグループにおける部分出現度を算出するステップと、
少なくとも一つの前記部分出現度に基づいて前記出現度を算出するステップと、
を含む、
データ操作システム。
(付記8)
少なくとも一つのプロセッサを備えるデータ操作システムによって実行されるデータ操作方法であって、
ストリーミングデータに含まれる複数のトランザクションのそれぞれについてカウンタが記録されたデータ構造を参照して、クエリに対応する前記トランザクションの出現度を算出する検索ステップを含み、
前記データ構造が、トランザクションのアイテム数の最大値をmとし、前記トランザクションを記録するためのカウンタの衝突に関する値の種類数をpとして、それぞれがp個の配列セットを含むm個の配列セットグループを含み、各配列セットが複数の1次元配列を含み、各1次元配列の各要素が前記カウンタに対応し、
各配列セットグループの各1次元配列の各要素が、該配列セットグループに対応する前記トランザクションに基づいてインクリメントされたカウンタを記録し、
前記検索ステップが、
前記クエリのアイテム数から前記mまでの範囲に対応する少なくとも一つの前記配列セットグループのそれぞれの各配列セットについて、カーネル密度推定による推定値を算出するステップと、
前記少なくとも一つの配列セットグループのそれぞれについて、該配列セットグループの各配列セットの前記推定値と、該配列セットグループに対応するJaccard行列とに基づいて、該配列セットグループにおける部分出現度を算出するステップと、
少なくとも一つの前記部分出現度に基づいて前記出現度を算出するステップと、
を含む、
データ操作方法。
【0057】
付記1,5,6によれば、トランザクションのアイテム数の最大値と、トランザクションを記録するためのカウンタの衝突に関する値の種類数との積の分だけ配列セットが用意される。そして、個々のトランザクションについて、トランザクションのアイテム数に対応する配列セットグループの各配列セットにおいて、対応するカウンタがインクリメントされる。このようなデータ構造の生成およびトランザクションの登録によって、ストリーミングデータの中でクエリに対応するデータがどのくらい出現するかを検索することが可能になる。
【0058】
付記2,4,7,8によれば、クエリのアイテム数以上のアイテムを含むトランザクションに対応する各配列セットグループにおいて部分出現度が算出され、1以上の部分出現度に基づいて出現度が算出される。この処理によって、参照する配列セットグループの範囲を限定しつつ、ストリーミングデータの中でクエリに対応するデータがどのくらい出現するかを検索できる。
【0059】
付記3によれば、トランザクションのアイテム数の最大値と、トランザクションを記録するためのカウンタの衝突に関する値の種類数との積の分だけ配列セットがデータ構造として用意される。そして、個々のトランザクションについて、トランザクションのアイテム数に対応する配列セットグループの各配列セットにおいて、対応するカウンタがインクリメントされる。予め用意されたデータ構造に基づいてこのようにトランザクションを登録することで、ストリーミングデータの中でクエリに対応するデータがどのくらい出現するかを検索することが可能になる。
【符号の説明】
【0060】
10…データ操作システム、11…生成部、12…登録部、13…検索部、20…GRACE(データ構造)、21…RACE(配列セット)、22…RACEグループ(配列セットグループ)、23…1次元配列、24…カウンタ、110…データ操作プログラム。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10