(57)【特許請求の範囲】
【請求項１】
コンピュータの計算処理により、各々が１又は複数のアイテムからなるアイテムセットを含む複数のレコードを記憶するデータベースから、意味のある頻出アイテムセットを抽出する方法であって、前記データベース内の複数のアイテムはアイテムの順番を有しており、前記方法は、
（ａ）前記コンピュータが、１つ前に検討対象とされたアイテムセットである旧アイテムセット内で順番が最も遅いアイテムよりも順番が後のアイテムが１以上存在する場合に、該１以上の順番が後のアイテムを１つ降順に前記旧アイテムセットに加えて、新たに検討対象とするアイテムセットである新アイテムセットを決定するステップであって、前記旧アイテムセットの初期値は順番が最初の空のアイテムφである、前記決定するステップと、
（ｂ）前記コンピュータが、前記新アイテムセットの出現頻度が所定の閾値以上であることを条件に、前記新アイテムセットの前記出現頻度を、前記コンピュータのメモリ上に用意されたテーブルに登録するステップと、
（ｃ）前記コンピュータが、前記テーブルへの登録に応答して、前記新アイテムセット内の各アイテムと、該アイテムを前記新アイテムセットから除いた残りのアイテムのサブセットとの間に相関があるか否かを、前記テーブル内の値を用いて判定するステップと、
（ｄ）前記コンピュータが、前記新アイテムセット内の全アイテムの各々について、前記判定の結果が肯定的であることを条件に、前記新アイテムセットを前記意味のある頻出アイテムセットの集合に登録するステップと、
（ｅ）前記コンピュータが、前記意味のある頻出アイテムセットの集合への登録に応答して、前記新アイテムセットを前記旧アイテムセットとして、元の前記旧アイテムセットに基づいて新アイテムセットを決定するよりも先に、（ａ）のステップを繰り返すステップと、
を含む、方法。
【請求項２】
順番が２番目のアイテムを含む前記新アイテムセットを構成するアイテムの順番が連続していない場合に、ステップ（ｃ）の後において、前記コンピュータが、前記新アイテムセットから不連続のアイテムの中で順番が最も早いアイテムを除いたアイテムセット、及び前記新アイテムセットから前記順番が２番目のアイテムを除いたアイテムセットについてのそれぞれの出現頻度を前記テーブルから削除するステップを更に含む、請求項１に記載の方法。    
【請求項３】
ステップ（ｃ）における相関の判定が、全レコード数を｜Ｔ｜、新アイテムセットＹの出現頻度を｜Ｔ（Ｙ）｜、新アイテムセットＹ内の任意のアイテムｙについての出現頻度を｜Ｔ（{ｙ}）｜、該ｙを新アイテムセットＹから除いた残りのアイテムのサブセットの出現頻度を｜Ｔ（Ｙ―{ｙ}）｜、αを１より大きい所定の閾値とした場合に、式｜Ｔ｜×｜Ｔ（Ｙ）｜≧α×｜Ｔ（Ｙ―{ｙ}）｜×｜Ｔ（{ｙ}）｜が成り立つか否かの判定によりなされる、  請求項２に記載の方法。
【請求項４】
前記テーブルは、アイテムセットを構成するアイテムのｉｄのリストをキーにして、該アイテムセットの出現頻度を検索するためのマップ構造を有する、請求項２に記載の方法。
【請求項５】
前記アイテムの順番は、各アイテムに付与された１から始まる連続する正の整数のｉｄの順番である、請求項４に記載の方法。
【請求項６】
コンピュータの処理により、各々が１又は複数のアイテムからなるアイテムセットを含む複数のレコードを記憶するデータベースから、意味のある頻出のアイテムセットを抽出するプログラムであって、前記データベース内の複数のアイテムはアイテムの順番を有しており、前記プログラムは、前記コンピュータに、
（ａ）１つ前に検討対象とされたアイテムセットである旧アイテムセット内で順番が最も遅いアイテムよりも順番が後のアイテムが１以上存在する場合に、該１以上の順番が後のアイテムを１つ降順に前記旧アイテムセットに加えて、新たに検討対象とするアイテムセットである新アイテムセットを決定するステップであって、前記旧アイテムセットの初期値は順番が最初の空のアイテムφである、前記決定するステップと、
（ｂ）前記新アイテムセットの出現頻度が所定の閾値以上であることを条件に、前記新アイテムセットの前記出現頻度をテーブルに登録するステップと、
（ｃ）前記テーブルへの登録に応答して、前記新アイテムセット内の各アイテムと、該アイテムを前記新アイテムセットから除いた残りのアイテムのサブセットとの間に相関があるか否かを、前記テーブル内の値を用いて判定するステップと、
（ｄ）前記新アイテムセット内の全アイテムの各々について、前記判定の結果が肯定的であることを条件に、前記新アイテムセットを前記意味のある頻出アイテムセットの集合に登録するステップと、
（ｅ）前記意味のある頻出アイテムセットの集合への登録に応答して、前記新アイテムセットを前記旧アイテムセットとして、元の前記旧アイテムセットに基づいて新アイテムセットを決定するよりも先に、（ａ）のステップを繰り返すステップと、
を実行させる、プログラム。
【請求項７】
順番が２番目のアイテムを含む前記新アイテムセットを構成するアイテムの順番が連続していない場合に、ステップ（ｃ）の後において、前記新アイテムセットから不連続のアイテムの中で順番が最も早いアイテムを除いたアイテムセット、及び前記新アイテムセットから前記順番が２番目のアイテムを除いたアイテムセットについてのそれぞれの出現頻度を前記テーブルから削除するステップを更に前記コンピュータに実行させる、請求項６に記載のプログラム。  
【請求項８】
ステップ（ｃ）における相関の判定が、全レコード数を｜Ｔ｜、新アイテムセットＹの出現頻度を｜Ｔ（Ｙ）｜、新アイテムセットＹ内の任意のアイテムｙについての出現頻度を｜Ｔ（{ｙ}）｜、該ｙを新アイテムセットＹから除いた残りのアイテムのサブセットの出現頻度を｜Ｔ（Ｙ―{ｙ}）｜、αを１より大きい所定の閾値とした場合に、式｜Ｔ｜×｜Ｔ（Ｙ）｜≧α×｜Ｔ（Ｙ―{ｙ}）｜×｜Ｔ（{ｙ}）｜が成り立つか否かの判定によりなされる、請求項７に記載のプログラム。
【請求項９】
各々が１又は複数のアイテムからなるアイテムセットを含む複数のレコードを記憶するデータベースから、意味のある頻出アイテムセットを抽出するシステムであって、前記データベース内の複数のアイテムはアイテムの順番を有しており、前記システムは、
メモリと、
１つ前に検討対象とされたアイテムセットである旧アイテムセット内で順番が最も遅いアイテムよりも順番が後のアイテムが１以上存在する場合に、該１以上の順番が後のアイテムを１つ降順に前記旧アイテムセットに加えて、新たに検討対象とするアイテムセットである新アイテムセットを決定する決定部であって、前記旧アイテムセットの初期値は順番が最初の空のアイテムφである、前記決定部と、
前記新アイテムセットの出現頻度が所定の閾値以上であるか否かを判定し、所定の出現頻度以上であることを条件に、前記新アイテムセットの前記出現頻度を、前記メモリ上に用意されたテーブルに登録する頻出判定部と、
前記テーブルへの登録に応答して、前記新アイテムセット内の各アイテムと、該アイテムを前記新アイテムセットから除いた残りのアイテムのサブセットとの間に相関があるか否かを、前記テーブル内の値を用いて判定する相関判定部と、
前記新アイテムセット内の全アイテムの各々について、前記判定の結果が肯定的であることを条件に、前記新アイテムセットを前記意味のある頻出アイテムセットの集合に登録する登録部とを備え、
前記決定部は、前記意味のある頻出アイテムセットの集合への登録に応答して、前記新アイテムセットを前記旧アイテムセットとし、該旧アイテムセットに関して先に新アイテムセットを決定する、システム。
【請求項１０】
前記相関判定部は、順番が２番目のアイテムを含む前記新アイテムセットを構成するアイテムの順番が連続していない場合に、前記新アイテムセットから不連続のアイテムの中で順番が最も早いアイテムを除いたアイテムセット、及び前記新アイテムセットから前記順番が２番目のアイテムを除いたアイテムセットについてのそれぞれの出現頻度を前記テーブルから削除する、請求項９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、各々が１又は複数のアイテムからなるアイテムセットを含む複数のレコードを記憶するデータベースから、意味のある頻出アイテムセットのみを抽出する技術に関し、特に、妥当な回数の頻度計算で且つ妥当なメモリの使用量で、そのようなアイテムセットを効率よく抽出する技術に関する。
【背景技術】
【０００２】
従来、大量に蓄積されたデータから有用な知識の抽出を行うデータマイニングが研究されている。その中で、対象となる複数のレコード（例えば、発行済みのレシートの履歴）に頻繁に現れるアイテム（例えば商品）の組を検出する技術は、頻出パターンマイニングと呼ばれ、多くの手法が提案されている。頻出パターンマイニングでは、「アイテムセットの頻度≧所定の閾値（「最小サポート」と呼ばれる）」を満たすアイテムセットを頻出アイテムセットとして定義し、頻出アイテムセットの集合を抽出する。
【０００３】
しかし、アイテムセットの出現頻度が高いからといって、アイテム間に深い関係があるとは限らない。例えば、出現頻度が高いアイテムからなるアイテムセットの場合、アイテム間に関係がなくともそのアイテムセットが頻出する可能性は高い。アイテム間に深い関係がない場合、その頻出アイテムセットは、意味のないアイテムセットである。また、最小サポートの値はユーザが与えるものであるが、一般的に、実用的な最小サポートの値に対して、膨大な数の頻出アイテムセットが生成されてしまうことが知られている。  
【０００４】
そこで、閉頻出集合という概念を導入してこれを定義し、該定義を満たす閉頻出のアイテムセットを抽出する従来技術が存在する（非特許文献１参照）。ここでアイテムセットＹが閉頻出とは、「Ｙは頻出、かつ任意のＹ⊂Ｙ´、Ｙ≠Ｙ´に対して、Ｙの頻度＞Ｙ´の頻度」を満たすことをいう。更に、閉頻出集合の上記定義を拡張し、「Ｙは頻出、かつ任意のＹ⊂Ｙ´、Ｙ≠Ｙ´に対して、（Ｙの頻度×δ）＞Ｙ´の頻度」を満たすアイテムセットを抽出する従来技術も存在する（非特許文献２参照）。
【０００５】
閉頻出のアイテムセットを抽出すれば、アイテムセット全体と同じ出現頻度を有するアイテムセットの部分集合が、頻出アイテムセットとして無駄に抽出されることはなくなる。例えば、スーパーマーケットのＰＯＳデータに、アイテムセットＹ１＝{歯磨き粉、パン}が５００回出現し、アイテムセットＹ２＝{歯磨き粉、パン、ビール}もまた５００回出現したとする。この場合、閉頻出のアイテムセットとして抽出されるのはアイテムセットＹ２のみである。しかし、閉頻出のアイテムセットについても、アイテム間に深い関係があるとはいえず、閉頻出の概念をもってしても意味のある頻出アイテムセットを抽出することはできない。
【０００６】
そこで、アイテム間に深い関係があるアイテムセットを抽出する技術が必要となる。そのような従来技術として、非特許文献３及び非特許文献４が存在する。非特許文献３及び非特許文献４は、相互情報量やエントロピーを基にしたアプローチによって、３以上のアイテム間に相関のあるアイテムセットを抽出することを試みる。  
【０００７】
しかし、非特許文献３及び４が提案する手法は、ペアワイズ比較を基礎とする。そのため、これら手法により抽出されるアイテムセットに対して保証されるのは、アイテムセット内の任意の２アイテム間に高い相関があるということだけである。
【０００８】
例えば、コールセンターのコールログに対して上記手法を適用し、アイテムセット{オペレーティング・システムＡ、ブラウザＢ、異常終了}を抽出したとする。この場合、{オペレーティング・システムＡ、ブラウザＢ}、{ブラウザＢ、異常終了}、{オペレーティング・システムＡ、異常終了}のそれぞれについて高い相関があることは保証される。しかし、「他のオペレーティング・システムではなくオペレーティング・システムＡ上で他のアプリケーションではなくブラウザＢを使用して異常終了が起きた」ということまでは保証されない。なお、以下に示す特許文献１は、相関のルール抽出の手法を開示する背景技術として挙げたものである。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平８−２８７１０６
【非特許文献】
【００１０】
【非特許文献１】M.Boley et al., “EfficientDiscovery of Interesting Patterns Based on Strong Closedness”,Statistical Analysis and Data Mining, Volume 2, Issue 5&ash;6, Pages 346-360,December 2009
【非特許文献２】J. Cheng et al., “Sigma-tolerance closed frequent itemsets”, ICDM, Proceedings of the Sixth InternationalConference on Data Mining, pages 139&#8211;148, 2006
【非特許文献３】Y. Ke et al., “Mining quantitativecorrelated patterns using an information-theoretic approach”, Proceedings ofthe 12th ACM SIGKDD international conference on knowledge discoveryand data mining, pages 227&#8211;236, August 2006
【非特許文献４】X. Zhang et al., “Mining Non-Redundant High Order Correlations inBinary Data”, Proceedings of the VLDB Endowment, Volume1, Issue 1, pages 1178-1188,August 2008
【発明の概要】
【発明が解決しようとする課題】
【００１１】
従って、本発明の目的は、意味のある頻出アイテムセットのみを抽出することを可能ならしめる技術を提供することである。そのためには、抽出するアイテムセット内のアイテム間で満たされるべき関係を定義する必要があるが、そのような定義は、詳細な情報を必要とし計算量を増やす。そこで、本発明の更なる目的は、そのような新たな定義に従って意味のある頻出アイテムセットを抽出するにあたり、過剰な回数の頻度計算や過剰なメモリを必要とせずに、妥当な回数の頻度計算で且つ妥当なメモリの使用量で、そのようなアイテムセットを効率よく見つけ出すことを可能ならしめる計算手法を提供することである。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、本願発明者は、内相関頻出集合とういう概念を新たに導入しこれを次のように定義した。即ち、アイテムセットＹが内相関頻出であるとは、「アイテムセットＹが頻出であって、かつ、アイテムセットＹ内の任意のアイテムｙに対して、ｙを除く残りのサブセットＹ−{ｙ}がｙと相関をもつ」ことをいう。
【００１３】
上記定義に従って内相関頻出のアイテムセットを抽出すれば、アイテムセットＹ内の各アイテムｙが、そのｙを除く残りのサブセットの出現と協調して出現しているか否かを判定することになるため、真に共起しやすいアイテムの集合からなるアイテムセットを列挙できる。そのため、内相関頻出のアイテムセットを抽出することにより、意味のある頻出アイテムセットのみを抽出することが可能となる。
【００１４】
そして、内相関頻出集合を抽出する本発明は、次のような、コンピュータの処理により、各々が１又は複数のアイテムからなるアイテムセットを含む複数のレコードを記憶するデータベースから、意味のある頻出アイテムセットを抽出する方法によって実現される。なお、データベース内の複数のアイテムはアイテムの順番を有している。該アイテムの順番は任意の順番でよく、一例として、各アイテムが正の整数のｉｄにより識別される場合、該順番はアイテムのｉｄによって決まる順番であってよく、また、アイテムの出現頻度の順番であってもよい。そして、そのような方法は、（ａ）前記コンピュータが、１つ前に検討対象とされたアイテムセットである旧アイテムセット内で順番が最も遅いアイテムよりも順番が後のアイテムが１以上存在する場合に、該１以上の順番が後のアイテムを１つ降順に前記旧アイテムセットに加えて、新たに検討対象とするアイテムセットである新アイテムセットを決定するステップであって、前記旧アイテムセットの初期値は順番が最初の空のアイテムφである、前記決定するステップと、（ｂ）前記コンピュータが、前記新アイテムセットの出現頻度が所定の閾値以上であることを条件に、前記新アイテムセットの前記出現頻度を、前記コンピュータのメモリ上に用意されたテーブルに登録するステップと、（ｃ）前記コンピュータが、前記テーブルへの登録に応答して、前記新アイテムセット内の各アイテムと、該アイテムを前記新アイテムセットから除いた残りのアイテムのサブセットとの間に相関があるか否かを、前記テーブル内の値を用いて判定するステップと、（ｄ）前記コンピュータが、前記新アイテムセット内の全アイテムの各々について、前記判定の結果が肯定的であることを条件に、前記新アイテムセットを前記意味のある頻出アイテムセットの集合に登録するステップと、（ｅ）前記コンピュータが、前記意味のある頻出アイテムセットの集合への登録に応答して、前記新アイテムセットを前記旧アイテムセットとして、元の前記旧アイテムセットに基づいて新アイテムセットを決定するよりも先に、（ａ）のステップを繰り返すステップとを含む。
【００１５】
好ましくは、上記方法は、順番が２番目のアイテムを含む前記新アイテムセットを構成するアイテムの順番が連続していない場合に、ステップ（ｃ）の後において、前記新アイテムセットから不連続のアイテムの中で順番が最も早いアイテムを除いたアイテムセット、及び前記新アイテムセットから前記順番が２番目のアイテムを除いたアイテムセットについてのそれぞれの出現頻度を前記テーブルから削除するステップを更に含む。
【００１６】
更に好ましくは、上記ステップ（ｃ）における相関の判定が、全レコード数を｜Ｔ｜、新アイテムセットＹの出現頻度を｜Ｔ（Ｙ）｜、新アイテムセットＹ内の任意のアイテムｙについての出現頻度を｜Ｔ（{ｙ}）｜、該ｙを新アイテムセットＹから除いた残りのアイテムのサブセットの出現頻度を｜Ｔ（Ｙ―{ｙ}）｜、αを１より大きい所定の閾値とした場合に、式｜Ｔ｜×｜Ｔ（Ｙ）｜≧α×｜Ｔ（Ｙ―{ｙ}）｜×｜Ｔ（{ｙ}）｜が成立するか否かの判定によりなされる。
【００１７】
更にまた好ましくは、前記テーブルは、アイテムセットを構成するアイテムのｉｄのリストをキーにして、該アイテムセットの出現頻度を検索するためのマップ構造を有する。
【００１８】
以上、本発明を意味のある頻出アイテムセットを抽出する方法として説明した。しかし、本発明は、そのような抽出方法をコンピュータに実行させる、意味のある頻出アイテムセットを抽出するための抽出プログラム、及びそのような抽出プログラムをコンピュータにインストールすることによって実現される、意味のある頻出アイテムセットを抽出するシステムとして把握することもできる。
【発明の効果】
【００１９】
本発明によれば、頻出なアイテムセットであって、かつ、アイテムセット内の任意のアイテムに対して、該アイテムを除いた残りの全アイテムからなるサブセットが相関をもつようなアイテムセットが抽出される。そのため、真に共起しやすいアイテムの集合からなるアイテムセットのみが抽出され、意味のある頻出アイテムセットを抽出できる。また、そのようなアイテムセットを求めるに際し、アイテム数の１つ少ないアイテムセットについて求めた出現頻度を再利用するので、過剰な頻度の計算や過剰なメモリを必要とせずに、効率よく意味のある頻出アイテムセットを抽出できる。本発明のその他の効果については、各実施の形態の記載から理解される。
【図面の簡単な説明】
【００２０】
【図１】情報システム１００の全体構成を示す。
【図２】図２（ａ）は、データベース装置１１０のデータ構造の概略を示す。図２（ｂ）は、検索用テーブルを示す。
【図３】解析システム１２０の機能構成を示す。
【図４】アイテムセットのツリーの一例を示す。
【図５】図５（ａ）は、図４に示すツリーを深さ優先かつ降順に走査する場合の走査順を示す。図５（ｂ）は、図４に示すツリーを幅優先かつ降順に走査する場合の走査順を示す。
【図６】解析システム１２０による全体処理の流れの一例を示す。
【図７】図６に示すステップ６１５の抽出処理の流れの一例を示す。
【図８】内相関頻出アイテムセット抽出処理を行う再帰関数Mineの擬似コードの一例を示す。
【図９】マップＭ３２５の不要キーの削除処理の流れの一例を示す。
【図１０】解析システム１２０として機能する情報処理装置のハードウェア構成の一例を示す。
【発明を実施するための形態】
【００２１】
以下、本発明を実施するための最良の形態を図面に基づいて詳細に説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。なお、実施の形態の説明の全体を通じて同じ要素には同じ番号を付している。
【００２２】
図１は、情報システム１００の全体構成を示す。情報システム１００は、データベース装置１１０と、解析システム１２０と、内相関頻出集合記憶装置１３０とを含む。データベース装置１１０は、各々が、１又は複数のアイテムからなるアイテムセットを含む、複数のレコードを記憶する。
【００２３】
一例としてレコードは、データベース装置１１０等の情報処理装置において同一ユーザから受けた要求に応じて行う一連の処理を示すトランザクションの履歴情報であってよい。この場合、アイテムは、トランザクション処理の対象、例えば商品であってよく、或いは、トランザクションを要求した要求元の属性や、トランザクション処理内の内容を示す属性であってよい。データベース装置１１０は、各アイテムを、該アイテムを含むトランザクションの識別子に関連付けて記憶する。
【００２４】
他の例として、レコードは、コールセンターにおいて記録される通話ごとのコールログや、ウェブ上で収集されるユーザごとのアンケート情報であってもよい。この場合、アイテムは、コールログやアンケート情報に含まれる商品名やサービス名、商品やサービスの状態を示す単語、また、商品やサービスに対する肯定的又は否定的な意見を示す単語であってよい。なお、アイテムとして扱う単語は、コールログやアンケート情報からマッチング等の公知技術を利用して事前に抽出しておく。データベース装置１１０は、アイテムとして扱う単語のみを、該単語を含むレコードの識別子に関連付けて記憶する。
【００２５】
解析システム１２０は、データベース装置１１０に記録される複数のレコードから、内相関頻出のアイテムセットの集合を抽出し、内相関頻出集合記憶装置１３０に登録する。上述したように、本願発明者は、意味のある頻出アイテムセットを抽出するために、内相関頻出集合とういう概念を新たに導入し、これを次のように定義した。即ち、アイテムセットＹが内相関頻出であるとは、「アイテムセットＹが頻出であって、かつ、アイテムセットＹ内の任意のアイテムｙに対して、ｙを除く残りのサブセットＹ−{ｙ}がｙと相関をもつ」ことをいう。
【００２６】
上記内相関頻出の定義を、以下に数式を用いて説明する。まず、データベース装置１１０に記憶される任意のレコードをｔｉ、レコード数をｎとし、全レコードの集合をＴ＝{ｔ１、…、ｔｎ}で表す。また、いずれかのレコードに出現する任意のアイテムをｘｉ、アイテムの種類をｍ個とし、全アイテムの集合をＸ＝{ｘ１、…、ｘｍ}で表す。そして、集合Ｘに含まれる任意の部分集合Ｙ⊂Ｘに対して、集合Ｙを含むレコードの集合をＴ（Ｙ）で表す。即ち、Ｔ（Ｙ）：＝{ｔ∈Ｔ｜ｙ∈ｔ、∀ｙ∈Ｙ}である。すると、
アイテムセットＹが頻出であるとは、アイテムセットＹについて次式が成り立つことをいう。
【数１】
0005528292.tif 000002
上式において｜Ｔ（Ｙ）｜は、集合Ｔ（Ｙ）のサイズ、即ち要素数を示す（以下同様）。またＳは、頻出の判定に使用する閾値であり、１以上の任意の整数値を取る。開発者やユーザは、Ｓに対して、全レコード数ｎの１０％等のように、相対的な値を指定してよい。
【００２７】
また、アイテムセットＹが内相関である、即ち、アイテムセットＹ内の任意のアイテムｙに対して、ｙを除く残りのサブセットＹ−{ｙ}が相関をもつとは、アイテムセットＹについて次式が成り立つことをいう。
【数２】
0005528292.tif 000003
上式においてαは、内相関の判定に使用する閾値であり、１より大きな数値を取る。相関の強いアイテムセットだけが抽出されることを希望する場合、αに対して、例えば４、５等の大きい値を設定してよい。また、関数ｆは、｜Ｔ（Ｙ）｜と、｜Ｔ（{ｙ}）｜と、｜Ｔ（Ｙ―{ｙ}）｜の任意の関数である。一例として、関数ｆは次式により表されるものであってよい。
【数３】
0005528292.tif 000004
【００２８】
数式２（又は数式３）において、ｙをアイテムセットＹ内の任意のアイテムｙではなく、ある特定のアイテムｙとみると、数式１と数式２（又は数式３）は、特許文献１に開示される、Ｙ−{ｙ}→Ｙという相関ルールを抽出する条件を示す。従って、本発明において定義する内相関は、アイテムセットＹ内の全アイテムそれぞれについて、Ｙ−{ｙ}→Ｙという相関ルールが成り立つことを要求するものであるといえる。
【００２９】
数式２（又は数式３）の条件は、各アイテムｙが、そのアイテムｙを除く残りのサブセットの出現と協調して出現することを、アイテムセットＹ内の全アイテムについて要求する。そのため、数式２（又は数式３）の条件によれば、真に共起しやすいアイテムの集合からなるアイテムセットを列挙できる。従って、数式１と数式２（又は数式３）の条件を合わせて課すことで、最終的に、意味のある頻出アイテムセットのみを抽出することが可能となる。    
【００３０】
なお、頻出の判定に使用する所定の閾値Ｓと、内相関判定に使用する所定の閾値αの値は、解析ごとにユーザがキーボード等の入力装置を使用して解析システム１２０に対して指定してよい。これに代えて、所定の閾値Ｓ及びαは、ユーザが変更できない固定値として予め開発者が解析システム１２０に設定するようにしてもよい。いずれの場合も所定の閾値Ｓとαの値は設定ファイルに記録され、解析システム１２０内に保持される。設定ファイルはこの他、全レコード数ｎや全アイテム数ｍ等の情報を記録してもよい。
【００３１】
内相関頻出集合記憶装置１３０は、データベース装置１１０に記録される複数レコードから、解析システム１２０によって抽出された内相関頻出のアイテムセットの集合を記録する。そして、内相関頻出集合記憶装置１３０は、ユーザの要求に応じて、内相関頻出のアイテムセットの集合を、指定されたディスプレイやプリンタ等の出力装置や他の情報処理装置に対して出力する。
【００３２】
図２（ａ）は、データベース装置１１０のデータ構造の概略を示す。（ａ）に示すように、データベース装置１１０は、レコードごとに、該レコードに含まれるアイテムのセットを記録する。なおテーブルに示すｔ１やｔ２はレコードを一意に識別するｉｄであり、ｘ１やｘ２はアイテムを一意に識別子するｉｄである。本実施例では、レコードとアイテムはいずれも、連続する正の整数のｉｄによって識別されるものとし、それぞれｉｄによって決まる順番を有するものとする。なお、アイテムの順番はこれに限定されず、例えばアイテムの頻度等任意の順番であってよい。但しどのような順番であっても、空（φ）のアイテムの順番は最初であるとする。
【００３３】
図２（ｂ）示すテーブルは、（ａ）に示すテーブルと同一の内容を示すものであるが、アイテムごとに、該アイテムを含むレコードのセットを記録する。これは、アイテムのｉｄをインデックスとして、そのアイテムを含むレコードのｉｄのセットを求める検索用テーブルとして使用するためのものであり、後述する前処理部３００により（ａ）に示すオリジナルのテーブに基づいて構築される。なお、レコードのｉｄのセットは、レコードのｉｄの昇順で記録される。
【００３４】
図３は、解析システム１２０の機能構成を示す。解析システム１２０は、前処理部３００と、作業用メモリ３０５と、決定部３３０と、頻出判定部３３５と、相関判定部３４０と、登録部３４５とを含む。既に述べたように、前処理部３００は、データベース装置１１０をアクセスして、データベース装置１１０に記憶される複数のレコードから、アイテムのｉｄごとに、該アイテムを含むレコードのｉｄのセットをレコードｉｄの昇順で記録する検索用テーブル３１０を作業用メモリ３０５上に構築する。
【００３５】
前処理部３００はまた、解析システム１２０内に保持される設定ファイルから、頻出の判定に使用する所定の閾値Ｓと、内相関判定に使用する所定の閾値αと、全レコード数ｎとを読み出して、これらパラメータ３１５を作業用メモリ３０５にロードする。
【００３６】
前処理部３００はまた、１つ前に検討対象とされたアイテムセットである旧アイテムセットを構成するアイテムのｉｄのリストを格納する配列Ｙを用意し、これを空のリストで初期化する。前処理部３００はまた、旧アイテムセットを含むレコードのｉｄのリストを格納する配列Ｕを用意し、これを、全レコードｉｄを昇順に並べたリストで初期化する。そして前処理部３００は、これら変数３２０を作業用メモリ３０５に保持する。なお、配列Ｙは、新たに検討対象とするアイテムセットである新アイテムセットを決定するために後述する決定部３３０により使用されるものである。また、配列Ｕは、頻出判定において後述する頻出判定部３３５により使用されるものである。
【００３７】
前処理部３００は更にまた、後述する頻出判定部３３５により頻出と判定されたアイテムセットの出現頻度を格納するマップＭ３２５（特許請求の範囲におけるテーブルに相当）を作業用メモリ３０５上に用意して、これを初期化する。マップＭ３２５は、頻出と判定されたアイテムセットを構成するアイテムのｉｄのリストをキーにして、該アイテムセットの出現頻度を検索するためのマップ構造を有する。そのようなマップ構造として、例えばJava（登録商標）の場合、java.util.HashMap を使用できる。
【００３８】
決定部３３０は、旧アイテムセット内で順番が最も遅いアイテムよりも順番が後のアイテムが１以上存在する場合に、旧アイテムセットにその１以上の順番が後のアイテムを降順に１つ加えて、新たに検討対象とするアイテムセットである新アイテムセットを順次決定する。決定部３３０は、決定した新アイテムセットの情報を、旧アイテムセットに加えたその１のアイテムのｉｄ情報とともに、後述する頻出判定部３３５へ渡す。
【００３９】
上述したように、旧アイテムセットの初期値は順番が最初の空のアイテムφである。従って、全アイテムの集合をＸ＝{ｘ１、…、ｘｍ}、アイテムの順序をφ＜ｘ１＜…＜ｘｍとすると、最初に新アイテムセットとして決定されるのは、順番が最後のアイテムｘｍからなるアイテムセット{ｘｍ}である。以後、各アイテムｘｉがアイテムｉｄの降順で新アイテムセットとして決定され、新アイテムセットに対し後述する頻出判定部３３５等による検討処理が行われる。但し、後述する登録部３４５により新アイテムセットが内相関頻出集合記憶装置１３０に対し出力される場合には、決定部３３０は、旧アイテムセットを現在の新アイテムセットで更新し、更新前の旧アイテムセットよりも先に更新後の旧アイテムセットに基づいて新たに新アイテムセットを決定する。なお、更新前の旧アイテムセットの情報は後に参照できるように作業用メモリ３０５に保持しておく。
【００４０】
決定部３３０が新アイテムセットとして検討対象とするアイテムセットを決定するその順序を、アイテムセットのツリーを用いて以下に説明する。最初にアイテムセットのツリーを説明する。全アイテムの集合をＸ＝{ｘ１、…、ｘｍ}、アイテムの順序をφ＜ｘ１＜…＜ｘｍとする（但し、φは空のアイテム）。すると、アイテムセットのツリーは、各ノードが空のアイテムφ又はアイテムｘｉのｉｄをラベルとして持つ、次の（１）及び（２）を満たすツリーとして定義される。  
（１）ルート・ノードは、空のアイテムφのｉｄをラベルとして持つ。
（２）あるノードＥのラベルがＬであるとき、ノードＥは、Ｌ＜Ｌ´を満たすラベルＬ´に対応するノードＥ´を子ノードとして有する。子ノードは、Ｌ＜Ｌ´を満たすラベルＬ´の数だけ存在し、昇順にソートされる。
【００４１】
図４は、アイテムセットのツリーの具体例を示す。図４に示す例では、全アイテムの集合をＸ＝{ｘ１、ｘ２、ｘ３、ｘ４}、アイテムの順序を、φ＜ｘ１＜ｘ２＜ｘ３＜ｘ４としている。なお、φは空アイテムを示す。図４において、ルート・ノード４０５に注目すると、ルート・ノード４０５のラベルはφである。φより順番が遅いアイテムはｘ１、ｘ２、ｘ３、ｘ４の４つである。従って、ルート・ノード４０５は、アイテムｘ１、ｘ２、ｘ３、ｘ４のｉｄをそれぞれラベルとして有する４つの子ノードを持つ。また、各子ノードは、対応するラベルのｉｄが昇順となるようにソートされている。また、ノード４１０に注目すると、該ノード４１０はｘ３のラベルを有する。ｘ３より順番が遅いのは、アイテムｘ４だけである。従って、ノード４１０は、ｘ４をラベルとして有する子ノードのみを持つ。他のノードについても、同様に、上記ツリーの定義（１）及び（２）が満たされている。  
【００４２】
このように定義されるアイテムセットのツリーにおいて、各ノードは、ルート・ノードから該ノードに至るまでに経由した各ノードのラベルにより識別されるアイテムからなるアイテムセットを示し、全アイテムの集合Ｘ＝{ｘ１、…、ｘｍ}に対して考え得るアイテムセットと１対１に対応する。図４に示すノード４１０を例にとると、該ノード４１０は、φからｘ２、ｘ２からｘ３というパスを経由して辿り着くノードであるので、アイテムセット{ｘ２、ｘ３}を示す。
【００４３】
決定部３３０が現在の検討対象として新アイテムセットを決定するその順序は、上記のように定義されるアイテムセットのツリーを、深さ優先かつ降順に走査する順序に等しい。図５（ａ）は、図４に示すツリーを例として、ツリーを深さ優先かつ降順に走査する場合の走査順序を示したものである。ノード横に書かれた数字は、走査順番を示す。走査途中の現在のノードが示すアイテムセットから、任意の１アイテムを除いた残りのアイテムのサブセットは、現在のノードより以前に走査したいずれかのノードが示すアイテムセットに等しいことに留意されたい。
【００４４】
頻出判定部３３５は、新アイテムセットの出現頻度ｇを求め、その値が所定の閾値Ｓ以上であることを条件に、新アイテムセットの出現頻度ｇをマップＭ３２５に登録する。ここで、新アイテムセットの出現頻度ｇは、検索用テーブル３１０を利用して次のようにして求めてよい。即ち、新アイテムセットに含まれるアイテムのｉｄをキーとして、検索用テーブル３１０からアイテムごとに該アイテムを含むレコードのｉｄのリストを取得する。そして取得したレコードのｉｄのリスト全てに共通なレコードのｉｄの数をカウントして、新アイテムセットの出現頻度ｇを求める。
【００４５】
これに代えて、頻出判定部３３５は、新アイテムセットの出現頻度ｇを、作業用メモリ３０５に保持される検索用テーブル３１０と配列Ｕとを使って次のようにして求めてもよい。上述したように、配列Ｕは、旧アイテムセットを含むレコードのｉｄのリストを格納する。また、新アイテムセットは、旧アイテムセットに１アイテムを加えたものである。従って、新アイテムセットの出現頻度ｇは、加えられた１アイテムを含むレコードのｉｄのリストと配列Ｕに共通に含まれるレコードのｉｄの数に等しい。
【００４６】
そこで、頻出判定部３３５は、決定部３３０から新アイテムセットの情報とともに受け取った追加された１のアイテムのｉｄをキーとして、検索用テーブル３１０から、追加された１のアイテムを含むレコードのｉｄのリストを取得する。そして、頻出判定部３３５は、取得したリストと配列Ｕに共通に含まれるレコードのｉｄのリストを作成し、作成したリストのサイズから新アイテムセットの出現頻度ｇを求める。なお、作成したリストは配列Ｕ´に格納して作業用メモリ３２０に保持する。これは、新アイテムセットで旧アイテムセットを更新する際に合わせて配列Ｕを配列Ｕ´で更新することで、配列Ｕが、旧アイテムセットを含むレコードのｉｄのリストを格納するようにするためである。  
【００４７】
相関判定部３４０は、新アイテムセットの出現頻度ｇのマップＭ３２５への登録に応答して、新アイテムセット内の各アイテムと、該アイテムを新アイテムセットから除いた残りのアイテムのサブセットとの間に相関があるか否かを、マップＭ３２５内の値を参照して判定する。上記相関の判定は、数式２に関して説明したように、新アイテムセットと、新アイテムセット内の１アイテムと、該１アイテムを新アイテムセットから除いた残りのアイテムのサブセットのそれぞれの出現頻度を変数とする関数を用いて行うことができる。  
【００４８】
ここで、新アイテムセットの出現頻度ｇは、既に頻出判定部３３５により求められている。また、新アイテムセット内の各アイテムの出現頻度は、アイテムのｉｄをキーとして検索用テーブル３１０から取得されるレコードのｉｄのリストのサイズとして求めることができる。また、新アイテムセットから１アイテムを除いた残りのアイテムのサブセットの出現頻度は、マップＭ３２５から取得できる。この理由を以下に説明する。
【００４９】
決定部３３０が現在の検討対象として新アイテムセットを決定するその順序は、上述した（１）及び（２）により定義されるアイテムセットのツリーを、深さ優先かつ降順に走査する順序に等しい。ところで、このようにアイテムセットのツリーを深さ優先かつ降順に走査する場合、走査途中の現在のノードが示すアイテムセットから任意の１アイテムを除いた残りのアイテムのサブセットは、現在のノードより以前に走査したいずれかのノードが示すアイテムセットに等しく、従ってその出現頻度はそれ以前に既に求められている。そして、あるアイテムセットが頻出アイテムセットであれば、そのサブセットも必ず頻出アイテムセットである。従って、現在処理中の頻出と判定された新アイテムセットから１アイテムを除いたいずれのサブセットの出現頻度も、マップＭ３２５に必ず記録されている。
【００５０】
従って、相関判定部３４０は、相関の判定に必要な全ての出現頻度を、作業用メモリ３０５上のデータとマップＭ３２５とから取得できる。そして、相関判定部３４０は、より具体的には数式３に示すような関数を利用して、新アイテムセット内の各アイテムについて、該アイテムを除いた残りのアイテムのサブセットとの相関の有無を判定する。
【００５１】
このように本発明では、頻出のアイテムセットについてその出現頻度を記録しておき、後に検討対象とするアイテムセットについての相関判定において再利用する。このため本発明によれば、同じアイテムセットについて重複して出現頻度をカウントすることがなくなり、効率よく、意味のある頻出アイテムセットの集合を抽出できる。
【００５２】
また好ましくは、相関判定部３４０は、順番が２番目のアイテムを含む新アイテムセットを構成するアイテムの順番が連続していない場合に、新アイテムセットから不連続のアイテムの中で順番が最も早いアイテムを除いたアイテムセットと、新アイテムセットから上記順番が２番目のアイテムを除いたアイテムセットについてのそれぞれの出現頻度をマップＭ３２５から削除する。これは、このようなアイテムセットの出現頻度は以降の相関の判定において利用されないため、マップＭ３２５から削除してメモリの節約を図るためである。
【００５３】
図５に示すアイテムセットのツリーを具体例として、出現頻度のマップＭ３２５から削除可能なアイテムセットを説明する。上述したように、図５に示すアイテムセットのツリーにおいて、全アイテムの集合はＸ＝{ｘ１、ｘ２、ｘ３、ｘ４}、アイテムの順序は、φ＜ｘ１＜ｘ２＜ｘ３＜ｘ４である（φは空のアイテム）。また、各ノード横の数字は走査順を表す。ここで、現在の走査ノードが走査順１１番のノード５０５であるとする。すると、ノード５０５はアイテムセット{ｘ１、ｘ３、ｘ４}を示すので、現在の検討対象である新アイテムセットＹ´＝{ｘ１、ｘ３、ｘ４}となる。
【００５４】
上記新アイテムセットＹ´は、順番が２番目のアイテムｘ１を含み（順番が１番目のアイテムはφ）、アイテムの順番がｘ１、ｘ３の部分で不連続となっている。従って、新アイテムセットＹ´から、不連続のアイテムの中で順番が最も早いアイテムｘ１を除いたサブセットである{ｘ３、ｘ４}は、以降の相関の判定で利用されないため、マップＭ３２５から削除できる。実際に図５に示すツリーでこのことを確認する。
【００５５】
ノード５０５が示すアイテムセット{ｘ１、ｘ３、ｘ４}が新アイテムセットとなった後は、{ｘ１、ｘ２}、{ｘ１、ｘ２、ｘ４}、{ｘ１、ｘ２、ｘ３}、{ｘ１、ｘ２、ｘ３、ｘ４}の各アイテムセットが順に新アイテムセットとなる。しかしサブセット{ｘ３、ｘ４}は、アイテムセット{ｘ１、ｘ２、ｘ４}、{ｘ１、ｘ２、ｘ３}には出現しない。また、サブセット{ｘ３、ｘ４}は、アイテムセット{ｘ１、ｘ２、ｘ３、ｘ４}に出現するが、サブセット{ｘ３、ｘ４}のサイズは２であるため、サイズが４のアイテムセット{ｘ１、ｘ２、ｘ３、ｘ４}の相関判定では使用されることはない。従って、ノード５０５が示すアイテムセットについて相関の判定が終わったあとは、マップＭ３２５からサブセット{ｘ３、ｘ４}の出現頻度を削除できる。
【００５６】
なお、上記具体例では、新アイテムセットから不連続のアイテムの中で順番が最も早いアイテムを除いたアイテムセットと、新アイテムセットから順番が２番目のアイテムを除いたアイテムセットが一致したため、その出現頻度を削除できるアイテムセットは１つであった。しかし、これらのアイテムセットが一致しない場合は、２種類のアイテムセットの出現頻度がマップＭ３２５から削除可能となる。
【００５７】
登録部３４５は、新アイテムセット内の全アイテムの各々について、相関判定部３４０による判定の結果が肯定的であることを条件に、新アイテムセットを意味のある頻出アイテムセットとして、内相関頻出集合記憶装置１３０に対し出力する。
【００５８】
以上のように、本発明では、各アイテムセットについて、頻出の判定と内相関の判定を一度に行う。これは、先に頻出アイテムセットを列挙してから内相関の判定を別途行うとすると、一般に頻出アイテムセットの集合全体は大きすぎてメモリに載らない為、一時ファイルなどに保管して読み出す必要が生じ、大きなオーバヘッドとなるからである。本発明によればこのオーバヘッドを減らすことが可能となる。
【００５９】
次に図６及び図７を参照して、本発明の実施の形態に係る解析システム１２０による処理の流れを説明する。図６は、解析システム１２０による処理の流れの一例を示す。図７は、図６に示すステップ６１５の抽出処理の流れの一例を示す。なお、以下の説明では、全レコード数をｎ、レコードに含まれるアイテムの種類をｍ個とする。また、アイテムには１から始まる連続する正の整数のｉｄを付与し（但し空のアイテムφのｉｄは０とする）、アイテムはｉｄによって決まる順番を有するとする。
【００６０】
図６に示す処理は、ステップ６００から開始し、解析システム１２０の前処理部３００は、解析システム１２０内に保持される設定ファイルから、頻出の判定に使用する所定の閾値Ｓと、内相関判定に使用する所定の閾値αの値と、全レコード数ｎとを読み出して、これらパラメータ３１５を作業用メモリ３０５に保持する。
【００６１】
続いて前処理部３３０は、データベース装置１１０をアクセスして、レコードごと該レコードに含まれるアイテムのｉｄのリストを読み出す。そして前処理部３３０は、これを基に、アイテムのｉｄをキーとして、該アイテムを含むレコードのｉｄのセットをレコードｉｄの昇順で記録するリストを返す検索用テーブル３１０を、作業用メモリ３０５上に構築する（ステップ６０５）。なお、以下では、任意のアイテムｉｄ、ｉをキーとして、検索用テーブル３１０から返されるリストをＴ[ｉ]と記載する。
【００６２】
続いて、前処理部３００は、頻出と判定されたアイテムセットの出現頻度を登録するマップＭ３２５と、１つ前に検討対象とされたアイテムセットである旧アイテムセットを構成するアイテムのｉｄのリストを格納する配列Ｙと、旧アイテムセットを含むレコードのｉｄのリストを格納する配列Ｕとをそれぞれ作業用メモリ３０５上に用意し、これらを初期化する（ステップ６１０）。既に述べたように、配列Ｙは空のリストで、配列Ｕは全レコードのｉｄのリストでそれぞれ初期化する。
【００６３】
続いて、解析システム１２０は、作業用メモリ３０５上のデータを用いて、データベース装置１１０から内相関頻出アイテムセットを抽出する抽出処理を行う（ステップ６１５）。そして処理は終了する。抽出処理の詳細は、図７を参照して後述する。なお、ステップ６１５の抽出処理は、解析システム１２０の決定部３３０、頻出判定部３３５、相関判定部３４０、及び登録部３４５により再帰的に行われる。
【００６４】
図７は、決定部３３０、頻出判定部３３５、相関判定部３４０、及び登録部３４５により行われる内相関頻出アイテムセットの抽出処理の流れの一例を示す。上述したように、図７に示す抽出処理は再帰的に呼び出され、実行される。そして、所定の閾値Ｓ、所定の閾値α、及び全レコード数Ｔを含むパラメータ３１５と、検索用テーブル３１０と、マップＭ３２５とは、各抽出処理に共通して参照される。
【００６５】
処理はステップ７００から開始し、決定部３３０は、旧アイテムセットに追加する１アイテムのｉｄを示す変数ｘを作業用メモリ３０５上に用意し、該変数ｘに、全アイテムｉｄの中で最大のｉｄ、即ちｍを設定する。また、決定部３３０は、配列Ｙに含まれる最大のアイテムｉｄを示す変数ｊを作業用メモリ３０５上に用意し、該変数ｊに、現在の配列Ｙが空であるならば０を、そうでないならば、現在の配列Ｙに含まれる最大のアイテムｉｄを設定する。
【００６６】
続いて決定部３３０は、変数ｊの値より変数ｘの値が大きいか否かを判定する（ステップ７０５）。ｘ＞ｊの場合（ステップ７０５：ＹＥＳ）、即ち、旧アイテムセット内で順番が最も遅いアイテムよりも順番が後の未検討のアイテムが存在する場合、決定部３３０は、配列Ｙに格納された旧アイテムセットのアイテムのｉｄのリストに、変数ｘの値が示すアイテムｉｄを追加したものを、配列Ｙ´に設定する（ステップ７１０）。ここで配列Ｙ´は、新たに検討対象とするアイテムセットである新アイテムセットを構成するアイテムのｉｄのリストを格納する配列である。決定部３３０は、各抽出処理において初めてステップ７０５の処理を行う際に、配列Ｙ´を作業用メモリ３０５上に用意する。一方、変数ｊの値より変数ｘの値が大きくない場合（ステップ７０５：ＮＯ）、即ち、旧アイテムセット内で順番が最も遅いアイテムよりも順番が後の未検討のアイテムが存在しない場合、処理は終了する。
【００６７】
ステップ７１０から処理はステップ７１５へ進み、新アイテムセットの決定に応答して、頻出判定部３３５は、変数ｘの値が示す、旧アイテムセットに追加されたアイテムのｉｄをキーとして、該アイテムを含むレコードのｉｄのセットを記録するリストＴ「ｘ」を検索用テーブル３１０から取得する。そして、頻出判定部３３５は、取得したＴ「ｘ」と、旧アイテムセットを含むレコードのｉｄのリストを格納する配列Ｕとに共通して含まれるｉｄのリストを配列Ｕ´に設定する。また頻出判定部３３５は、配列Ｕ´のサイズを、新アイテムセットの出現頻度を示す変数ｇに設定する。ここで、配列Ｕ´は、新アイテムセットを含むレコードのｉｄのリストを格納する配列である。頻出判定部３３５は、各抽出処理において、初めてステップ７１５の処理を行う際に、配列Ｕ´と変数ｇを作業用メモリ３０５上に用意する。
【００６８】
続いて、頻出判定部３３５は、作業用メモリ３０５から頻出の判定に使用する所定の閾値Ｓを読み出して、新アイテムセットの出現頻度を示す変数ｇが所定の閾値Ｓ以上であるか否かを判定する（ステップ７２０）。変数ｇが所定の閾値Ｓ以上である場合（ステップ７２０：ＹＥＳ）、頻出判定部３３５は、マップＭ３２５に配列Ｙ´と変数ｇの組を登録し、頻出と判定された新アイテムセットの出現頻度を作業用メモリ３０５上に保持する（ステップ７２５）。
【００６９】
続いて、新アイテムセットの出現頻度のマップＭ３２５への登録に応答して、相関判定部３４０は、内相関の判定結果を示すブーリアン型の変数ｂと、新アイテムセットから除く１アイテムを識別する変数ｋとを作業用メモリ３０５上に用意し、それぞれ、値ｔｒｕｅと、配列Ｙのサイズで初期化する（ステップ７３０）。
【００７０】
続いて、相関判定部３４０は、変数ｋの値が０より大きいか否かを判定する（ステップ７３５）。変数ｋが０より大きい場合（ステップ７３５：ＹＥＳ）、即ち、新アイテムセット内の全アイテムのそれぞれについてまだ相関の判定が終わっていない場合、相関判定部３４０は、配列Ｙ´に格納された新アイテムセットのアイテムのｉｄのリストから、変数ｋの値が示すアイテムｉｄを除いて、サブセットのｉｄのリストを求める。そして相関判定部３４０は、該サブセットのｉｄのリストをキーとして、マップＭ３２５からサブセットの出現頻度を取得し、これを作業用メモリ３０５上に用意した変数ｈに設定する(ステップ７４０）。
【００７１】
続いて、相関判定部３４０は、変数ｋの値によって識別されるアイテムと、該アイテムを新アイテムセットから除いた残りのサブセットの間に相関があるか否かを、数式３により表される関数ｆを利用し、    
上記変数ｈを含む次式により判定する（ステップ８４５）。
【数４】
0005528292.tif 000005
上式において、ｇは新アイテムセットの出現頻度、ｎは全レコード数、αは内相関判定に使用する所定の閾値αの値である。また、｜Ｔ[ｋ]｜は変数ｋによって識別されるアイテムを含むレコードのｉｄのリストのサイズ、即ち変数ｋの値によって識別されるアイテムの出現頻度である。
【００７２】
ステップ７４５において数式４が満たされない場合、即ち相関があると判定される場合（ステップ７４５：ＮＯ）、相関判定部３４０は、変数ｋの値を１デクリメントして（ステップ７５０）、ステップ７３５へ戻る。一方、ステップ７４５において数式４が満たされる場合、即ち、相関がないと判定される場合（ステップ７４５：ＹＥＳ）、相関判定部３４０は、変数ｂに値ｆａｌｓｅを設定する（ステップ７５５）。
【００７３】
ステップ７３５において変数ｋが０以下の場合（ステップ７３５：ＮＯ）、即ち、新アイテムセット内の全アイテムのそれぞれについて相関の判定が終わった場合、又はステップ７５５において変数ｂに値ｆａｌｓｅが設定された場合、処理はステップ７６０へ進み、登録部３４５は、変数ｂの値がｔｒｕｅであるか否かを判定する。変数ｂの値がｔｒｕｅである場合（ステップ７６０：ＹＥＳ）、即ち、
新アイテムセット内の全アイテムのそれぞれについて残りのサブセットとの間に相関があり、新アイテムセットが内相関頻出アイテムセットであると判定された場合、登録部３４５は、配列Ｙ´の値、即ち、新アイテムセットを構成するアイテムのｉｄのリストと、変数ｇの値、即ち、新アイテムセットの出現頻度とを、内相関頻出集合記録装置１３０に出力して意味のある頻出アイテムセットとして登録する（ステップ７６５）。
【００７４】
一方、変数ｂの値がｔｒｕｅでない場合（ステップ７６０：ＮＯ）、即ち、新アイテムセットが内相関頻出アイテムセットでないと判定された場合、又はステップ７６５から、処理はステップ７７０へ進む。そして、登録部３４５は、１つ前に検討対象とされたアイテムセットである旧アイテムセットを構成するアイテムのｉｄのリストを格納する配列Ｙと、旧アイテムセットを含むレコードのｉｄのリストを格納する配列Ｕとを新たに作業用メモリ３０５上に用意し、配列Ｙに配列Ｙ´を、配列Ｕに配列Ｕ´をそれぞれ設定する。その後、抽出処理が再び実行される（ステップ７７０）。
【００７５】
ステップ７７０で呼び出された抽出処理が終了すると、又はステップ７２０において変数ｇが所定の閾値Ｓより小さい場合（ステップ７２０：ＮＯ）、即ち新アイテムセットが頻出でない場合、処理はステップ７７５へ進み、変数ｘの値が１でデクリメントされる。その後、処理はステップ７０５へ戻り、ステップ７０５において、ｘがｊ以下である、即ち、旧アイテムセット内で順番が最も遅いアイテムよりも順番が後の未検討のアイテムが存在しないと判定されるまで、ステップ７０５からステップ７７５の一連の処理が繰り返される。
【００７６】
図８は、図７を参照して説明した、内相関頻出アイテムセットの抽出処理を行う再帰関数Mineの擬似コードを示す。図８において、Ｘは全アイテムの集合、Ｔは全レコードの集合、αは内相関判定に使用する所定の閾値、Ｓは頻出の判定に使用する所定の閾値、Ｏは内相関頻出アイテムセットの集合（出力）、Ｙは１つ前に検討対象とされたアイテムセットである旧アイテムセット（初期値は空φ）、Ｔ（Ｙ）は旧アイテムセットを含むレコードの集合（初期値は全レコードの集合）、Ｍは頻出アイテムセットの出現頻度を登録するマップを示す。また、コード中に記載するアイテムセットのツリーとは、上述したアイテムセットのツリーの定義（１）及び（２）に従うツリーである。
【００７７】
図９は、マップＭ３２５の不要キーの削除処理の流れの一例を示す。該削除処理の実行はオプションであり、図７に示すフローチャートのステップ７３５でＮＯと判定された後又はステップ７５５の後かつステップ７６０の前に相関判定部３４０により実行される。処理はステップ９００で開始し、相関判定部３４０は、新アイテムセットを構成するアイテムのｉｄのリストを格納する配列Ｙ´内に、空アイテムφのｉｄ（＝０）を除いて全アイテムｉｄ内で最小のｉｄが含まれるか否かを判定する。配列Ｙ´内に、全アイテムｉｄ内で最小のｉｄ（０を除く）が含まれない場合（ステップ９００：ＮＯ）、処理は終了する。
【００７８】
一方、配列Ｙ´内に、全アイテムｉｄ内で最小のｉｄ（０を除く）が含まれる場合（ステップ９００：ＹＥＳ）、続いて相関判定部３４０は、配列Ｙ´に含まれるアイテムｉｄのリストを昇順に走査し、不連続なアイテムｉｄが見つかったか否かを判定する（ステップ９０５）。なお、アイテムｉｄのリストの走査は、不連続なアイテムｉｄが見つかった時点で終了してよい。不連続なアイテムｉｄが見つからない場合（ステップ９０５：ＮＯ）、処理は終了する。
【００７９】
一方、不連続なアイテムｉｄが見つかった場合（ステップ９０５：ＹＥＳ）、相関判定部３４０は、小さい方の不連続アイテムｉｄを除いた配列Ｙ´と、配列Ｙ´の中で最小のアイテムｉｄを除いた配列Ｙ´とをそれぞれキーとして、マップＭ３２５から出現頻度を削除する（ステップ９１０）。そして処理は終了する。
【００８０】
図１０は、解析システム１２０として機能する情報処理装置のハードウェア構成の一例を示す。情報処理装置５０は、バス２に接続されたメインＣＰＵ（中央処理装置）１とメインメモリ４を含んでいる。ハードディスク装置１３、３０、及びＣＤ−ＲＯＭ装置２６、２９、フレキシブル・ディスク装置２０、ＭＯ装置２８、ＤＶＤ装置３１のようなリムーバブル・ストレージ（記録メディアを交換可能な外部記憶システム）がフレキシブル・ディスクコントローラ１９、ＩＤＥコントローラ２５、ＳＣＳＩコントローラ２７などを経由してバス２へ接続されている。
【００８１】
フレキシブル・ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭのような記憶メディアが、リムーバブル・ストレージに挿入される。これらの記憶メディアやハードディスク装置１３、３０、ＲＯＭ１４には、オペレーティング・システムと協働してＣＰＵ１等に命令を与え、本発明を実施するためのコンピュータ・プログラムのコードを記録することができる。即ち、上記説明した数々の記憶装置には、情報処理装置５０にインストールされ、情報処理装置５０を解析システム１２０として機能させる抽出プログラムを記録することができる。
【００８２】
上記抽出プログラムは、前処理モジュールと、決定モジュールと、頻出判定モジュールと、相関判定モジュールと、登録モジュールを含む。これらモジュールは、ＣＰＵ１等に働きかけて、情報処理装置５０を、前処理部３００と、決定部３３０と、頻出判定部３３５と、相関判定部３４０と、登録部３４５としてそれぞれ機能させる。コンピュータ・プログラムは圧縮し、また複数に分割して複数の媒体に記録することもできる。
【００８３】
情報処理装置５０は、キーボード／マウス・コントローラ５を経由して、キーボード６やマウス７のような入力デバイスからの入力を受ける。情報処理装置５０は、オーディオコントローラ２１を経由して、マイク２４からの入力を受け、またスピーカー２３から音声を出力する。情報処理装置５０は、視覚データをユーザに提示するための表示装置１１に、グラフィックスコントローラ１０を経由して接続される。情報処理装置５０は、ネットワーク・アダプタ１８（イーサネット（登録商標）・カードやトークンリング・カード）等を介してネットワークに接続し、他のコンピュータ等と通信を行うことが可能である。
【００８４】
以上の説明により、本実施形態に係る情報処理装置５０は、通常のパーソナルコンピュータ、ワークステーション、メインフレームなどの情報処理装置、又は、これらの組み合わせによって実現されることが容易に理解されるであろう。なお、上記説明した構成要素は例示であり、そのすべての構成要素が本発明の必須構成要素となるわけではない。
【００８５】
以上、実施形態を用いて本発明の説明をしたが、本発明の技術範囲は上記実施形態に記載の範囲には限定されない。例えば、上記実施例では、決定部３３０は、上述した（１）及び（２）により定義されるアイテムセットのツリーを深さ優先かつ降順に走査するのに等しい順序で新アイテムセットを決定するとして説明した。しかし、これに代えて、決定部３３０は、上述した（１）及び（２）により定義されるアイテムセットのツリーを幅優先かつ降順に走査するのに等しい順序で新アイテムセットを決定してもよい。
【００８６】
図５（ｂ）は、図４に示すツリーを例として、ツリーを幅優先かつ降順に走査する場合の走査順序を示したものである。ノード横に書かれた数字は、走査順番を示す。この場合も、走査途中の現在のノードが示すアイテムセットから、任意の１アイテムを除いた残りのアイテムのサブセットは、現在のノードより以前に走査したいずれかのノードが示すアイテムセットに等しいことに留意されたい。そのため、新アイテムセットから１アイテムを除いた残りのアイテムのサブセットの出現頻度は、マップＭ３２５から取得でき、上記順序による場合も、同じアイテムセットについて重複して出現頻度をカウントすることがなくなり、効率よく、意味のある頻出アイテムセットの集合を抽出できる。
【００８７】
なお、上記幅優先かつ降順に走査するのと等しい順序で新アイテムセットを決定する場合、頻出判定部３３５による新アイテムセットの出現頻度の算出方法は、新アイテムセットに含まれるアイテムのｉｄをキーとして、検索用テーブル３１０からアイテムごとに該アイテムを含むレコードのｉｄのリストを取得し、取得したレコードのｉｄのリスト全てに共通なレコードのｉｄの数をカウントする方法に限定される。しかし、マップＭ３２５に関しては、次のようにしてメモリ領域の節約を図ることができる。即ち、アイテムセットのツリーで走査順序を考えた場合、現在の走査ノードの深さが１増えると、２つ前の深さのノード（深さ１のノードを除く）に関して求めた出現頻度は不要となるため、これら出現頻度をマップＭ３２５から削除してよい。
【００８８】
このように、上記の実施形態に、種々の変更又は改良を加えることが可能であることが当業者に明らかである。従って、そのような変更又は改良を加えた形態も当然に本発明の技術的範囲に含まれる。
【００８９】
なお、特許請求の範囲、明細書、及び図面中において示した装置、システム、プログラム、及び方法における動作、手順、ステップ、及び段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り任意の順序で実現しうることに留意すべきである。また、前の処理の出力を後の処理で用いる場合でも、前の処理と後の処理の間に他の処理が入ることは可能である場合があること、又は間に他の処理が入るように記載されていても前の処理を後の処理の直前に行うよう変更することも可能である場合があることも留意されたい。特許請求の範囲、明細書、及び図面中の動作フローに関して、便宜上「まず、」、「次に、」、「続いて、」等を用いて説明したとしても、この順で実施することが必須であることを必ずしも意味するとは限らない。
【図１】
0005528292.tif 000006
【図２】
0005528292.tif 000007
【図３】
0005528292.tif 000008
【図４】
0005528292.tif 000009
【図５】
0005528292.tif 000010
【図６】
0005528292.tif 000011
【図７】
0005528292.tif 000012
【図８】
0005528292.tif 000013
【図９】
0005528292.tif 000014
【図１０】
0005528292.tif 000015