JP2004062898A - 相関のあるデータ組み合わせの数え上げ方式 - Google Patents

相関のあるデータ組み合わせの数え上げ方式 Download PDF

Info

Publication number
JP2004062898A
JP2004062898A JP2003196820A JP2003196820A JP2004062898A JP 2004062898 A JP2004062898 A JP 2004062898A JP 2003196820 A JP2003196820 A JP 2003196820A JP 2003196820 A JP2003196820 A JP 2003196820A JP 2004062898 A JP2004062898 A JP 2004062898A
Authority
JP
Japan
Prior art keywords
record
combination
items
hash
item
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2003196820A
Other languages
English (en)
Other versions
JP3601719B2 (ja
Inventor
Naoteru Akaboshi
赤星 直輝
Ririan Harada
原田 リリアン
Riichiro Take
武 理一郎
Kazutaka Ogiwara
荻原 一隆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2003196820A priority Critical patent/JP3601719B2/ja
Publication of JP2004062898A publication Critical patent/JP2004062898A/ja
Application granted granted Critical
Publication of JP3601719B2 publication Critical patent/JP3601719B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

【課題】データ組み合わせの数え上げを効率的に実行する。
【解決手段】アイテム1個ずつを対象とする時は各トランザクションに含まれるアイテムを1個ずつ出力し、アイテムの組み合わせを対象とする時はそれに含まれる部分的組み合わせ、またはアイテム1個ずつのうちで組み合わせ生成制約条件に適合するもののみを生成して出力する手段100と、手段100の出力するアイテム1個ずつ、または組み合わせの全トランザクションにおける出現回数をカウントする手段101と、出現回数が与えられた条件に適合するものを選択する手段102と、選択結果に対応した前記生成制約条件を手段100に与える手段103とを備える。
【選択図】   図2

Description

【0001】
【発明の属する技術分野】
本発明は一般的にはデータベースなどに記録された大量のデータのデータ処理に係り、まず第一にグループバイ処理に関し、第二にデータベースマイニングに関する。
【0002】
本発明は、第一に、各レコードが持つキーの値に応じて大量のレコードを分類し、等しいキーの値を持つレコード群に対して、例えば平均値を求めるなど、指定された演算を行う処理、すなわちグループバイ処理に関し、更に詳しくはハッシュ処理に基づくグループバイ処理、すなわちキーの値に対して適切なハッシュ関数を適用して得られるハッシュ値に従って大量のレコードをハッシュしてハッシュ済みのレコードリストを作成し、そのハッシュ済みレコードリストをキーの値に従ってソートして、その結果でき上るソート済みレコードリストに対してグループバイ処理を行う、ハッシュ処理に基づくグループバイ処理方式に関する。
【0003】
本発明は、第二に、データベースに記録されたデータの間の関連規則を発見するデータベースマイニングに関する。更に詳しくは、本発明はデータベースの中の膨大なデータのうちで相関のあるデータの組み合わせの出現回数を数え上げる方式に関し、この方式を用いて数え上げられた結果から、与えられた条件に適合する組み合わせとその出現回数を用いて、データマイニング手法の中の1つである相関ルールの生成処理が行われる。相関ルールを用いた相関分析は、近年米国を中心として広く注目されている。
【0004】
【従来の技術】
一般にグループバイ処理における演算、すなわち等しいキーの値、例えばアイテム番号を持つレコード群に対する演算としては、アイテムセットのようなレコードの数を数えるカウント処理や、それらのレコード群の特定のフィールドの値の合計や平均を計算する演算などがある。このようなグループバイ処理は、関係データベースの処理や、統計処理などにおいて頻繁に行われるものである。
【0005】
グループバイ処理方式としては、ソート処理に基づくものと、ハッシュ処理に基づくものとが知られている。ソート処理に基づく方式は、レコード群をキーの値に従ってソートすることによって、同一のキーの値を持つレコードが連続してアクセス可能となることを利用するものである。すなわち、まずレコード群をキーの値に従ってソートし、その結果できあがるソート済のレコードリストを頭からたどって、同一のキー値が続く限り指定された演算の実行を繰り返し、キーの値が変化した時点で演算の初期化を行う。
【0006】
ハッシュ処理に基づく方式は、レコード群をキーの値に従ってハッシュすることによって、同一のキーの値を持つレコードが1つのハッシュバケットに集まることを利用するものである。すなわち、まずキーの値に対して適切なハッシュ関数を適用することによって得られるハッシュ値に従ってレコード群をハッシュし、その結果できあがるハッシュバケット毎に含まれているレコードをキーの値に従ってソートし、ソート済のレコードリストを作成して、そのソート済レコードリストにおいて同一のキー値が続く限り、指定された演算の実行を繰り返し、キーの値が変化した時点で演算の初期化を行う。
【0007】
図164はソート処理に基づくグループバイ処理方式の従来例のフローチャートである。同図において処理が開始されると、まずステップS201でグループバイ対象レコード群がキー値によってソートされ、ステップS202でソートされたレコード群の先頭のレコードが読み出され、ステップS203で関数の初期化が行われ、ステップS204で読み出されたレコードに関して関数の演算が実行され、ステップS205でソートされたレコード群の中にまだレコードが存在するか否かが判定される。
【0008】
まだレコードが存在する場合には、ステップS206でソートされたレコード群の先頭が読み出され、ステップS207でそのレコードのキーの値が先立つレコード、すなわちその前に読み出されたレコードのキーの値と等しいか否かが判定され、等しい場合にはステップS204以降の処理が繰り返される。
【0009】
先立つレコードのキーの値と等しくない時にはステップS208で関数の終了処理が行われ、ステップS209で先立つレコードと関数の処理結果を合わせたものが結果レコードとして出力された後に、ステップS203以降の処理が繰り返される。
【0010】
ステップS205でソートされたレコード群のレコードが全てすでに読み出されていると判定されると、ステップS210で関数の終了処理が行われ、ステップS211で先立つレコードと関数の処理結果とを合わせたものが結果レコードとして出力されて、処理を終了する。
【0011】
図165は、図164のフローチャートを用いて実行されるグループバイ処理の経過を示す具体例である。同図(1)に示すように、グループバイ対象レコード群は10個のレコードからなり、簡単のためにここでは各レコードはキー値、例えば1つのアイテムの番号のみからなるものとする。ステップS201の処理が済むと、図165(2)の状態が実現される。
【0012】
ここでは、グループバイ処理の演算としては同一キー値を持つレコードの数を求めるカウント処理を行うものとし、ステップS202とS203の処理が終了すると(3)に示す状態となる。すなわちS203の関数の初期化では、カウント値が0にリセットされることになる。
【0013】
ステップS204ではカウント値が1だけインクリメントされ、(4)の状態となる。ステップS205の判定はここではYESとなり、ステップS206で現在のレコード“1”が先立つレコードとされ、新しいレコード、すなわち“1”が現在のレコードとなる。そしてステップS207の判定はYESとなり、ステップS204でカウント値がインクリメントされて(5)に示す状態となる。
【0014】
ステップS205の判定は再びYESとなり、ステップS206で新しいレコードが読み込まれる。このレコードのキーの値は2であり、先立つレコードのキーの値1とは異なるため、ステップS208で関数の終了処理が行われる。カウント演算の場合には、終了処理は単に現在のカウントの値を固定するだけであり、ステップS209ではこの固定された値が関数の処理結果とされ、先立つレコード、ここでは“1”と合わされて結果レコードとして出力される。すなわち出力される結果レコードは“1,2”である。図165(6)はこの結果を示す。
【0015】
同様に処理を実行することによって最終的には処理結果として次のレコード群が得られる。
1,2
2,2
3,3
4,1
5,2
この結果はグループバイ対象レコード群の中にキーの値として1を持つものが2個、2を持つものが2個、3を持つものが3個、4を持つものが1個、5を持つものが2個あったことを示す。
【0016】
図166はハッシュ処理に基づくグループバイ処理方式のフローチャートの従来例である。同図を図164に示したソート処理に基づくフローチャートと比較すると、まずステップS221でグループバイ対象レコード群がキー値によりハッシュされ、ステップS222で各ハッシュバケット内のレコードがキー値によりソートされ、全てのソートされたハッシュバケットの内容が結合され、1つの列が作られた後に、図164のステップS202以降の処理と実質的に同一の処理がステップS223〜S232において実行される。
【0017】
図167は、図166のフローチャートを用いて実行される処理の経過の具体例である。グループバイ対象レコード群は図165におけると同じである。ハッシュ処理に基づく場合には、まずグループバイ対象レコード群が適当なハッシュ関数を用いてハッシュされる。ここではハッシュ関数としてmod3を使うことにする。すなわちキーの値を3で割り、余りの値に応じてハッシュバケットに振り分ける処理が行われる。余りがiであればハッシュバケットiにそのレコードは格納される。ここでは余りの値としては0,1、および2の3種類があり、従ってハッシュバケットは3つとなる。
【0018】
図166のステップS221の処理が実行され、ハッシュが終わった状態が図167の(2)である。各ハッシュバケット内のレコード群をキーの値によってソートした結果が(3)、全てのハッシュバケットの内容を1つの列にまとめた結果が(4)であり、ステップS222までの処理が終了する。以後の処理はソート処理に基づく場合と同じである。最終的に結果レコード群として次のレコードが得られる。
【0019】
3,3
1,2
4,1
2,2
5,2
図165の場合とはレコードの出現順序が異なっているが、集合全体としてはソート処理に基づく場合と同一の結果が得られる。
【0020】
次に本発明におけるデータ組み合わせの数え上げ方式に関する従来技術について説明する。このデータ組み合わせの数え上げは前述のデータベースマイニングにおける相関ルール生成処理の一部を成すものであるため、まず相関ルールについて説明する。なお後述するように本発明におけるデータ組み合わせの数え上げでは、その処理の一部として本発明のグループバイ処理方式が用いられる。
【0021】
例として小売業においてPOS(Point−Of−Sales) で収集した 100人の顧客のレシートのうち、20人の顧客が商品Aを購入し、また、12人の顧客が商品Aと商品Bの両方を購入しているとする。1つの商品をアイテムと呼び、また、1枚のレシートをトランザクションと呼ぶ。1つのトランザクションには、通常、複数のアイテムが含まれる。このとき、以下の定義式
アイテムのサポート=アイテムを含むトランザクションの数/全トランザクション数
に基づいて商品Aの「サポート」=20%、 商品Aと商品Bの「サポート」=12%となる。さらに、単純な条件付き確率計算により、「Aを購入する顧客の60%(12%/20%)がBも購入する」と結論できる。これを「A→B 確信度60%、サポート12%」と表わし、相関ルールと定義する。つまり、相関ルール「A→B」における確信度は、
「A→B」の確信度=A∧B(AとBの両方購入)のサポート/Aのサポート
である。さらに、A→Bといった単純なルールだけでなく、A∧B→C∧D∧E(「AとBを購入する顧客がCとDとEを購入する」)の様な複雑なルールも用いられる。この場合の確信度は、
「A∧B→C∧D∧E」の確信度=A∧B∧C∧D∧Eのサポート/A∧Bのサポート
である。
【0022】
相関ルールは、目玉商品がどの商品群の売り上げに貢献したかの評価、棚割り(どの商品とどの商品を近くに並べるべきか)の最適化や、クレジットカードのデータからダイレクトメールのヒット率を高めるといった、様々な局面に有効な情報である。
【0023】
相関ルール生成処理は、(1) トランザクションの中から、与えられたサポートの条件を満たすアイテムの組み合わせの出現回数を数え上げる処理と、(2) (1) で求められた組み合わせ群とその出現回数を基に、ルールとそのサポートおよび確信度の計算を行うという2つの段階からなる処理からなる。本発明は、(1) の数え上げ処理の効率化を行うものである。
【0024】
(1) において、与えられたサポートの条件を満たすアイテムの組み合わせ群を「ラージアイテムセット」と呼ぶ。サポートの条件としては、最小値(0%〔=すべての組み合わせを数える〕〜 100%〔=全部のトランザクションで購入されたアイテムを数える〕)から、最大値(最小値<=最大値<= 100%)の範囲であたえる。従来では、多くの場合、最大値を 100%に固定する手法が用いられている。
【0025】
(1) のラージアイテムセットの数え上げ処理は非常に時間のかかる処理であるため、各種の高速化手法が提案されている。中でも、SQLに基づくSETMアルゴリズムと、IBMが提案するいくつかのアルゴリズム中のApriori が代表的なものとして知られている。SETMアルゴリズムは次の文献1、Apriori のアルゴリズムは次の文献2に述べられている。
【0026】
文献1:Maurice Houtsma and Arun Swami. Set−Oriented Mining for Association Rules in Relational Databases. In Proceedings of the IEEE Data Engineering Conference, pages 25−33, 1995.
文献2:Rakesh Agrawal and Ramakrishnan Srikant. Fast Algorithms for Mining Association Rules. In Proceedings of the 20th VLDB Conference, pages 487−499, Santiago, Chile, 1994.
SETMに基づく相関ルール生成処理は、関係データベース問い合わせ言語であるSQL言語をベースとしており、実装が容易である特徴を持つ。処理にあたっては、SQLの結合演算(Join Operation)とグループバイ演算(GroupBy Operation )を用いる。サポートの最小値の条件を満たす長さk−1のアイテムの組み合わせを含むトランザクションのテーブルを用いた自己結合演算を行い、長さkのアイテムの組み合わせ候補を生成する。次に、グループバイ演算を用いて、長さkのラージアイテムセットを数え上げる。さらに、結合演算を用いてサポートの最小値を満足するトランザクション群を生成し、次の長さk+1のアイテムの組み合わせ生成に利用する。
【0027】
図168は、SETMにおける具体的な処理の流れの説明図であり、図169はSETMの処理における各機能ブロックの処理内容を示す図である。これらの図を用いて、従来技術としてのSETMの処理について詳細に説明する。
【0028】
図168において、テーブルR1′は各トランザクションt xに含まれるアイテムを示している。例えばトランザクション1にはアイテム1,2、および3が含まれていることが示されている。GB(1)は1個ずつのアイテムの出現回数のカウント処理(グループバイ処理)を行うものであり、テーブルL1はそのカウント結果を、カウント数が2以上のアイテムに対して示したものである。
【0029】
テーブルR1は、ジョインの処理(結合処理)J(1)によって、テーブルR1′に含まれるデータのうちでテーブルL1に存在するアイテムだけを抜き出した結果を示す。
【0030】
SJ(1)は、テーブルR1に対するセルフジョインの処理を示し、その結果テーブルR2′として、各トランザクションに対して2つのアイテムの可能な組み合わせが生成される。
【0031】
グループバイ処理GB(2)によって、2つのアイテムの組み合わせの出現回数がテーブルR2′の組み合わせに対してカウントされ、そのカウント結果のうちでカウント数が2以上のものがテーブルL2として作成される。
【0032】
以下同様にして、3つのアイテムの組み合わせのうちでカウント数が2以上のもののテーブルL3が作られ、またアイテムが4個の組み合わせのうちでカウント数が2以上のものがテーブルL4として作られるが、テーブルL4の内容は空となる。
【0033】
Apriori アルゴリズムでは、サポートの最小値の条件を満たす長さk−1のラージアイテムセットを用いて長さkのアイテムの組み合わせの候補を生成する。その際に、k−1のラージアイテムセットがすべてメモリにのる場合、長さkのアイテムの組み合わせの中の、長さk−1のすべての組み合わせがラージアイテムセットに含まれているかをチェックし、含まれている場合のみ、長さkのアイテムの組み合わせの候補とみなす。長さk−1のアイテムの組み合わせをメモリ上のハッシュ表(Hash Table)に登録しておくことにより、不必要な候補を効率よくプルーニング(Pruning )する。さらに、候補であるアイテムの組み合わせ群をハッシュ木(Hash Tree )に保持し、各トランザクション毎にトランザクション中に含まれるアイテムの組み合わせがハッシュ木に登録されている場合、そのカウント値を増やすことにより、長さkのアイテムの組み合わせの候補の出現回数を数え上げる。ハッシュ木に登録されている組み合わせのみを対象とすることにより、不必要な組み合わせの数え上げをしない工夫がなされている。
【0034】
図170は、Apriori アルゴリズムによる処理の具体例、図171はApriori アルゴリズムの処理における各機能ブロックの内容の説明図である。これらの図に基づいて、Apriori アルゴリズムによるラージアイテムセットの数え上げ処理の具体例について説明する。
【0035】
図170において、8つのトランザクションのリストTLの内容は実質的に図168と同じである。まず最初にこれらのトランザクションに含まれるアイテムが1つずつSubset(1)に入力され、1つ1つのアイテムの出現回数がC1としてカウントされる。そのカウント結果はFに入力され、出現回数が2回以上のものがフィルタリングによって選択され、フィルタリング結果がL1として作成される。
【0036】
L1の中に含まれるアイテムから2個の組み合わせが選択され、C2としてハッシュ木に登録される。そして各トランザクションの中にハッシュ木に登録された2個のアイテムの組み合わせが含まれている場合、Subset(2)によってその出現回数をカウントすることによって、2個のアイテムの組み合わせの出現回数が求められ、その結果がFによってフィルタリングされることにより、2個のアイテムの組み合わせのうちで出現回数が2回以上のものがL2として得られる。
【0037】
以下同様の処理を実行することによって、3個のアイテムの組み合わせのうちで出現回数が2回以上のものがL3として得られ、また4個の組み合わせのうちで出現回数が2回以上のものが、図168と同様に、存在しないことが判明した時点で処理を終了する。
【0038】
【発明が解決しようとする課題】
まず最初に、グループバイ処理方式に関する従来技術の問題点を説明する。前述のようにグループバイ処理方式としてはソート処理に基づくものとハッシュ処理に基づくものとがあるが、ソート処理に基づく場合にはレコード群の全体を一度にソートする必要があり、このソートのために処理時間およびコストが大きくなるという問題点があった。
【0039】
これに対してハッシュ処理に基づく場合には、ソートの処理は各ハッシュバケットに含まれるレコードの集合に対してのみ行われるために、ソート処理に基づく方式よりもコストは小さくなる。しかしながら、グループバイ処理対象レコード群全体のサイズが主記憶の上に乗り切らないほど大きい場合には、ハッシュバケットを二次記憶装置に書き出し、また書き出されたハッシュバケットを読み込む必要があり、二次記憶装置に対するアクセスに大きなコストがかかるという問題点があった。
【0040】
すなわち従来のハッシュ方式では、例えば主記憶上にそれぞれのハッシュバケットに1対1に対応するレコードバッファを設け、ハッシュ対象レコードに対するハッシュ値に基づいてレコードをそれぞれのレコードバッファに格納し、ある1つのレコードバッファが一杯になった時点で、二次記憶装置上でそれぞれのレコードバッファに1対1に対応するハッシュバケット格納領域の1つにそのレコードバッファの内容を出力するような動作が行われる。それぞれのレコードバッファの大きさは一般にそれほど大きく取ることはできないため、各レコードバッファが一杯になるたびに二次記憶装置へのレコードの書き出しが行われる。このようにして二次記憶装置上にハッシュバケットが作られても、各ハッシュバケットの大きさがそれぞれ異なるため、二次記憶装置上での各ハッシュバケットの格納領域は全体として非連続の領域となる。一般に二次記憶装置として使われるディスク装置では、連続領域に対するアクセスよりも小さな飛び飛びの領域に対する非連続的なアクセスの方が時間がかかり、コストが大きくなってしまうという問題点があった。
【0041】
次に、従来の相関ルール生成処理としてのSETMアルゴリズムと、Apriori アルゴリズムの問題点について説明する。SETMに基づく相関ルール生成処理では、最初の結合演算処理において、不必要な組み合わせをプルーニングする手段がないため、続くグループバイ演算処理が必要以上に重い処理となる問題点があった。
【0042】
Apriori アルゴリズムでは、SETMアルゴリズムに見られる問題点を解消する工夫がなされている。すなわち、サポートの最小値を満たす長さk−1のラージアイテムセットから長さkのアイテムの組み合わせの候補を生成する際に、長さk−1のラージアイテムセットをハッシュ表に登録しておき、不必要な候補を生成しないようにプルーニングを行う。しかし、ハッシュ表がメモリ上に載らない場合には、プルーニングを行うことが出来ないことや、k=2においては長さ1のジョインの計算をしなければならず非常に重い処理となるという問題点があった。
【0043】
さらに、Apriori アルゴリズムではアイテムの組み合わせの数え上げを行う際に、アイテムの組み合わせ候補をハッシュ木に保持しておいてトランザクションをスキャンする。このため、ハッシュ木のすべてのアイテムの組み合わせ候補がメモリに載らない場合には、ハッシュ木を実メモリ上に載る大きさ毎に読み込んで処理を行うため、そのたびにトランザクションをスキャンし直さなければならず、大きなトランザクションの際には処理に非常な時間がかかるという問題点があった。
【0044】
本発明の第一の課題は、グループバイ処理において、二次記憶装置に対するアクセスをできるだけ連続的にするために、例えば比較的大きなブロック単位でのデータの逐次読み出しと逐次書き込みを行うことによって、ハッシュ処理を高速化し、そのハッシュ処理の結果を用いてグループバイ処理を行うことより、全体としてグループバイ処理を高速化することである。
【0045】
本発明の第二の課題は、従来のApriori アルゴリズムにおけるハッシュ木のようなそのサイズが利用できるメモリ量を超える可能性があり、しかも、超えた場合には機能しなくなるプルーニング手段に替えて、常に利用できるメモリ量にフィットさせることのできるビットマップを用いることにより、不必要なアイテムの組み合わせ候補を効率的にプルーニングし、更にアイテムセットを数え上げるグループバイ処理を従来技術に比較して高速化することにより、相関のあるデータ組み合わせの数え上げを効率的に実行することである。
【0046】
【課題を解決するための手段】
図1は本発明におけるグループバイ処理方式の原理構成を示すブロック図である。同図はレコード群を、各レコードのキー値に対応するハッシュ関数値を用いて参照可能な格納形式に変換するためのハッシュ処理の結果に基づいて、該レコード群に対するグループバイ処理を行うグループバイ処理方式の原理構成ブロック図である。
【0047】
図1においてレコード格納手段106は、例えばレコードバッファであり、グループバイ処理の対象となるレコード群を一時的に格納するものである。またハッシュ値対応ポインタ格納手段107は、例えばハッシュ表であり、レコード格納手段106に格納されたレコードの格納位置を示すポインタを、該レコードのキー値から計算されたハッシュ関数値に対応する位置に格納するものである。
【0048】
ハッシュ済レコード出力手段108は、ハッシュ値対応ポインタ格納手段107に格納されているポインタによって指示されるレコードを、該ポインタの格納位置に対応するハッシュ関数値に対応させて、前記記憶装置に出力するものである。
【0049】
グループバイ処理実行手段109は、ハッシュ済レコード出力手段108によって前記記憶装置上に出力されたハッシュ済レコードのリストを読み込み、該リストのレコードをキー値に従ってソートし、該ソート済のレコードリストに対してグループバイ処理を実行するものである。
【0050】
本発明におけるグループバイ処理方式においては、図1の構成手段に加えて、例えば更に補助情報リスト格納手段を備えることができる。この補助情報リストは、ハッシュ済レコード出力手段108が、レコード格納手段106からハッシュ関数値に対応して出力された複数のレコードを1つのブロックとして、前記記憶装置に出力する場合に、そのブロックのレコードに対するハッシュ関数値による検索を可能とするための補助情報のリストを格納するものである。
【0051】
この場合には、グループバイ処理実行手段109は、ハッシュ処理の結果として得られるハッシュ関数値に対応したレコード列としてのハッシュ済リスト、ハッシュ関数値に対応して出力される複数のレコードからなるブロック内のレコードをハッシュ関数値により検索可能とするための補助情報のリストとを用いて、グループバイ処理を実行する。
【0052】
また本発明におけるグループバイ処理方式においては、前述の補助情報リスト格納手段の代わりに、ラン情報格納手段を備えることもできる。このラン情報格納手段は、レコード出力手段108がレコード格納手段106から前記ハッシュ関数値に対応して出力されたレコードを記憶装置に出力するにあたって、ハッシュ関数値を最小値から最大値まで連続的に変化させる間に出力されるランのそれぞれに含まれるレコードの記憶装置上の格納アドレスを示すラン情報を格納するものである。
【0053】
そしてこの場合には、グループバイ処理実行手段109はハッシュ処理の結果として得られるハッシュ関数値に対応したハッシュ済レコード列の内容と、ラン情報格納手段に格納されているラン情報とを用いて、グループバイ処理を実行する。
【0054】
このような補助情報リスト格納手段やラン情報格納手段のいずれを用いるとしても、本発明においてはハッシュ済レコード出力手段108がハッシュ関数値を例えばその最小値から最大値まで連続的に変化させてレコードを記憶装置の連続領域に逐次的、ブロック的に出力する動作、すなわちランの出力動作をグループバイ処理の対象となるレコード群が無くなるまで繰り返すことによりハッシュ済レコードのリストが作成され、そのリストに基づいてグループバイ処理が実行されることになる。
【0055】
以上のように本発明におけるグループバイ処理方式によれば、例えばハッシュ関数値に対応して出力された複数のレコードを1つのブロックとして、例えばディスクなどの二次記憶装置に逐次的に出力することにより、記憶装置に対するアクセスの処理を高速化することが可能となる。
【0056】
図2は本発明における相関のあるデータ組み合わせの数え上げ方式の原理構成ブロック図である。同図は、それぞれ1つ以上のアイテムをデータとして含む多数のトランザクションから、2つ以上のアイテムの組み合わせまたは1個のアイテムのみのうちで、トランザクションの中での出現回数が与えられた条件に適合する2個以上のアイテムの組み合わせ、または1個のアイテムのみと、その出現回数とを求めるデータ組み合わせの数え上げ方式の原理構成ブロック図である。
【0057】
図2において組み合わせ生成手段100は、1個のアイテムのみを対象とする時は各トランザクションに含まれるアイテムを1個ずつ出力し、i個のアイテムの組み合わせを対象とする時は組み合わせ生成制約条件に適合する組み合わせのみを生成して、出力するものである。この生成制約条件は、i個の組み合わせに含まれるアイテムの組み合わせ、または1個のアイテムのうちで、トランザクションの中での出現回数が前述の与えられた条件に適合するアイテムの組み合わせ、または1個のアイテムに含まれるアイテムに対応した条件である。
【0058】
出現回数カウント手段101は、組み合わせ生成手段100が出力する2個以上のアイテムの組み合わせ、または1個のアイテムのみの、トランザクション中での出現回数を、例えばグループバイ処理によってカウントするものである。
【0059】
組み合わせ選択手段102は、出現回数カウント手段101が出力する2個以上のアイテムの組み合わせ、または1個のアイテムのうちで、出現回数が、例えば指定された回数以上というような与えられた条件に適合するものを選択するものである。
【0060】
制約条件生成手段103は、組み合わせ選択手段102の選択結果に対応した、前述の組み合わせ生成制約条件を組み合わせ生成手段100に与えるものであり、この組み合わせ生成制約条件は、例えば選択手段102の選択結果に出現するアイテムに対応するビット位置に“1”が立てられたビットマップである。
【0061】
本発明の数え上げ方式においては、まず組み合わせ生成手段100によって各トランザクションの中からアイテムが1つずつ取り出され、それぞれ1個のアイテムの出現回数が出現回数カウント手段101によってカウントされる。この時には組み合わせ生成制約条件は用いられず、トランザクションの中の全てのアイテムが1つずつ組み合わせ生成手段100から出力され、その出現回数がカウントされる。
【0062】
出現回数カウント手段101の出力、すなわち1つずつのアイテムの多数のトランザクション内部での出現回数のカウント結果は組み合わせ選択手段102に与えられる。組み合わせ選択手段102は、例えば出現回数がある回数以上であるものを選択し、その選択結果を1個のみのアイテムの出現回数として出力する。
【0063】
その出力結果は制約条件生成手段103に与えられ、個々のアイテムに例えば1対1に対応するビットマップ上で組み合わせ選択手段102の出力に含まれるアイテムに対応するビットに“1”が立てられ、含まれないビットは“0”のままとされたビットマップが作成され、組み合わせ生成手段100に組み合わせ生成制約条件として与えられる。
【0064】
次に組み合わせ生成手段100は、各トランザクションに含まれるアイテムのうちで、組み合わせ生成制約条件としてのビットマップ上に“1”が立っているビットに対応するアイテムの中から2個を選択し、その2個のアイテムの組み合わせを出現回数カウント手段101に出力する。出現回数カウント手段101は2個のアイテムの組み合わせの出現回数をカウントし、その結果を組み合わせ選択手段102に与える。組み合わせ選択手段102は、出現回数が与えられた条件に適合する2個のアイテムの組み合わせを選択して出力する。
【0065】
同様の動作を繰り返すことにより、従来技術の図168や図170で説明したように、例えば3個のアイテムの組み合わせとしてラージアイテムセットが生成された段階で実質的な処理が終了する。
【0066】
すなわち、図2に示す発明を要約すると、等しいキーの値を持つレコード群に対して指定された演算(平均値計算等)を行うグループバイ処理に関し、二次記憶装置へのアクセスを効率化し、処理を高速にすることを目的とし、レコードを一時的に格納する手段106と、手段106に格納されたレコードの格納位置を示すポインタを、キー値から計算されたハッシュ関数値に対応する位置に格納する手段107と、手段107内のポインタにより指されるレコードをハッシュ関数値に対応させて二次記憶装置に出力する手段108と、出力されたハッシュ済みレコードのリストを読み込み、キー値に従ってソートし、グループバイ処理を実行する手段109とを備えることを特徴とする。
【0067】
従来技術で用いられたハッシュ表は、ラージアイテムセット中に存在する個々のアイテム、あるいは、アイテムの組み合わせの数に比例したメモリ量を必要とし、そのサイズを大きくして選択性を高めたり、小さくして選択性を多少低くして、メモリ使用量を少なくすることはできない。このため、従来技術では、処理対象のデータが大きく、ラージアイテムセットのサイズが大きくなる場合に、ハッシュ表が利用可能なメモリ量を超える可能性があり、その時にプルーニングができなくなるという問題があった。本発明におけるプルーニングは、個々のアイテム、または、アイテムの組み合わせがラージアイテムセット中に存在することを表現する1つまたは複数のビットマップを使って行われる。このビットマップは、複数のアイテム、あるいは、複数のアイテムの組み合わせの存在を単一のビットにより表現できるので、そのサイズを大きくして選択性を高めることや、小さくして選択性を多少低くして、メモリ使用量を少なくすることが可能である。この方式により、本発明はこの問題を解決している。
【0068】
【発明の実施の形態】
本発明におけるグループバイ処理方式においてはハッシュ処理の結果に基づいてグループバイ処理が行われる。そこで以下の説明ではハッシュ処理の方式と、その結果を用いたグループバイ処理の方式との二段階に分けて、グループバイ処理方式の実施例を説明する。
【0069】
図3は本発明におけるグループバイ処理方式の第1の実施例におけるハッシュ方式の説明図である。同図は、一般的に二次記憶装置に格納されているハッシュ対象リスト11のレコード群を処理装置12によってハッシュし、その結果をハッシュ済リスト21、および補助情報リスト22として、再び二次記憶装置に出力するハッシュ方式を示す。
【0070】
入力バッファ13はハッシュ対象リスト11のレコードが一旦格納されるバッファである。レコードバッファ14は入力バッファ13に格納されているレコードを格納するものであり、例えばその容量は4であるとする。ハッシュ表15は、入力バッファ13からレコードバッファ14に格納されるレコードのレコードバッファ内での格納位置へのポインタを、そのレコードのキーの値から計算されるハッシュ関数値に対応して格納するものである。リンク管理表16は、レコードバッファ14の内部に同一のハッシュ関数値を持つ複数のレコードが格納された時、その複数のレコードの間のリンクを管理するためのものである。
【0071】
ハッシュ済リスト用出力バッファ18は、レコードバッファ14の内容が一杯になった時点でその内容を格納するものである。この場合格納されるレコードは、特定のハッシュ関数値を指定することによって、ハッシュ表15内のポインタからポイントされるレコードである。出力ハッシュ値メモリ17はその特定のハッシュ関数値を指定するものである。
【0072】
指定されたハッシュ関数値を持つレコードがハッシュ済リスト用出力バッファ18に格納されると、出力ハッシュ値メモリ17の内容がインクリメントされ、その結果のハッシュ関数値を持つレコードが、レコードバッファ14からハッシュ済リスト用出力バッファ18に格納される。ハッシュ済リスト用出力バッファ18が一杯になると、その内容としてのレコード群のハッシュ済リスト31への出力がブロック的に行われる。補助情報リスト用出力バッファ19は、このブロック的な出力に際して、そのブロックが二次記憶装置内で格納される領域の最初のアドレス(ブロック番号に対応)、そのブロック内のレコードに対応するハッシュ関数値の最小値、および最大値を補助情報として格納するものであり、このバッファ19の内容も補助情報リスト22として出力される。
【0073】
一方レコードバッファ14から1つのレコードがハッシュ済リスト用出力バッファ18に格納されるたびに、入力バッファ13内のレコードがレコードバッファ14に格納され、以下同様の動作が続行される。
【0074】
図4〜図7は本発明におけるグループバイ処理方式の第1の実施例におけるハッシュ処理のフローチャートである。ここでは図3のレコードバッファ14が一杯になった時点で、1つのレコードをハッシュ済リスト用出力バッファ18に移動させると共に、レコードバッファ14の空き領域には入力バッファ13から直ちにレコードを補充し、またハッシュ済リスト用出力バッファ18が一杯になった時点で、その内容が1つのブロックのデータとしてハッシュ済リスト21に出力されると同時に、そのブロックに対する補助情報が生成され、その補助情報は補助情報リスト用出力バッファ19に格納されるものとしてハッシュ処理を説明する。
【0075】
図4において処理が開始されると、まずステップS1でハッシュ対象リスト11から入力バッファ13にレコード群が読み込まれ、ステップS2で入力バッファ13の中の先頭のレコードがレコードバッファ14の空き領域に移動され、ステップS3でそのレコードのキー値に対するハッシュ関数値が計算され、ステップS4でそのハッシュ関数値に対応するハッシュ表15のエントリにそのレコードがつながれる。すでにそのエントリにつながれているレコードが存在する場合には、既に存在したレコードに対するポインタはハッシュ表15から削除され、リンク管理表16を用いてすでに存在したレコードが新しいレコードにリンクされる。
【0076】
続いてステップS5でレコードバッファ14に空きがあるか否かが判定され、空きがある場合にはステップS7で入力バッファ13にレコードがあるか否かが判定され、ある場合にはステップS2以降の処理が繰り返される。
【0077】
ステップS5でレコードバッファに空きがないと判定された時には、レコードバッファ14内のレコードをハッシュ済リスト用出力バッファ18に移動させる出力処理がステップS6で行われ、出力処理終了後にステップS7の処理に移行する。出力処理の詳細については図5で説明する。またステップS7で入力バッファ13にレコードがないと判定された時には、ステップS8でハッシュ対象リスト11に未入力のレコードがあるか否かが判定され、ある場合にはステップS9でハッシュ対象リスト11からレコード群が入力バッファ13に読み込まれた後に、ステップS2以降の処理が繰り返される。
【0078】
ステップS8でハッシュ対象リスト11に未入力のレコードが存在しないと判定されると、ステップS10でレコードバッファ14にレコードが残っているか否かが判定され、残っている時にはステップS11の出力処理が行われた後にS10以降の処理が繰り返される。ステップS10でレコードバッファ14にレコードが存在しないと判定されると、ステップS12の終了処理が行われた後に処理を終了する。終了処理の詳細については図6で説明する。
【0079】
図5は図4におけるステップS6,S11の出力処理の詳細フローチャートである。同図において処理が開始されると、まずステップS16で出力ハッシュ値メモリ17によって指定されるハッシュ表のエントリにつながれているレコードがあるか否かが判定され、ない場合にはS17で出力ハッシュ値メモリ17の値がインクリメントされ、ステップS18で出力ハッシュ値がハッシュ値の最大値、例えばレコードのキー値を20で割った剰余をハッシュ関数値としてとるものとすれば、その最大値19を越えるか否かが判定され、越えない場合にはステップS16以降の処理が繰り返される。
【0080】
最大ハッシュ値を越える場合には、ここで出力ハッシュ値の値を0に戻してしまうと、ハッシュ済リスト用出力バッファ18に格納され、1つのブロックとして取り扱われるべきレコードに対するハッシュ関数値の順序が後述するようにずれてしまうことになるため、ハッシュ済リスト用出力バッファ18の内容を直ちにハッシュ済リスト21に出力するためにステップS19の出力バッファ出力処理が行われた後に、ステップS20の処理に移行する。出力バッファ出力処理の詳細は図7で説明する。
【0081】
出力バッファ出力処理の終了後にステップS20で出力ハッシュ値の値が0に戻され、ステップS16以降の処理が繰り返される。ステップS16で出力ハッシュ値によって指定されるハッシュ表のエントリにつながれているレコードがあると判定された場合には、ステップS21で出力ハッシュ値によって指定されるハッシュ表のエントリにつながれているレコードがハッシュ済リスト用出力バッファ18に移動させられる。複数のレコードがそのエントリにリンク管理表16を介してつながれている場合には、移動させられたレコードの次にリンクされているレコードがそのハッシュ表のエントリにつながれる。そしてステップS22でハッシュ済リスト用出力バッファ18が一杯か否かが判定され、一杯である場合にはステップS23の出力バッファ出力処理が行われた後に、また一杯でない時には直ちに図4のステップS7、またはS10の処理に戻る。
【0082】
図6は図4のステップS12、すなわち終了処理の詳細フローチャートである。同図において処理が開始されると、まずステップS26でハッシュ済リスト用出力バッファ18にレコードがあるか否かが判定され、レコードがある場合にはそこに残っているレコードをハッシュ済リスト21に出力するための出力バッファ出力処理、すなわちステップS27の処理が行われた後に、残っていない場合には直ちにステップS28の処理に移行する。ステップS28では補助情報リスト用出力バッファ19にレコードが残っているか否かが判定され、残っている場合にはステップS29でその内容が補助情報リスト22に出力された後に、またレコードが残っていない場合には直ちに図4に戻り、全ての処理を終了する。
【0083】
図7はステップS19,S23、およびS27の出力バッファ出力処理の詳細フローチャートである。同図において処理が開始されると、まずステップS31でハッシュ済リスト用出力バッファ18の先頭、および末尾のレコードのハッシュキー値と、ハッシュ済リスト用出力バッファ18の内容が出力されるべきハッシュ済リスト21内のブロックの先頭アドレスとが1組の補助情報レコードとされて、そのレコードが補助情報リスト用出力バッファ19に格納され、ステップS32で補助情報リスト用出力バッファ19が一杯か否かが判定され、一杯である場合にはステップS33でその内容が補助情報リスト22に出力された後に、また一杯でない時には直ちにステップS34でハッシュ済リスト用出力バッファ18の内容がハッシュ済リスト21に出力された後に、図5のステップS20、図4のステップS7,S10、または図6のステップS28に戻る。
【0084】
図8は、図165で説明したグループバイ対象レコード群に対する図4〜図7のフローチャートによるハッシュ処理の経過の説明図である。同図において、ハッシュ表は上から順にハッシュ値の0,1および2を示し、左側の*印は図3の出力ハッシュ値メモリ17の内容(どのハッシュ値か)を示す。
【0085】
図8(1) のグループバイ対象レコード群の最初のレコードが、レコードバッファ14に格納された状態を(2) に示す。すなわち、最初のレコードとしての“5”に対するハッシュ値は2であり、ハッシュ表中の2のエントリから、レコードバッファ14に格納されたレコード“5”をポイントするポインタがつながれる。
【0086】
図8(3) は次のレコードとしての“3”がそのハッシュ関数値0のエントリにつながれた状態を、また(4) はその次のレコード“3”が更にハッシュ表のハッシュ値0のエントリにつながれた状態を示す。このようにハッシュ表の1つのエントリからポイントされるレコードが複数になると、その複数のレコードの間のリンク関係は図3のリンク管理表16によって管理される。その詳細は出願人の次の先願に詳細に記述されている。
【0087】
特開平8−129551(平成8年5月21日公開)、
発明の名称「ハッシュ方式」
図8(5) は、更にその次のレコード“4”がハッシュ表中のハッシュ値1のエントリからポイントされた状態を示す。前述のように、レコードバッファ14の容量がレコード4個分であるとすると、この時点でレコードバッファは一杯になる。
【0088】
そこで図8(6) に示すように1つのレコード、ここでは“3”がレコードバッファ14からハッシュ済リスト用出力バッファ18に出力される。この時出力されるレコードは、出力ハッシュ値メモリ17の内容としてのハッシュ値、ここでは0を持つものである。
【0089】
図8(7) は更にその次のレコード“2”が、ハッシュ表の2のエントリにつながれた状態を示す。この時点でもレコードバッファ14が一杯であるため、出力ハッシュ値メモリ17の値、ここでは0のエントリにつながれているレコード“3”がハッシュ済リスト用出力バッファ18に出力される。
【0090】
図8(8) はその次のレコード“1”がハッシュ表の1のエントリにつながれた状態を示す。この時点でハッシュ済リスト用出力バッファ18に出力すべきレコードは、ハッシュ表の1のエントリから指されるレコード、すなわち入力バッファ13からレコードバッファ14に格納されたばかりのレコード“1”である。これは(7) の時点で出力ハッシュ値メモリ17の値0のエントリにつながれているレコード“3”が出力された後に、そのエントリにつながれているレコードがなくなってしまい、その結果出力ハッシュ値メモリ17の内容がインクリメントされたことによる。
【0091】
以下同様にして処理が実行されるが、図3のハッシュ済リスト用出力バッファ18の内容が一杯になるたびに、その内容は二次記憶装置上のハッシュ済リスト21に出力される。図9は最終的に二次記憶装置内に作られたハッシュ済リストの内容を示す。ブロック番号2に対して格納されているレコードは2個であるが、これは図5のステップS18で出力ハッシュ値が最大ハッシュ値を越えたと判定されると、その時点で出力バッファ出力処理、すなわちステップS19が実行されるためである。図9に対応する補助情報リストは[0,0,1][1,1,2][2,2,2]および[3,0,1]である。
【0092】
グループバイ処理方式の第1の実施例における後半の処理、すなわちハッシュ処理の結果を用いたグループバイ処理について説明する前に、グループバイ処理方式の第2の実施例におけるハッシュ処理について説明する。図10は第2の実施例におけるハッシュ処理の説明図である。第1の実施例における図3と比較すると、処理装置12の内部に出力ブロック数カウンタ20が備えられている点のみが異なっている。これは第1の実施例において、補助情報レコードがブロック番号、ブロック内のレコードの最小ハッシュ値、および最大ハッシュ値からなっているのに対して、この第2の実施例ではブロック番号、ブロック内のレコードの最小ハッシュ値、および補助情報レコードの生成順の番号、すなわち出力ブロックの生成順の番号の3つからなっていることによる。この補助情報レコードの内容、およびそのソートについては後述する。
【0093】
第2の実施例におけるハッシュ処理のフローチャートは図4〜図7とほぼ同様であるが、図7の出力バッファ出力処理に一部異なる部分があり、そのフローチャートを図11に示す。同図において、ステップS36でハッシュ済リスト用出力バッファ18の先頭のレコードのハッシュ値、出力ブロック数カウンタ20のカウント値、ハッシュ済リスト用出力バッファの内容が出力されるべきハッシュ済リスト内のアドレスが組とされて、補助情報レコードが作られ、それが補助情報リスト用出力バッファ19に格納される。その後ステップS37の判定で補助情報用出力バッファ19が一杯の時にはステップS38でその内容が補助情報リスト22に出力された後に、補助情報リスト用出力バッファ19が一杯でない時にはステップS38の処理が行われることなく、ステップS39で出力ブロック数カウンタ20のカウント値がインクリメントされ、ステップS40でハッシュ済リスト用出力バッファ18の内容がハッシュ済リスト21に出力されて、処理が呼び出し元に戻る。
【0094】
第1、および第2の実施例における後半の処理、すなわちグループバイ処理自体について説明する前に、補助情報リストのソートについて説明する。第1、および第2の実施例では、ハッシュ処理によって作成された補助情報リストのソートが実行された後に、グループバイ処理が実行される。
【0095】
一般的にソートの手法のうちで入力データ、すなわちソート対象データの中で等しいキーを持つデータの順序がソートの後でも保存されているものを安定なソートという。すなわち安定なソートでは、同じキーを持つレコードの相対的な順序がソート前とソート後とで変化しないことになるが、この安定なソートはソートの手法のうちの1つのカテゴリに入るものであり、全てのソートが安定なソートというわけではない。
【0096】
そこで、補助情報リストのソートにおいてどのようなソート方式を用いるかが問題となるが、ソートの手法として安定なソートだけに限定せず、一般的なソートの手法を用いることができるようにするためには、第1、および第2の実施例において説明したように、補助情報リストの内容としてブロック番号と最小ハッシュ値の2つの情報だけでは不足であり、第3の情報として最大ハッシュ値、または補助情報レコードの生成順の番号も持たせる必要がある。
【0097】
これに対して補助情報リストのソートの方法として安定なソートを保証できる方法を用いることができる場合には、補助情報レコードが持つべき情報は、例えばブロック番号と最小ハッシュ値の2つだけに限定することができる。このように安定なソートを用いる場合には、補助情報レコードの大きさを小さくできるという利点があるが、補助情報リストのソート方式が安定なソートのみに限定されてしまうという欠点がある。
【0098】
補助情報リストのソート方式として安定なソートを用いる場合には、キーとして最小ハッシュ値を使用してソートを行うことによって、同じキーを持つ補助情報レコードに対しては、ソート後の補助情報リストの順序がソート前の補助情報リストの順序と同じになるようにソートすることが可能となり、その結果ソート後の補助情報リストの順序がソート前のランの中での順序と同じになるようにソートすることができる。
【0099】
これに対して補助情報リストのソート方式として安定なソートのみに限定せず、一般的なソートの方法を用いる場合には、補助情報のうちの第3の情報として最大ハッシュ値、あるいは補助情報レコードの生成順の番号を持たせることによって最小ハッシュ値を第1キー、最大ハッシュ値、あるいは補助情報レコードの生成順の番号を第2キーとしてソートを実行すれば、ソート後の補助情報リストの順序がソート前のランの中での順序と同じになるようにすることが可能である。この第3の情報としての最大ハッシュ値、または補助情報レコードの生成順の番号も補助情報として持たせ、安定なソートを実行しても当然何ら問題は生じない。
【0100】
補助情報リストのソートは、例えば図3の処理装置12の内部に補助情報リストソート装置を備えることによって実行される。安定なソートが保証されている場合には、補助情報リストの内容を補助情報リストソート装置に読み込み、開始ハッシュ値をキーとしてソートを実行し、ソート結果をソートされた補助情報リストとして出力する。
【0101】
補助情報リストのソートについては、第1に補助情報リストソート装置が安定なソートを保証しているか否か、第2に補助情報リストがすでに二次記憶装置に出力されているか否か、第3に二次記憶装置に出力されている補助情報リストが、補助情報リストソート装置が使えるメモリ上に全て格納できるか否かによって、その処理が異なる。補助情報リストが二次記憶装置に出力されていない場合には、補助情報リスト用出力バッファ19の中で、すなわち主記憶上のみでソートを行うことが可能であり、これらに関連して補助情報リストのソート処理については、図12〜図17の6種類の処理フローチャートのいずれかを使用することができる。
【0102】
図12は補助情報リストソート処理(第1の方法)のフローチャートである。このフローチャートは安定なソートが保証され、補助情報リストが二次記憶装置に出力されていない場合の処理フローチャートを示す。この場合には、ステップS41で参照ハッシュ値をキーとしてソートが実行され、ステップS42でソート処理の結果が後述するソートされた補助情報リスト用入力バッファに格納できるか否かが判定され、格納できる場合にはステップS43でその入力バッファにソート結果が格納され、格納できない場合にはステップS44でソート結果が二次記憶装置に出力されて、処理を終了する。ここでソートされた補助情報リスト用入力バッファは、図3の処理装置12の内部、例えば主記憶上に設けられるものであり、一般にその容量はあまり大きくないため、ステップS42の判定が行われる。
【0103】
図13は補助情報リストソート処理(第2の方法)のフローチャートを示す。このフローチャートは安定なソートが保証されておらず、補助情報リストが二次記憶装置に出力されていない場合の処理を示す。この場合は、ステップS46で最小ハッシュ値を第1キー、最大ハッシュ値あるいは補助情報レコード生成順の番号を第2キーとしてソートが実行され、その後図12と同様にステップS42〜S44の処理が実行されて、処理を終了する。
【0104】
図14は補助情報リストソート処理(第3の方法)のフローチャートである。同図は安定なソートが保証され、補助情報リストが二次記憶装置に出力されており、かつ出力されている補助情報リストが、補助情報リストソート装置が使用できるメモリ上に全て格納できる場合に対応する。この場合には、まずステップS48で二次記憶装置上に格納されている補助情報リストがソート装置のメモリ上に展開されて、ステップS49で最小ハッシュ値をキーとしたソートが実行された後に、図12と同様にステップS42〜S44の処理が実行されて、処理を終了する。
【0105】
図15は補助情報リストソート処理(第4の方法)のフローチャートを示す。同図は安定なソートが保証されておらず、補助情報リストが二次記憶装置に出力されており、出力されている補助情報リストの大きさが、補助情報リストソート処理装置が使用できるメモリ上に全て格納できる大きさである場合に対応する。この場合には、図14と同様にステップS48で補助情報リストがメモリ上に展開された後に、図13と同様にステップS46でソートが実行された後に、ステップS42〜S44の処理が実行されて、処理を終了する。
【0106】
図16は補助情報リストソート処理(第5の方法)のフローチャートである。これは安定なソートが保証され、補助情報リストが二次記憶装置に出力されており、出力された補助情報リストが、補助情報リストソート処理装置が使用できるメモリ上にその全てを格納することができない大きさを持つ場合に対応する。この場合には、ステップS51で最小ハッシュ値をキーとして外部ソートが実行され、ステップS52でそのソート結果が二次記憶装置に出力されて、処理を終了する。この場合には外部ソートを行わなければならないほど補助情報リストの大きさが大きいために、図12のステップS42における判定、すなわち補助情報リスト用入力バッファがソート結果を格納できるか否かの判定が実行されず、ステップS52でソート結果が直ちに二次記憶装置に出力される。
【0107】
図17は補助情報リストソート処理(第6の方法)のフローチャートである。これは図16と比較して安定なソートが保証されていない点のみが異なる場合に対応する。この場合には、ステップS53で最小ハッシュ値が第1キー、最大ハッシュ値、または補助情報レコード生成順の番号が第2キーとして使われて、外部ソートが実行され、ステップS52でそのソート結果が二次記憶装置に出力されて、処理を終了する。
【0108】
以上で補助情報リストのソート処理についての説明を終わり、第1の実施例および第2の実施例における後半の処理、すなわちハッシュ処理の結果を用いたグループバイ処理について説明する。この後半の処理、すなわちグループバイ処理自体については、本発明のグループバイ処理方式の一部であることから、以後グループバイ関数処理と呼ぶことにする。図18はこのグループバイ関数処理の全体説明図である。同図において、処理装置12の内部には前述のソートされた補助情報リスト用入力バッファ31と、ランの数に等しい個数のハッシュ済リスト用入力バッファ32a,32b,・・・,32nが設けられ、図12〜図17のいずれかのフローチャートを用いてソートされた結果としての、ソートされた補助情報リスト30はソートされた補助情報リスト用入力バッファ31に読み込まれ、ハッシュ済リスト21の内容はハッシュ済リスト入力バッファ32a〜32nのいずれかに読み込まれ、最小ハッシュ値レコード取り出し装置33、ハッシュ値が等しいレコード群のソート装置34、グループバイ関数演算処理装置35が使用されて最終的な処理結果が出力される。
【0109】
図19はグループバイ処理方式の第1および第2の実施例におけるグループバイ関数処理の全体フローチャートである。同図において処理が開始されると、まずステップS61でハッシュ済リスト用入力バッファ32a〜32nのいずれかに空のものがあるか否かが判定され、ある場合にはステップS62でソートされた補助情報リスト用入力バッファ31にレコードが格納されていないか否かが判定され、格納されていない場合にはステップS63でソートされた補助情報リスト30にレコードがあるか否かが判定され、ある場合にはステップS64でそのリスト30から入力バッファ31にレコード群が読み込まれる。
【0110】
続いてステップS65で補助情報リスト用入力バッファ31から1つのレコードが読み出され、そのレコードが指すブロックがハッシュ済リスト21から読み出されて、ハッシュ済リスト用入力バッファ32a〜32nのうちで空のバッファに格納された後に、ステップS61以降の処理が繰り返される。
【0111】
ステップS62で補助情報リスト用入力バッファにレコードがある場合には、ステップS63,S64の処理を行うことなく、ステップS65の処理に移行し、その後ステップS61以降の処理が繰り返される。
【0112】
ステップS61でハッシュ済リスト入力バッファに空のものがないと判定されるか、ステップS63で補助情報リスト30にレコードがないと判定されると、ステップS66で空でないハッシュ済リスト用入力バッファがあるか否かが判定される。ある場合には、ステップS67で最小ハッシュ値レコード取り出し装置33を用いて、空でないハッシュ済リスト用入力バッファの先頭のレコードの中でハッシュ値が最も小さいものを取り出し、ハッシュ値が等しいレコード群のソート装置34にそのレコードを与える。その後ステップS68で、ソート装置34に入力されたレコードのハッシュ値がその直前に入力されたレコードのハッシュ値と異なるか否かが判定され、異なっていない場合にはステップS61以降の処理が繰り返される。
【0113】
これに対してハッシュ値が異なる場合には、同一のハッシュ値を持つレコードの取り出しが終了したことになるため、ステップS69でソート装置34にたまっているレコードをキー値を用いてソートし、その結果をグループバイ関数演算処理装置35に出力してソート装置34を空にした後に、ステップS70で図20で説明するグループバイ関数演算処理が行われ、その後ステップS61以降の処理が繰り返される。そしてステップS66で空でないハッシュ済リスト用入力バッファが存在しないと判定された時点で、処理を終了する。
【0114】
図20は、図19のステップS70、すなわちグループバイ関数演算処理の詳細フローチャートである。同図を従来例の図166と比較すると、ステップS71〜S80の内容は図166のステップS223〜S232と実質的に同じであり、グループバイ関数演算処理自体は従来例と基本的に同じである。
【0115】
次に本発明におけるグループバイ処理方式の第3の実施例について説明する。図21は第3の実施例におけるハッシュ処理の説明図である。同図を図3に示した第1の実施例におけるハッシュ処理と比較すると、ハッシュ済リスト用出力バッファ18に代わってハッシュ済レコード用出力バッファ38が備えられている点と、ハッシュ済リスト21の代わりにハッシュ済レコード出力領域40が二次記憶装置上に設けられている点とが異なっている。すなわち、第3の実施例ではハッシュ済レコード用出力バッファ38の内容を二次記憶装置に出力するにあたって、ハッシュ済リスト21のように連続した領域に逐次的に書込みを行う代わりに、二次記憶装置上の必ずしも連続でない領域に書込みを行うという点が第1、および第2の実施例と異なる。この第3の実施例は、二次記憶装置上に空き領域が多いにもかかわらず、その空き領域は連続した領域ではないという状況において有効であり、二次記憶装置への書込みは逐次書込みではないが、ハッシュ済レコード用出力バッファ38の内容を一度に出力することにより、書込みデータのサイズを大きく取ることができ、連続領域に対する書込みに近い性能で処理を実行することができる。
【0116】
第3の実施例における処理のフローチャートは、第1の実施例に対する図4〜図7とほぼ同様であるが、図7と出力バッファ出力処理の内容がやや異なり、その処理は図22に示される。
【0117】
図22において処理が開始されると、まずステップS81で図21のハッシュ済レコード出力領域40から、ハッシュ済レコード用出力バッファ18の大きさ分の連続した領域が探され、その領域が確保され、確保された連続領域の先頭アドレスが得られる。ステップS82でハッシュ済レコード用出力バッファ38の先頭、および末尾のレコードに対応するハッシュ値、すなわち最小ハッシュ値および最大ハッシュ値と、ステップS81で得られた領域の先頭アドレスが組とされて補助情報レコードが作られ、それが補助情報リスト用出力バッファ19に格納された後、ステップS83、S84で図7のステップS32,S33と同様の処理が行われた後に、ステップS85でハッシュ済レコード用出力バッファ38の内容が、ハッシュ済レコード出力領域40の中のステップS81で確保された領域に出力されて、処理が呼出し元に戻る。
【0118】
図23は第3の実施例における後半の処理、すなわちグループバイ関数処理の全体説明図である。同図を図18に示した第1、および第2の実施例におけるグループバイ関数処理と比較すると、ハッシュ済リスト21の代わりにハッシュ済レコード出力領域40が二次記憶装置上に設けられている点と、処理装置12内のラン数分のハッシュ済リスト用入力バッファ32a〜32nに代わって、同様のハッシュ済レコード用入力バッファ36a〜36nが設けられている点が異なっている。
【0119】
図24は第3の実施例におけるグループバイ関数処理の全体フローチャートである。同図を第1、第2の実施例における図19と比較すると、ハッシュ済リスト用入力バッファの代わりにハッシュ済レコード用入力バッファという用語が、またハッシュ済リストの代わりにハッシュ済レコード出力領域という用語が用いられている点のみが異なっている。
【0120】
図25はグループバイ処理方式の第4の実施例におけるハッシュ処理の説明図である。この第4の実施例では、第1〜第3の実施例と異なって、補助情報リストの代わりに処理装置12の内部にラン情報メモリ23、およびラン番号メモリ24を備える点に大きな特徴がある。このラン情報としては、二次記憶装置上で1つのランの最初のレコードの格納アドレス、すなわち開始アドレス(開始ブロック番号)と、そのランにおける最後のレコードの格納アドレス、すなわちランの終了アドレス(終了ブロック番号)の2つの情報を持つものである。第1の実施例に対する図3と同様に、二次記憶装置上のハッシュ済リスト21は連続領域であり、その領域への逐次書込みと逐次読出しとによって処理が実行されるために、高速に処理を行うことができる。
【0121】
この第4の実施例においては、補助情報リストの代わりにラン情報が用いられるが、それ以外のハッシュ処理の方法は第1の実施例におけるとほぼ同じであり、処理のフローチャートも第1の実施例に対応する図4〜図7と類似したものとなる。特に図4に対応する全体処理のフローチャートは第1の実施例におけると同じであり、その説明を省略する。
【0122】
ラン情報を使用する点で図5の出力処理、図6の終了処理、および図7の出力バッファ出力処理とは一部異なる処理が生ずる。図26〜図28は第4の実施例におけるこれらの処理のフローチャートである。図26は出力処理のフローチャートであり、図5と比較するとステップS20で出力ハッシュ値の値が0に戻される、すなわち1つのランが終了した時点で、ステップS90の処理が追加され、ラン番号メモリ24に格納されているラン番号のインクリメントが行われる点が異なっている。
【0123】
図27は第4の実施例における終了処理のフローチャートであり、図6と比較すると、補助情報を用いないために、ステップS28、およびS29の処理が不要となる点が異なっている。
【0124】
図28は第4の実施例における出力バッファ出力処理のフローチャートである。このフローチャートでは、補助情報リストを使用しないことに関連して、第1の実施例に対する図7とはかなり異なる処理が行われる。まずステップS91でハッシュ済リスト用出力バッファ18の内容がハッシュ済リスト21に出力された後、ステップS92でラン番号が指すラン情報の開始アドレスが設定されているか否かが判定される。設定されていない場合には、ステップS93でラン情報の開始アドレスとして、ハッシュ済リストの一部として出力されるレコードの二次記憶装置上でのアドレス(ブロック番号)がセットされた後に、また開始アドレスがすでに設定されていると判定された場合には、ステップS93の処理を行うことなく、ステップS94で終了アドレスとして、出力されるレコードの二次記憶装置上でのアドレス(ブロック番号)がセットされて、処理が元に戻る。
【0125】
図28のステップS92〜S94の処理について、図8のハッシュ処理を具体例として説明する。図8(1) のグループバイ対象レコード群のハッシュ処理が開始され、図8(8) まで処理が進んだ時点を考える。ここでラン情報は(開始ブロック番号、終了ブロック番号)の形式で表現するものとし、処理を始める前の初期状態としてラン番号は1、ラン情報は(未設定、未設定)となっていたものとする。(8) の状態で図9に示すようにブロック0にレコード3,3,1が出力される。この出力処理は図28のステップS91において行われる。
【0126】
ステップS92で開始アドレスが設定されているか否かが判定されるが、ここでは未設定であるために、ステップS93でラン情報に開始ブロック番号がセットされ、ラン情報は(0、未設定)となる。更にステップS94でラン情報は(0,0)となる。
【0127】
ハッシュ処理が続いて図8(11)まで処理が進んだとすると、ブロック1にレコード4,2,5がステップS91で出力され、ステップS92ではラン番号1に対応するラン情報の開始アドレスがすでに設定されているため、ステップS93の処理を行うことなく、ステップS94でラン情報の終了アドレスが更新され、ラン番号1のラン情報は(0,1)となる。
【0128】
更にハッシュ処理が続き、図8(13)まで処理が進んだとすると、ステップS91でブロック2にレコード2,5が出力される。すでにラン番号1のラン情報の開始アドレスは設定されているため、ステップS93の処理を行うことなく、ステップS94で終了アドレスが更新され、ラン番号1に対するラン情報は(0,2)となる。
【0129】
ここでラン番号1のランに対するレコードの出力は終了しており、図26のステップS20の後にS90の処理が実行され、ラン番号がインクリメントされて2となる。ラン番号2に対するラン情報は、この時点では(未設定、未設定)である。
【0130】
ハッシュ処理が更に進行し、図8(15)まで処理が進んだとすると、ステップS91でブロック3にレコード3,1が出力される。この時ラン情報の開始アドレスは設定されていないため、ステップS93でラン情報は(3、未設定)となり、ステップS94でラン情報は(3,3)となる。以上の経過を経てラン情報として(0,2)(3,3)が得られる。
【0131】
第4の実施例においても、第1の実施例に対する第2の実施例の関係と同様に、二次記憶装置上の連続領域としてのハッシュ済リスト21の格納領域の代わりに、飛び飛びのレコード格納領域、すなわち図21のハッシュ済レコード出力領域40を利用することも可能である。この場合の処理も、第3の実施例における図26〜図28の処理とほぼ同様であるが、図26に示した出力処理の一部が変更される。
【0132】
図29はこのようにグループバイ処理方式の第4の実施例において、二次記憶装置上の飛び飛びの領域をハッシュ済レコード出力領域として用いる場合の、出力処理のフローチャートである。同図を図26と比較すると、ステップS90でラン番号がインクリメントされ、新しいランに対するレコードの出力を開始する前に、ステップS96でハッシュ済レコード出力領域内で新しいランを格納できる連続領域が探し出された後に、ステップS16以降の処理が実行される点が異なっている。
【0133】
なおここで新しいランを格納できる連続領域を探し出す場合に、新しいランの長さは一般的に不明であるが、ハッシュ対象レコードがハッシュ値としてランダムな値を持つという仮定ができる場合には、ランの長さは例えばレコードバッファ14の容量の2倍の長さを持つようになるといえるが、一般的には2倍の長さには限定されず、その長さは不明である。しかしながら、例えば第1の実施例に対応する図3においても、二次記憶装置上でハッシュ済リスト21が格納される連続領域の長さを明確に決定することが必ずしも困難でないと考えられることに対応して、新しいランを格納できる連続領域を探し出すことは実用的にはそれほど困難でないものと考えられる。
【0134】
図30は第4の実施例において、ハッシュ処理の結果を図25のハッシュ済リスト21、すなわち連続領域の形式でなく、図21のハッシュ済レコード出力領域40のように飛び飛びの領域に出力する場合の出力結果を示す。この場合には、ハッシュ済レコードの出力は、その一部が逐次書込みであるが、全てが逐次書込みである必要はないという特徴がある。すなわち、1つのランの内部では逐次書込みを行い、異なるランは離れた領域にあってよいということになる。
【0135】
図30は、図8と同様のハッシュ動作が行われた場合の、二次記憶装置上へのハッシュ済レコードの出力結果であるが、ラン番号1のランはブロック番号0からブロック番号2までの連続領域に格納されているのに対し、ラン番号2のランはブロック番号10のみの連続領域に格納されている。従ってラン情報は(0,2)および(10,10)である。この場合図25のハッシュ処理と比較すると、ハッシュ済レコードの二次記憶装置への書込みは完全に逐次ではないが、ランの内部では逐次書込みを行うため、高速に処理を行うことが可能であり、二次記憶装置上に空いている連続領域の長さがあまり長くない場合などに有効である。
【0136】
図31は第4の実施例における後半の処理、すなわちグループバイ関数処理の全体説明図である。同図を例えば第3の実施例に対応する図23と比較すると、補助情報リストを使用しないことから、ソートされた補助情報リスト用入力バッファ31の代わりに、ラン情報メモリ23が用いられる点が異なっている。なおここでハッシュ済レコード出力領域40は連続領域のように見えるが、前述のように第4の実施例ではこの領域は連続であっても、非連続であっても、どちらでもよく、図31ではどちらの場合をも表していると考えてよい。
【0137】
図32は第4の実施例におけるグループバイ関数処理の全体フローチャートである。同図において処理が開始されると、まずステップS101で図31のハッシュ済レコード用入力バッファ36a〜36nのそれぞれに1対1に対応するようにランの割り当てが行われ、ステップS102でラン情報の各エントリにある各先頭ブロックのレコードが各ハッシュ済レコード入力バッファに格納された後に、ステップS103〜S109の処理が繰り返される。
【0138】
まずステップS103で空でないハッシュ済レコード用入力バッファがあるか否かが判定され、ある場合にはステップS104で最小ハッシュ値レコード取り出し装置33を用いて、空でないハッシュ済レコード用入力バッファの先頭のレコードの中でハッシュ値が最も小さいものが取り出され、ソート装置34に入力される。そしてステップS105で入力されたレコードのハッシュ値が直前に入力されたもののハッシュ値と異なるか否かが判定され、異なる場合にはステップS106でソート装置34に溜まっているレコードがキー値によってソートされ、その結果がグループバイ関数演算処理装置35に入力され、ソート装置34が空にされた後、ステップS107でグループバイ関数演算処理が行われる。
【0139】
その後ステップS108で空となったハッシュ済リスト用入力バッファがあるか否かが判定され、ある場合にはステップS109でその入力バッファに割り当てられたランにおいて読み出されていないブロックがあれば、その中の先頭ブロックがハッシュ済レコード用入力バッファに格納された後、ステップS103以降の処理が繰り返される。
【0140】
またステップS105で2つのハッシュ値が同じであると判定された場合には、ステップS106,S107の処理を実行することなく、ステップS108の処理に移行する。そしてステップS103で空でないハッシュ済レコード用入力バッファが存在しないと判定された時点で、処理を終了する。
【0141】
ステップS107のグループバイ関数演算処理は、第1の実施例に対応する図20におけると同じであるので、その説明を省略する。
以上のようにグループバイ処理方式の第4の実施例では、ラン数分のハッシュ済レコード用入力バッファが用意され、各ハッシュ済レコード用入力バッファにはそれぞれ1対1に対応する特定のランのブロックのレコードしか格納されないように処理が実行される。それぞれのランのブロックのレコードが、ラン情報に従って順番に格納されるように処理が行われる。ハッシュ済レコード出力領域からハッシュ済レコード用入力バッファへの読込みを行う時に発生する二次記憶装置への読出し要求は連続領域に対するものではないが、1つ1つの読出し要求に対応する領域のサイズを比較的大きく取ることができるため、連続領域に対する読出し要求に近い性能で処理を実行することが可能となる。
【0142】
図33はグループバイ処理方式の第5の実施例におけるハッシュ処理の説明図である。この第5の実施例では、第4の実施例と同様に補助情報リストでなくラン情報が用いられるが、二次記憶装置上のハッシュ済レコード出力領域41としての飛び飛びの領域の1つ1つが必ずしも1つのランの全てのレコードを格納できる大きさを持っていない場合の実施例であり、このためその飛び飛びの領域を連結する情報を用いて、ハッシュ済レコードを出力するものである。
【0143】
グループバイ処理方式の第5の実施例におけるハッシュ処理のフローチャートは、第4の実施例に対する図26〜図28とほぼ同様であるが、出力バッファ出力処理の一部に異なる点があり、この処理のフローチャートを図34に示す。図34を第4の実施例における図28と比較すると、ステップS91に対応するステップS111で出力バッファの内容をハッシュ済レコード出力領域に出力するにあたり、次にレコードを出力すべき領域のアドレスも一緒に出力する点のみが異なっている。
【0144】
図35はグループバイ処理方式の第5の実施例における後半の処理、すなわちグループバイ関数処理の全体説明図である。同図を第4の実施例における図31と比較すると、ハッシュ済レコード出力領域41が飛び飛びの領域であり、しかも各領域の内部に、次のレコードが格納されている領域のアドレスも格納されている点のみが異なっている。
【0145】
図36は第5の実施例におけるグループバイ関数処理の全体フローチャートである。同図を第4の実施例における図32と比較すると、ステップS102に対応するS113でラン情報の各エントリにある各先頭ブロックのレコードが各ハッシュ済レコード用入力バッファに格納されるにあたり、同時に次にレコードを読み込むべきブロックのアドレスが獲得される点と、ステップS109に対応するS114で読み出されていないブロックがハッシュ済レコード用入力バッファに格納されるにあたり、同時に次にレコードを読み込むべきブロックのアドレスが獲得される点が異なっている。
【0146】
以上で本発明におけるグループバイ処理方式の実施例を詳細に説明したが、以下で具体的なグループ対象リストとしてのレコード群を用いて、本発明におけるグループバイ処理方式をさらに詳細に説明する。
【0147】
図37はデータの具体例とともに、本発明におけるグループバイ処理方式の全体処理方式を示す図である。同図は前述の第1の実施例にほぼ対応するものである。
【0148】
図37において処理装置12の内部には、図18におけると同様の構成要素に加えて、ハッシュ処理装置50、補助情報リストソート装置51が備えられ、また図18のグループバイ関数演算処理装置35の具体例としてカウント処理装置52が備えられている。また二次記憶装置53には、ハッシュ処理の後にグループバイ関数処理の対象となるグループバイ対象リスト54が格納され、ハッシュ処理の結果としてのハッシュ済リストを格納する領域21、補助情報リストを格納する領域22、および補助情報リストのソート結果としてのソートされた補助情報リストを格納する領域30が備えられている。
【0149】
図38は図37のハッシュ処理装置50の構成を示す。その構成は、図3と比較して、入力バッファ13とほぼ同様の役割をはたすグループバイ対象リスト用入力バッファ55が、入力バッファ13に代わって備えられている点のみが異なっている。
【0150】
ここで具体的なグループバイ対象データが、次の30個のレコード(キー値のみからなる)によって構成されるリストとして与えられるものとする。
5,3,3,4,2,1,2,3,5,1,2,3,3,2,1,1,5,5,4,1,4,2,3,3,2,5,1,1,3,3
このグループバイ対象データに対するハッシュ処理のためのハッシュ関数として、キーの値のmod3を用いるものとする。すなわちキーの値を3で割り、その時の余りの値をハッシュ関数の値とする。ハッシュ表15のエントリはこれに合わせて3つとなっている。グループバイ対象リスト用入力バッファ55、ハッシュ済リスト用出力バッファ18には共に3つのレコードが格納されるものとし、またレコードバッファ14には4つのレコードが格納されるものとする。これに合わせてリンク管理表16のエントリ数も4となっている。
【0151】
ハッシュ処理の結果として次に示すハッシュ済リストが得られる。
3,3,1,4,2,5,2,2,5,3,3,3,1,1,1,4,1,4,2,5,5,2,5,2,3,3,3,3,1,1
同時に次に示す補助情報リストが得られる。
【0152】
〔10,0,1〕〔11,1,2〕〔12,2,2〕〔13,0,0〕〔14,1,1〕〔15,1,1〕〔16,2,2〕〔17,2,2〕〔18,0,0〕〔19,0,1〕
ここではハッシュ済リストの中にハッシュ値でソートされた次の3つの列が含まれる。
【0153】
3,3,1,4,2,5,2,2,5
3,3,3,1,1,1,4,1,4,2,5,5,2,5,2
3,3,3,3,1,1
列が3つであるためラン数は3である。これらのレコードをそれぞれ対応するハッシュ値で置き替えると、次のようになっている。
【0154】
0,0,1,1,2,2,2,2,2
0,0,0,1,1,1,1,1,1,2,2,2,2,2,2
0,0,0,0,1,1
図39はこのような具体的データを対象とするグループバイ処理の全体フローチャートである。同図において処理が開始されると、ステップS116でハッシュ処理が行われ、ステップS117で補助情報リストのソートが行われ、その結果がソートされた補助情報リスト30に格納され、ステップS118でグループバイ処理が行われて、全体処理を終了する。
【0155】
図40〜図42はハッシュ処理、およびグループバイ処理の詳細フローチャートである。図40はハッシュ処理のフローチャートであり、これを第1の実施例における図4と比較すると、例えばステップS121において図4のステップS1のハッシュ対象リストの代わりに、グループバイ対象リストという用語が用いられている点のみが異なっている。
【0156】
図41はグループバイ処理の全体フローチャートである。同図を第1および第2の実施例に対応する図19と比較すると、ステップS70のグループバイ関数処理の代わりに、ステップS150でカウント処理が行われる点のみが異なっている。
【0157】
図42は図41のステップS150におけるカウント処理の詳細フローチャートである。同図を第1、第2の実施例に対応する図20と比較すると、ステップS72における関数の初期化の代わりに、ステップS152でカウンタが0に初期設定されることと、ステップS73で読み出されたレコードに関して関数演算を実行する代わりに、ステップS153でカウンタのカウント値をインクリメントすることと、ステップS77、およびS79における関数の終了処理に対して、特別な処理が実行されないこととが異なっている。
【0158】
図43はハッシュ処理の経過の説明図である。その意味は図8とほぼ同様であり、図37で説明したグループバイ対象リストの入力に対するハッシュ処理の経過を示す。
【0159】
前半の処理としてのハッシュ処理が終了すると、ハッシュ処理によって得られた補助情報リストのソートが行われる。このソートでは各レコードの2番目の数値である開始ハッシュ値を第1キー、3番目の数値である終了ハッシュ値を第2キーとしてソートを実行することにより、ソートされた補助情報リスト30として次のものが得られる。
【0160】
〔13,0,0〕〔18,0,0〕〔10,0,1〕〔19,0,1〕〔14,1,1〕〔15,1,1〕〔11,1,2〕〔12,2,2〕〔16,2,2〕〔17,2,2〕
ソートされた補助情報リスト30とハッシュ済リスト21とを用いてグループバイ関数処理を行うことができる。ハッシュ済リストの中のランの数が3であるため、ハッシュ済リスト用入力バッファ32a〜32nの数は3個である。最小ハッシュ値レコード取り出し装置33による処理の経過が図44に示される。
【0161】
図44で、最小ハッシュ値を持つレコードが3つの入力バッファの先頭に複数ある場合には、左にある入力バッファにあるレコードが優先して取り出されるものとしているが、この優先順位はどのように付けてもかまわないことは当然である。例えば1番上の左から2番目の状態は、ブロック13の3つのレコードが1つづつ取り出され、空になった状態を示している。その右側の状態は、空になった最も左側の入力バッファにブロック番号19のレコードが格納された状態を示している。更にその右側、最上部の最も右側の状態は、最も左側の入力バッファの先頭レコードのみが新たに取り出された状態を示している。このような処理が続けられることにより、最小ハッシュ値レコード取り出し装置33による処理の結果は以下のようになる。
【0162】
3,3,3,3,3,3,3,3,3,1,1,4,1,4,4,1,1,1,1,2,5,2,5,2,2,2,5,2,5,5
ここで同一のハッシュ値を持つレコードが連続するような結果が得られている。この各レコードに対応するハッシュ値を列で示すと以下のようになる。
【0163】
0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,2,2
2,2,2,2,2,2,2,2,2
この結果はハッシュ値が等しいレコード群のソート装置34に与えられる。これによってハッシュ値が0を持つ9個のレコード(3,3,3,3,3,3,3,3,3) がまずソートされ、次にハッシュ値が1を持つ10個のレコード(1,1,4,1,4,4,1,1,1,1) がソートされ、最後にハッシュ値が2を持つ11個のレコード(2,5,2,5,2,2,2,5,2,5,5) がソートされる。この結果カウント処理装置52に与えられるレコード列は以下のようになる。
【0164】
3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,1,4,4,4,2,2,2,2,2,2,5,5,5,5,5
カウント処理装置52は、入力レコードキーの値が等しい間はカウント値をインクリメントするため、カウント処理装置52の出力は以下のようになる。
【0165】
〔3,9〕〔1,7〕〔4,3〕〔2,6〕〔5,5〕
次に前述の第4の実施例に対応させて具体的なデータのグループバイ処理について説明する。グループバイ対象データは前述のものと同じとし、ハッシュ関数、ハッシュ表15のエントリの数、レコードバッファ14、グループバイ対象リスト用入力バッファ55、およびハッシュ済リスト用出力バッファ18のレコード格納数も前述のものと同じとする。ハッシュ処理の結果として得られるハッシュ済リストも前述のものと同じである。補助情報リストの代わりに得られるラン情報は、図37の補助情報リスト22の内容に対応して次のようになる。
【0166】
(10,12) (13,17) (18,19)
このラン情報は1番目のランがブロック番号10〜12の連続領域、2番目のランがブロック番号13〜17の連続領域、3番目のランがブロック番号18〜19に格納されていることを示す。ハッシュ済リストの中にハッシュ値でソートされた3つの列が得られるが、これも前述のものと同じである。
【0167】
第4の実施例における後半の処理、すなわちグループバイ関数処理について説明する。図45はこの場合の最小ハッシュ値レコード取り出し装置33による処理経過の説明図である。ここではハッシュ済リスト用入力バッファの左から順に1番目のラン、2番目のラン、3番目のランに割り付けてあるが、ハッシュ済リスト入力バッファはランに対して1対1に対応すれば、どのように割り当ててもかまわない。最小ハッシュ値レコードを取り出した結果は次のようになる。
【0168】
3,3,3,3,3,3,3,3,3,1,4,1,1,1,4,1,4,1,1,2,5,2,2,5,2,5,5,2,5,2
ハッシュ値が等しいレコード群のソート装置34にこのレコード列が与えられると、ハッシュ値が0を持つ9個のレコード(3,3,3,3,3,3,3,3,3) がまずソートされ、次にハッシュ値が1を持つ10個のレコード(1,4,1,1,1,4,1,4,1,1) がソートされ、最後にハッシュ値が2を持つ11個のレコード(2,5,2,2,5,2,5,5,2,5,2) がソートされる。この結果カウント処理装置52に与えられるレコード列とその出力は前述のものと同じになる。
【0169】
以上において本発明におけるグループバイ処理方式の実施例を詳細に説明したが、次にこのグループバイ処理方式を利用する、相関のあるデータ組み合わせ数え上げ方式について、その実施例を説明する。
【0170】
図46は本発明の組み合わせ数え上げ方式の実施例の構成の説明図である。同図において、本発明の数え上げ方式は相関があると考えられるアイテムの組み合わせの候補を生成する組み合わせ生成部C(i) 1、グループバイ処理によって組み合わせ候補のトランザクション内部での出現回数をカウントする出現回数数え上げ部G(i) 2、出現回数のカウント値が例えばある指定された範囲にある場合にその組み合わせを相関のある組み合わせとして、ラージアイテムセットL(i) の要素として選択する組み合わせ選択部F3、および組み合わせ選択部F3の出力するラージアイテムセットから、組み合わせ生成部C(i) 1によって組み合わせのプルーニングのために使用されるビットマップb15,b(i−1) 6を生成し、C(i+1) によって使用されるビットマップbi7を追加するビットマップ生成部B(i) 4から構成されている。
【0171】
図46の各部は以下のような処理を実行する。
C(i)
・i=1の時:同一トランザクションに含まれるアイテムを1つづつG(i) へ送る。
【0172】
・i>2の時:同一トランザクションに含まれるi個のアイテムの組み合わせの内、ビットマップフィルタb1,b2,..., b(i−1) により除外されないものをG(i) へ送る。ここで、フィルタb1,b2,..., b(i−1) は図46のb1,..., b(i−1) に相当するが、その詳細は後述する。
【0173】
G(i)
i個のアイテムが並んだレコードを受け取り、そのレコード全体をキーとして後述のグループバイ処理を行い、各グループに含まれるレコードの個数を計算し、レコードにその個数を付け加えたものを出力する。
【0174】

G(i) の出力を受け取り、個数が与えられた条件に合うものを長さiのラージアイテムセットL(i) として出力する。
【0175】
B(i)
Fの出力[アイテム1... アイテムi,個数]を受け取り、ビットマップフィルタbj(1≦j≦i)に対して、[アイテム1,...アイテムi]の中から、全てのj個のアイテムの組み合わせを取り出し、それぞれの組み合わせに対して、Hj(j個のアイテムの組み合わせ)で計算されるビット位置に“1”を立てる操作を行う。この時、b1,..., b(i−1) は既に存在するので、これらを更新する。biはまだ存在しないので、これを新規に作成し、更新を行う。
【0176】
図47は、本発明の組み合わせの数え上げ方式の全体処理フローチャートである。同図において処理が開始されると、まずステップS501でアイテムの組み合わせの個数としてのiが1とされた後に、ステップS502でL(i) 、ここではL(1) が生成される。このL(1) は1個のアイテムのみからなるラージアイテムセットである。
【0177】
その後ステップS503でL(i) の要素数、すなわち組み合わせの数がi+1以上あるか否かが判定される。ここではL(1) のラージアイテムセットの要素数が2個以上であるか否かが判定され、この判定がYesの場合にはステップS504でiの値が1インクリメントされた後に、ステップS502以降の処理が繰り返される。
【0178】
すなわち、ここでは2個のアイテムの組み合わせのうちで出現回数が指定された範囲にあるものの集合としてのラージアイテムセットL(2) の生成がS502で行われ、続いてS503以降の処理が実行される。そしてステップS503でラージアイテムセットL(i) に含まれる要素の数がi+1個以上でないと判定された時点で、処理を終了する。
【0179】
図48はラージアイテムセットL(i) 生成処理のフローチャートである。同図において処理が開始されると、まずステップS510でトランザクションリストTLの先頭のトランザクションが読み出され、ステップS511でi個のアイテムの組み合わせ候補が生成され、その組み合わせ候補、すなわちアイテム1からアイテムiまでの組み合わせが出現回数数え上げ部G(i) に送り込まれ、ステップS512でトランザクションリストが空か否かが判定され、空でない時にはステップS510以降の処理が繰り返され、トランザクションリストの内部から組み合わせ候補の生成とG(i) への送り込みが実行される。
【0180】
ステップS512でトランザクションリストが空になったと判定されると、ステップS513で数え上げ部G(i) から、アイテムの組み合わせ候補とそのトランザクション内での出現回数、すなわち個数が組み合わせ選択部Fに送られ、組み合わせ選択処理が行われる。そしてステップS514で組み合わせ選択結果がラージアイテムセットL(i) として格納され、同時にラージアイテムセットにおけるアイテムの組み合わせの部分がビットマップ生成部B(i) に送られる。ステップS515でビットマップ生成処理が行われ、ステップS516で数え上げ部G(i) にまだレコードが存在するか否かが判定され、存在する場合にはステップS513以降の処理が繰り返され、存在しない場合には処理を終了する。
【0181】
次に具体例を用いて、本発明の組み合わせの数え上げ方式の処理について更に詳細に説明する。ここでは具体例として、以下の4つのトランザクションT1〜T4からなるトランザクションリストTLを対象とする。
【0182】
T1=[1,2,4]     T2=[2,3,6]
T3=[1,4,5,6]   T4=[1,2,4,5]
各トランザクション内部のアイテムは、その番号順にソートされているものとする。ここではラージアイテムセットとして選択される組み合わせ候補の出現回数、すなわち個数のサポートの最小値として50%以上の条件を満たす個数、すなわち全トランザクションの数の4に対して個数が2以上となる条件を満たすものを組み合わせ選択部Fにおける選択条件とする。
【0183】
まず長さ1のアイテムセットL(1) の生成について説明する。図49〜図52は長さ1のアイテムの組み合わせ候補の生成とその出現回数数え上げの説明図である。
【0184】
はじめに、図49でトランザクションT1[1,2,4]を読み込んで、C(1) に入力する。C(1) では、同一トランザクション中に含まれるアイテムを1つづつ、すなわち[1],[2],[4]の3個を出現回数数え上げ部G(1) に入力する。G(1) では、C(1) から入力されたアイテム、[1],[2],[4]の出現個数を数え上げ、アイテムと個数をペアとして保持する。ここでは、アイテム[1],[2],[4]がそれぞれ1回づつ入力されたので、[アイテム,個数]の形式で、[1,1],[2,1],[4,1]を保持する。以上で、T1についての処理が終わる。
【0185】
1つのトランザクションについてG(1) への入力処理が終了したら、C(1) にもどって、次のトランザクションの処理を行う。図50では、T2=[2,3,6]について、[2],[3],[6]の3個のアイテムとしてG(1) に入力する。G(1) では、それまでのトランザクションの処理で数え上げたアイテムと個数に、入力されたアイテムと個数を追加していく。アイテム[2]はT1とT2の両方で入力されるので、T2の処理が終了した段階では、[アイテム,個数]の形式で[2,2]と保持される。
【0186】
以下同様にすべてのトランザクションについて、C(1) でアイテムを1つづつG(1) に入力して、G(1) で数え上げを行う。T4までのトランザクションをすべて処理した結果、[アイテム,個数]の組は、[1,3],[2,3],[4,3],[3,1],[6,2],[5,2]となる。この結果が図9である。
【0187】
すべてのトランザクションについてG(1) への入力処理が終了したら、G(1) から[アイテム,個数]の組を取り出し、Fにおいてサポートの最小値を満たすアイテムを選ぶ。図53〜図58はこの処理の説明図である。図53では、[1,3]の個数3がサポートの最小値50%を満たしているので、これをラージアイテムセットL(1) に登録する。と同時に、B(1) では、アイテム[1]をビットマップb1に登録する。ここではアイテムに対応するビット位置(0〜5)は以下のハッシュ関数H1によって得られる。
【0188】
H1(アイテム1)=アイテム1の番号mod6.
この場合、トランザクション中のユニークなアイテムの総個数が6個であるから、ビットマップのビット数はそれに合わせて6とした。もし、ビットマップがメモリに入らない、あるいは他の処理のためにメモリを予約したいのであれば、ユニークなアイテムの総個数6より小さな値を取ることも可能である。ビットマップのすべてのビットは、最初は“0”である。アイテム[1]にハッシュ関数を適用すると、1mod6=1を得るので、b1の1に対応する上から2番目のビットに“1”を立てる。
【0189】
次に、図54でG(1) から[2,3]を取り出し、アイテム[2]の個数3がサポートの最小値である50%以上の条件を満たすのでラージアイテムセットとして登録する。同時に、2mod6=2であるから、B(1) ではビットマップb1の3番目のビットに“1”を立てる。
【0190】
図55,図57,図58ではアイテムと個数のペアのうち[4,3],[6,2],[5,2]についてサポートの最小値の条件を満たしているので、[4],[6],[5]と個数の組をラージアイテムセットL(1) に登録し、同時にビットマップb1のハッシュ関数値に対応する位置に“1”をセットする。
【0191】
しかし、図56では[3,1]について個数1がサポートの最小値の条件を満たしていないので、ラージアイテムセットL(1) およびビットマップb1への登録は行わない。処理の結果、ビットマップb1={1,1,1,0,1,1}となり、長さ1のラージアイテムセットL(1) ={[1,3],[2,3],[4,3],[6,2],[5,2]}が生成される。
【0192】
次に長さ2のラージアイテムセットL(2) の生成について説明する。図59〜図62はアイテムの組み合わせ候補の数え上げまでの説明図である。長さ2のアイテムの組み合わせ生成では、既に作成されたビットマップb1を利用する。はじめに、図59でトランザクションT1=[1,2,4]を読み込んで、ビットマップb1でセットされたアイテムだけを使って長さ2のアイテムの組み合わせの候補を生成する。ここでは、b1に3つのアイテムが登録されているので、[1],[2],[4]の3つのアイテムから[12],[14],[24]の3つのアイテムの組み合わせの候補を生成し、数え上げ部であるG(2) に入力する。G(2) では、C(2) から入力されたアイテムの組み合わせ[12],[14],[24]の出現個数を数え上げ、アイテムと個数を組として保持する。[12],[14],[24]がそれぞれ1回づつ入力されたので、[アイテム1アイテム2,個数]の形式で、[12,1],[14,1][24,1]を保持する。以上で、T1についての処理が終わる。
【0193】
次のトランザクションT2=[2,3,6]のアイテムをビットマップb1でフィルタリングすると、アイテム[3]が落とされるので、その結果アイテムの組み合わせの候補として[26]1つだけを図60でG(2) に入力する。T3,T4についても同様の処理を行うが、T3とT4にはビットマップb1でふるいにかけられて落とされるアイテムがないので、トランザクションから生成されるすべての長さ2のアイテムの組み合わせを図61、図62でG(2) に入力する。
【0194】
すべてのトランザクションについてG(2) への入力処理が終了したら、G(2) から、[アイテム1アイテム2,個数]を取り出し、Fで個数がサポートの最小値の条件を満たすものを選ぶ。この処理を図63〜図72に示す。[12,2]の個数2がサポートの最小値50%以上の条件を満たしているので、アイテムの組み合わせ候補[12]と出現回数を図63でラージアイテムセットL(2) に登録する。同時に、B(2) では、アイテムの組み合わせ[12]の各アイテム[1],[2]をビットマップb1に登録する。この場合、b1のビット位置1と2に“1”を立てる。さらに、[12]については以下のハッシュ関数H2で計算されるビットマップb2(ビット位置0〜4)のビット位置3に“1”を立てる。
【0195】
H2(アイテム1,アイテム2)=(アイテム1の番号+アイテム2の番号)mod5.
このハッシュ関数H2ではアイテム1アイテム2の番号の和のmod5を取るものを用いたので、ビットマップのビット数はこれに合わせて5とした。最初は、b2のすべての5つのビットは“0”である。なお、ここでのハッシュ関数は例として設定したもので、実際にはハッシュ関数の効率を考慮して任意に設定できる。また、ビットマップの大さもメモリの大きさを考慮に入れて任意に設定できる。b1では常に1つのアイテムで“1”を立てるビット位置を決めるが、b2は2個のアイテムを引数としたハッシュ関数によりビット位置を決定する。
【0196】
図64,図65,図67,図69に示すように、[14,3],[24,2],[15,2],[45,2]についてはサポートの最小値を満たすので、アイテムをラージアイテムセットL(2) に登録し、同時にビットマップb1とb2を更新する。これに対して図66,図68,図70〜図72では、サポートの最小値が満たされていないためアイテムセットへの登録とビットマップの更新は行われない。以上の処理の結果、長さ2のラージアイテムセットL(2) ={[12,2],[14,3],[24,2],[15,2],[45,2]}および、b1={0,1,1,0,1,1},b2={1,1,0,1,1}が生成される。この結果を図72に示す。
【0197】
次にL(3) の生成について説明する。図73〜図76は組み合わせ候補数え上げまでの説明図である。長さ3のアイテムの組み合わせの生成では長さ2のラージアイテムセットを作成した際に生成したビットマップb1およびb2を利用する。まず、トランザクションT1=[1,2,4]を読み込んで、ビットマップb1でセットされたアイテムだけを使って長さ3のアイテムの組み合わせを生成する。ここでは、[1],[2],[4]の3つのアイテムがb1にセットされている。次に長さ2のアイテムの組み合わせ[12],[14],[2,4]がビットマップb2でセットされているかどうかを調べる。この場合、b2[H2(1,2)]=b2[H2(1,4)]=b2[H2(2,4)]=1とすべてセットされていることから[124]を組み合わせ候補としてG(3) に入力する。この処理を図73に示す。
【0198】
図74に示すように、T2=[2,3,6]の場合、b1に[3]がセットされていないためふるい落とされて、トランザクションの長さが2となってしまうため、長さ3のアイテムの組み合わせ候補が生成できずG(3) への入力は行わない。
【0199】
T3=[1,4,5,6]の場合、[1],[4],[5],[6]に対応するb1のビットがセットされているので、4つの長さ3のアイテムの組み合わせ[145],[146],[156],[456]が考えられるが、まず、それぞれについて、ビットマップb2のチェックを行う。[145]の場合、[14],[15],[45]のすべてについて、対応するb2のビットがセットされているので、組み合わせの候補として図75でG(3) に入力する。
【0200】
しかし、[146]の場合、[14],[46]に対応するb2のビットはセットされているが、[16]のビットがセットされていないため、[146]を組み合わせの候補としてG(3) に入力しない。同様に、[456]のすべての2個のアイテムの組み合わせ[45],[46],[56]に対応するb2のビットはセットされているので、[456]は組み合わせの候補としてG(3) に入力されるが、[156]の中の[16]のb2のビットはセットされていないためG(3) に入力されない。
【0201】
T4=[1,2,4,5]についても同様なb1とb2のチェックを行い、組み合わせの候補として[124]と[145]をG(3) に入力する。この結果を図76に示す。
【0202】
この例では、不要な候補の生成をふせぐため、長さ3のアイテムの組み合わせ候補を生成する際に、すべての長さ2のアイテムの組み合わせに対応するビットマップb2のビットをチェックした。この手法は、不要な数え上げを防止するプルーニングとして有効であるが、例えば、処理に使用できるメモリの量が十分でない場合には各アイテムのチェック、あるいは2の長さのアイテムの組み合わせのチェックを行わない方法、すなわちb1あるいはb2を使用しない方法を取ることもできる。また、b1とb2を使うが、チェックする長さ2の組み合わせを少なくする方式もあり得る。
【0203】
例えば、長さ3のアイテムの組み合わせを生成する際に、先頭の長さ2の組み合わせ1つだけをチェックするやり方を考えることが出来る。もちろん、この様にすると、チェック漏れが発生しやすくなり、組み合わせ候補は増大するのでG(3) での処理の負荷は高くなるが、チェック作業の負荷を減らすことが出来る。どの方式が最も高速であるかは、データや、プログラムの実装方式や、システムの特性に依存する。
【0204】
G(3) への入力処理が終了したら、図77〜図79に示すように、G(3) から[アイテム1アイテム2アイテム3,個数]の組を取り出し、Fで個数がサポートの最小値の条件を満たすアイテムを選ぶ。図77では、[124,2]の個数2がサポートの最小値50%以上という条件を満たしているので、これを長さ3のラージアイテムセットL(3) に登録する。同時に、B(3) では、[124]の各アイテム[1],[2],[4]それぞれに対応するビットマップb1のビット位置に“1”を立てる。また、ハッシュ関数H3を用いて、すべての3つのアイテムの組み合わせ[124]に対応するビットマップb3のビット位置に“1”を立てる。
【0205】
H3(アイテム1,アイテム2,アイテム3)=(アイテム1の番号+アイテム2の番号+アイテム3の番号)mod5.
同時に、[124]の中から、2個のアイテムの組み合わせを取り出し、ビットマップb2を生成することもできるが、ここではb1とb3のみを生成する。
【0206】
続いて行われる図78,図79の処理の結果、長さ3のラージアイテムセットL(3) ={[124,2],[145,2]},ビットマップb1={0,1,1,0,1,1},b3={1,0,1,0,0}が生成される。
【0207】
図79では、長さ3のラージアイテムセットL(3) の個数が2個であり、図47のステップS503における終了条件の4個以下となったので処理を終了する。以上で、ラージアイテムセットの数え上げ処理が終了し、この結果を用いて相関ルールを生成することが出来る。
【0208】
以上に述べた実施例では、i>1の場合のC(i) では、各トランザクションに対し、ビットマップb1,b(i−1) により除外されない長さiのアイテムの組み合わせ候補が生成される。それと同時に、各トランザクションに対し、ビットマップb1,b(i−1) により除外されないアイテムのみを新たなトランザクションとして格納することもできる。これにより、i>2の場合、基のトランザクション群TLではなく、C(i−1) で生成されたリダクションされたトランザクション群からアイテムの組み合わせの候補を生成することができる。
【0209】
以上において相関ルール生成のために使用されるデータ組み合わせの数え上げ方式について詳細に説明したが、以上の説明はいわゆる基本相関分析に関するものである。相関分析の手法としては、この基本相関分析に加えて階層相関分析と時系列分析という2つの手法が知られており、本発明はこれら2つの手法に対しても適用可能である。
【0210】
そこで、まず階層相関分析におけるデータ組み合わせの数え上げ方式について、具体例を用いて説明する。図80はこの階層相関分析に用いられるデータの階層構造の具体例の説明図である。同図において、例えばアイテム1のエビス 500mlと、アイテム2のラガー 350mlとの親はアイテム7としてのビールであり、またアイテム7のビール、アイテム8のジュース、アイテム9の牛乳の親はアイテム10の飲料であるという階層構造が示されている。
【0211】
階層相関分析は、分類法が異なるレベルにあるデータを対象とするデータベースのマイニングに有効である。前述の基本相関分析では例えばエビスビール 500mlを購入する顧客が同時に「ピーナッツ」を購入するという相関ルールを生成するこはできるが、より一般化されたルールとしてビールまたは飲料を購入する顧客が同時にピーナッツを購入するというルールを生成することができない。すなわち基本相関分析のみでは、多くのより一般的で重要な相関ルールの生成が行われないことになる可能性がある。
【0212】
階層相関分析と基本相関分析との違いは、アイテムの組み合わせを生成する組み合わせ生成部C(i) の動作にある。基本分析の場合には、それぞれのトランザクションに含まれるアイテムのみで組み合わせが生成されるのに対して、階層分析の場合には階層構造における親データも含めて組み合わせが生成される。しかし1つのアイテムとそのアイテムの親からなる組み合わせは生成されない。
【0213】
例えばトランザクションT=[1,3,5]から生成される2個のアイテムの組み合わせとして、基本分析で生成される[13],[15],[35]以外に、次のアイテムの組み合わせがある。
【0214】
[18],[37],[78],[19],[57],[79],[39],[58],[89]
これに対して生成されないアイテムの組み合わせとしては次のものがある。
【0215】
[17],[110],[710],[38],[310],[810],[59],[510],[910]
階層相関分析のための組み合わせ数え上げ方式の具体例を説明するためのトランザクションリストTLとして、次の4つのトランザクションT1〜T4を用いる。
【0216】
T1=[2,3,5,6],  T2=[1,3,5]
T3=[1,2,4]     T4=[5]
アイテムの組み合わせのうちからラージアイテムセットとして選択される時のサポートの最小値は50%、最大値は75%とする。トランザクションが4個であるため、出現回数が2、および3の場合に、アイテムの組み合わせ候補がラージアイテムセットに入れられることになる。
【0217】
図81〜図84は1個のみのアイテムの組み合わせ候補の数え上げとしてのG(1) までの処理を示す。図81では最初のトランザクション[2,3,5,6]が組み合わせ生成部C(1) に与えられ、図80で説明した親データも含めて1個ずつのアイテムが数え上げ部G(1) に出力され、アイテムの数え上げが行われる。
【0218】
図82においてはトランザクションT2=[1,3,5]が、また図83においてはT3=[1,2,4]が、また図41においては[5]が組み合わせ生成部C(1) に与えられ、親を含む1個ずつのアイテムが数え上げ部G(1) に出力され、1個ずつのアイテムの数え上げが行われ、最終的な結果が図84において得られる。
【0219】
図85〜図94は、図81〜図84で数え上げられた1個ずつのアイテムの出現回数を用いて、出現回数がサポートの値を満たす2、または3であるアイテムをラージアイテムセットの要素として選択し、また選択されたラージアイテムセットに対するビットマップb1を作成する処理の説明図である。図85において、アイテムとその出現回数としての最初のデータ[2,2]が組み合わせ選択部Fに与えられ、これがラージアイテムセットのL(1) の要素として出力されると同時に、そのアイテムの番号2がビットマップ生成部B(1) に与えられ、次のハッシュ関数によって与えられるビット位置に対して“1”が立てられる。
【0220】
アイテム番号mod10
図86においては[7,3]、図88においては[3,2]、図89においては[8,3]、図90においては[5,3]、図91においては[9,3]、図93においては[1,2]がラージアイテムセットL(1) の要素として選択され、ビットマップb1のハッシュ関数によって指定される位置に“1”が立てられる。
【0221】
これに対して図87においては[10,4]、図92においては[6,1]、図94においては[4,1]が組み合わせ選択部Fに与えられるが、これらはサポート値を満たしていないためにラージアイテムセットL(1) としては選択されず、ビットマップb1の対応する位置に“1”が立てられることもない。
【0222】
図95〜図98は、2個のアイテムの組み合わせ候補の数え上げ処理としてのG(2) までの処理の説明図である。図95においては、トランザクションT1=[2,3,5,6]が組み合わせ生成部C(2) に与えられ、図80の階層構造における親も含めて2個のアイテムの組み合わせ候補が数え上げ部G(2) に与えられ、2個のアイテムの組み合わせ候補の出現回数がカウントされる。
【0223】
但しこの場合、2個のアイテムの組み合わせ候補の生成において、図85〜図94で作成されたビットマップb1の対応する位置に“1”が立っていないアイテムは使用されない。例えば階層構造において最上位の親である10は、前述のハッシュ関数によって指定されるビット位置0に“1”が立っていないために、組み合わせ候補を生成するためには使用されない。
【0224】
図96においてはトランザクションT2=[1,3,5]、図97においてはトランザクションT3=[1,2,4]、図98においてはトランザクションT4=[5]が組み合わせ生成部C(2) に与えられ、数え上げ部G(2) によって2個のアイテムの組み合わせ候補の出現回数がカウントされる。ここで例えば図97においてC(2) に入力されるトランザクションに含まれるアイテム4は、対応するビット位置に“1”が立っていないために組み合わせ候補の生成には使用されないが、その親であるアイテム8は使用される。また、図98においてはトランザクションに含まれるアイテムが1個のみであるために、組み合わせ候補の生成は行われない。
【0225】
図99〜図109はG(2) によってカウントされた2個のアイテムの組み合わせ候補のうちで、与えられたサポート条件を満足する組み合わせ候補のラージアイテムセットL(2) の要素としての選択処理の説明図である。図99においては、最初の組み合わせ候補としての[23,1]が組み合わせ選択部Fに入力されるが、ここで出現回数1はサポート条件を満たしていないために、この組み合わせ候補はラージアイテムセットL(2) としては選択されず、従ってビットマップへの登録も行われない。
【0226】
図100においては、組み合わせ候補[28,2]が組み合わせ選択部Fに与えられ、この組み合わせ候補はサポート条件を満たしているため、ラージアイテムセットL(2) の要素として選択されると同時に、ビットマップ生成部B(2) によってビットマップb1、およびb2の対応する位置へのビット設定が行われる。これらのビットマップのうちb1に対して使用されるハッシュ関数は図85〜図94で説明したものと同じである。これに対してb2の設定に対して使用されるハッシュ関数は次のものである。
【0227】
(アイテム1の番号+アイテム2の番号)mod7
図101,図102,図105,図106,図107,図108においては、組み合わせ選択部Fに入力されるアイテムの組み合わせ候補がラージアイテムセットL(2) の要素として選択され、ビットマップb1、およびb2の対応する位置へのビット設定が行われる。
【0228】
これに対して図103,図104,図109においては、組み合わせ選択部Fに入力されるアイテムの組み合わせ候補がサポート条件を満たしていないため、ラージアイテムセットの要素としての選択は行われず、またビットマップの対応するビット位置へのビット設定も行われない。
【0229】
図99〜図109において組み合わせ候補のうち、[58,2]から[19,1]に対する処理は示されていないが、最終的に得られる結果は図109に示されている。
【0230】
図110〜図113は3個のアイテムの組み合わせ候補の数え上げ処理としてのG(3) までの説明図である。図110において、トランザクションT1=[2,3,5,6]が組み合わせ生成部C(3) に入力され、アイテムの親も含めて3個のアイテムの組み合わせ候補が生成され、その出現回数がG(3) によってカウントされる。但しこの場合、ビットマップb1において“1”が立っていないビット位置に対応するアイテム、またはビットマップb2の対応する位置に“1”が立っていない2個のアイテムの組み合わせを含む組み合わせ候補は生成されない。
【0231】
例えば前述と同様にb1において“1”が立っていない階層構造の最上位の親である10は組み合わせ候補の生成には使用されない。また例えば[235]は3個のアイテムのうちの2個のアイテムの組み合わせの中に、図99〜図109で説明したハッシュ関数値に対応する位置に“1”が立っていないものがあるため、組み合わせ候補としては生成されない。
【0232】
同様にして図111においてはT2=[1,3,5]、図112においてはT3=[1,2,4]が組み合わせ生成部C(3) に与えられ、G(3) によって組み合わせ候補のカウントが行われる。
【0233】
これに対して図113においては、トランザクションに含まれるアイテムの個数が1個のみであるため、組み合わせ候補は生成されず、図112において得られた結果がこの処理の最終結果となる。
【0234】
図114〜図119は、図110〜図113で生成された3個のアイテムの組み合わせ候補のうち、サポート条件を満足する候補のラージアイテムセットL(3) への選択処理の説明図である。図114において、選択部Fに入力される最初の組み合わせ候補[357,2]はサポート条件を満足しているため、ラージアイテムセットL(3) の要素として選択されると同時に、3個のアイテムの組み合わせがビットマップ生成部B(3) に与えられ、ビットマップb1、およびb3の設定が行われる。
【0235】
ここでビットマップb1の設定に使用されるハッシュ関数は図85〜図94で説明したものと同じであるが、b3の設定に使用されるハッシュ関数は次に示すものである。
【0236】
(アイテム1の番号+アイテム2の番号+アイテム3の番号)mod7
図115においては組み合わせ候補[379,2]、図116においては[578,2]、図117においては[789,2]が組み合わせ選択部Fに入力され、これらの組み合わせ候補はいずれもサポート条件を満たしているために、ラージアイテムセットL(3) の要素として選択されると同時に、ビットマップへのビット設定が行われる。
【0237】
これに対して図118においての[158,1]、図119においての[128,1]、および図示しない[189,1]の入力時においては、いずれもサポート条件を満たしていないために、ラージアイテムセットの要素としての選択は行われず、ビットマップへの設定も行われない。そしてこの処理の最終結果は図119に示すものとなる。
【0238】
図120〜図123は4つのアイテムの組み合わせ候補の生成と、その数え上げ処理の説明図であるが、図120〜図123のいずれにおいても4つのアイテムの組み合わせ候補は生成されず、組み合わせの数え上げ処理は終了する。
【0239】
相関分析の次の手法としての時系列分析への本発明の応用について説明する。この時系列分析は、長期間に渡る顧客の商品購入パターンの分析に利用される。顧客が第1のアイテムを購入した後に、所定の期間内に第2のアイテムを購入する確率を相関ルールとして知ることができれば、例えば小売業者はより効果的に在庫管理を行うことができる。
【0240】
図124は顧客の長期間に渡る商品購入パターンとしてのシーケンスリストの説明図である。この図で第1のシーケンスは、ある顧客がアイテム3を1個だけ購入した後に、例えば次の日にアイテム8だけを購入し、更にその1週間後にアイテム3と8とを1つずつ購入したというような、商品購入の時系列パターンを示している。
【0241】
図124の説明において、1つのエレメントは前述のトランザクション、すなわち1枚のレシートに対応し、例えばアイテム3と8が同じエレメントに属するということは、アイテム3と8とが同一のレシートに記録されていることを示す。
【0242】
以下に説明する時系列分析においてはサポートの最小値を40%とする。図124のシーケンスリストは5つのシーケンスによって構成されているために、40%のサポートはアイテムの組み合わせの出現回数が2以上であることを示す。
【0243】
時系列分析における組み合わせ生成部C(i) 、数え上げ部G(i) 、組み合わせ選択部F、およびビットマップ生成部B(i) の動作を以下に説明する。
C(i)
・i=1の時:同一シーケンスに含まれるアイテムを1つづつG(i) へ送る。
【0244】
・i>2の時:同一シーケンスに含まれるi個のアイテムの順列の内、ビットマップフィルタb1,b2,..., b(i−1) により除外されないものをG(i) へ送る。
【0245】
G(i)
i個のアイテムの順列を受け取り、後述するグループバイ処理を行い、その個数を付け加えたものを出力する。
【0246】

G(i) の出力を受け取り、個数が与えられた条件に合うものを長さiのラージシーケンスL(i) として出力する。
【0247】
B(i)
Fの出力を受け取り、ビットマップフィルタbj(1≦j≦i)に対して、i個のアイテムの順列の中から、全てのj個のアイテムの順列を取り出し、それぞれの順列に対して、Hj(j個のアイテムの順列)で計算されるビット位置に“1”を立てる操作を行う。
【0248】
j個のアイテムの順列の内部表現は
[アイテム1,..., アイテムj,セパレータ1,..., セパレータ(j−1) ]、
セパレータk(1≦k≦j−1 )はアイテムkとアイテム(k+1) が同じエレメントに属する場合は0、異なるエレメントに属する場合は1となる。
【0249】
ハッシュ関数Hjは、
Hj(アイテム1,..., アイテムj,セパレータ1,..., セパレータ(j−1))=(アイテム1の番号+...,+アイテムjの番号+セパレータ1+...,+セパレータ(j−1))modNとする。Nはビットマップのビット数を示す。
【0250】
図125〜図129はシーケンスリストに属するアイテム1個ずつの出現回数の数え上げ処理としてのG(1) までの処理の説明図である。図125〜図129において、それぞれのシーケンスリストに含まれるアイテムが1個ずつG(1) によってカウントされ、最終結果として図129が得られる。
【0251】
図130〜図137は、図125〜図129で得られたアイテム1個ずつの出現回数のカウント値に対応して、サポート値が40%以上のアイテムを選択してラージシーケンスL(1) を作成する処理と、同時にビットマップb1を作成する処理の説明図である。例えば図130において入力されるアイテム3はその個数が4であり、サポートの最小値を満たしているためラージシーケンスL(1) の要素とされ、同時にそのアイテム3はビットマップ生成部B(1) に与えられ、ビットマップb1へのビット設定が行われる。ここでビットマップb1のビット数は8である。
【0252】
図131〜図134においては、組み合わせ選択部Fに入力されるアイテムの出現回数がサポート値を満たしているため、それらのアイテムはラージシーケンスL(1) に追加されるが、図135〜図137で入力されるアイテムの出現回数はサポート値以下であるためラージシーケンスL(1) への登録は行われず、この処理の最終結果は図137となる。
【0253】
図138〜図142は2個のアイテムの組み合わせ候補の数え上げ処理の説明図である。図138において、C(2) によって、ビットマップb1を用いたフィルタリングによって落とされないアイテムを用いて2つのアイテムの組み合わせ候補が生成され、その出現回数がG(2) によってカウントされる。この組み合わせにおいては、シーケンスにおける順序があるため、また同じエレメントに属するか否かによって、次の3つの組み合わせ候補は別々のものとしてカウントされる。
【0254】
<(3) (8) >,<(8) (3) >,<(3,8) >
図139〜図142において、同様にして2つのアイテムの組み合わせ候補の数え上げが行われるが、例えば図139においてアイテム1,2、および6はビットマップb1によってフィルタリングされ、組み合わせ候補の生成には使用されない。また、図142においてシーケンスに含まれるアイテムは1個のみであるため、2個のアイテムの組み合わせ候補は生成されず、図141が最終結果となる。
【0255】
図143〜図153は、図138〜図142において作成された2個のアイテムの組み合わせ候補のうち、サポート値を満たすものによるラージシーケンスL(2) の作成と、ビットマップ作成部B(2) によるビットマップb1、およびb2生成の処理の説明図である。図143において、組み合わせ選択部Fに入力される2個のアイテムの組み合わせ候補はサポート値を満たしているため、ラージシーケンスL(2) の要素とされ、2つのアイテム3,8に対してハッシュ関数H1、およびH2を用いてビットマップb1、およびb2のビット設定処理が行われる。
【0256】
図144〜図147、図151〜図153において入力される組み合わせ候補はサポート値を満たしていないため、ラージシーケンスへの登録、およびビットマップのビット設定は行われない。
【0257】
これに対して、図148〜図150において組み合わせ生成部Fに入力される組み合わせ候補はサポート値を満たしているため、ラージシーケンスL(2) への登録と、ビットマップのビット設定処理が行われ、この処理の最終結果は図153となる。
【0258】
図154〜図158は、3個のアイテムの組み合わせ候補のG(3) によるカウント処理などの説明図である。図154において最初のシーケンスが組み合わせ生成部C(3) に入力されるが、このシーケンスから生成される3個のアイテムの組み合わせ候補はいずれもビットマップb2によってフィルタリングされ、G(3) には入力されない。
【0259】
図155、および図157において、組み合わせ生成部C(3) によって生成される3個のアイテムの組み合わせ候補1種類だけがそれぞれG(3) によってカウントされる。図156および図158においては、G(3) に入力される組み合わせ候補は存在せず、この処理の最終結果は図158となる。
【0260】
図159は、図154〜図158において作成された3個のアイテムの組み合わせ候補のうちサポート値を満足するものをラージシーケンスL(3) に登録し、同時にビットマップb1、およびb3へビット設定を行う処理の説明図である。3個のアイテムの組み合わせ候補は1種類のみであり、組み合わせ生成部Fによってこの組み合わせ候補がラージシーケンスL(3) とされ、またこの組み合わせ候補の中のアイテムを用いてビットマップb1、およびb3の設定が行われる。ラージシーケンスL(3) の要素数は1個のみとなるため、組み合わせの数え上げ処理はここで終了する。
【0261】
図160は、従来技術の図168および図170におけると同じトランザクションリストを用いて、本発明における基本相関分析のためのアイテム組み合わせの数え上げ処理の流れを説明したものである。図160においては、例えばラージアイテムセットL1に対応して作成されるビットマップb1を用いて、トランザクションリストから組み合わせ生成部C(2) によってフィルタリングされないアイテム2個の組み合わせ候補が生成され、数え上げ部G(2) に与えられる点に本発明の基本的な特徴がある。
【0262】
このビットマップを生成する処理は簡単なものであり、またビットマップの容量は利用できるメモリ量にフィットするサイズにすることが常に可能であるため、図168における結合処理の処理量が大きいという問題点や、図170におけるハッシュ木の容量が利用できるメモリ量よりも大きくなる場合があるというような問題点を解決することが可能である。
【0263】
以上において本発明のデータ組み合わせの数え上げ方式の全体的処理の説明を終了し、次に組み合わせの出現回数数え上げ部G(i) において実行されるグループバイ処理について説明する。
【0264】
アイテムの組み合わせ候補の数え上げには本発明におけるグループバイ処理方式が用いられるが、その処理について具体例を用いて以下に説明する。
アイテムが1個のみのときにその出現回数を数え上げる場合には、アイテム番号をレコードのキー値と考えることによって、前述のグループバイ処理方式をそのまま用いることができるため、ここでは2個のアイテムの組み合わせ候補の数え上げを具体例として説明する。またグループバイ処理の方式としては、前述の第1の実施例と同様にまずハッシュ処理によってハッシュ済みリストと補助情報リストを作成した後に、グループバイ関数処理として同じキーの値を持つレコードの数え上げを行う場合を説明する。
【0265】
入力レコードは次の16件であり、それぞれのレコードはアイテムの番号を2つ持っており、その2つのアイテム番号によってハッシュ処理、およびソート処理におけるキーが決定されるものとする。
【0266】
[12][14][24][26][14][15][16][45]
[46][56][12][14][15][24][25][45]
このような場合のキーの比較方法としては種々考えられるが、ここでは一例として辞書順を用いることにする。すなわち2つのレコードを比較する時、まず1番目のアイテム番号で比較して大小がつけばそのままレコードのキーの大小関係とし、1番目のアイテム番号が等しければ2番目のアイテム番号を比較して、大小がつけばそのままキーの大小関係とし、2番目のアイテム番号も等しければ更に3番目のアイテム番号を比較するというよな比較を続け、最後のアイテム番号まで等しければ2つのレコードのキーの値は等しいとする。そこで例えば[12]と[14]とは、1番目のアイテム番号は等しいが、2番目のアイテム番号で比較することにより、[12]より[14]の方がキーの値が大きいとすることができる。
【0267】
ハッシュ関数としては適当なものを選んで使用することができるが、ここではハッシュ関数の一例として、次式のようにアイテム番号の総和に対して、3で割った時の剰余をとることにする。つまり[12]のハッシュ値は(1+2)mod3=0で0となり、[14]のハッシュ値は(1+4)mod3=2で2となる。
【0268】
【数1】
Figure 2004062898
【0269】
ここでIk はアイテム番号、Rはレコード[I,I,...,Ii 
前述のグループバイ処理方式の第1の実施例と同様に、16件の入力レコードからまずハッシュ済みリストが生成される。この時図3のハッシュ表15の大きさは3、レコードバッファ14は4つ分のレコードの格納領域を持ち、ハッシュ済みリスト用出力バッファ18は3つのレコードを格納できるものとする。
【0270】
図161はハッシュ済みリスト生成処理の経過の説明図である。同図においては、図3の入力バッファ13からレコードバッファ14へのレコードの入力と、レコードバッファ14からハッシュ済みリスト用出力バッファ18へのレコードの出力の経過が示されている。図8におけると同様に、1つのレコードが入力される時、すでに同じハッシュ値を持つレコードがハッシュ表のそのハッシュ値の領域からポイントされている時には、新しく入力されるレコードがハッシュ表からポイントされ、すでに入力されているレコードはリンク管理表によって管理される。
【0271】
図162は、図161の処理結果としてのハッシュ済みリストである。図161と比較することにより、ランとしてはブロック番号0〜2のランと、ブロック番号3〜5の2本のランが得られることが分かる。
【0272】
次に補助情報リストとしては[ブロック番号、先頭レコードのハッシュ値、末尾レコードのハッシュ値]の形を用いるものとすると、次のような補助情報リストが得られる。この補助情報リストの形式はiの値によっては変化しない。
【0273】
[0,0,0][1,1,2][2,2,2][3,0,0][4,0,1][5,1,1]
補助情報リストのソートによって、例えば次のようにソートされた補助情報リストが得られる。このソートの方式もiの値によっては変化しないものとする。
【0274】
[0,0,0][3,0,0][4,0,1][5,1,1][1,1,2][2,2,2]
このソートされた補助情報リストをもとに、図19のグループバイ関数処理が行われるが、まず図18における最小ハッシュ値レコード取り出し装置33による処理を図163に示す。ここではラン数分のハッシュ済みリスト用入力バッファは2個であり、2個のバッファにソートされた補助情報リスト30の順番に従って入力されたレコードから最小ハッシュ値のレコードが1つずつ取り出され、最終的な結果は次のようになる。
【0275】
[24][12][15][45][45][15][24][12][25][16][46][14][26][56][14][14]
この最小ハッシュ値レコード取り出し装置33による処理結果を、ハッシュ値毎に分けると次のようになる。
【0276】
ハッシュ値0:[24][12][15][45][45][15][24][12]
ハッシュ値1:[25][16][46]
ハッシュ値2:[14][26][56][14][14]
このようにハッシュ値が等しいレコードに対しては、図18のソート装置34によるソート処理が行われ、その結果がグループバイ関数演算処理装置35に送られ、数え上げが実行される。このソートでは、前述した辞書式順序を用いることにする。図19では、ハッシュ値0のレコードが取り出されなくなった時点でハッシュ値0のレコードのソートが行われ、ハッシュ値1のレコードが取り出されなくなった時点でハッシュ値1のレコードのソートが行われる。このような動作が最後まで繰り返され、出力されるレコードは[キー値,個数]の形式で表される。キー値はここでは2つのアイテム番号からなる。
【0277】
まずハッシュ値()のレコードのソートが行われ、
[12][12][15][15][24][24][45][45]
というソート結果が得られ、次にグループバイ関数演算処理装置35にソート結果が送られ、
[12,2][15,2][24,2][45,2]
が得られる。次にハッシュ値1のレコードのソートが行われ、
[16][25][46]
というソート結果が得られ、次にグループバイ関数演算処理装置35にソート結果が送られ、
[16,1][25,1][46,1]
が得られる。最後にハッシュ値2のレコードのソートが行われ、
[14][14][26][56]
というソート結果が得られ、次にグループバイ関数演算処理装置35にソート結果が送られ、
[14,3][26,1][56,1]
という結果が得られる。
【0278】
全体では、
[12,2][15,2][24,2][45,2][16,1][25,1][46,1][14,3][26,1][56,1]
という結果が得れる。
【0279】
以上において、本発明におけるグループバイ処理方式と、このグループバイ処理方式を利用したデータ組み合わせ数え上げ方式について実施例を詳細に説明したが、本発明の実施例は以上の記述のみに限定されることはなく、特許請求の範囲の記載に適合する範囲で、様々な他の実施の形態を取ることができることは当然である。
【0280】
(付記1) それぞれ1個以上のアイテムをデータとして含む多数のトランザクションから、アイテム1個ずつまたは2個以上のアイテムの組み合わせのうちで、前記トランザクションの中での出現回数が与えられた条件に適合するアイテム1個ずつまたは2個以上のアイテムの組み合わせとその出現回数とを求めるデータ組み合わせの数え上げ方式において、
アイテム1個ずつを対象とする時は、各トランザクションに含まれるアイテムを1個ずつ出力し、i(≧2)個のアイテムの組み合わせを対象とする時は、該i個のアイテムの組み合わせに含まれるアイテムの部分的組み合わせまたはアイテム1個ずつのうちで、前記出現回数が与えられた条件に適合するアイテムの部分的組み合わせまたはアイテム1個ずつに含まれるアイテムに対応した組み合わせ生成制約条件に適合するアイテムの組み合わせのみを生成して出力する組み合わせ生成手段と、
該組み合わせ生成手段が出力するアイテム1個ずつまたは2個以上のアイテムの組み合わせの全てのトランザクションにおける出現回数をカウントする出現回数カウント手段と、
該出現回数カウント手段が出力するアイテム1個ずつまたは2個以上のアイテムの組み合わせのうちで出現回数が与えられた条件に適合するものを選択する組み合わせ選択手段と、
該組み合わせ選択手段の選択結果に対応した前記生成制約条件を前記組み合わせ生成手段に与える制約条件生成手段とを備えることを特徴とする相関のあるデータ組み合わせの数え上げ方式。
【0281】
(付記2) 前記制約条件生成手段が、前記組み合わせ選択手段の選択結果としてのアイテム1個ずつ、または2個以上のアイテムの組み合わせあるいは部分的組み合わせに含まれるアイテムに対応したビット位置に“1”を立てたビットマップを、前記組み合わせ生成制約条件として生成し、
前記組み合わせ生成手段がi(≧2)個のアイテムの組み合わせの生成にあたって、該ビットマップ上で“1”が立っているビット位置に対応するアイテムの組み合わせのみを生成することを特徴とする付記1記載の相関のあるデータ組み合わせの数え上げ方式。
【0282】
(付記3) 前記制約条件生成手段が、前記ビットマップにおいて前記組み合わせ選択手段の選択結果としてのアイテム1個ずつまたはアイテムの組み合わせに含まれるアイテムの番号に対するハッシュ関数の値に対応したビット位置に“1”を立てることを特徴とする付記2記載の相関のあるデータ組み合わせの数え上げ方式。
【0283】
(付記4) 前記組み合わせ生成手段が、前記トランザクションに含まれるアイテム以外に、アイテムの階層構造においてトランザクションに含まれる他のアイテムの親のアイテムを含めて、アイテムの組み合わせまたはアイテム1個ずつを出力することを特徴とする付記1記載の相関のあるデータ組み合わせの数え上げ方式。
【0284】
(付記5) 前記組み合わせ生成手段が、時間的に連続するトランザクションに含まれるアイテムのシーケンスデータから、該シーケンスにおける順序を維持した形式で、アイテムの組み合わせを生成することを特徴とする付記1記載の相関のあるデータ組み合わせの数え上げ方式。
【0285】
(付記6) 前記出現回数カウント手段が、記憶装置に格納され、それぞれアイテム1個ずつまたは2個以上のアイテムの組み合わせを示すレコードの集合を、各レコードのキーの値に対応するハッシュ関数値によって参照可能な形式に変換するハッシュ処理の結果に基づいて、前記出現回数カウント処理としてのレコードのグループ化と集計演算処理を行うために、
該レコードを一時的に格納するレコード格納手段と、
該レコード格納手段に格納されたレコードの格納位置を示すポインタを、該レコードのキー値から計算されたハッシュ関数値に対応する位置に格納するハッシュ値対応ポインタ格納手段と、
該ハッシュ値対応ポインタ格納手段に格納されているポインタによって指示されるレコードを、該ポインタの格納位置に対応するハッシュ関数値に対応させて前記記憶装置に出力するハッシュ済レコード出力手段と、
該ハッシュ済レコード出力手段によって該記憶装置上に出力されたハッシュ済レコードのリストを読み込み、該リストのレコードをキー値に従ってソートし、該ソート済レコードのリストに対してグループ化と集計演算処理を実行するグループ化と集計演算処理実行手段とを備えることを特徴とする付記1記載の相関のあるデータ組み合わせの数え上げ方式。
【0286】
(付記7) 前記ハッシュ済レコード出力手段が、前記レコード格納手段から前記ハッシュ関数の値に対応して出力された複数のレコードを1つのブロックとして前記記憶装置に出力すると共に、
該ブロックのレコードに対するハッシュ関数値による検索を可能とするための補助情報のリストを格納する補助情報リスト格納手段を更に備えることを特徴とする付記6記載の相関のあるデータ組み合わせの数え上げ方式。
【0287】
(付記8) 前記グループ化と集計演算処理実行手段が、前記複数のレコードを1つのブロックとして前記ハッシュ済レコード出力手段によって出力され、ハッシュ関数値に対応したレコード列としてのハッシュ済リストと、前記補助情報リスト格納手段に格納されている補助情報のリストとを用いてグループ化と集計演算処理を実行することを特徴とする付記7記載の相関のあるデータ組み合わせ数え上げ方式。
【0288】
(付記9) 前記出現回数カウント手段が、記憶装置に格納され、それぞれアイテム1個ずつまたは2個以上のアイテムの組み合わせを示すレコードの集合を、各レコードのキーの値に対応するハッシュ関数値によって参照可能な形式に変換するハッシュ処理の結果に基づいて、前記出現回数カウント処理としてのレコードのグループ化と集計演算処理を行うためのハッシュ処理方式において、
該レコードを一時的に格納するレコード格納手段と、
該レコード格納手段に格納されたレコードの格納位置を示すポインタを、該レコードのキー値から計算されるハッシュ関数値に対応する位置に格納するハッシュ値対応ポインタ格納手段と、
該ハッシュ値対応ポインタ格納手段に格納されているポインタによって指示されるレコードを、該ポインタの格納位置に対応するハッシュ関数値に対応させて前記記憶装置上で必ずしも連続でない領域に出力するハッシュ済レコード出力手段とを備えることを特徴とする付記1記載の相関のあるデータ組み合わせ数え上げ方式。
【0289】
(付記10) 前記ハッシュ済レコード出力手段が、前記レコード格納手段から前記ハッシュ関数値に対応して出力された複数のレコードを1つのブロックとして、前記記憶装置に出力すると共に、
該ブロックのレコードに対するハッシュ関数値による検索を可能とするための補助情報のリストを格納する補助情報リスト格納手段を更に備えることを特徴とする付記9記載の相関のあるデータ組み合わせの数え上げ方式。
【0290】
(付記11) 前記出現回数カウント手段が、記憶装置に格納され、それぞれアイテム1個ずつまたは2個以上のアイテムの組み合わせを示すレコードの集合を、各レコードのキーの値に対応するハッシュ関数値によって参照可能な形式に変換するハッシュ処理の結果に基づいて、前記出現回数カウント処理としてのレコードのグループ化と集計演算処理を行うために、
前記ハッシュ処理の結果として得られ、前記記憶装置上で必ずしも連続でない領域に格納されたハッシュ関数値に対応したレコード列としてのハッシュ済リストと、該ハッシュ関数値に対応して格納された複数のレコードからなるブロック内のレコードを、ハッシュ関数値により検索可能とするための補助情報のリストとを用いてグループ化と集計演算処理を実行するグループ化と集計演算処理実行手段を備えることを特徴とする付記1記載の相関のあるデータ組み合わせの数え上げ方式。
【0291】
(付記12) 前記出現回数カウント手段が、記憶装置に格納され、それぞれアイテム1個ずつまたは2個以上のアイテムの組み合わせを示すレコードの集合を、各レコードのキーの値に対応するハッシュ関数値によって参照可能な形式に変換するハッシュ処理の結果に基づいて、前記出現回数カウント処理としてのレコードのグループ化と集計演算処理を行うために、
該レコードを一時的に格納するレコード格納手段と、
該レコード格納手段に格納されたレコードの格納位置を示すポインタを、該レコードのキー値から計算されたハッシュ関数値に対応する位置に格納するハッシュ値対応ポインタ格納手段と、
該ハッシュ値対応ポインタ格納手段に格納されているポインタによって指示されるレコードを、該ポインタの格納位置に対応するハッシュ関数値に対応させて前記記憶装置上で必ずしも連続でない領域に出力する手段であって、前記レコード格納手段から前記ハッシュ関数値に対応して出力された複数のレコードを1つのブロックとして、該1つのブロックが前記記憶装置上で連続した領域に格納される形式で出力するハッシュ済レコード出力手段と、
該ブロックのレコードに対するハッシュ関数値による検索を可能とするための補助情報のリストを格納する補助情報リスト格納手段と、
前記ハッシュ関数値に対応して前記ハッシュ済レコード出力手段によって出力されたハッシュ済レコード列と、前記補助情報リスト格納手段に格納されている補助情報のリストとを用いてグループ化と集計演算処理を実行するグループ化と集計演算処理実行手段とを備えることを特徴とする付記1記載の相関のあるデータ組み合わせの数え上げ方式。
【0292】
(付記13) 前記出現回数カウント手段が、記憶装置に格納され、それぞれアイテム1個ずつまたは2個以上のアイテムの組み合わせを示すレコードの集合を、各レコードのキーの値に対応するハッシュ関数値によって参照可能な形式に変換するハッシュ処理の結果に基づいて、前記出現回数カウント処理としてのレコードのグループ化と集計演算処理を行うためのハッシュ処理方式において、
該レコードを一時的に格納するレコード格納手段と、
該レコード格納手段に格納されたレコードの格納位置を示すポインタを、該レコードのキー値から計算されたハッシュ関数値に対応する位置に格納するハッシュ値対応ポインタ格納手段と、
該ハッシュ値対応ポインタ格納手段に格納されているポインタによって指示されるレコードを、該ポインタの格納位置に対応するハッシュ関数値に対応させて前記記憶装置に出力するハッシュ済レコード出力手段と、
該ハッシュ済レコード出力手段によるレコードの出力にあたり、ハッシュ関数値を最小値から最大値まで連続的に変化させる間に出力されるランのそれぞれに含まれるレコードの前記記憶装置上の格納アドレスを示すラン情報を格納するラン情報格納手段とを備えることを特徴とする付記1記載の相関のあるデータ組み合わせの数え上げ方式。
【0293】
(付記14) 前記ハッシュ済レコード出力手段が、前記ポインタによって指示されるレコードを前記記憶装置に出力するにあたり、前記1つのランに含まれるレコードを該記憶装置上の連続領域に出力すると共に、異なるランのレコードは必ずしも互いに連続でない領域に格納することを特徴とする付記13記載の相関のあるデータ組み合わせの数え上げ方式。
【0294】
(付記15) 前記出現回数カウント手段が、記憶装置に格納され、それぞれアイテム1個ずつまたは2個以上のアイテムの組み合わせを示すレコードの集合を、各レコードのキーの値に対応するハッシュ関数値によって参照可能な形式に変換するハッシュ処理の結果に基づいて、前記出現回数カウント処理としてのレコードのグループ化と集計演算処理を行うために、
前記ハッシュ処理の結果として得られるハッシュ関数値に対応したレコードが前記記憶装置上で格納されているハッシュ済レコード列の内容と、該ハッシュ関数値に対応したレコードの格納にあたりハッシュ関数値を最小値から最大値まで連続的に変化させる間に格納されるランのそれぞれに含まれるレコードの前記記憶装置上の格納アドレスを示すラン情報とを用いてグループ化と集計演算処理を実行するグループ化と集計演算処理実行手段を備えることを特徴とする付記1記載の相関のあるデータ組み合わせの数え上げ方式。
【0295】
(付記16) 前記出現回数カウント手段が、記憶装置に格納され、それぞれアイテム1個ずつまたは2個以上のアイテムの組み合わせを示すレコードの集合を、各レコードのキーの値に対応するハッシュ関数値によって参照可能な形式に変換するハッシュ処理の結果に基づいて、前記出現回数カウント処理としてのレコードのグループ化と集計演算処理を行うめたに、
該レコードを一時的に格納するレコード格納手段と、
該レコード格納手段に格納されたレコードの格納位置を示すポインタを、該レコードのキー値から計算されたハッシュ関数値に対応する位置に格納するハッシュ値対応ポインタ格納手段と、
該ハッシュ値対応ポインタ格納手段に格納されているポインタによって指示されるレコードを、該ポインタの格納位置に対応するハッシュ関数値に対応させて前記記憶装置に出力するハッシュ済レコード出力手段と、
該ハッシュ済レコード出力手段によるレコードの出力にあたり、ハッシュ関数値を最小値から最大値まで連続的に変化させる間に出力されるランのそれぞれに含まれるレコードの前記記憶装置上の格納アドレスを示すラン情報を格納するラン情報格納手段と、
該ハッシュ済レコード出力手段によって出力されたレコードが前記記憶装置上で格納されているハッシュ済レコード列の内容と、該ラン情報格納手段に格納されているラン情報とを用いてグループ化と集計演算処理を実行するグループ化と集計演算処理実行手段を備えることを特徴とする付記1記載の相関のあるデータ組み合わせの数え上げ方式。
【0296】
(付記17) 前記出現回数カウント手段が、記憶装置に格納され、それぞれアイテム1個ずつまたは2個以上のアイテムの組み合わせを示すレコードの集合を、各レコードのキーの値に対応するハッシュ関数値によって参照可能な形式に変換するハッシュ処理の結果に基づいて、前記出現回数カウント処理としてのレコードのグループ化と集計演算処理を行うために、
該レコードを一時的に格納するレコード格納手段と、
該レコード格納手段に格納されたレコードの格納位置を示すポインタを、該レコードのキー値から計算されたハッシュ関数値に対応する位置に格納するハッシュ値対応ポインタ格納手段と、
該ハッシュ値対応ポインタ格納手段に格納されているポインタによって指示されるレコードを、該ポインタの格納位置に対応するハッシュ関数値に対応させて前記記憶装置に出力する手段であって、ハッシュ関数値を最小値から最大値まで連続的に変化させる間に出力されるランのそれぞれに含まれるレコードを該記憶装置上の連続領域に出力すると共に、異なるランのレコードは必ずしも互いに連続でない領域に格納するハッシュ済レコード出力手段と、
該ランのそれぞれに含まれるレコードの該記憶装置上の格納アドレスを示すラン情報を格納するラン情報格納手段と、
該ハッシュ済レコード出力手段によって出力されたレコードが該記憶装置上で格納されているハッシュ済レコード列の内容と、該ラン情報格納手段に格納されているラン情報とを用いてグループ化と集計演算処理を実行するグループ化と集計演算処理実行手段を備えることを特徴とする付記1記載の相関のあるデータ組み合わせの数え上げ方式。
【0297】
(付記18) 前記出現回数カウント手段が、記憶装置に格納され、それぞれアイテム1個ずつまたは2個以上のアイテムの組み合わせを示すレコードの集合を、各レコードのキーの値に対応するハッシュ関数値によって参照可能な形式に変換するハッシュ処理の結果に基づいて、前記出現回数カウント処理としてのレコードのグループ化と集計演算処理を行うためのハッシュ処理方式において、
該レコードを一時的に格納するレコード格納手段と、
該レコード格納手段に格納されたレコードの格納位置を示すポインタを、該レコードのキー値から計算されたハッシュ関数値に対応する位置に格納するハッシュ値対応ポインタ格納手段と、
該ハッシュ値対応ポインタ格納手段に格納されているポインタによって指示されるレコードを、該ポインタの格納位置に対応するハッシュ関数値に対応させて、前記記憶装置上で必ずしも連続でない領域に出力する手段であって、それぞれ複数のレコードからなる2つの連続すべきブロックがそれぞれ独立の連続領域であって、相互に非連続である領域に格納される時、該2つのブロックの連結関係を示すデータを加えてレコードの出力を行うハッシュ済レコード出力手段と、
該ハッシュ済レコード出力手段によるレコードの出力にあたり、ハッシュ関数値を最小値から最大値まで連続的に変化させる間に出力されるランのそれぞれに含まれるレコードの前記記憶装置上の格納アドレスを示すラン情報を格納するラン情報格納手段とを備えることを特徴とする付記1記載の相関のあるデータ組み合わせの数え上げ方式。
【0298】
(付記19) 前記出現回数カウント手段が、記憶装置に格納され、それぞれアイテム1個ずつまたは2個以上のアイテムの組み合わせを示すレコードの集合を、各レコードのキーの値に対応するハッシュ関数値によって参照可能な形式に変換するハッシュ処理の結果に基づいて、前記出現回数カウント処理としてのレコードのグループ化と集計演算処理を行うために、
前記ハッシュ処理の結果として得られるハッシュ関数値に対応したレコードが前記記憶装置上で格納されているハッシュ済レコード列の内容と、該ハッシュ関数値に対応したレコードの該記憶装置への出力にあたり、ハッシュ関数値を最小値から最大値まで連続的に変化させる間に出力されるランのそれぞれに含まれるレコードの前記記憶装置上の格納アドレスを示すラン情報と、それぞれ複数のレコードからなる2つの連続すべきブロックがそれぞれ独立の連続領域に格納され、該2つの連続領域が相互に非連続となっているとき、該2つのブロックの連結関係を示すデータとに基づいてグループ化と集計演算処理を実行するグループ化と集計演算処理実行手段を備えることを特徴とする付記1記載の相関のあるデータ組み合わせの数え上げ方式。
【0299】
(付記20) 前記出現回数カウント手段が、記憶装置に格納され、それぞれアイテム1個ずつまたは2個以上のアイテムの組み合わせを示すレコードの集合を、各レコードのキーの値に対応するハッシュ関数値によって参照可能な形式に変換するハッシュ処理の結果に基づいて、前記出現回数カウント処理としてのレコードのグループ化と集計演算処理を行うために、
該レコードを一時的に格納するレコード格納手段と、
該レコード格納手段に格納されたレコードの格納位置を示すポインタを、該レコードのキー値から計算されたハッシュ関数値に対応する位置に格納するハッシュ値対応ポインタ格納手段と、
該ハッシュ値対応ポインタ格納手段に格納されているポインタによって指示されるレコードを、該ポインタの格納位置に対応するハッシュ関数値に対応させて、前記記憶装置上で必ずしも連続でない領域に出力する手段であって、それぞれ複数のレコードからなる2つの連続すべきブロックがそれぞれ独立の連続領域であって、相互に非連続である領域に格納される時、該2つのブロックの連結関係を示すデータを加えてレコードの出力を行うハッシュ済レコード出力手段と、
該ハッシュ済レコード出力手段によるレコードの出力にあたり、ハッシュ関数値を最小値から最大値まで連続的に変化させる間に出力されるランのそれぞれに含まれるレコードの前記記憶装置上の格納アドレスを示すラン情報を格納するラン情報格納手段と、
前記ハッシュ済レコード出力手段によって出力され、ハッシュ関数値に対応したレコードが前記記憶装置上で格納されているハッシュ済レコード列の内容と、前記ラン情報格納手段に格納されているラン情報と、前記2つのブロックの連結関係を示すデータとに基づいてグループ化と集計演算処理を実行するグループ化と集計演算処理実行手段を備えることを特徴とする付記1記載の相関のあるデータ組み合わせの数え上げ方式。
【0300】
(付記21) それぞれ1個以上のアイテムをデータとして含む多数のトランザクションから、アイテム1個ずつまたは2個以上のアイテムの組み合わせのうちで、前記トランザクションの中での出現回数が与えられた条件に適合するアイテム1個ずつまたは2個以上のアイテムの組み合わせとその出現回数とを求めるデータ組み合わせの数え上げ方式において、
1個ずつのアイテムを対象とする時は各トランザクションに含まれるアイテムを1個ずつ出力し、i(≧2)個のアイテムの組み合わせを対象とする時は、該i個の組み合わせに含まれるアイテム1個ずつまたはアイテムの部分的組み合わせのうちで、前記出現回数が与えられた条件に適合するアイテムの部分的組み合わせまたはアイテム1個ずつに含まれるアイテムに対応した組み合わせ生成制約条件に適合するアイテムの組み合わせのみを生成して出力するアイテム組み合わせ生成機能と、
該出力されたアイテム1個ずつまたは2個以上のアイテムの組み合わせの全てのトランザクションでの出現回数をカウントする機能と、
該カウントされた出現回数が与えられた条件に適合するアイテム1個ずつまたは2個以上のアイテムの組み合わせを選択する機能と、
該選択結果に対応した前記生成制約条件を前記アイテム組み合わせ生成機能に与える機能とを計算機に実行させるためのプログラムを格納した計算機読み出し可能記憶媒体。
【0301】
(付記22) 前記出力されたアイテム1個ずつまたは2個以上のアイテムの組み合わせの全てのトランザクションでの出現回数をカウントする機能が、記憶装置に格納され、それぞれアイテム1個ずつまたは2個以上のアイテムの組み合わせを示すレコードの集合を、各レコードのキーの値に対応するハッシュ関数値によって参照可能な形式に変換するハッシュ処理の結果に基づいて、前記出現回数カウントの処理としてのレコードのグループ化と集計演算処理を行う機能であって、
該レコードを一時的に記憶する機能と、
該一時的に記憶されたレコードの格納位置を示すポインタを、該レコードのキー値から計算されたハッシュ関数値に対応する位置に記憶する機能と、
該ポインタによって指示されるレコードを、該ポインタの格納位置に対応するハッシュ関数値に対応させて前記記憶装置に出力する機能と、
該記憶装置上に出力されたハッシュ済レコードのリストを読み込み、該リストのレコードをキー値に従ってソートし、該ソート済レコードリストに対してグループ化と集計演算処理を実行する機能とを計算機に実行させるためのプログラムを格納した付記21記載の計算機読出し可能記憶媒体。
【0302】
(付記23) 前記出力されたアイテム1個ずつまたは2個以上のアイテムの組み合わせの全てのトランザクションでの出現回数をカウントする機能が、記憶装置に格納され、それぞれアイテム1個ずつまたは2個以上のアイテムの組み合わせを示すレコードの集合を、各レコードのキーの値に対応するハッシュ関数値によって参照可能な形式に変換するハッシュ処理の結果に基づいて、前記出現回数カウントの処理としてのレコードのグループ化と集計演算処理を行う機能であって、
該レコードを一時的に記憶する機能と、
該一時的に記憶されたレコードの格納位置を示すポインタを、該レコードのキー値から計算されたハッシュ関数値に対応する位置に記憶する機能と、
該ポインタによって指示されるレコードを、該ポインタの格納位置に対応するハッシュ関数値に対応させて前記記憶装置上で必ずしも連続でない領域に出力する機能であって、前記ハッシュ関数値に対応して出力されるべき複数のレコードを1つのブロックとして、該1つのブロックが前記記憶装置上で連続した領域に格納される形式で出力する機能と、
該ブロックのレコードに対するハッシュ関数値による検索を可能とするための補助情報のリストを記憶する機能と、
前記ハッシュ関数値に対応して前記記憶装置に出力されたハッシュ済レコード列と、前記補助情報のリストとを用いてグループ化と集計演算処理を実行する機能とを計算機に実行させるためのプログラムを格納した付記21記載の計算機読出し可能記憶媒体。
【0303】
(付記24) 前記出力されたアイテム1個ずつまたは2個以上のアイテムの組み合わせの全てのトランザクションでの出現回数をカウントする機能が、記憶装置に格納され、それぞれアイテム1個ずつまたは2個以上のアイテムの組み合わせを示すレコードの集合を、各レコードのキーの値に対応するハッシュ関数値によって参照可能な形式に変換するハッシュ処理の結果に基づいて、前記出現回数カウントの処理としてのレコードのグループ化と集計演算処理を行う機能であって、
該レコードを一時的に記憶する機能と、
該一時的に記憶されたレコードの格納位置を示すポインタを、該レコードのキー値から計算されたハッシュ関数値に対応する位置に記憶する機能と、
該ポインタによって指示されるレコードを、該ポインタの格納位置に対応するハッシュ関数値に対応させて前記記憶装置に出力する機能と、
該記憶装置へのレコードの出力にあたり、ハッシュ関数値を最小値から最大値まで連続的に変化させる間に出力されるランのそれぞれに含まれるレコードの前記記憶装置上の格納アドレスを示すラン情報を記憶する機能と、
該出力されたレコードが前記記憶装置上で格納されているハッシュ済レコード列の内容と、前記ラン情報とを用いてグループ化と集計演算処理を実行する機能とを計算機に実行させるためのプログラムを格納した付記21記載の計算機読出し可能記憶媒体。
【0304】
(付記25) 前記出力されたアイテム1個ずつまたは2個以上のアイテムの組み合わせの全てのトランザクションでの出現回数をカウントする機能が、記憶装置に格納され、それぞれアイテム1個ずつまたは2個以上のアイテムの組み合わせを示すレコードの集合を、各レコードのキーの値に対応するハッシュ関数値によって参照可能な形式に変換するハッシュ処理の結果に基づいて、前記出現回数カウントの処理としてのレコードのグループ化と集計演算処理を行う機能であって、
該レコードを一時的に記憶する機能と、
該一時的に記憶されたレコードの格納位置を示すポインタを、該レコードのキー値から計算されたハッシュ関数値に対応する位置に記憶する機能と、
該ポインタによって指示されるレコードを、該ポインタの格納位置に対応するハッシュ関数値に対応させて前記記憶装置に出力する機能であって、ハッシュ関数値を最小値から最大値まで連続的に変化させる間に出力されるランのそれぞれに含まれるレコードを該記憶装置上の連続領域に出力すると共に、異なるランのレコードは必ずしも互いに連続でない領域に出力する機能と、
該ランのそれぞれに含まれるレコードの該記憶装置上の格納アドレスを示すラン情報を記憶する機能と、
該出力されたレコードが該記憶装置上で格納されているハッシュ済レコード列の内容と、該ラン情報とを用いてグループ化と集計演算処理を実行する機能とを計算機に実行させるためのプログラムを格納した付記21記載の計算機読出し格納記憶媒体。
【0305】
(付記26) 前記出力されたアイテム1個ずつまたは2個以上のアイテムの組み合わせの全てのトランザクションでの出現回数をカウントする機能が、記憶装置に格納され、それぞれアイテム1個ずつまたは2個以上のアイテムの組み合わせを示すレコードの集合を、各レコードのキーの値に対応するハッシュ関数値によって参照可能な形式に変換するハッシュ処理の結果に基づいて、前記出現回数カウントの処理としてのレコードのグループ化と集計演算処理を行う機能であって、
該レコードを一時的に記憶する機能と、
該一時的に記憶されたレコードの格納位置を示すポインタを、該レコードのキー値から計算されたハッシュ関数値に対応する位置に記憶する機能と、
該ポインタによって指示されるレコードを、該ポインタの格納位置に対応するハッシュ関数値に対応させて、前記記憶装置上で必ずしも連続でない領域に出力する機能であって、それぞれ複数のレコードからなる2つの連続すべきブロックがそれぞれ独立の連続領域であって、相互に非連続である領域に格納される時、該2つのブロックの連結関係を示すデータを加えてレコードの出力を行う機能と、
該レコードの出力にあたり、ハッシュ関数値を最小値から最大値まで連続的に変化させる間に出力されるランのそれぞれに含まれるレコードの前記記憶装置上の格納アドレスを示すラン情報を記憶する機能と、
前記ハッシュ関数値に対応したレコードが前記記憶装置上で格納されているハッシュ済レコード列の内容と、前記ラン情報と、前記2つのブロックの連結関係を示すデータとに基づいて、グループ化と集計演算処理を実行する機能とを計算機に実行させるためのプログラムを格納した付記21記載の計算機読出し可能記憶媒体。
【0306】
(付記27) それぞれ1個以上のアイテムをデータとして含む多数のトランザクションから、アイテム1個ずつまたは2個以上のアイテムの組み合わせのうちで、前記トランザクションの中での出現回数が与えられた条件に適合するアイテム1個ずつまたは2個以上のアイテムの組み合わせとその出現回数とを求めるデータ組み合わせの数え上げ方法において、
各トランザクションに含まれるアイテムを1個ずつカウントして、該1個ずつのアイテムの全トランザクションでの出現回数をカウントし、
該カウント回数が与えられた条件に適合するアイテムを選択して、該アイテムと該カウント回数との組を数え上げ結果として出力し、
該選択されたアイテムに対応したビット位置に“1”をセットしたビットマップを作成し、
組み合わせ内のアイテムの個数を示すiの値をi=2とし、
該ビットマップに“1”が立っている位置に対応するアイテムを用いて、各トランザクションに含まれるi個のアイテムの組み合わせを生成し、
該生成されたアイテムの組み合わせの全トランザクションでの出現回数をカウントし、
該カウント回数が与えられた条件に適合するアイテムの組み合わせを選択して、該アイテムの組み合わせと該カウント回数との組を数え上げ結果として出力し、
該選択されたアイテムの組み合わせあるいは部分的組み合わせ、または該組み合わせに含まれるアイテム1個ずつに対応したビット位置に“1”をセットしたビットマップを作成し、
iの値をインクリメントして前記i個のアイテムの組み合わせの生成以降の処理を繰り返すことを特徴とする相関のあるデータ組み合わせの数え上げ方法。
【0307】
(付記28) 前記ビットマップの作成において、
前記1個ずつのアイテムのうちで、前記選択されたアイテムに対応したビット位置への“1”のセットと、
前記i個のアイテムの組み合わせのうちで、前記選択されたアイテムの組み合わせあるいは部分的組み合わせ、または該組み合わせに含まれるアイテム1個ずつに対応したビット位置への“1”のセットとにあたり、
アイテム1個ずつ、またはアイテムの組み合わせあるいは部分的組み合わせに含まれるアイテムの番号に対するハッシュ関数の値に対応したビット位置に“1”をセットすることを特徴とする付記27記載の相関のあるデータ組み合わせの数え上げ方法。
【0308】
(付記29) 前記データ組み合わせの数え上げ方法において、
前記トランザクションに含まれるアイテム以外に、アイテムの階層構造においてトランザクションに含まれる他のアイテムの親のアイテムを含めて、前記与えられた条件に適合するアイテム1個ずつまたは2個以上の組み合わせとその出現回数とを求めることを特徴とする付記27記載の相関のあるデータ組み合わせの数え上げ方法。
【0309】
(付記30) 前記データ組み合わせの数え上げ方法において、
前記多数のトランザクションのうちで、時間的に連続するトランザクションに含まれるアイテムのシーケンスデータから、i=2個以上のアイテムの組み合わせに対しては該シーケンスにおける順序を維持した形式で、前記与えられた条件に適合するアイテム1個ずつまたは2個以上の組み合わせとその出現回数とを求めることを特徴とする付記27記載の相関のあるデータ組み合わせの数え上げ方法。
【0310】
【発明の効果】
以上詳細に説明したように、本発明のグループバイ処理においては、二次記憶装置に対するアクセスをできるだけ連続的にするために、比較的大きなブロック単位でのデータの逐次読み出しと逐次書き込みを行うことによってハッシュ処理を高速化し、そのハッシュ処理の結果を用いたグループバイ処理を実行することにより、全体としての高速化が可能となる。次に、本発明のデータ組み合わせ数え上げ方式においては、不必要なアイテムの組み合わせ候補のプルーニングのためにメモリ使用量を小さくできるビットマップを用いることにより、利用可能なメモリ量が小さい場合にもプルーニングが効率よく行え、更にアイテムセットを数え上げるグループバイ処理を高速化することによって、組み合わせの数え上げを効率的に実行することが可能になる。本発明のデータ組み合わせ数え上げ方式を、データベースのマイニング手法としての相関ルールの生成処理に応用することによって、データベースマイニングの効率化に寄与するところが大きい。
【図面の簡単な説明】
【図1】本発明におけるグループバイ処理方式の原理構成を示すブロック図である。
【図2】本発明における相関のあるデータ組み合わせの数え上げ方式の原理構成を示すブロック図である。
【図3】グループバイ処理方式の第1の実施例におけるハッシュ処理を説明する図である。
【図4】グループバイ処理方式の第1の実施例におけるハッシュ処理の全体フローチャートである。
【図5】図4における出力処理の詳細フローチャートである。
【図6】図4における終了処理の詳細フローチャートである。
【図7】図5、図6における出力バッファ出力処理の詳細フローチャートである。
【図8】グループバイ処理方式の第1の実施例におけるハッシュ処理の経過を示す図である。
【図9】グループバイ処理方式の第1の実施例におけるハッシュ処理の結果として得られるハッシュ済リストを示す図である。
【図10】グループバイ処理方式の第2の実施例におけるハッシュ処理の説明図である。
【図11】グループバイ処理方式の第2の実施例における出力バッファ出力処理の詳細フローチャートである。
【図12】補助情報リストソート処理(第1の方法)のフローチャートである。
【図13】補助情報リストソート処理(第2の方法)のフローチャートである。
【図14】補助情報リストソート処理(第3の方法)のフローチャートである。
【図15】補助情報リストソート処理(第4の方法)のフローチャートである。
【図16】補助情報リストソート処理(第5の方法)のフローチャートである。
【図17】補助情報リストソート処理(第6の方法)のフローチャートである。
【図18】グループバイ処理方式の第1および第2の実施例におけるグループバイ関数処理の全体説明図である。
【図19】グループバイ処理方式の第1および第2の実施例におけるグループバイ関数処理の全体フローチャートである。
【図20】図19におけるグループバイ関数演算処理の詳細フローチャートである。
【図21】グループバイ処理方式の第3の実施例におけるハッシュ処理の説明図である。
【図22】グループバイ処理方式の第3の実施例における出力バッファ出力処理の詳細フローチャートである。
【図23】グループバイ処理方式の第3の実施例におけるグループバイ関数処理の全体説明図である。
【図24】グループバイ処理方式の第3の実施例におけるグループバイ関数処理の全体フローチャートである。
【図25】グループバイ処理方式の第4の実施例におけるハッシュ処理の説明図である。
【図26】グループバイ処理方式の第4の実施例のハッシュ処理における出力処理の詳細フローチャートである。
【図27】グループバイ処理方式の第4の実施例のハッシュ処理における終了処理の詳細フローチャートである。
【図28】図26、図27における出力バッファ出力処理の詳細フローチャートである。
【図29】グループバイ処理方式の第4の実施例においてハッシュ済レコード出力領域が非連続である場合の出力処理の詳細フローチャートである。
【図30】グループバイ処理方式の第4の実施例においてハッシュ済レコード出力領域が非連続である場合の出力結果の例を示す図である。
【図31】グループバイ処理方式の第4の実施例におけるグループバイ関数処理の全体説明図である。
【図32】グループバイ処理方式の第4の実施例におけるグループバイ関数処理の全体フローチャートである。
【図33】グループバイ処理方式の第5の実施例におけるハッシュ処理の説明図である。
【図34】グループバイ処理方式の第5の実施例のハッシュ処理における出力バッファ出力処理の詳細フローチャートである。
【図35】グループバイ処理方式の第5の実施例におけるグループバイ関数処理の全体説明図である。
【図36】グループバイ処理方式の第5の実施例におけるグループバイ関数処理の全体フローチャートである。
【図37】具体的データを用いた本発明におけるグループバイ処理方式の実施例の全体説明図である。
【図38】図37におけるハッシュ処理装置の構成を示すブロック図である。
【図39】具体例を用いた本発明におけるグループバイ処理方式の全体処理フローチャートである。
【図40】具体的なデータを用いたハッシュ処理のフローチャートである。
【図41】具体的なデータを用いたグループバイ処理の全体フローチャートである。
【図42】図41におけるカウント処理の詳細フローチャートである。
【図43】具体的なデータを用いたハッシュ処理の経過の説明図である。
【図44】具体的なデータを用いたグループバイ処理方式の第1の実施例に対応する最小ハッシュ値レコード取り出しの経過の説明図である。
【図45】具体的なデータを用いたグループバイ処理方式の第4の実施例に対応する最小ハッシュ値レコード取り出しの経過の説明図である。
【図46】本発明のデータ組み合わせ数え上げ方式の実施例の構成を説明する図である。
【図47】本発明のデータ組み合わせ数え上げ方式の全体処理フローチャートである。
【図48】ラージアイテムセット生成処理のフローチャートである。
【図49】長さ1のアイテムの組み合わせ候補の生成C(1) とその数え上げG(1) とを説明する図(その1)である。
【図50】長さ1のアイテムの組み合わせ候補の生成C(1) とその数え上げG(1) とを説明する図(その2)である。
【図51】長さ1のアイテムの組み合わせ候補の生成C(1) とその数え上げG(1) とを説明する図(その3)である。
【図52】長さ1のアイテムの組み合わせ候補の生成C(1) とその数え上げG(1) とを説明する図(その4)である。
【図53】長さ1のラージアイテムセットL(1) の選択を説明する図(その1)である。
【図54】長さ1のラージアイテムセットL(1) の選択を説明する図(その2)である。
【図55】長さ1のラージアイテムセットL(1) の選択を説明する図(その3)である。
【図56】長さ1のラージアイテムセットL(1) の選択を説明する図(その4)である。
【図57】長さ1のラージアイテムセットL(1) の選択を説明する図(その5)である。
【図58】長さ1のラージアイテムセットL(1) の選択を説明する図(その6)である。
【図59】長さ2のアイテムの組み合わせ候補数え上げG(2) までの処理を説明する図(その1)である。
【図60】長さ2のアイテムの組み合わせ候補数え上げG(2) までの処理を説明する図(その2)である。
【図61】長さ2のアイテムの組み合わせ候補数え上げG(2) までの処理を説明する図(その3)である。
【図62】長さ2のアイテムの組み合わせ候補数え上げG(2) までの処理を説明する図(その4)である。
【図63】長さ2のラージアイテムセットL(2) の選択を説明する図(その1)である。
【図64】長さ2のラージアイテムセットL(2) の選択を説明する図(その2)である。
【図65】長さ2のラージアイテムセットL(2) の選択を説明する図(その3)である。
【図66】長さ2のラージアイテムセットL(2) の選択を説明する図(その4)である。
【図67】長さ2のラージアイテムセットL(2) の選択を説明する図(その5)である。
【図68】長さ2のラージアイテムセットL(2) の選択を説明する図(その6)である。
【図69】長さ2のラージアイテムセットL(2) の選択を説明する図(その7)である。
【図70】長さ2のラージアイテムセットL(2) の選択を説明する図(その8)である。
【図71】長さ2のラージアイテムセットL(2) の選択を説明する図(その9)である。
【図72】長さ2のラージアイテムセットL(2) の選択を説明する図(その10)である。
【図73】長さ3のアイテムの組み合わせ候補数え上げG(3) までの処理を説明する図(その1)である。
【図74】長さ3のアイテムの組み合わせ候補数え上げG(3) までの処理を説明する図(その2)である。
【図75】長さ3のアイテムの組み合わせ候補数え上げG(3) までの処理を説明する図(その3)である。
【図76】長さ3のアイテムの組み合わせ候補数え上げG(3) までの処理を説明する図(その4)である。
【図77】長さ3のラージアイテムセットL(3) の選択を説明する図(その1)である。
【図78】長さ3のラージアイテムセットL(3) の選択を説明する図(その2)である。
【図79】長さ3のラージアイテムセットL(3) の選択を説明する図(その3)である。
【図80】階層相関分析に用いられるデータの階層構造の具体例を示す図である。
【図81】階層相関分析におけるG(1) までの処理を説明する図(その1)である。
【図82】階層相関分析におけるG(1) までの処理を説明する図(その2)である。
【図83】階層相関分析におけるG(1) までの処理を説明する図(その3)である。
【図84】階層相関分析におけるG(1) までの処理を説明する図(その4)である。
【図85】階層相関分析におけるL(1) の選択を説明する図(その1)である。
【図86】階層相関分析におけるL(1) の選択を説明する図(その2)である。
【図87】階層相関分析におけるL(1) の選択を説明する図(その3)である。
【図88】階層相関分析におけるL(1) の選択を説明する図(その4)である。
【図89】階層相関分析におけるL(1) の選択を説明する図(その5)である。
【図90】階層相関分析におけるL(1) の選択を説明する図(その6)である。
【図91】階層相関分析におけるL(1) の選択を説明する図(その7)である。
【図92】階層相関分析におけるL(1) の選択を説明する図(その8)である。
【図93】階層相関分析におけるL(1) の選択を説明する図(その9)である。
【図94】階層相関分析におけるL(1) の選択を説明する図(その10)である。
【図95】階層相関分析におけるG(2) までの処理を説明する図(その1)である。
【図96】階層相関分析におけるG(2) までの処理を説明する図(その2)である。
【図97】階層相関分析におけるG(2) までの処理を説明する図(その3)である。
【図98】階層相関分析におけるG(2) までの処理を説明する図(その4)である。
【図99】階層相関分析におけるL(2) の選択を説明する図(その1)である。
【図100】階層相関分析におけるL(2) の選択を説明する図(その2)である。
【図101】階層相関分析におけるL(2) の選択を説明する図(その3)である。
【図102】階層相関分析におけるL(2) の選択を説明する図(その4)である。
【図103】階層相関分析におけるL(2) の選択を説明する図(その5)である。
【図104】階層相関分析におけるL(2) の選択を説明する図(その6)である。
【図105】階層相関分析におけるL(2) の選択を説明する図(その7)である。
【図106】階層相関分析におけるL(2) の選択を説明する図(その8)である。
【図107】階層相関分析におけるL(2) の選択を説明する図(その9)である。
【図108】階層相関分析におけるL(2) の選択を説明する図(その10)である。
【図109】階層相関分析におけるL(2) の選択を説明する図(その11)である。
【図110】階層相関分析におけるG(3) までの処理を説明する図(その1)である。
【図111】階層相関分析におけるG(3) までの処理を説明する図(その2)である。
【図112】階層相関分析におけるG(3) までの処理を説明する図(その3)である。
【図113】階層相関分析におけるG(3) までの処理を説明する図(その4)である。
【図114】階層相関分析におけるL(3) の選択を説明する図(その1)である。
【図115】階層相関分析におけるL(3) の選択を説明する図(その2)である。
【図116】階層相関分析におけるL(3) の選択を説明する図(その3)である。
【図117】階層相関分析におけるL(3) の選択を説明する図(その4)である。
【図118】階層相関分析におけるL(3) の選択を説明する図(その5)である。
【図119】階層相関分析におけるL(3) の選択を説明する図(その6)である。
【図120】階層相関分析におけるG(4) までの処理を説明する図(その1)である。
【図121】階層相関分析におけるG(4) までの処理を説明する図(その2)である。
【図122】階層相関分析におけるG(4) までの処理を説明する図(その3)である。
【図123】階層相関分析におけるG(4) までの処理を説明する図(その4)である。
【図124】時系列分析におけるシーケンスリストの例を説明する図である。
【図125】時系列分析におけるG(1) までの処理を説明する図(その1)である。
【図126】時系列分析におけるG(1) までの処理を説明する図(その2)である。
【図127】時系列分析におけるG(1) までの処理を説明する図(その3)である。
【図128】時系列分析におけるG(1) までの処理を説明する図(その4)である。
【図129】時系列分析におけるG(1) までの処理を説明する図(その5)である。
【図130】時系列分析におけるL(1) の選択を説明する図(その1)である。
【図131】時系列分析におけるL(1) の選択を説明する図(その2)である。
【図132】時系列分析におけるL(1) の選択を説明する図(その3)である。
【図133】時系列分析におけるL(1) の選択を説明する図(その4)である。
【図134】時系列分析におけるL(1) の選択を説明する図(その5)である。
【図135】時系列分析におけるL(1) の選択を説明する図(その6)である。
【図136】時系列分析におけるL(1) の選択を説明する図(その7)である。
【図137】時系列分析におけるL(1) の選択を説明する図(その8)である。
【図138】時系列分析におけるG(2) までの処理を説明する図(その1)である。
【図139】時系列分析におけるG(2) までの処理を説明する図(その2)である。
【図140】時系列分析におけるG(2) までの処理を説明する図(その3)である。
【図141】時系列分析におけるG(2) までの処理を説明する図(その4)である。
【図142】時系列分析におけるG(2) までの処理を説明する図(その5)である。
【図143】時系列分析におけるL(2) の選択を説明する図(その1)である。
【図144】時系列分析におけるL(2) の選択を説明する図(その2)である。
【図145】時系列分析におけるL(2) の選択を説明する図(その3)である。
【図146】時系列分析におけるL(2) の選択を説明する図(その4)である。
【図147】時系列分析におけるL(2) の選択を説明する図(その5)である。
【図148】時系列分析におけるL(2) の選択を説明する図(その6)である。
【図149】時系列分析におけるL(2) の選択を説明する図(その7)である。
【図150】時系列分析におけるL(2) の選択を説明する図(その8)である。
【図151】時系列分析におけるL(2) の選択を説明する図(その9)である。
【図152】時系列分析におけるL(2) の選択を説明する図(その10)である。
【図153】時系列分析におけるL(2) の選択を説明する図(その11)である。
【図154】時系列分析におけるG(3) までの処理を説明する図(その1)である。
【図155】時系列分析におけるG(3) までの処理を説明する図(その2)である。
【図156】時系列分析におけるG(3) までの処理を説明する図(その3)である。
【図157】時系列分析におけるG(3) までの処理を説明する図(その4)である。
【図158】時系列分析におけるG(3) までの処理を説明する図(その5)である。
【図159】時系列分析におけるL(3) の選択を説明する図である。
【図160】基本相関分析における本発明の処理の流れを説明する図である。
【図161】アイテム組み合わせ数え上げ処理におけるハッシュ済みリスト生成処理の経過を説明する図である。
【図162】図161の処理結果としてのハッシュ済みリストを示す図である。
【図163】図162のハッシュ済みリストに対する最小ハッシュ値レコード取り出し処理の経過を示す図である。
【図164】ソート処理に基づくグループバイ処理の従来例のフローチャートである。
【図165】図164のフローチャートを用いた具体的な処理経過の説明図である。
【図166】ハッシュ処理に基づくグループバイ処理の従来例のフローチャートである。
【図167】図166のフローチャートを用いた具体的な処理経過の説明図である。
【図168】SETMアルゴリズムにおける具体的な処理の流れを説明する図である。
【図169】SETMアルゴリズムの処理における各機能ブロック処理内容を示す図である。
【図170】アプリオリ・アルゴリズムにおける具体的な処理の流れを説明する図である。
【図171】アプリオリ・アルゴリズムの処理における各機能ブロックの内容を説明する図である。
【符号の説明】
1  組み合わせ生成部
2  出現回数数え上げ部
3  組み合わせ選択部
4  ビットマップ生成部
5,6  ビットマップ
11  ハッシュ対象リスト
12  処理装置
13  入力バッファ
14  レコードバッファ
15  ハッシュ表
16  リンク管理表
17  出力ハッシュ値メモリ
18  ハッシュ済リスト用出力バッファ
19  補助情報リスト用出力バッファ
20  出力ブロック数カウンタ
21  ハッシュ済リスト
22  補助情報リスト
23  ラン情報メモリ
24  ラン番号メモリ
30  ソートされた補助情報リスト
31  ソートされた補助情報リスト用入力バッファ
32a〜32n  ハッシュ済リスト用入力バッファ
33  最小ハッシュ値レコード取り出し装置
34  ハッシュ値が等しいレコード群のソート装置
35  グループバイ関数演算処理装置
36a〜36n  ハッシュ済レコード用入力バッファ
38  ハッシュ済レコード用出力バッファ
40,41  ハッシュ済レコード出力領域

Claims (17)

  1. それぞれ1個以上のアイテムをデータとして含む多数のトランザクションから、アイテム1個ずつまたは2個以上のアイテムの組み合わせのうちで、前記トランザクションの中での出現回数が与えられた条件に適合するアイテム1個ずつまたは2個以上のアイテムの組み合わせとその出現回数とを求めるデータ組み合わせの数え上げ方式において、
    アイテム1個ずつを対象とする時は、各トランザクションに含まれるアイテムを1個ずつ出力し、i(≧2)個のアイテムの組み合わせを対象とする時は、該i個のアイテムの組み合わせに含まれるアイテムの部分的組み合わせまたはアイテム1個ずつのうちで、前記出現回数が与えられた条件に適合するアイテムの部分的組み合わせまたはアイテム1個ずつに含まれるアイテムに対応した組み合わせ生成制約条件に適合するアイテムの組み合わせのみを生成して出力する組み合わせ生成手段と、
    該組み合わせ生成手段が出力するアイテム1個ずつまたは2個以上のアイテムの組み合わせの全てのトランザクションにおける出現回数をカウントする出現回数カウント手段と、
    該出現回数カウント手段が出力するアイテム1個ずつまたは2個以上のアイテムの組み合わせのうちで出現回数が与えられた条件に適合するものを選択する組み合わせ選択手段と、
    該組み合わせ選択手段の選択結果に対応した前記生成制約条件を前記組み合わせ生成手段に与える制約条件生成手段とを備えることを特徴とする相関のあるデータ組み合わせの数え上げ方式。
  2. 前記制約条件生成手段が、前記組み合わせ選択手段の選択結果としてのアイテム1個ずつ、または2個以上のアイテムの組み合わせあるいは部分的組み合わせに含まれるアイテムに対応したビット位置に“1”を立てたビットマップを、前記組み合わせ生成制約条件として生成し、
    前記組み合わせ生成手段がi(≧2)個のアイテムの組み合わせの生成にあたって、該ビットマップ上で“1”が立っているビット位置に対応するアイテムの組み合わせのみを生成することを特徴とする請求項1記載の相関のあるデータ組み合わせの数え上げ方式。
  3. 前記組み合わせ生成手段が、前記トランザクションに含まれるアイテム以外に、アイテムの階層構造においてトランザクションに含まれる他のアイテムの親のアイテムを含めて、アイテムの組み合わせまたはアイテム1個ずつを出力することを特徴とする請求項1記載の相関のあるデータ組み合わせの数え上げ方式。
  4. 前記組み合わせ生成手段が、時間的に連続するトランザクションに含まれるアイテムのシーケンスデータから、該シーケンスにおける順序を維持した形式で、アイテムの組み合わせを生成することを特徴とする請求項1記載の相関のあるデータ組み合わせの数え上げ方式。
  5. 前記出現回数カウント手段が、記憶装置に格納され、それぞれアイテム1個ずつまたは2個以上のアイテムの組み合わせを示すレコードの集合を、各レコードのキーの値に対応するハッシュ関数値によって参照可能な形式に変換するハッシュ処理の結果に基づいて、前記出現回数カウント処理としてのレコードのグループ化と集計演算処理を行うために、
    該レコードを一時的に格納するレコード格納手段と、
    該レコード格納手段に格納されたレコードの格納位置を示すポインタを、該レコードのキー値から計算されたハッシュ関数値に対応する位置に格納するハッシュ値対応ポインタ格納手段と、
    該ハッシュ値対応ポインタ格納手段に格納されているポインタによって指示されるレコードを、該ポインタの格納位置に対応するハッシュ関数値に対応させて前記記憶装置に出力するハッシュ済レコード出力手段と、
    該ハッシュ済レコード出力手段によって該記憶装置上に出力されたハッシュ済レコードのリストを読み込み、該リストのレコードをキー値に従ってソートし、該ソート済レコードのリストに対してグループ化と集計演算処理を実行するグループ化と集計演算処理実行手段とを備えることを特徴とする請求項1記載の相関のあるデータ組み合わせの数え上げ方式。
  6. 前記出現回数カウント手段が、記憶装置に格納され、それぞれアイテム1個ずつまたは2個以上のアイテムの組み合わせを示すレコードの集合を、各レコードのキーの値に対応するハッシュ関数値によって参照可能な形式に変換するハッシュ処理の結果に基づいて、前記出現回数カウント処理としてのレコードのグループ化と集計演算処理を行うためのハッシュ処理方式において、
    該レコードを一時的に格納するレコード格納手段と、
    該レコード格納手段に格納されたレコードの格納位置を示すポインタを、該レコードのキー値から計算されるハッシュ関数値に対応する位置に格納するハッシュ値対応ポインタ格納手段と、
    該ハッシュ値対応ポインタ格納手段に格納されているポインタによって指示されるレコードを、該ポインタの格納位置に対応するハッシュ関数値に対応させて前記記憶装置上で必ずしも連続でない領域に出力するハッシュ済レコード出力手段とを備えることを特徴とする請求項1記載の相関のあるデータ組み合わせ数え上げ方式。
  7. 前記出現回数カウント手段が、記憶装置に格納され、それぞれアイテム1個ずつまたは2個以上のアイテムの組み合わせを示すレコードの集合を、各レコードのキーの値に対応するハッシュ関数値によって参照可能な形式に変換するハッシュ処理の結果に基づいて、前記出現回数カウント処理としてのレコードのグループ化と集計演算処理を行うために、
    前記ハッシュ処理の結果として得られ、前記記憶装置上で必ずしも連続でない領域に格納されたハッシュ関数値に対応したレコード列としてのハッシュ済リストと、該ハッシュ関数値に対応して格納された複数のレコードからなるブロック内のレコードを、ハッシュ関数値により検索可能とするための補助情報のリストとを用いてグループ化と集計演算処理を実行するグループ化と集計演算処理実行手段を備えることを特徴とする請求項1記載の相関のあるデータ組み合わせの数え上げ方式。
  8. 前記出現回数カウント手段が、記憶装置に格納され、それぞれアイテム1個ずつまたは2個以上のアイテムの組み合わせを示すレコードの集合を、各レコードのキーの値に対応するハッシュ関数値によって参照可能な形式に変換するハッシュ処理の結果に基づいて、前記出現回数カウント処理としてのレコードのグループ化と集計演算処理を行うために、
    該レコードを一時的に格納するレコード格納手段と、
    該レコード格納手段に格納されたレコードの格納位置を示すポインタを、該レコードのキー値から計算されたハッシュ関数値に対応する位置に格納するハッシュ値対応ポインタ格納手段と、
    該ハッシュ値対応ポインタ格納手段に格納されているポインタによって指示されるレコードを、該ポインタの格納位置に対応するハッシュ関数値に対応させて前記記憶装置上で必ずしも連続でない領域に出力する手段であって、前記レコード格納手段から前記ハッシュ関数値に対応して出力された複数のレコードを1つのブロックとして、該1つのブロックが前記記憶装置上で連続した領域に格納される形式で出力するハッシュ済レコード出力手段と、
    該ブロックのレコードに対するハッシュ関数値による検索を可能とするための補助情報のリストを格納する補助情報リスト格納手段と、
    前記ハッシュ関数値に対応して前記ハッシュ済レコード出力手段によって出力されたハッシュ済レコード列と、前記補助情報リスト格納手段に格納されている補助情報のリストとを用いてグループ化と集計演算処理を実行するグループ化と集計演算処理実行手段とを備えることを特徴とする請求項1記載の相関のあるデータ組み合わせの数え上げ方式。
  9. 前記出現回数カウント手段が、記憶装置に格納され、それぞれアイテム1個ずつまたは2個以上のアイテムの組み合わせを示すレコードの集合を、各レコードのキーの値に対応するハッシュ関数値によって参照可能な形式に変換するハッシュ処理の結果に基づいて、前記出現回数カウント処理としてのレコードのグループ化と集計演算処理を行うためのハッシュ処理方式において、
    該レコードを一時的に格納するレコード格納手段と、
    該レコード格納手段に格納されたレコードの格納位置を示すポインタを、該レコードのキー値から計算されたハッシュ関数値に対応する位置に格納するハッシュ値対応ポインタ格納手段と、
    該ハッシュ値対応ポインタ格納手段に格納されているポインタによって指示されるレコードを、該ポインタの格納位置に対応するハッシュ関数値に対応させて前記記憶装置に出力するハッシュ済レコード出力手段と、
    該ハッシュ済レコード出力手段によるレコードの出力にあたり、ハッシュ関数値を最小値から最大値まで連続的に変化させる間に出力されるランのそれぞれに含まれるレコードの前記記憶装置上の格納アドレスを示すラン情報を格納するラン情報格納手段とを備えることを特徴とする請求項1記載の相関のあるデータ組み合わせの数え上げ方式。
  10. 前記出現回数カウント手段が、記憶装置に格納され、それぞれアイテム1個ずつまたは2個以上のアイテムの組み合わせを示すレコードの集合を、各レコードのキーの値に対応するハッシュ関数値によって参照可能な形式に変換するハッシュ処理の結果に基づいて、前記出現回数カウント処理としてのレコードのグループ化と集計演算処理を行うために、
    前記ハッシュ処理の結果として得られるハッシュ関数値に対応したレコードが前記記憶装置上で格納されているハッシュ済レコード列の内容と、該ハッシュ関数値に対応したレコードの格納にあたりハッシュ関数値を最小値から最大値まで連続的に変化させる間に格納されるランのそれぞれに含まれるレコードの前記記憶装置上の格納アドレスを示すラン情報とを用いてグループ化と集計演算処理を実行するグループ化と集計演算処理実行手段を備えることを特徴とする請求項1記載の相関のあるデータ組み合わせの数え上げ方式。
  11. 前記出現回数カウント手段が、記憶装置に格納され、それぞれアイテム1個ずつまたは2個以上のアイテムの組み合わせを示すレコードの集合を、各レコードのキーの値に対応するハッシュ関数値によって参照可能な形式に変換するハッシュ処理の結果に基づいて、前記出現回数カウント処理としてのレコードのグループ化と集計演算処理を行うめたに、
    該レコードを一時的に格納するレコード格納手段と、
    該レコード格納手段に格納されたレコードの格納位置を示すポインタを、該レコードのキー値から計算されたハッシュ関数値に対応する位置に格納するハッシュ値対応ポインタ格納手段と、
    該ハッシュ値対応ポインタ格納手段に格納されているポインタによって指示されるレコードを、該ポインタの格納位置に対応するハッシュ関数値に対応させて前記記憶装置に出力するハッシュ済レコード出力手段と、
    該ハッシュ済レコード出力手段によるレコードの出力にあたり、ハッシュ関数値を最小値から最大値まで連続的に変化させる間に出力されるランのそれぞれに含まれるレコードの前記記憶装置上の格納アドレスを示すラン情報を格納するラン情報格納手段と、
    該ハッシュ済レコード出力手段によって出力されたレコードが前記記憶装置上で格納されているハッシュ済レコード列の内容と、該ラン情報格納手段に格納されているラン情報とを用いてグループ化と集計演算処理を実行するグループ化と集計演算処理実行手段を備えることを特徴とする請求項1記載の相関のあるデータ組み合わせの数え上げ方式。
  12. 前記出現回数カウント手段が、記憶装置に格納され、それぞれアイテム1個ずつまたは2個以上のアイテムの組み合わせを示すレコードの集合を、各レコードのキーの値に対応するハッシュ関数値によって参照可能な形式に変換するハッシュ処理の結果に基づいて、前記出現回数カウント処理としてのレコードのグループ化と集計演算処理を行うために、
    該レコードを一時的に格納するレコード格納手段と、
    該レコード格納手段に格納されたレコードの格納位置を示すポインタを、該レコードのキー値から計算されたハッシュ関数値に対応する位置に格納するハッシュ値対応ポインタ格納手段と、
    該ハッシュ値対応ポインタ格納手段に格納されているポインタによって指示されるレコードを、該ポインタの格納位置に対応するハッシュ関数値に対応させて前記記憶装置に出力する手段であって、ハッシュ関数値を最小値から最大値まで連続的に変化させる間に出力されるランのそれぞれに含まれるレコードを該記憶装置上の連続領域に出力すると共に、異なるランのレコードは必ずしも互いに連続でない領域に格納するハッシュ済レコード出力手段と、
    該ランのそれぞれに含まれるレコードの該記憶装置上の格納アドレスを示すラン情報を格納するラン情報格納手段と、
    該ハッシュ済レコード出力手段によって出力されたレコードが該記憶装置上で格納されているハッシュ済レコード列の内容と、該ラン情報格納手段に格納されているラン情報とを用いてグループ化と集計演算処理を実行するグループ化と集計演算処理実行手段を備えることを特徴とする請求項1記載の相関のあるデータ組み合わせの数え上げ方式。
  13. 前記出現回数カウント手段が、記憶装置に格納され、それぞれアイテム1個ずつまたは2個以上のアイテムの組み合わせを示すレコードの集合を、各レコードのキーの値に対応するハッシュ関数値によって参照可能な形式に変換するハッシュ処理の結果に基づいて、前記出現回数カウント処理としてのレコードのグループ化と集計演算処理を行うためのハッシュ処理方式において、
    該レコードを一時的に格納するレコード格納手段と、
    該レコード格納手段に格納されたレコードの格納位置を示すポインタを、該レコードのキー値から計算されたハッシュ関数値に対応する位置に格納するハッシュ値対応ポインタ格納手段と、
    該ハッシュ値対応ポインタ格納手段に格納されているポインタによって指示されるレコードを、該ポインタの格納位置に対応するハッシュ関数値に対応させて、前記記憶装置上で必ずしも連続でない領域に出力する手段であって、それぞれ複数のレコードからなる2つの連続すべきブロックがそれぞれ独立の連続領域であって、相互に非連続である領域に格納される時、該2つのブロックの連結関係を示すデータを加えてレコードの出力を行うハッシュ済レコード出力手段と、
    該ハッシュ済レコード出力手段によるレコードの出力にあたり、ハッシュ関数値を最小値から最大値まで連続的に変化させる間に出力されるランのそれぞれに含まれるレコードの前記記憶装置上の格納アドレスを示すラン情報を格納するラン情報格納手段とを備えることを特徴とする請求項1記載の相関のあるデータ組み合わせの数え上げ方式。
  14. 前記出現回数カウント手段が、記憶装置に格納され、それぞれアイテム1個ずつまたは2個以上のアイテムの組み合わせを示すレコードの集合を、各レコードのキーの値に対応するハッシュ関数値によって参照可能な形式に変換するハッシュ処理の結果に基づいて、前記出現回数カウント処理としてのレコードのグループ化と集計演算処理を行うために、
    前記ハッシュ処理の結果として得られるハッシュ関数値に対応したレコードが前記記憶装置上で格納されているハッシュ済レコード列の内容と、該ハッシュ関数値に対応したレコードの該記憶装置への出力にあたり、ハッシュ関数値を最小値から最大値まで連続的に変化させる間に出力されるランのそれぞれに含まれるレコードの前記記憶装置上の格納アドレスを示すラン情報と、それぞれ複数のレコードからなる2つの連続すべきブロックがそれぞれ独立の連続領域に格納され、該2つの連続領域が相互に非連続となっているとき、該2つのブロックの連結関係を示すデータとに基づいてグループ化と集計演算処理を実行するグループ化と集計演算処理実行手段を備えることを特徴とする請求項1記載の相関のあるデータ組み合わせの数え上げ方式。
  15. 前記出現回数カウント手段が、記憶装置に格納され、それぞれアイテム1個ずつまたは2個以上のアイテムの組み合わせを示すレコードの集合を、各レコードのキーの値に対応するハッシュ関数値によって参照可能な形式に変換するハッシュ処理の結果に基づいて、前記出現回数カウント処理としてのレコードのグループ化と集計演算処理を行うために、
    該レコードを一時的に格納するレコード格納手段と、
    該レコード格納手段に格納されたレコードの格納位置を示すポインタを、該レコードのキー値から計算されたハッシュ関数値に対応する位置に格納するハッシュ値対応ポインタ格納手段と、
    該ハッシュ値対応ポインタ格納手段に格納されているポインタによって指示されるレコードを、該ポインタの格納位置に対応するハッシュ関数値に対応させて、前記記憶装置上で必ずしも連続でない領域に出力する手段であって、それぞれ複数のレコードからなる2つの連続すべきブロックがそれぞれ独立の連続領域であって、相互に非連続である領域に格納される時、該2つのブロックの連結関係を示すデータを加えてレコードの出力を行うハッシュ済レコード出力手段と、
    該ハッシュ済レコード出力手段によるレコードの出力にあたり、ハッシュ関数値を最小値から最大値まで連続的に変化させる間に出力されるランのそれぞれに含まれるレコードの前記記憶装置上の格納アドレスを示すラン情報を格納するラン情報格納手段と、
    前記ハッシュ済レコード出力手段によって出力され、ハッシュ関数値に対応したレコードが前記記憶装置上で格納されているハッシュ済レコード列の内容と、前記ラン情報格納手段に格納されているラン情報と、前記2つのブロックの連結関係を示すデータとに基づいてグループ化と集計演算処理を実行するグループ化と集計演算処理実行手段を備えることを特徴とする請求項1記載の相関のあるデータ組み合わせの数え上げ方式。
  16. それぞれ1個以上のアイテムをデータとして含む多数のトランザクションから、アイテム1個ずつまたは2個以上のアイテムの組み合わせのうちで、前記トランザクションの中での出現回数が与えられた条件に適合するアイテム1個ずつまたは2個以上のアイテムの組み合わせとその出現回数とを求めるデータ組み合わせの数え上げ方式において、
    1個ずつのアイテムを対象とする時は各トランザクションに含まれるアイテムを1個ずつ出力し、i(≧2)個のアイテムの組み合わせを対象とする時は、該i個の組み合わせに含まれるアイテム1個ずつまたはアイテムの部分的組み合わせのうちで、前記出現回数が与えられた条件に適合するアイテムの部分的組み合わせまたはアイテム1個ずつに含まれるアイテムに対応した組み合わせ生成制約条件に適合するアイテムの組み合わせのみを生成して出力するアイテム組み合わせ生成機能と、
    該出力されたアイテム1個ずつまたは2個以上のアイテムの組み合わせの全てのトランザクションでの出現回数をカウントする機能と、
    該カウントされた出現回数が与えられた条件に適合するアイテム1個ずつまたは2個以上のアイテムの組み合わせを選択する機能と、
    該選択結果に対応した前記生成制約条件を前記アイテム組み合わせ生成機能に与える機能とを計算機に実行させるためのプログラムを格納した計算機読み出し可能記憶媒体。
  17. それぞれ1個以上のアイテムをデータとして含む多数のトランザクションから、アイテム1個ずつまたは2個以上のアイテムの組み合わせのうちで、前記トランザクションの中での出現回数が与えられた条件に適合するアイテム1個ずつまたは2個以上のアイテムの組み合わせとその出現回数とを求めるデータ組み合わせの数え上げ方法において、
    各トランザクションに含まれるアイテムを1個ずつカウントして、該1個ずつのアイテムの全トランザクションでの出現回数をカウントし、
    該カウント回数が与えられた条件に適合するアイテムを選択して、該アイテムと該カウント回数との組を数え上げ結果として出力し、
    該選択されたアイテムに対応したビット位置に“1”をセットしたビットマップを作成し、
    組み合わせ内のアイテムの個数を示すiの値をi=2とし、
    該ビットマップに“1”が立っている位置に対応するアイテムを用いて、各トランザクションに含まれるi個のアイテムの組み合わせを生成し、
    該生成されたアイテムの組み合わせの全トランザクションでの出現回数をカウントし、
    該カウント回数が与えられた条件に適合するアイテムの組み合わせを選択して、該アイテムの組み合わせと該カウント回数との組を数え上げ結果として出力し、
    該選択されたアイテムの組み合わせあるいは部分的組み合わせ、または該組み合わせに含まれるアイテム1個ずつに対応したビット位置に“1”をセットしたビットマップを作成し、
    iの値をインクリメントして前記i個のアイテムの組み合わせの生成以降の処理を繰り返すことを特徴とする相関のあるデータ組み合わせの数え上げ方法。
JP2003196820A 1997-04-18 2003-07-14 相関のあるデータ組み合わせの数え上げ方式 Expired - Fee Related JP3601719B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003196820A JP3601719B2 (ja) 1997-04-18 2003-07-14 相関のあるデータ組み合わせの数え上げ方式

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP10069697 1997-04-18
JP2003196820A JP3601719B2 (ja) 1997-04-18 2003-07-14 相関のあるデータ組み合わせの数え上げ方式

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP15217197A Division JP3466054B2 (ja) 1997-04-18 1997-06-10 グループ化と集計演算処理方式

Publications (2)

Publication Number Publication Date
JP2004062898A true JP2004062898A (ja) 2004-02-26
JP3601719B2 JP3601719B2 (ja) 2004-12-15

Family

ID=31948817

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003196820A Expired - Fee Related JP3601719B2 (ja) 1997-04-18 2003-07-14 相関のあるデータ組み合わせの数え上げ方式

Country Status (1)

Country Link
JP (1) JP3601719B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012084062A (ja) * 2010-10-14 2012-04-26 Internatl Business Mach Corp <Ibm> 意味のある頻出アイテムセットを抽出するシステム、方法及びプログラム
CN114969061A (zh) * 2022-08-01 2022-08-30 浙江木链物联网科技有限公司 一种工业时序数据分布式存储方法、装置
US11593362B2 (en) * 2018-05-25 2023-02-28 Nippon Telegraph And Telephone Corporation Secure aggregate function computation system, secure computation apparatus, secure aggregate function computation method, and program

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08255170A (ja) * 1995-03-15 1996-10-01 Oki Electric Ind Co Ltd ソート付き検索処理装置
JPH08263346A (ja) * 1995-03-03 1996-10-11 Internatl Business Mach Corp <Ibm> 大規模データベース内の順次パターンをマイニングするためのシステムおよび方法
JPH08314981A (ja) * 1995-05-08 1996-11-29 Internatl Business Mach Corp <Ibm> データベースにおける一般化された関連規則を発見するためのシステム及び方法
JPH096732A (ja) * 1995-06-14 1997-01-10 Fujitsu Ltd 並列プロセッサ装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08263346A (ja) * 1995-03-03 1996-10-11 Internatl Business Mach Corp <Ibm> 大規模データベース内の順次パターンをマイニングするためのシステムおよび方法
JPH08255170A (ja) * 1995-03-15 1996-10-01 Oki Electric Ind Co Ltd ソート付き検索処理装置
JPH08314981A (ja) * 1995-05-08 1996-11-29 Internatl Business Mach Corp <Ibm> データベースにおける一般化された関連規則を発見するためのシステム及び方法
JPH096732A (ja) * 1995-06-14 1997-01-10 Fujitsu Ltd 並列プロセッサ装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012084062A (ja) * 2010-10-14 2012-04-26 Internatl Business Mach Corp <Ibm> 意味のある頻出アイテムセットを抽出するシステム、方法及びプログラム
US8954468B2 (en) 2010-10-14 2015-02-10 International Business Machines Corporation Extracting a meaningful frequent itemset
US11593362B2 (en) * 2018-05-25 2023-02-28 Nippon Telegraph And Telephone Corporation Secure aggregate function computation system, secure computation apparatus, secure aggregate function computation method, and program
CN114969061A (zh) * 2022-08-01 2022-08-30 浙江木链物联网科技有限公司 一种工业时序数据分布式存储方法、装置

Also Published As

Publication number Publication date
JP3601719B2 (ja) 2004-12-15

Similar Documents

Publication Publication Date Title
JP3466054B2 (ja) グループ化と集計演算処理方式
KR101105363B1 (ko) 롱 트랜잭션 데이터 스트림을 위한 빈발항목집합 탐색 방법
JP3566111B2 (ja) 記号辞書作成方法及び記号辞書検索方法
JP2002501256A (ja) データベース装置
US20040133581A1 (en) Database management system, data structure generating method for database management system, and storage medium therefor
US8250105B2 (en) Input data structure for data mining
JP3318834B2 (ja) データファイルシステム及びデータ検索方法
CN103339624A (zh) 支持地理结构数据的交互式模糊搜索的高效前缀搜索算法
JP2002278761A (ja) 否定項を含む相関ルール抽出方法およびシステム
JP2004030221A (ja) 変更対象テーブル自動検出方法
JP2000353177A (ja) データ・マイニングする方法およびシステム
Zhang et al. A survey of key technologies for high utility patterns mining
JP5686893B2 (ja) データベース管理システム、装置及び方法
JP5844824B2 (ja) Sparqlクエリ最適化方法
KR101443285B1 (ko) 유용성 높은 패턴의 마이닝 방법
CN112148359B (zh) 一种基于子块过滤的分布式代码克隆检测与搜索方法、系统及介质
JP3601719B2 (ja) 相関のあるデータ組み合わせの数え上げ方式
JP2004110327A (ja) 時系列相関抽出装置
He et al. Efficient high-utility occupancy itemset mining algorithm on massive data
CN107609110B (zh) 基于分类树的最大多样频繁模式的挖掘方法及装置
Ansari et al. TFI-Apriori: Using new encoding to optimize the apriori algorithm
CN114911826A (zh) 一种关联数据检索方法和系统
Mathai et al. An efficient approach for item set mining using both utility and frequency based methods
Priya et al. Entity resolution for high velocity streams using semantic measures
JP2001022766A (ja) 多次元データベースの高速処理方法および装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040608

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040806

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040914

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040915

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20071001

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081001

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081001

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091001

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091001

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101001

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101001

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111001

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111001

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121001

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121001

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131001

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees