(57)【特許請求の範囲】
【請求項１】
異なる複数の項目データのうちの全て又は一部の複数の項目データの順序を当該全て又は一部の複数の項目データの配列でそれぞれ示した複数の分析対象のレコードを記憶する記憶手段と、
前記記憶手段で記憶された複数のレコードのそれぞれに対応する複数の行と、前記異なる複数の項目データのうちの任意の２つの項目データからなる複数の順序対のそれぞれに対応する複数の列とからなり、各行列要素の値が、当該行列要素の行成分のレコードに、当該行列成分の列成分の順序対が出現するか否かを表す行列を生成する行列生成手段と、
前記行列生成手段で生成された行列の各列に対応する複数の第１のカウンタと、前記行列の各行に対応する複数の第２のカウンタとを有し、前記行列を操作して、前記複数の順序対の中で前記複数のレコードに出現する頻度が相対的に高い複数の順序対を抽出する抽出手段と、
前記抽出手段で抽出された複数の順序対を基に、前記複数のレコードに含まれる複数の項目データの配列の中で出現頻度が相対的に高い項目データの配列を生成する配列生成手段と、
を備えたデータ分析装置におけるデータ分析方法であって、
前記記憶手段が、前記複数のレコードを記憶する第１のステップと、
前記行列生成手段が、前記複数の順序対を生成する第２のステップと、
前記行列生成手段が、前記行列を生成する第３のステップと、
前記抽出手段が、前記行列から任意の１つの行を選択する第４のステップと、
前記抽出手段が、
選択された各行に対応する各レコードに出現する各順序列に対応する各列を求め、求めた各列に対応して設けられた各第１のカウンタで、前記選択された各行のうち当該列に対応する順序列が出現するレコードに対応する行の数を計数し、前記複数の第１のカウンタのそれぞれの値を基に、前記求めた各列の中から１つまたは複数の列を選択する第１の処理と、
選択された各列に対応する各順序対が出現する各レコードに対応する各行を求め、求めた各行に対応して設けられた各第２のカウンタで、前記選択された各列のうち当該行に対応するレコードに出現する順序列に対応する列の数を計数し、前記複数の第２のカウンタのそれぞれの値を基に、前記求めた各行の中から１つまたは複数の行を選択する第２の処理と、
を、前記第１の処理により選択された列と前記第２の処理により選択された行とが所定の収束条件を満たすまで交互に行う第５のステップと、
前記抽出手段が、前記収束条件を満たしたときに前記第１の処理により選択された列および前記第２の処理により選択された行からなる部分行列を、前記行列から抽出する第６のステップと、
前記配列生成手段が、前記部分行列の各列に対応する各順序対に含まれる複数の項目データのうち、当該複数の順序対で前件で出現する回数の最も多い項目データほど順序が先になるように各項目データのレベルを求める第７のステップと、
前記配列生成手段が、求めたレベルに基づき項目データを並べて、前記複数のレコードに含まれる項目データの配列の中で出現頻度が相対的に高い項目データの配列を生成する第８のステップと、
を有することを特徴とするデータ分析方法。
【請求項２】
前記行列生成手段が、前記第２のステップで生成された複数の順序対のなかから、前記複数のレコードに出現する回数が予め定められた値以上の複数の順序対を選択する選択ステップをさらに有し、
前記第３のステップは、前記選択ステップで選択された複数の順序対のそれぞれに対応する複数の列と、複数のレコードのそれぞれに対応する複数の行とからなる前記行列を生成することを特徴とする請求項１記載のデータ分析方法。
【請求項３】
前記第３のステップは、各行列要素の値が、当該行列要素の行成分に対応するレコードに、当該行列成分の列成分に対応する順序対の２つの項目データの並びと一致する連続する２つの項目データの並びがあるか否かを表す行列を生成することを特徴とする請求項１記載のデータ分析方法。
【請求項４】
異なる複数の項目データのうちの全て又は一部の複数の項目データの順序を当該全て又は一部の複数の項目データの配列でそれぞれ示した複数の分析対象のレコードを記憶する記憶手段と、
前記記憶手段で記憶された複数のレコードのそれぞれに対応する複数の列と、前記異なる複数の項目データのうちの任意の２つの項目データからなる複数の順序対のそれぞれに対応する複数の行とからなり、各行列要素の値が、当該行列要素の列成分のレコードに、当該行列成分の行成分の順序対が出現するか否かを表す行列を生成する行列生成手段と、
前記行列生成手段で生成された行列の各列に対応する複数の第１のカウンタと、前記行列の各行に対応する複数の第２のカウンタとを有し、前記行列を操作して、前記複数の順序対の中で前記複数のレコードに出現する頻度が相対的に高い複数の順序対を抽出する抽出手段と、
前記抽出手段で抽出された複数の順序対を基に、前記複数のレコードに含まれる複数の項目データの配列の中で出現頻度が相対的に高い項目データの配列を生成する配列生成手段と、
を備えたデータ分析装置におけるデータ分析方法であって、
前記記憶手段が、前記複数のレコードを記憶する第１のステップと、
前記行列生成手段が、前記複数の順序対を生成する第２のステップと、
前記行列生成手段が、前記行列を生成する第３のステップと、
前記抽出手段が、前記行列から任意の１つの列を選択する第４のステップと、
前記抽出手段が、
選択された各列に対応する各レコードに出現する各順序列に対応する各行を求め、求めた各行に対応して設けられた各第１のカウンタで、前記選択された各列のうち当該行に対応する順序列が出現するレコードに対応する列の数を計数し、前記複数の第１のカウンタのそれぞれの値を基に、前記求めた各行の中から１つまたは複数の行を選択する第１の処理と、
選択された各行に対応する各順序対が出現する各レコードに対応する各列を求め、求めた各列に対応して設けられた各第２のカウンタで、前記選択された各行のうち当該列に対応するレコードに出現する順序列に対応する行の数を計数し、前記複数の第２のカウンタのそれぞれの値を基に、前記求めた各列の中から１つまたは複数の列を選択する第２の処理とを、前記第１の処理により選択された行と前記第２の処理により選択された列とが所定の収束条件を満たすまで交互に行う第５のステップと、
前記抽出手段が、前記収束条件を満たしたときに前記第１の処理により選択された行および前記第２の処理により選択された列からなる部分行列を、前記行列から抽出する第６のステップと、
前記配列生成手段が、前記部分行列の各行に対応する各順序対に含まれる複数の項目データのうち、当該複数の順序対で前件で出現する回数の最も多い項目データほど順序が先になるように各項目データのレベルを求める第７のステップと、
前記配列生成手段が、求めたレベルに基づき項目データを並べて、前記複数のレコードに含まれる項目データの配列の中で出現頻度が相対的に高い項目データの配列を生成する第８のステップと、
を有することを特徴とするデータ分析方法。
【請求項５】
異なる複数の項目データのうちの全て又は一部の複数の項目データの順序を当該全て又は一部の複数の項目データの配列でそれぞれ示した複数の分析対象のレコードを記憶する記憶手段と、
前記異なる複数の項目データのうちの任意の２つの項目データからなる複数の順序対を生成し、前記記憶手段で記憶された複数のレコードのそれぞれに対応する複数の行と、前記複数の順序対のそれぞれに対応する複数の列とからなり、各行列要素の値が、当該行列要素の行成分のレコードに、当該行列成分の列成分の順序対が出現するか否かを表す行列を生成する行列生成手段と、
前記行列生成手段で生成された行列の各列に対応する複数の第１のカウンタ、及び、前記行列の各行に対応する複数の第２のカウンタを有する抽出手段であって、
（ａ）前記行列から任意の１つの行を選択し、
（ｂ）選択された各行に対応する各レコードに出現する各順序列に対応する各列を求め、求めた各列に対応して設けられた各第１のカウンタで、前記選択された各行のうち当該列に対応する順序列が出現するレコードに対応する行の数を計数し、前記複数の第１のカウンタのそれぞれの値を基に、前記求めた各列の中から１つまたは複数の列を選択する第１の処理と、
選択された各列に対応する各順序対が出現する各レコードに対応する各行を求め、求めた各行に対応して設けられた各第２のカウンタで、前記選択された各列のうち当該行に対応するレコードに出現する順序列に対応する列の数を計数し、前記複数の第２のカウンタのそれぞれの値を基に、前記求めた各行の中から１つまたは複数の行を選択する第２の処理とを、前記第１の処理により選択された列と前記第２の処理により選択された行とが所定の収束条件を満たすまで交互に行い、
（ｃ）前記収束条件を満たしたときに前記第１の処理により選択された列および前記第２の処理により選択された行からなる部分行列を前記行列から抽出し、
（ｄ）前記部分行列の各列に対応し、前記複数の順序対の中で前記記憶手段に記憶された前記複数のレコード中に出現する頻度が相対的に高い複数の順序対を得る抽出手段と、
前記抽出手段で抽出された前記部分行列の各列に対応する各順序対に含まれる複数の項目データのうち、当該複数の順序対で前件で出現する回数の最も多い項目データほど順序が先になるように各項目データのレベルを求め、この求めたレベルに基づき項目データを並べて、前記複数のレコードに含まれる項目データの配列の中で出現頻度が相対的に高い項目データの配列を生成する配列生成手段と、
を具備したことを特徴とするデータ分析装置。
【請求項６】
前記行列生成手段は、生成された複数の順序対のなかから、前記記憶手段に記憶された前記複数のレコードに出現する回数が予め定められた値以上の複数の順序対を選択し、選択された複数の順序対のそれぞれに対応する複数の列と、複数のレコードのそれぞれに対応する複数の行とからなる前記行列を生成することを特徴とする請求項５記載のデータ分析装置。
【請求項７】
前記行列生成手段は、各行列要素の値が、当該行列要素の行成分に対応するレコードに、当該行列成分の列成分に対応する順序対の２つの項目データの並びと一致する連続する２つの項目データの並びがあるか否かを表す行列を生成することを特徴とする請求項５記載のデータ分析装置。
【請求項８】
コンピュータを、
異なる複数の項目データのうちの全て又は一部の複数の項目データの順序を当該全て又は一部の複数の項目データの配列でそれぞれ示した複数の分析対象のレコードを記憶する記憶手段、
前記異なる複数の項目データのうちの任意の２つの項目データからなる複数の順序対を生成し、前記記憶手段で記憶された複数のレコードのそれぞれに対応する複数の行と、前記複数の順序対のそれぞれに対応する複数の列とからなり、各行列要素の値が、当該行列要素の行成分のレコードに、当該行列成分の列成分の順序対が出現するか否かを表す行列を生成する行列生成手段、
前記行列生成手段で生成された行列の各列に対応する複数の第１のカウンタと前記行列の各行に対応する複数の第２のカウンタとを有する抽出手段であって、
（ａ）前記行列から任意の１つの行を選択し、
（ｂ）選択された各行に対応する各レコードに出現する各順序列に対応する各列を求め、求めた各列に対応して設けられた各第１のカウンタで、前記選択された各行のうち当該列に対応する順序列が出現するレコードに対応する行の数を計数し、前記複数の第１のカウンタのそれぞれの値を基に、前記求めた各列の中から１つまたは複数の列を選択する第１の処理と、
選択された各列に対応する各順序対が出現する各レコードに対応する各行を求め、求めた各行に対応して設けられた各第２のカウンタで、前記選択された各列のうち当該行に対応するレコードに出現する順序列に対応する列の数を計数し、前記複数の第２のカウンタのそれぞれの値を基に、前記求めた各行の中から１つまたは複数の行を選択する第２の処理とを、前記第１の処理により選択された列と前記第２の処理により選択された行とが所定の収束条件を満たすまで交互に行い、
（ｃ）前記収束条件を満たしたときに前記第１の処理により選択された列および前記第２の処理により選択された行からなる部分行列を前記行列から抽出し、
（ｄ）前記部分行列の各列に対応し、前記複数の順序対の中で前記記憶手段に記憶された前記複数のレコード中に出現する頻度が相対的に高い複数の順序対を得る抽出手段、及び、
前記抽出手段で抽出された前記部分行列の各列に対応する各順序対に含まれる複数の項目データのうち、当該複数の順序対で前件で出現する回数の最も多い項目データほど順序が先になるように各項目データのレベルを求め、この求めたレベルに基づき項目データを並べて、前記複数のレコードに含まれる項目データの配列の中で出現頻度が相対的に高い項目データの配列を生成する配列生成手段、
として機能させるためのデータ分析プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
複数の項目を要素とする配列（シーケンス）で表される膨大な分析対象データの中から特徴的なシーケンスを抽出するデータマイニングに関する。
【０００２】
【従来の技術】
大規模データベースから知識を抽出する技術としてデータマイニングが注目されている。データマイニングの手法としては、決定木、ニューラルネット、相関規則発見、クラスタリングなど様々な手法が提案されている。これらの手法によりデータベースの中に隠されている特徴を抽出し、マーケティングなどのさまざまな分野への応用が期待されている。
【０００３】
近年、ＷＷＷの普及により、ＷＷＷ上での電子店舗が多数出現している。電子店舗では顧客のアクセス状況が電子的に得られるので、これにデータマイニングを適用することにより顧客やＷＷＷページの分析を行うことが可能となる。このようなＷＷＷ分野はＷＷＷマイニングと呼ばれ、データマイニングのキラーアプリケーションとして注目されている。
【０００４】
ＷＷＷマイニングの対象とするデータはＷＷＷアクセスログである。ＷＷＷサーバにはサーバ内のページアクセスに関してログが記録される。ｃｏｏｋｉｅなどの技術を用いることによりアクセスしたユーザの識別が行われている。ＷＷＷアクセスログレコードにはユーザ識別情報、アクセスしたページのＵＲＬ、アクセス時刻などの情報が含まれる。これらを用いて、一定時間内の同一ユーザのアクセスをまとめることによりセッションデータが得られる。ここでセッションとは同一ユーザによる一連のＷＷＷページアクセスシーケンスを表す。
【０００５】
ＷＷＷマイニングでよく利用されている機能としてシーケンス分析がある。これは、セッションデータより、出現回数の多いページアクセスシーケンスを発見する手法である。文献１（Ｒ．Ａｇｒａｗａｌ，  Ｒ．Ｓｒｉｋａｎｔ：  Ｍｉｎｉｎｇ  Ｓｅｑｕｅｎｔｉａｌ  Ｐａｔｔｅｒｎｓ，  ＩＢＭ  Ｒｅｓｅａｒｃｈ  Ｒｅｐｏｒｔ，１９９５）にシーケンス発見の代表的なアルゴリズムが記載されている。このアルゴリズムは最小サポート値以上の出現回数をもつシーケンスをすべて発見することができ、シーケンスの長さがｉのものＬｉを組み合わせて（ｉ＋１）の長さのシーケンス候補Ｃ（ｉ＋１）を生成し、その出現回数を調べて枝刈りすることにより、長さｉのシーケンスＬｉをすべて生成する。概要を以下に示す。
【０００６】
・ セッションデータより、出現頻度が最小サポート値以上のページを抽出する。（Ｌ１）
・ Ｌ１の中のページから生成可能な、２つのページを要素とする全ての配列を生成する。（Ｃ２）
・ Ｃ２の中の各配列について、その配列がセッションデータに出現する回数を調べ、出現頻度が最小サポート値より少ない配列を除く。（Ｌ２）
・ Ｌ２の中の２つのページの配列を組み合わせて、それらから生成可能な、３つのページを要素とする全ての配列を生成する。（Ｃ３）
・ Ｃ３の中の各配列について、その配列がセッションデータに出現する回数を調べ、出現頻度が最小サポート値より少ない配列を除く。
【０００７】
このようにＬｉを組み合わせてＣ（ｉ＋１）を生成し、Ｃ（ｉ＋１）の中の各配列について調べた、その配列がセッションデータに出現する回数を基に枝刈りすることによりＬ（ｉ＋１）を求める。以上の処理をＬｉ、あるいはＣｉが空になるまで繰り返す。
【０００８】
このような従来手法では、最小サポート値を大きくすると、処理途中のＬｉの数が枝刈りにより大幅に減るので効率よく処理できるが、出力されるシーケンス数は少なくなり、特徴的なシーケンスが失われる場合がある。一方最小サポート数を小さくすると、途中で生成されるＬｉが膨大となり、処理時間が多大となる。さらに、生成されるシーケンス数が非常に多くなり、ユーザが分析することが困難となる。一般に、適切な最小サポート値を決めることは困難であり、ユーザは膨大な出力結果をながめて興味あるシーケンスを発見する作業を手作業で行わざるをえない。
【０００９】
【発明が解決しようとする課題】
このように、従来のシーケンス発見手法では、出力されるシーケンス数が非常に多くなり、ユーザの動向の分析が困難となるという問題点があった。
【００１０】
そこで、本発明は上記問題点に鑑み、例えば、大量の顧客やユーザなどの行動履歴として蓄積された大量の分析対象データから、顧客やユーザなどの行動順序や選択順序などを（行動（選択）パターン、動向、シーケンス）を容易に抽出する（より具体的には、グラフ形式に上記シーケンスを表現する）ことができるデータ分析方法およびそれを用いたデータ分析装置を提供することを目的とする。
【００１１】
【課題を解決するための手段】
本発明は、異なる複数の項目のうちの全て又は一部の複数の項目を要素とする複数の第１の配列を分析対象データとしてデータ分析を行うためのものであって、（ａ）前記異なる複数の項目から、２つの項目を要素とする複数の第２の配列を生成し、（ｂ）この生成された複数の第２の配列のそれぞれが列成分、前記複数の第１の配列のそれぞれが行成分となる行列であって、その行列を構成する各行列要素の値で、少なくとも、その行列要素の行成分に対応する前記第１の配列に、該行列要素の列成分に対応する前記第２の配列で表されている２つの項目の順序が出現するか否かを表す行列を生成し、（ｃ）前記行列要素のうち、その行列要素の行成分に対応する前記第１の配列に該行列要素の列成分に対応する前記第２の配列で表されている２つの項目の順序が出現する行列要素を第１の行列要素としたとき、前記行列から前記第１の行列要素が密集している部分行列を抽出することにより、前記生成された複数の第２の配列から前記複数の第１の配列に出現する頻度の高い複数の第２の配列を抽出し、（ｄ）この抽出された複数の第２の配列のそれぞれで表された２つの項目毎の順序を満たすような第３の配列を生成することを特徴とする。
【００１２】
本発明によれば、複数の項目を要素とする配列（第１の配列（シーケンス））で表される膨大な分析対象データの中から特徴的なシーケンスを抽出することが容易に行える。
【００１３】
好ましくは、前記生成された複数の第２の配列のうちから、その第２の配列で表されている２つの項目の順序が前記複数の第１の配列に出現する頻度に基づき、複数の第２の配列を予め選択し、この選択された複数の第２の配列のそれぞれが列成分となる行列を生成する。このようにして、初期状態の行列サイズを小さくすることにより、処理時間を短縮することができる。
【００１４】
また、前記第１の行列要素のうち、その行成分に対応する前記第１の配列に出現する連続する２つの項目の順序に一致する前記第２の配列が列成分である第１の行列要素を第２の行列要素としたとき、前記行列から前記第２の行列要素が密集している部分行列を抽出することにより、前記生成された複数の第２の配列から、前記複数の第１の配列に出現する頻度の高い、連続する２つの項目の順序を表した複数の第２の配列を抽出する。
【００１５】
【発明の実施の形態】
本発明の実施の形態について説明する前に、本発明と比較するために、従来技術のシーケンス分析（上記文献１参照）について具体的に説明する。
【００１６】
ＷＷＷマイニングでよく利用されているシーケンス分析は、前述したように、セッションデータより、出現回数の多いページアクセスシーケンスを発見する手法である。
【００１７】
図１は、このシーケンス分析のアルゴリズムを具体的に説明するためのものである。図１では、１０個のシーケンス（ＯＢＪ１〜ＯＢＪ１０）を分析対象とし、最小サポート値を「２」とした場合のシーケンスを求める場合について示している。シーケンスＯＢＪ１〜ＯＢＪ１０ではＡ〜Ｅの５つのページに関するアクセスシーケンスが表現されている。例えば、シーケンスＯＢＪ１ではＡ→Ｃ→Ｄの順に３つのページがアクセスされたことを示す。
【００１８】
まず、Ｃ１、すなわち各ページのアクセス回数を求める。次にアクセス回数が最小サポート値以上のものをＬ１とする。この場合、Ｃ１に含まれる５つのページともアクセス回数が２以上であるので、枝刈りは行われず、Ｌ１はＣ１と同じとなる。
【００１９】
次に、Ｌ１を組み合わせて、２つのページを要素とする配列の集合Ｃ２を生成する。５つのページのうちの２つのページを要素とする全ての配列はＣ２に示すように２０通りとなり、そのすべてについて元のシーケンスに出現する回数を数える。２０通りの配列の中で図１に示した１１通りは出現回数が最小サポート値の「２」より大きいので、枝刈りによりＬ２はこれらの１１通りとなる。
【００２０】
次に、Ｌ２の各配列を組み合わせて、３つのページを要素とする配列の集合Ｃ３を生成する。Ｌ２の各配列に関しては、（ａ，ｂ）と（ｂ、ｃ）を組み合わせて（ａ，ｂ，ｃ）が得られるのと同様に、一方のシーケンスの後半と他方のシーケンスの前半が一致する対を見つけて合成すればよい。このようにして図１に示すように、Ｃ３として、１４通りの配列が生成されるので、それぞれについて元のシーケンスデータ中に含まれる回数を調べる。
【００２１】
次に、Ｃ３中の配列から、シーケンスデータ中の出現回数が最小サポート値の「２」より小さいものを枝刈りしてＬ３を求める。この場合、１４通りの配列の中から８通りが枝刈りされ、Ｌ３として、（Ａ，Ｂ，Ｄ），（Ａ，Ｃ，Ｄ）、（Ａ，Ｃ，Ｅ）、（Ｂ，Ａ，Ｅ）、（Ｂ，Ｃ，Ａ）、（Ｂ，Ｃ，Ｅ）の６通りの配列が得られる。このように、このアルゴリズムは最小サポート値以上のすべてのシーケンスを発見することができる。なお、さらにＬ３中の各配列を組み合わせて、４つのページを要素とする配列の集合Ｃ４を求めると、Ｌ３中の配列のどのように組み合わせても「４」の長さのシーケンスを生成できないので、Ｃ４は空となり、処理は終了する。
【００２２】
このような従来手法では、ページがＡ〜Ｅの５つあるにもかかわらず、最終的に得られる配列の要素の数は、図１のＬ３に示すように、３つのページまでである。また、ここでは、配列の要素となるページの数は、Ａ〜Ｅまでの５つのみであるから、特に問題はないが、実際には、配列の要素となるページの数が多くなればなるほど、Ｌ２として抽出された、２つのページを要素とする各配列を組み合わせて（合成して）、３つのページを要素とする配列の集合Ｃ３を生成する処理ステップ以降の処理時間が長くなる。
【００２３】
次に、本発明の実施の形態について図面を参照して説明する。
【００２４】
（第１の実施形態）
図１４は、本発明の第１の実施形態に係るデータ分析方法を適用したデータ分析装置の機能的な構成を示したものである。
【００２５】
図１４に示したデータ分析装置は、入力部１と分析対象データ記憶部２と行列生成部３と行列操作部４とデータ抽出部５と配列合成部６と出力部７とから構成されている。
【００２６】
入力部１は、分析対象データとしての複数のレコードが入力されるようになっている。ここでレコードとは、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）ページアクセスシーケンスを分析するために用いるセッションデータのように、異なる複数の項目（例えば、ここでは、ＷＷＷページ）のうちの全てまたは一部の複数の項目を要素とする配列（第１の配列）である。
【００２７】
分析対象データ記憶部２は、入力部１から入力された複数のレコードを記憶・管理するデータベースである。分析対象データ記憶部２に記憶されている複数のレコードが、データ分析装置の分析対象データである。
【００２８】
行列生成部３は、分析対象データ記憶部２に記憶されている複数の分析対象データ（レコード）から、後述するような行列を生成する。まず、全ての分析対象データに含まれる、異なる複数の項目から、２つの項目を要素とする複数の配列（第２の配列）を生成する。そして、この生成された複数の配列のそれぞれを行列の列成分、複数の分析対象データを行列の行成分に設定する。そして、この行列上で、上記生成された複数の配列のそれぞれで表される２つの項目の順序が上記分析対象データに出現するか否かを、上記行列の要素として表す。例えば、行列要素が「１」のときは、当該行列要素の行成分の分析対象データには、当該行列要素の列成分である、生成された配列に表されている２つの項目の順序が出現しているということを表している。また、行列要素が「０」のときは、当該行列要素の行成分の分析対象データには、当該行列要素の列成分である、生成された配列に表されている２つの項目の順序が出現していないということを表している。
【００２９】
行列操作部４は、行列生成部３で生成された上記行列を基に、上記複数の分析対象データに出現する頻度の高い２つの項目の配列をクラスタリングする。
【００３０】
データ抽出部５は、行列操作部４での処理結果を基に、上記行列から、値が「１」である要素が密集している部分行列を抽出する。
【００３１】
配列合成部６は、データ抽出部５で抽出された部分行列の列に設定されている複数の配列を、そのそれぞれで表された２つの項目毎の順序を満たすように、合成し、後述するシーケンスグラフを生成する。
【００３２】
出力部７は、配列合成部６で生成されたシーケンスグラフを所定のディスプレイに表示し、また、ユーザからの指示に応じて所定のプリンタに出力する。
【００３３】
次に、図１４に示したデータ分析装置の処理動作について、図１６に示すフローチャートを参照して説明する。ここでは、上記の従来手法の説明で用いたものと同一のセッションデータ（図２参照）を用いて、シーケンスグラフを生成するまでのデータ分析装置の処理動作を説明する。
【００３４】
図２に示した１０個のセッションデータ（ＯＢＪ１〜ＯＢＪ１０）には、それぞれ、ＡからＥまでのページアクセスのシーケンスが表現されている。各セッションデータＯＢＪ１からＯＢＪ１０は、Ａ〜Ｅまでの５つのページ（項目）の全てあるいは一部の複数のページを要素とする配列を示している。
【００３５】
図２に示した１０個のセッションデータが入力部１から入力されて、分析対象データ記憶部２に記憶されている。以下、この１０個のセッションデータを分析対象とした場合を例にとり説明する。
【００３６】
分析対象データである１０個セッションデータのそれぞれには、ＡからＥまでの５つのページ（項目）が含まれている。
【００３７】
まず、行列生成部３は、このＡからＥまでの５つのページ（項目）から、図３に示すように、２つのページ（項目）を要素とする配列を生成する。この場合、２０通りの配列が生成できる（図１６のステップＳ１０１）。そして、図４（ａ）に示すように、１０個のセッションデータのそれぞれが行成分（ｉ）、生成された２０通りの配列のそれぞれが列成分（ｊ）となるような行列を生成する（ステップＳ１０２）。この行列の各要素は、Ｍ｛ｉ、ｊ｝と表すことができる。
【００３８】
行列生成部３は、さらに、各分析対象データに、生成された複数の配列のそれぞれで表される、２つの項目の順序が出現するか否かに基づき、上記行列上の各要素の値を決定する（ステップＳ１０３）。Ｍ｛ｉ、ｊ｝＝１とは、セッションデータｉには、配列ｊで表された２つのページ（項目）の順序が出現（存在）することを表す。すなわち、値が「１」である行列要素Ｍ｛ｉ、ｊ｝は、その行成分に対応するセッションデータ（分析対象データ）に、該行列要素の列成分に対応する配列で表されている２つの項目の順序が出現する行列要素である。Ｍ｛ｉ、ｊ｝＝０とは、セッションデータｉには、配列ｊで表された２つのページ（項目）の順序が出現（存在）しないことを表す。すなわち、値が「０」である行列要素Ｍ｛ｉ、ｊ｝は、その行成分に対応するセッションデータ（分析対象データ）に、該行列要素の列成分に対応する配列で表されている２つの項目の順序が出現しない行列要素である。
【００３９】
例えば、セッションデータＯＢＪ１は（Ａ，Ｃ，Ｄ）であり、このセッションデータには、２つのページ（項目）の配列（Ａ，Ｃ）、（Ａ，Ｄ）、（Ｃ，Ｄ）の３つが出現（存在）する。従って、セッションデータＯＢＪ１に対応する行においては、配列（Ａ，Ｃ）、（Ａ，Ｄ）、（Ｃ，Ｄ）が列成分となる３つの行列要素（行列の要素データ）が「１」、その他の行列要素は「０」となる。
【００４０】
セッションデータＯＢＪ２〜ＯＢＪ１０についても、上記セッションデータＯＢＪ１の場合と同様にして、生成された複数の配列のそれぞれで表される２つのページ（項目）の順序が、各セッションデータに出現（存在）するか否かを行列要素として表す。すると、図４（ａ）に示すような、２値行列が生成される。
【００４１】
なお、図４（ａ）に示したような行列生成部３で生成される行列を構成する行を行ＯＢＪ１〜行ＯＢＪ１０と呼び、当該行列を構成する列を列ＡＢ〜列ＥＤと呼ぶ。
【００４２】
次に、行列操作部４では、分析対象データに出現する頻度の高い複数の配列を抽出するために、図４（ａ）に示した行列に対し、以下に示したような処理を行う（ステップＳ１０４）。ここでは、行列操作部４は、例えば、図４（ａ）に示したような行列から「１」が密集している部分行列を抽出するための処理を行う。
【００４３】
次に、行列操作部４で用いられる、この部分行列を抽出するための手法（以下、マトリクスクラスタリングと呼ぶ）について説明する。
【００４４】
図４（ａ）に示した２値行列において、行や列の並び方は任意であるため、順序を入れ替えてもよい。マトリクスクラスタリングは、例えば、図４（ａ）に示した行列の行、列を入れ替えることにより、密な部分行列を抽出する手法である。
【００４５】
例えば、顧客とその顧客が購入した商品とを１組とする複数のレコードを処理対象とした場合を例にとり、マトリクスクラスタリングを説明する。マトリクスクラスタリングは、図５（ａ）に示すように、顧客と商品の購買履歴のレコードを２値行列で表現し、その中から、図５（ｆ）に示すように、密な部分行列１０１（点線で囲まれた部分）を抽出することにより、互いに関連する顧客のクラスタと商品のクラスタを同時に求める手法である。
【００４６】
図５（ａ）に示した行列では、行（ｉ）は顧客を表し、ここでは、Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆの６人の顧客を表す。列（ｊ）は商品を表し、ここではａ、ｂ、ｃ、ｄ、ｅ、ｆ、ｇの７つの商品を表す。この行列の要素Ａｉｊ＝１とは、顧客ｉが商品ｊを購入したことを表す。すなわち、データベース中に（顧客＝ｉ、商品＝ｊ）となるレコードが存在することを表す。Ａｉｊ＝０とは（顧客＝ｉ、商品＝ｊ）となるレコードが存在しないことを表す。
【００４７】
図５では図５（ａ）に示した行列の行、列を入れ替えることにより、密な部分行列１０１を抽出する過程を示している。ここでは、行列の左上に密な部分行列を形成するための操作を行うものである。すなわち、「１」となる行列要素が上に行くように行を入替え、「１」となる行列要素が左に行くように列を入替える。以下、図５を参照しながら図６に示すフローチャートに基づき説明する。
【００４８】
まず、データベースにある複数のレコードを前述同様、顧客と商品を軸とする２値行列に変換する（図５（ａ）参照）。
【００４９】
操作対象の初期値としての２つの行Ｘ、Ｙを選択する（ステップＳ１、ステップＳ２）。この初期値の選択方法としてはランダムに選択する、あるいは上から順に選択するなどがあるが。ステップＳ１７における収束条件を簡単にするためには、上から順に２つ選択するのが望ましい。
【００５０】
ステップＳ１、Ｓ２で選択された行Ｘ、Ｙの評価値を計算する（ステップＳ３．ステップＳ４）。評価値の計算方法としては各種の方法があるが、ここでは「１」となる要素と下端あるいは右端からの距離の総和とする。例えば、図５（ａ）において、行Ｃと行Ｆが選択されたとする。ＸおよびＹは行番号とし、ここではＸ＝３、Ｙ＝６となる。行Ｃは要素ｆのみが「１」であり、右端からの距離は「２」となる。行Ｆは要素ｅとｇが「１」であり、右端からの距離はそれぞれ「３」と「１」となるので総和は「４」となる。従って、行Ｘの評価値ＸＸ＝２、行Ｙの評価値ＹＹ＝４となる。
【００５１】
次に、行番号、評価値を比較する（ステップＳ５〜ステップＳ７）。この場合、ステップＳ５において、Ｘ＝３、Ｙ＝６であるので、ステップＳ６へ進み、ステップＳ６において、ＸＸ＝２、ＹＹ＝４であるので、ステップＳ８へ進み、行Ｃと行Ｆが入替えられる（図５（ｂ）参照）。
【００５２】
次に、ステップＳ９、ステップＳ１０において、２つの列を選択する。ここでは列ｄと列ｇが選択されたとする。選択方法としてはランダムに選択する、あるいは左端から順に選択するなどがあるが、ステップＳ１７における収束条件を簡単にするためには、左端から順に２つ選択するのが望ましい。
【００５３】
ステップＳ１１、Ｓ１２では、選択された列Ｚ、列Ｗの評価値を計算する。行の場合と同様にして、ＺおよびＷは列番号とし、図５（ｂ）に示すように、ここではＺ＝４、Ｗ＝７となる。列ｄは要素Ａのみが「１」であり、下端からの距離は「６」となる。列ｇは要素Ｆ、Ｄが「１」であるので、下端からの距離はそれぞれ「４」と「３」となり、総和は「７」となる。すなわち、ＺＺ＝６、ＷＷ＝７となる。
【００５４】
次に、列番号、評価値を比較する（ステップＳ１３〜ステップＳ１５）。この場合、ステップＳ１３において、Ｚ＝４、Ｗ＝７であるので、ステップＳ１４へ進み、ステップＳ１４において、ＺＺ＝６、ＷＷ＝７であるので、ステップＳ１６へ進み、列ｄと列ｇが入替えられる（図５（ｃ）参照）。
【００５５】
以下同様にして、図５（ｃ）において行Ａと行Ｄを選択して、ステップＳ８で行Ａと行Ｄを入れ替え、図５（ｄ）において列ａと列ｅを選択して、ステップＳ１６で列ａと列ｅを入れ替える。また、図５（ｅ）において行を選択してもステップＳ８での行の入れ替えが発生しないため、次に、列ｂと列ｇを選択して、ステップＳ１６で列ｂと列ｇを入れ替えて、図５（ｆ）に示すような行列を得る。このような処理を収束するまで（ステップＳ１７）繰り返すと、図５（ｆ）に示すように最終的に左上に密な部分行列（行Ｄ、Ｂ、Ｆと列ｅ、ｇ、ｃより構成される部分行列）１０１が生成される。
【００５６】
図１４のデータ抽出部５では、図５（ｆ）に示した行列から部分行列１０１を抽出する。
【００５７】
なお、ステップＳ１７の収束性の判定は行や列の選択方法により異なる。行や列の選択方法をランダムとした場合は、入替えが一定回数生じないことを検出して収束性を判定すればよい。また、他の選択方法においては、すべての行あるいは列の対について入替えが生じないことが判定できれば、その時点を収束状態とすればよい。
【００５８】
上記のマトリクスクラスタリングの説明では、行成分に顧客を、列成分に商品とする行列を操作対象としているが、この図４（ａ）に示した行列を操作対象としても（行成分、列成分の項目が異なるだけであるので）、上記説明は、そのまま当てはまる。
【００５９】
マトリクスクラスタリングでは初期値の与え方により結果が異なる。これは、初期値として指定された行あるいは列を含む密な部分行列を生成するからである。図４では、初期値をＯＢＪ１として、図４（ａ）に示した行列の左上に密な部分行列を求めた場合と、初期値をＯＢＪ６として、図４（ａ）に示した行列の左上に密な部分行列を求めた場合を、図４（ｂ）と図４（ｃ）にそれぞれ示している。図４（ａ）に示した行列全体を分析する場合には、初期値を変えて実行を繰り返せばよい。
【００６０】
初期値を行ＯＢＪ１に対応する行とした場合、マトリクスクラスタリングにより、図４（ｂ）に示したように、セッション（ＯＢＪ１、ＯＢＪ２、ＯＢＪ３、ＯＢＪ４、ＯＢＪ５）と２つのページを要素とする配列（ＡＢ，ＡＣ，ＡＤ，ＢＤ，ＣＤ）から構成される部分行列が抽出される。また、初期値をＯＢＪ６とした場合、マトリクスクラスタリングにより、図４（ｃ）に示したように、セッション（ＯＢＪ６，ＯＢＪ７，ＯＢＪ８，ＯＢＪ９，ＯＢＪ１０）と、２つのページを要素とする配列（ＢＡ，ＢＣ，ＢＥ、ＣＡ，ＣＥ）から構成される部分行列が抽出される。
【００６１】
上記マトリクスクラスタリングを高速に行うアルゴリズムとして、ピンポン法が提案されている。一般にマトリクスクラスタリングの対象となる２値行列は疎行列なので、ピンポン法は、この性質を利用して、行列上の「１」となる要素のみを演算対象とすることにより、高速処理が可能である。
【００６２】
もちろん、図１４の行列操作部４においても、ピンポン法を適用可能である。その場合の行列操作部４の機能構成を図１５に示す。
【００６３】
図１５において、行列操作部４は、行・列選択部１４と上記行列の各行に対応付けられた複数の（行の数と同じ数の）マーカカウンタ１５と、上記行列の各列に対応付けられた複数の（列の数と同じ数の）マーカカウンタ１６とから構成される。
【００６４】
次に、図１５に示した構成の行列操作４が、ピンポン法により、図４（ａ）に示した行列から、「１」が密集した部分行列を抽出する場合について、図７に示すフローチャートに従って、図８〜図１２を参照しながら説明する。なお、ピンポン法は、行から列、列から行へのマーカ伝搬により、操作対象の行、列を探索する手法を用いていて、このマーカ伝搬の様子を、概念的に、行（列）は、値が「１」の行列要素にて接続されている列（行）へマーカを送信し、列（行）は、値が「１」の行列要素にて接続されている行（列）からマーカを受信すると表現している。
【００６５】
まず、行・列選択部１４は、操作開始行を指定する（ステップＳ２１）。ここでは、行ＯＢＪ１を開始行とする（図８参照）。図４（ａ）に示すように、行ＯＢＪ１から、値が「１」の行列要素を介して接続される列へマーカを送信する。ここでは、図８に示すように、行ＯＢＪ１において、列ＡＣと列ＡＤと列ＣＤの要素が「１」なので、列ＡＣと列ＡＤと列ＣＤにマーカが送信される（ステップＳ２２）。
【００６６】
マーカ伝搬は、具体的には、例えば、次のような処理により実現される。すなわち、例えば、図４（ａ）の各行（行ＯＢＪ１〜行ＯＢＪ１０）、各列（列ＡＢ〜列ＥＤ）にはそれぞれマーカカウンタ１５を持たせておく。ここでは、行ＯＢＪ１において、列ＡＣと列ＡＤと列ＣＤの要素が「１」なので、列ＡＣと列ＡＤと列ＣＤのマーカカウンタ１６のカウンタ値は、「１」である。この最初のマーカ伝搬においては、枝刈りは行わないものとし、枝刈りは集計されたマーカ数が「１」以下のものを除去するものとする（ステップＳ２３）。なお、マーカの集計、枝刈りが終了するたびに各行、各列のマーカカウンタ１５，１６をリセットする（例えば、「０」とする）。
【００６７】
次に、列ＡＣと列ＡＤと列ＣＤから、値が「１」の行列要素を介して接続される行へマーカを送信する（ステップＳ２４）。ここでは、図９に示すように、列ＡＣにおいて、行ＯＢＪ１、行ＯＢＪ３、行ＯＢＪ４、行ＯＢＪ５の要素が「１」なので、行ＯＢＪ１、行ＯＢＪ３、行ＯＢＪ４、行ＯＢＪ５にマーカが送信され、また、列ＡＤにおいて、行ＯＢＪ１、行ＯＢＪ２，行ＯＢＪ３、行ＯＢＪ４、行ＯＢＪ５の要素が「１」なので、行ＯＢＪ１、行ＯＢＪ２，行ＯＢＪ３、行ＯＢＪ４、行ＯＢＪ５にマーカが送信される。さらに、列ＣＤにおいて、行ＯＢＪ１、行ＯＢＪ３、行ＯＢＪ４、行ＯＢＪ５の要素が「１」なので、行ＯＢＪ１、行ＯＢＪ３、行ＯＢＪ４、行ＯＢＪ５にマーカが送信される。
【００６８】
これらの行に送信されたマーカの数を集計する。すなわち、行ＯＢＪ１、行ＯＢＪ３、行ＯＢＪ４、行ＯＢＪ５のマーカカウンタ１５の値は、「３」であり、行ＯＢＪ２のマーカカウンタ１５の値は「１」である。従って、行ＯＢＪ２を枝刈りする（ステップＳ２５）。
【００６９】
ステップＳ２６へ進み、状態変化を調べる。この場合、活性化されている行ＯＢＪ１、行ＯＢＪ３、行ＯＢＪ４、行ＯＢＪ５は直前の状態（すなわち、図８の行ＯＢＪ１のみが活性化されている状態）と異なるので、処理が継続され、ステップＳ２２へ戻る。
【００７０】
ステップＳ２２では、行ＯＢＪ１、行ＯＢＪ３、行ＯＢＪ４、行ＯＢＪ５から、値が「１」の行列要素を介して接続される列へマーカを送信する。ここでは、図１０に示すように、行ＯＢＪ１において、列ＡＣ、列ＡＤ、列ＣＤの要素が「１」なので、列ＡＣ、列ＡＤ、列ＣＤにマーカが送信される。行ＯＢＪ３において、列ＡＣ、列ＡＤ、列ＡＥ、列ＣＤ、列ＣＥの要素が「１」なので、列ＡＣ、列ＡＤ、列ＡＥ、列ＣＤ、列ＣＥにマーカが送信される。行ＯＢＪ４において、列ＡＢ、列ＡＣ、列ＡＤ、列ＢＣ、列ＢＤ、列ＣＤの要素が「１」なので、列ＡＢ、列ＡＣ、列ＡＤ、列ＢＣ、列ＢＤ、列ＣＤにマーカが送信される。行ＯＢＪ５において、列ＡＢ、列ＡＣ、列ＡＤ、列ＢＤ、列ＣＢ、列ＣＤの要素が「１」なので、列ＡＢ、列ＡＣ、列ＡＤ、列ＢＤ、列ＣＢ、列ＣＤにマーカが送信される。
【００７１】
ステップＳ２３で、列毎に受信したマーカを集計すると、列ＡＢと列ＢＤのマーカカウンタ１６の値は「２」、列ＡＣと列ＡＤと列ＣＤのマーカカウンタ１６の値は「４」、列ＡＥと列ＢＣと列ＣＢと列ＣＥのマーカカウンタ１６の値は「１」となる。この場合、枝刈りが行われてマーカ数が「１」の列ＡＥ、列ＢＣ、列ＣＢ、列ＣＥが削除され、列ＡＢ、列ＡＣ、列ＡＤ、列ＢＤ、列ＣＤが活性化される。
【００７２】
次に、ステップＳ２４へ進み、列ＡＢ、列ＡＣ、列ＡＤ、列ＢＤ、列ＣＤのそれぞれから、値が「１」の行列要素を介して接続される行へマーカを送信する。ここでは、図１１に示すように、列ＡＢにおいて、行ＯＢＪ２，行ＯＢＪ４、行ＯＢＪ５の要素が「１」なので、行ＯＢＪ２，行ＯＢＪ４、行ＯＢＪ５にマーカが送信される。また、列ＡＣにおいて、行ＯＢＪ１，行ＯＢＪ３、行ＯＢＪ４、行ＯＢＪ５、行ＯＢＪ７の要素が「１」なので、行ＯＢＪ１，行ＯＢＪ３、行ＯＢＪ４、行ＯＢＪ５、行ＯＢＪ７にマーカが送信される。また、列ＡＤにおいて、行ＯＢＪ１，行ＯＢＪ２，行ＯＢＪ３、行ＯＢＪ４、行ＯＢＪ５の要素が「１」なので、行ＯＢＪ１，行ＯＢＪ２，行ＯＢＪ３、行ＯＢＪ４、行ＯＢＪ５にマーカが送信される。また、列ＢＤにおいて、行ＯＢＪ２，行ＯＢＪ４、行ＯＢＪ５の要素が「１」なので、行ＯＢＪ２，行ＯＢＪ４、行ＯＢＪ５にマーカが送信される。さらに、列ＣＤにおいて、行ＯＢＪ１，行ＯＢＪ３、行ＯＢＪ４、行ＯＢＪ５の要素が「１」なので、行ＯＢＪ１，行ＯＢＪ３、行ＯＢＪ４、行ＯＢＪ５にマーカが送信される。
【００７３】
ステップＳ２５で、行毎にマーカを集計する。その結果、行ＯＢＪ１と行ＯＢＪ２と行ＯＢＪ３のマーカカウンタ１５の値は「３」となり、行ＯＢＪ４と行ＯＢＪ５のマーカカウンタ１５の値は「５」となり、行ＯＢＪ７のマーカカウンタ１５の値は「１」であるので、行ＯＢＪ７が枝刈りされ、行ＯＢＪ１と行ＯＢＪ２と行ＯＢＪ３と行ＯＢＪ４と行ＯＢＪ５が活性化される。
【００７４】
ステップＳ２６へ進み、状態変化を調べる。活性化された行は直前の状態（図９参照）と異なるので、処理が継続され、ステップＳ２２へ戻る。
【００７５】
ステップＳ２２では、行ＯＢＪ１、行ＯＢＪ２、行ＯＢＪ３、行ＯＢＪ４、行ＯＢＪ５から、値が「１」の行列要素を介して接続される列へマーカを送信する。ここでは、図１２に示すように、行ＯＢＪ１において、列ＡＣ、列ＡＤ、列ＣＤの要素が「１」なので、列ＡＣ、列ＡＤ、列ＣＤにマーカが送信される。行ＯＢＪ２において、列ＡＢ、列ＡＤ、列ＢＤの要素が「１」なので、列ＡＢ、列ＡＤ、列ＢＤにマーカが送信される。行ＯＢＪ３において、列ＡＣ、列ＡＤ、列ＡＥ、列ＣＤ、列ＣＥ、列ＤＥの要素が「１」なので、列ＡＣ、列ＡＤ、列ＡＥ、列ＣＤ、列ＣＥ、列ＤＥにマーカが送信される。行ＯＢＪ４において、列ＡＢ、列ＡＣ、列ＡＤ、列ＢＣ、列ＢＤ、列ＣＤの要素が「１」なので、列ＡＢ、列ＡＣ、列ＡＤ、列ＢＣ、列ＢＤ、列ＣＤにマーカが送信される。行ＯＢＪ５において、列ＡＢ、列ＡＣ、列ＡＤ、列ＢＤ、列ＣＢ、列ＣＤの要素が「１」なので、列ＡＢ、列ＡＣ、列ＡＤ、列ＢＤ、列ＣＢ、列ＣＤにマーカが送信される。
【００７６】
ステップＳ２３で、列毎に受信したマーカを集計すると、列ＡＢと列ＢＤのマーカカウンタ１６の値は「３」、列ＡＣと列ＣＤのマーカカウンタ１６の値は「４」、列ＡＤのマーカカウンタ１６の値は「５」であり、それ以外は、「１」以下なので、この場合、列ＡＥ、列ＢＣ、列ＣＢ、列ＣＥ、列ＤＥが枝刈りされて、列ＡＢ、列ＡＣ、列ＡＤ、列ＢＤ、列ＣＤが活性化される。
【００７７】
なお、ここで活性化された列は、図１０に示した状態において、活性化された列と同じである。従って、ステップＳ２４、ステップＳ２５を経るまでもなく、これ以上繰り返しても状態は変化しないことが分かり、処理は終了する（ステップＳ２６）。
【００７８】
結果として、行・列選択部１４からは、行ＯＢＪ１，行ＯＢＪ２，行ＯＢＪ３、行ＯＢＪ４、行ＯＢＪ５と、列ＡＢ、列ＡＣ、列ＡＤ、列ＢＤ、列ＣＤが選択されたことになる。
【００７９】
よって、データ抽出部５では、図４（ａ）に示した行列から、行・列選択部１４で、最後に活性化された行ＯＢＪ１，行ＯＢＪ２，行ＯＢＪ３、行ＯＢＪ４、行ＯＢＪ５と列ＡＢ、列ＡＣ、列ＡＤ、列ＢＤ、列ＣＤより構成される、図１３に示したような部分行列を抽出する。これは、図４（ｂ）と一致している。
【００８０】
以上のようにして、図４（ａ）に示したような行列から抽出された図１３に示したような部分行列には、分析対象データに出現する頻度の高い（２つの項目毎の順序を表した）配列が、その列成分に設定されている。すなわち、図４（ａ）に示した行列から、分析対象データに出現する頻度の高い（２つの項目毎の順序を表した）配列が抽出されたことになる。
【００８１】
図１６の説明に戻る。ステップＳ１０４において、上記のようにして、行列生成部３で生成された図１４（ａ）に示した行列から、図１３に示したような「１」が密集した部分行列が抽出されたとする。次に、ステップＳ１０５へ進み、配列合成部６では、この抽出された部分行列の列成分となっている複数の配列を、そのそれぞれで表された２つのページ（項目）毎の順序を満たすように合成し、シーケンスグラフを生成する。
【００８２】
シーケンスグラフは、抽出された部分行列の列成分となっている複数の配列を、それぞれで表された２つのページ（項目）毎の順序を満たすように合成された、複数のページ（項目）のそれぞれをノードとして、そのノードの順序をグラフ形式で表したものである。
【００８３】
次に、図１７に示すフローチャートを参照して、配列合成部６でシーケンスグラフを生成するための処理動作について説明する。ここでは、図１３に示した部分行列の列成分となっている配列（ＡＢ，ＡＣ，ＡＤ，ＢＤ，ＣＤ）を合成して、シーケンスグラフを生成する場合を例にとり説明する。
【００８４】
この場合、配列合成部６は、例えば、図１８に示すように、図１３に示した部分行列の列成分となっている配列（ＡＢ，ＡＣ，ＡＤ，ＢＤ，ＣＤ）のそれぞれで表されている２つのページ毎の順序を示した配列テーブルを設定する。図１８に示した配列テーブルでは、各配列で表されている２つのページ毎の順序で、先の（前件の）ページを「前」に、後の（後件の）ページを「後」として登録されている。
【００８５】
まず、図１７のステップＳ２０１において、レベルを表す変数Ｉを「１」とする。ここでシーケンスグラフのレベルとは、シーケンスグラフ上で、先頭（例えば、左端）から何番目に配置される項目であるかを表したものである。例えば、レベルが「１」の項目（ここでは、ページ）は、シーケンスグラフの先頭に配置され、レベルが「２」の項目（ここでは、ページ）は、シーケンスグラフの２番目に配置される。ＷＷＷページのアクセスシーケンスの場合、シーケンスグラフの１番目に配置されるページが最初にアクセスされる頻度が最も高いページであり、２番目に配置されるページが、その次にアクセスされる頻度が高いページである。
【００８６】
次に、配列テーブルからノードテーブルを作成する（ステップＳ２０２）。すなわち、図１８に示した配列テーブルに表れるすべてのノードについて図１９（ａ）に示すような、ノードテーブルが作成される。
【００８７】
図１９（ａ）のノードテーブルは、配列テーブルに登録された各配列に含まれる４つのページ（項目）Ａ、Ｂ、Ｃ、Ｄをシーケンスグラフのノードとしたときに、各ノードの配置を決定するため用いるデータと、決定された配置位置を書き込むためのテーブルである。各ノードには、配列（ＡＢ，ＡＣ，ＡＤ，ＢＤ，ＣＤ）に、そのノードが先に（前件として）出現する回数、後に（後件として）出現する回数が、それぞれ「前件」、「後件」という項目の欄に書き込まれている。また、このノードテーブルには、各ノードに対し、上記「前件」「後件」という項目以外にも、そのノードに対しレベルが決定されているか否かを示したフラグや、シーケンスグラフ上の位置（座標）に対応する「Ｘ」「Ｙ」という変数が書き込まれる項目欄も設けられている。なお、ここでは、座標Ｘは、そのときのレベルＩに対応する。
【００８８】
ステップＳ２０３において、図１９（ａ）のノードテーブル上で、まだレベルが決定されていないエントリーがあるか否かをチェックする。図１９（ａ）に示したノードテーブルには、フラグが「０」、すなわち、レベルが決定されていないエントリーが存在するので、ステップＳ２０４へ進む。
【００８９】
ステップＳ２０４では、図１９（ａ）のノードテーブルからフラグが「０」で、かつ「後件」が「０」であるエントリーを選択する。この場合、ノードＡのフラグが「０」、「後件」が「０」であるので、ノードＡが選択される。そして、図１９（ｂ）に示すように、ノードテーブル上のノードＡに対応するエントリーの「Ｘ」には、そのときのレベルＩの値である「１」を書き込むとともに、「Ｙ」には「１」を、フラグは「１」にセットする。
【００９０】
次に、ステップＳ２０５へ進み、配列テーブル上に、ノードＡが前件として先に出現する配列があるときには（ここでは、配列（Ａ，Ｂ）、（Ａ，Ｃ）、（Ａ，Ｄ）が存在する）、当該配列の後件に当たるノード（ここでは、ノードＢ、Ｃ、Ｄ）に対応するノードテーブルのエントリーの「後件」の値を減じる。すなわち、この場合、配列（Ａ，Ｂ）、（Ａ，Ｃ）、（Ａ，Ｄ）には、ノードＢ，Ｃ、Ｄがそれぞれ１回ずつ出現するので、図１９（ｂ）に示すように、ノードＢ、Ｃ、Ｄのそれぞれに対応するエントリーの「後件」の値をそれぞれ「１」ずつ減じて「０」，「０」、「２」となる。
【００９１】
以上のようにして、シーケンスグラフの先頭に配置されるノードが決定したので、次に、レベルを表す変数Ｉを１つインクリメントして（ステップＳ２０６）、ステップＳ２０３へ進む。そして、図１９（ｂ）に示したノードテーブルに基づき、シーケンスグラフの２番目に配置するノードを決定すべく、上記同様の処理を行う。この場合、図１９（ｂ）に示したように、ノードテーブルには、フラグが「０」のエントリーが存在するので、ステップＳ２０３からステップＳ２０４へ進み、フラグが「０」で、かつ「後件」が「０」であるエントリーをノードテーブルから選択する。この場合、ノードＢとＣのフラグが「０」でかつ後件が「０」であるので、ノードＢとＣが選択される。
【００９２】
ノードＢについては出現順序が先なので、図１９（ｃ）に示すように、ノードテーブル上のノードＢに対応するエントリーの「Ｘ」には、そのときのレベルＩの値である「２」を書き込むとともに、「Ｙ」には「１」を、フラグは「１」にセットする。また、ノードテーブル上のノードＣに対応するエントリーの「Ｘ」には、そのときのレベルＩの値である「２」を書き込むとともに、「Ｙ」には「２」を、フラグは「１」にセットする。
【００９３】
次に、ステップＳ２０５へ進み、配列テーブル上に、ノードＢとノードＣが前件として先に出現する配列があるときは（ここでは、配列（Ｂ，Ｄ）、（Ｃ，Ｄ）が存在する）、当該配列の後件に当たるノード（ここでは、ノードＤ）に対応するノードテーブルのエントリーの「後件」の値を減じる。すなわち、この場合、配列（Ｂ，Ｄ）、（Ｃ，Ｄ）には、ノードＤが２回出現するので、図１９（ｃ）に示すように、ノードＤに対応するエントリーの「後件」の値を「２」減じて「０」となる。
【００９４】
以上のようにして、シーケンスグラフの２番目に配置されるノードが決定したので、次に、レベルを表す変数Ｉを１つインクリメントして（ステップＳ２０６）、ステップＳ２０３へ進む。そして、図１９（ｃ）に示したノードテーブルに基づき、シーケンスグラフの３番目に配置するノードを決定すべく、上記同様の処理を行う。
【００９５】
図１９（ｃ）に示したノードテーブルには、フラグが「０」のエントリーが存在するので、ステップＳ２０３からステップＳ２０４へ進み、フラグが「０」でかつ「後件」が「０」であるエントリーを選択する。この場合、ノードＤのフラグが「０」で、かつ「後件」が「０」であるので、ノードＤが選択され、図１９（ｄ）に示すように、ノードテーブル上のノードＤに対応するエントリーの「Ｘ」には、そのときのレベルＩの値である「３」を書き込むとともに、「Ｙ」には「１」を、フラグは「１」にセットする。
【００９６】
次に、ステップＳ２０５へ進む。ここでは、配列テーブル上に、ノードＤが前件として先に出現する配列が存在しないので、ステップＳ２０６へ進み、さらに、ステップＳ２０３へ戻る。図１９（ｄ）に示すように、このノードテーブル上の全てのエントリーのフラグは「１」である。すなわち、このノードテーブル上には、フラグが「０」のエントリーが存在しないので、すなわち、ノードテーブル上の全てのノードについて、シーケンスグラフ上の配置位置が決定したので、ステップＳ２０３からステップＳ２０７へ進む。
【００９７】
ステップＳ２０７以降では、図１９（ｄ）に示したノードテーブル上の各ノードに対し決定された「Ｘ」，「Ｙ」の値を、シーケンスグラフ上の各ノードの座標として画面にシーケンスグラフを描く。
【００９８】
まず、ノードＡを座標（１，１）に、ノードＢ，Ｃ，Ｄをそれぞれ座標（２，１）、（２，２）、（３，１）に配置する。
【００９９】
次に、ステップＳ２０８において、図１８に示したような配列テーブル上の各配列に表されている２つのページ（項目）毎の順序をリンクの方向として、画面上に配置された各ノード間を接続するように矢印を描く。このようにして生成されたシーケンスグラフの一例を図２０に示す。この生成されたシーケンスグラフが、出力部７からディスプレイ等に出力される。
【０１００】
図２０に示したシーケンスグラフからは、図２に示した分析対象データから、（Ａ、Ｂ、Ｄ）（Ａ、Ｃ、Ｄ）（Ａ、Ｄ）という３種類の配列が抽出されたことがわかる。すなわち、図２に示した、ユーザのＷＷＷページのアクセスシーケンスのレコードから、ユーザがＡ〜ＥのＷＷＷページをアクセスする際には、（Ａ、Ｂ、Ｄ）（Ａ、Ｃ、Ｄ）（Ａ、Ｄ）という３種類の行動パターンのいずれかである場合が非常に多いということがわかる。
【０１０１】
以上説明したように、上記第１の実施形態によれば、分析対象データに含まれる、異なる複数の項目から、２つの項目を要素とする複数の配列（各配列の要素の並べ方は、異なる複数のｍ個の項目から２つの項目を取り出して作ることのできるｍ×（ｍ−１）個の順列に等しい）を生成し、この生成された複数の配列のそれぞれが列成分、分析対象データのそれぞれが行成分となるように設定された行列上で、上記生成された複数の配列のそれぞれで表される２つの項目毎の順序が上記分析対象データに出現するか否かを上記行列の要素値（要素データ）で表す。そして、上記行列から、要素値で、当該要素の行成分に対応する分析対象データに、その要素の列成分に対応する配列で表されている２つの項目の順序が出現することを表している（値が「１」である）要素が密集している部分行列を抽出する。この部分行列の列成分に設定されている複数の配列を、その各配列のそれぞれで表されている２つの項目毎の順序を満たすように合成することにより、例えば、異なる複数の項目をユーザがどの様な順序で行動（選択）したのかを記録した膨大な量の分析対象データのレコードから、ユーザの代表的な行動パターンが、単に行列を操作するだけで、容易に抽出することができる。
【０１０２】
従来のように、３つ以上の項目を要素とする配列を生成する処理を行うのではなく、短時間で生成可能な２つの項目を要素とする配列を生成したら、その配列を列成分とする行列の行・列の並べ替え、あるいは、行や列の選択といった行列操作で、膨大な量の分析対象データから、例えば上記行動パターンとして、シーケンスグラフを抽出することができるので、処理時間を短縮することがきる。
【０１０３】
なお、上記第１の実施形態では、２つの項目を要素とする配列を生成したら、その配列を列成分、分析対象データを行成分に設定した行列を生成したが、この場合に限らず、生成した配列を行成分、分析対象データを列成分に設定した行列を生成してもよい。この場合においても、上記同様である。
【０１０４】
さらに、本発明に係る手法は、従来技術に比べて長いシーケンスの（要素の数が多い）配列を見つけることができるという顕著な効果を有する。
【０１０５】
上記第１の実施形態の説明で用いた分析対象データからは、図２０に示したシーケンスグラフにおいては、（Ａ、Ｂ、Ｄ）（Ａ、Ｃ、Ｄ）（Ａ、Ｄ）という最長３つの要素から配列が求められた。しかし、本実施形態によれば、従来技術に比べて長いシーケンスの（要素の数が多い）配列を見つけることができるのである。
【０１０６】
以下、上記第１の実施形態で用いたものとは異なる分析対象データＯＢＪ１１〜ＯＢＪ２０（図２１参照）を用いて、具体的に説明する。
【０１０７】
図２１に示した１０個のセッションデータ（ＯＢＪ１１〜ＯＢＪ２０）には、それぞれ、ＡからＥまでのページアクセスのシーケンスが表現されている。
【０１０８】
図２１に示した１０個のセッションデータが入力部１から入力されて、分析対象データ記憶部２に記憶されている。以下、この１０個のセッションデータを分析対象とした場合を例にとり説明する。
【０１０９】
この場合も、行列生成部３では前述同様にして、図２２（ａ）に示したような行列を生成する。この行列に対し、行列操作部４でマトリクスクラスタリング（ピンポン法を含む）を用いて、値が「１」である要素が密集している部分行列を抽出する。その結果、図２２（ａ）に示した行列から、図２２（ｂ）に示したような部分行列が抽出される。さらに、図２２（ｂ）に示した部分行列の列成分に設定されている配列を合成すると（図１７参照）、図２２（ｃ）に示したシーケンスグラフが生成される。
【０１１０】
図２２（ｃ）に示したシーケンスグラフは、（Ａ、Ｂ、Ｃ、Ｄ、Ｅ）という５つの項目を要素とする配列を表している。すなわち、図２１に示した分析対象データＯＢＪ１１〜ＯＢＪ２０から、５つの項目を要素とする、長さ「５」のシーケンスを抽出することができた。
【０１１１】
一方、従来技術では、図２３に示すように１１個の３つの項目を要素する配列（Ａ，Ｂ，Ｃ）（Ａ，Ｂ，Ｄ）（Ａ，Ｂ，Ｅ）（Ａ，Ｃ，Ｅ）（Ａ，Ｄ，Ｅ）（Ｂ，Ｃ，Ｄ）（Ｂ，Ｃ，Ｅ）（Ｂ，Ｄ，Ｅ）（Ｃ，Ｄ，Ｅ）（Ｅ，Ｄ，Ｃ）が得られるが、（Ｅ，Ｄ，Ｃ）が含まれるため、これらを合成することはできない。すなわち、１１個の３つの項目を要素とする配列のうち、１０個の配列（Ａ，Ｂ，Ｃ）（Ａ，Ｂ，Ｄ）（Ａ，Ｂ，Ｅ）（Ａ，Ｃ，Ｅ）（Ａ，Ｄ，Ｅ）（Ｂ，Ｃ，Ｄ）（Ｂ，Ｃ，Ｅ）（Ｂ，Ｄ，Ｅ）（Ｃ，Ｄ，Ｅ）は、配列（Ａ、Ｂ、Ｃ、Ｄ、Ｅ）のサブセットであるが、（Ｅ，Ｄ，Ｃ）はサブセットではない。また、従来技術では、得られた３つの項目を要素とする配列の中から、それより要素の個数の多い配列を合成するために適切なものを選択するための情報が出力されない。従って、従来技術では、上記第１の実施形態のように、図２２（ｃ）に示した５つの項目を要素とする配列を（自動的に）生成することができないのである。
【０１１２】
このように、本発明に係る上記第１の実施形態によれば、分析対象データから、従来技術に比較して、より要素の数が多い配列を抽出することができるという顕著な効果を奏する。
【０１１３】
（第２の実施形態）
上記第１の実施形態では、行列生成部３では、図２に示したような分析対象データに含まれる、Ａ〜Ｅの５つの異なる複数の項目から、図３に示したような２つの項目を要素とする２０通りの配列を生成するようになっていた。
【０１１４】
この場合、分析対象データに含まれる、異なる複数の項目の数がｎ個のとき、それらから２つを取り出して配置する方法（順列）は、全部でｎ×（ｎ−１）通り存在する。従って、項目数ｎの値が大きい場合には、行列のサイズが非常に大きくなり、マトリクスクラスタリングの処理時間が長くかかってしまう。一方、マトリクスクラスタリングは、「１」が密集した部分行列を見つける手法であるので、値が「１」の要素の数が少ない列は、出力結果に含まれる可能性は小さい。
【０１１５】
そこで、行列生成部３では、生成した２つの項目毎の複数の配列のそれぞれについて、その配列で表される２つの項目の順序が分析対象データに出現する回数を求める。その出現回数が一定値以上のものだけを予め選択してから、行列の列とすれば、行列の大きさを大幅に減らすことができる。
【０１１６】
例えば、図３に示した２０個の配列のそれぞれについて、その配列で表される２つの項目の順序が分析対象データに出現する回数（出現回数）を求め、出現回数が３回以上の配列を選択する。すると、図２４（ａ）に示すような１１個の配列が選択される。そして、図４（ａ）に示した行列を生成するのと同様にして、図２４（ａ）に示した配列のそれぞれを列成分に、図２に示した１０個の分析対象データを行成分に設定した、図２４（ｂ）に示すような行列を生成する。
【０１１７】
図２４（ｂ）に示した行列に対し、第１の実施形態として説明したマトリクスクラスタリングを行った結果を図２４（ｃ）、（ｄ）に示す。これは、第１の実施形態の場合と同じである。すなわち、例えば、図４（ａ）に示した行列において、列に含まれる要素値が「１」である要素の数が少ない列は、予め削除しても、マトリクスクラスタリング（ピンポン法を含む）を行った結果には影響が少ない。
【０１１８】
以上説明したように、生成された２つの項目を要素とする複数の配列のうち、その配列に表されている２つの項目順序が分析対象データに出現する頻度が所定値以上であるものを予め選択し、選択された配列を列成分（あるいは行成分）とする行列をマトリクスクラスタリング（ピンポン法を含む）の操作対象とすることにより、初期状態の行列のサイズを小さくすることができるので、処理結果に影響を与えることなく、部分行列を抽出するまでの時間を短縮することができる。
【０１１９】
（第３の実施形態）
上記第１の実施形態では、行列生成部３で生成される行列は、その要素の値が「１」か「０」のいずれかである２値行列であった。この場合、値が「１」である行列要素は、当該要素の行成分に対応する分析対象データに、その要素の列成分に対応する配列で表されている２つの項目の順序が出現することを表していた。
【０１２０】
ここでは、前述したように、行列要素の値で、当該要素の行成分に対応する分析対象データに、その要素の列成分に対応する配列で表されている２つの項目の順序が出現するか否かを「１」「０」で表すだけでなく、値が「１」である行列要素のうち、さらに、当該要素の行成分に対応する分析対象データに出現する連続する２つの項目の順序に一致する配列が、その要素の列成分に対応するときは、その行列要素の値を「２」とする。すなわち、値が「２」である行列要素は、その行列要素の行成分に対応する分析対象データに、当該行列要素の列成分に対応する配列で表されている２つの項目の順序が出現する行列要素（値が「１」となる行列要素）であって、しかも、当該行列要素の行成分に対応する分析対象データに出現する連続する２つの項目の順序に一致する配列が、その要素の列成分である行列要素である。この場合、値が「１」の行列要素は、その行列要素の行成分に対応する分析対象データに、当該行列要素の列成分に対応する配列で表されている２つの項目の順序が出現するが、それは、当該行列要素の行成分に対応する分析対象データに出現する連続する２つの項目の順序に一致していない行列要素である。例えば、値が「１」の行列要素の列成分が（Ａ、Ｂ）という配列であるとき、当該行列成分の行成分に対応する分析対象データには、（Ａ、Ｃ、Ｂ）や（Ａ、Ｃ、Ｄ、Ｂ）などの配列は存在するだろうが、Ａの直後にＢが出現するといった配列は存在しない。
【０１２１】
行列生成部３は、このような規則に従って、行列要素の値が「０」「１」「２」の３つの値をとるような行列（多値行列）を生成する。例えば、第１の実施形態の説明に用いた、図２に示したような分析対象データに基づき、行列生成部３で生成された行列を図２５に示す。
【０１２２】
ところが、マトリクスクラスタリング自体は２値行列を操作対象とするため、行列要素の多値から２値への変換が必要となる。そこで、ここでは、多値行列において、指定された条件を満たす場合に「１」、満たさない場合に「０」とすることにより行列を２値化する手法を用いる。
【０１２３】
例えば、行列要素の値を「１」に変換（置き換える）ための第１の条件として、要素値＞０であるとき、すなわち、要素値が１以上である要素値は全て「１」に置き換えることにする。
【０１２４】
この第１の条件を用いて要素値を置き換えることにより、要素値が「１」のものと「２」のものを同一視するので、結果として、図２６に示すように、第１の実施形態と同じ部分行列を得ることができる。なお、図２６（ａ）は、図４（ｂ）に示した部分行列に対応し、図２６（ｂ）は、図４（ｃ）に示した部分行列に対応する。また、図２６では、値が「２」である要素の値は、「１」に書き換えることなく、そのまま「２」としている。
【０１２５】
配列合成部６で、抽出された部分行列の列成分に設定されている配列を合成して、シーケンスグラフを生成する際には、「１」に置き換える前の元の要素値を用いて、生成されたシーケンスグラフ上で、連続してアクセスされた２つのページとそうでないページを区別して表示することができる。
【０１２６】
行列要素の値を「１」に変換（置き換える）ための第２の条件として、要素値＝２であるとき、すなわち、要素値が２である要素値は全て「１」に置き換え、要素値が「１」あるいは「０」である要素値は「０」とすることにするようにしてもよい。この場合、図２７に示すように、分析対象データに出現する連続した２つの項目の配列のみを列成分とした（すなわち、連続したページアクセスのみから構成される）部分行列が得られる。なお、図２７（ａ）は、図４（ｂ）に示した部分行列の場合と同様、マトリクスクラスタリングにおいて、初期値をＯＢＪ１とした場合に求められた部分行列であり、図２７（ｂ）は、図４（ｃ）に示した部分行列の場合と同様、マトリクスクラスタリングにおいて、初期値をＯＢＪ６とした場合に求められた部分行列である。
【０１２７】
図２７に示すように、抽出される部分行列の大きさは、第１の条件を用いた場合に抽出された部分行列（図２６参照）に比べて小さくなるが、連続するアクセスのみを抽出することができる。
【０１２８】
以上説明したように、上記第１〜第３の実施形態に示した本発明の手法は、マトリクスクラスタリングを用いてシーケンスを発見するものである。
【０１２９】
マトリクスクラスタリングは、本来、例えば、顧客と商品の購入履歴を２値行列で表現し、この行列から密な部分行列を抽出する手法である。ＷＷＷマイニングにおいては、商品をＷＷＷページとみなすことにより、顧客とＷＷＷページとの関係を表す２値行列より、関連の深い顧客のクラスタとＷＷＷページのクラスタを同時に抽出することができる。
【０１３０】
上記第１〜第３の実施形態に係るデータ分析装置は、大きく分けて、マトリクスクラスタリングが適用できるようにシーケンスを２値行列に変換する手段、２値行列を用いてマトリクスクラスタリングを行う手段、及びマトリクスクラスタリングの結果よりシーケンスグラフを生成する手段の３つの手段より構成される。
【０１３１】
２値行列に変換する手段では、対象とする行列の行成分・列成分のうちの一方をセッションとし、他方を２つのページ（項目）を要素する配列とする２値行列を生成する。ここで２つのページを要素する配列とは、２つのページ（ｘ、ｙ）より構成され、ページｘがページｙよりも先にアクセスされることを表す。各セッションにおいて、ページｘがページｙより先にアクセスされた場合には、対応する行列要素の値は「１」とし、そうでない場合に「０」とする。
【０１３２】
このようにして構成された２値行列に対してマトリクスクラスタリング手段を適用し、「１」が密集している部分行列を抽出する。抽出された部分行列は、互いに関連の深いセッションのグループと２つのページを要素とする配列を表す。
【０１３３】
シーケンスグラフ合成手段では、この部分行列に含まれるすべての配列を合成してシーケンスグラフを生成する。これにより、関連の深いセッションに共通するアクセス順序に関する性質を簡潔にグラフ表現することができる。
【０１３４】
このようなグラフ表現は、従来手法により得られる多数のシーケンスよりも分かりやすく表示することができ、また従来手法に比べて出力量が減少するため、ユーザにとって分析が容易となる。
【０１３５】
以上説明したように、上記実施形態によれば、ＷＷＷアクセスログのようにシーケンス（複数の項目を要素とする配列）で表されるデータの中から特徴的なシーケンスを発見し、グラフで表現することができる。従来手法では膨大な出力結果の中からユーザが自分で抽出する必要があったが、本発明では出力をグラフ形式に変換できるため、出力結果を構造化することによってユーザにとって分かりやすく出力することが可能となる。さらに、従来技術に比べて長いシーケンスを発見することができる。
【０１３６】
なお、上記第１〜第３の実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、ＤＶＤ、ＣＤ−ＲＯＭ、フロッピディスク、個体メモリ、光ディスクなどの記録媒体に格納して頒布することもできる。
【０１３７】
本発明の処理手順を記述したプログラムを格納した記録媒体（例えば、ＣＤ−ＲＯＭ）を、例えば、ＣＤ−ＲＯＭドライブにセットして、所定の操作を行うことにより、ハードディスクにインストールすれば、上記第１〜第３の実施形態に記載した手法をコンピュータにて実行させることができる。例えば、ハードディスクに分析対象データとなる複数のレコードがデータベースとして格納されているとする。このレコードに対し、上記第１〜第３の実施形態に記載した手法をコンピュータにて実行させると、例えば、図２０に示すようなシーケンスグラフがディスレイに表示される。
【０１３８】
また、上記第１〜第３の実施形態では、分析対象データとして、ＷＷＷページのアクセスシーケンスを表したセッションデータを用いているが、この場合に限らない。
【０１３９】
また、本発明は、上記第１〜第３の実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。さらに、上記第１〜第３の実施形態には種々の段階の発明は含まれており、開示される複数の構成用件における適宜な組み合わせにより、種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題（の少なくとも１つ）が解決でき、発明の効果の欄で述べられている効果（のなくとも１つ）が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【０１４０】
【発明の効果】
以上説明したように、本発明によれば、複数の項目を要素とする配列（シーケンス）で表される膨大な分析対象データの中から特徴的なシーケンスを抽出することが容易に行える。
【図面の簡単な説明】
【図１】従来技術のシーケンス分析のアルゴリズムを具体的に説明するための図。
【図２】分析対象データの一例を示した図。
【図３】図２の分析対象データに含まれる、異なる複数の項目から生成された、２つの項目を要素とする配列を示した図。
【図４】第１の実施形態に係るデータ分析手法の概要を説明するための図。
【図５】マトリクスクラスタリングについて説明するための図。
【図６】マトリクスクラスタリングの処理手順について説明するためのフローチャート。
【図７】マトリクスクラスタリングの他の処理手順（ピンポン法）について説明するためのフローチャート。
【図８】ピンポン法を用いて、図４（ａ）に示した行列から部分行列を抽出するまでの過程を説明するための図。
【図９】ピンポン法を用いて、図４（ａ）に示した行列から部分行列を抽出するまでの過程を説明するための図。
【図１０】ピンポン法を用いて、図４（ａ）に示した行列から部分行列を抽出するまでの過程を説明するための図。
【図１１】ピンポン法を用いて、図４（ａ）に示した行列から部分行列を抽出するまでの過程を説明するための図。
【図１２】ピンポン法を用いて、図４（ａ）に示した行列から部分行列を抽出するまでの過程を説明するための図。
【図１３】ピンポン法を用いて、図４（ａ）に示した行列から抽出された部分行列を示した図。
【図１４】本発明の第１〜第３の実施形態に係るデータ分析装置の機能的な構成例を示した図。
【図１５】図１４の行列操作部の他の構成例を示した図。
【図１６】本発明の第１〜第３の実施形態に係るデータ分析装置の処理動作を説明するためのフローチャート。
【図１７】図１４の配列合成部の処理動作を説明するためのフローチャート。
【図１８】配列合成部でシーケンスグラフを生成する際に用いる配列テーブルの一例を示した図。
【図１９】配列合成部でシーケンスグラフを生成する過程を説明するための図。
【図２０】シーケンスグラフの表示例を示した図。
【図２１】分析対象データの他の例を示した図。
【図２２】図２１に示した分析対象データから特徴的なシーケンスを抽出する過程を示した図。
【図２３】図２１に示した分析対象データから、従来技術のシーケンス分析のアルゴリズムを用いて、特徴的なシーケンスを抽出する過程を示した図。
【図２４】本発明の第２の実施形態に係るデータ分析手法であって、初期状態の行列サイズを予め小さくしてからマトリクスクラスタリングを行う場合を説明するための図。
【図２５】行列生成部で生成された多値行列の具体例を示した図。
【図２６】図２５に示した多値行列を第１の条件に基づき２値行列に変換した結果から抽出された部分行列を示した図。
【図２７】図２５に示した多値行列を第２の条件に基づき２値行列に変換した結果から抽出された部分行列を示した図。
【符号の説明】
１…入力部
２…分析対象データ記憶部
３…行列生成部
４…行列操作部
５…データ抽出部
６…配列合成部
７…出力部
１４…行・列選択部
１５…マーカカウンタ（行用）
１６…マーカカウンタ（列用）
【図１】
0004284026.tif 000002
【図２】
0004284026.tif 000003
【図３】
0004284026.tif 000004
【図４】
0004284026.tif 000005
【図５】
0004284026.tif 000006
【図６】
0004284026.tif 000007
【図７】
0004284026.tif 000008
【図８】
0004284026.tif 000009
【図９】
0004284026.tif 000010
【図１０】
0004284026.tif 000011
【図１１】
0004284026.tif 000012
【図１２】
0004284026.tif 000013
【図１３】
0004284026.tif 000014
【図１４】
0004284026.tif 000015
【図１５】
0004284026.tif 000016
【図１６】
0004284026.tif 000017
【図１７】
0004284026.tif 000018
【図１８】
0004284026.tif 000019
【図１９】
0004284026.tif 000020
【図２０】
0004284026.tif 000021
【図２１】
0004284026.tif 000022
【図２２】
0004284026.tif 000023
【図２３】
0004284026.tif 000024
【図２４】
0004284026.tif 000025
【図２５】
0004284026.tif 000026
【図２６】
0004284026.tif 000027
【図２７】
0004284026.tif 000028