(57)【要約】【課題】  複数回レコードを読むことによって回数を計数し記憶するので、処理の途中で止めても、参照したレコードに対応する結果がすべては得られない。【解決手段】  カウンタ１０３にすべての生起条件に対応する計数カウンタを置き、レコードの読み込みごとにカウンタを更新し、最新レコードＩＤ記憶装置１０６の最新レコードＩＤを更新する。【選択図】  図１
2004272936.tif 000002
【特許請求の範囲】
【請求項１】
分析装置であって、
複数の属性の値を記述したレコードを複数集めたデータを格納したレコードデータ記憶装置から前記レコードを入力するレコード入力手段と、
入力したレコードの属性の組合せで現わされる第１の条件を規定した条件部と、該第１の条件を満たし、かつ第２の条件を満たすレコードの数をカウントする第１のカウンタ部と、該第１の条件を満たし、かつ第２の条件を満たさないレコードの数をカウントする第２のカウンタ部とを有するカウンタを複数生成するカウンタ初期化装置と、
前記レコード入力手段から入力されたレコードが、前記複数のカウンタのいずれかに規定された第１の条件と整合する場合に、該整合する条件を有するカウンタを選択し、該選択したカウンタの第２の条件を参照して前記第1のカウンタ部あるいは前記第２のカウンタ部のいずれかの値を更新する手段と、
入力されたレコード数、前記入力されたレコード数のうち前記第１の条件を満たすレコード数、前記第１のカウンタ部の値、前記第２のカウンタ部の値に基づき、全レコード数中の前記第１の条件が満たされる確率と前記第１の条件が満たされた中でさらに第２の条件が満たされる確率と全レコード数中の前記第２の条件が満たされる確率から計算される評価値を生成し、該評価値が大きいカウンタの条件を出力する出力手段とを有することを特徴とする分析装置。
【請求項２】
請求項１記載の分析装置であって、
前記評価値は、
評価値＝P（ａ）α・P（ｂ｜ａ）・log（P（ｂ｜ａ）／P（ｂ））
但し、P（ａ）は全レコード数中の前記第１の条件が満たされる確率、P（ｂ｜ａ）は前記第１の条件が満たされた中でさらに第２の条件が満たされる確率、P（ｂ）は全レコード数中の前記第２の条件が満たされる確率、αは任意の定数で計算されることを特徴とする分析装置。
【請求項３】
請求項１記載の分析装置であって、
前記レコードの入力の終了を検出する手段を有し、
前記出力手段は、前記検出手段が終了を検出したことに応じて、前記条件を出力することを特徴とする分析装置。
【請求項４】
請求項１記載の分析装置であって、
さらに、入力対象のレコードの区間を入力する区間入力手段と、
前記区間における条件ごとの生起回数を格納する格納手段と、を備え、
前回実行時の区間（第１のレコード区間）と、前記区間入力手段により入力される区間（第２のレコード区間）に重複区間があり、第２のレコード区間より前であって第１のレコード区間内である旧区間と、第１のレコード区間より後であって第２のレコード区間内にある新区間が存在する場合に、
前記更新手段は、前記格納手段に格納された旧区間に対応するデータを再び読み出し、対応する条件のカウンタを選択してこれに減算処理を施し、新区間に対応するデータに関しては、対応する条件のカウンタを選択してこれに加算処理を施すことでカウンタの値を更新することを特徴とする分析装置。
【請求項５】
請求項１記載の分析装置であって、
更に最後に入力したレコードを特定する情報を記憶する手段を備え、
前記出力手段は該記憶手段に基づき最後に入力したレコードを特定する情報も出力する分析装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ（特に大規模な）の解析を行う技術分野に属する。その中でも特に、データにおける因果関係やデータ中の規則性を求めるデータマイニングの技術分野に属する。
【背景技術】
【０００２】
大規模なデータをもとに、そこから因果関係や規則性を求めたりする場合に、データマイニングと呼ばれる手法がある。この手法として、例えば、非特許文献１がある。ここでは、最大ｋ個までの条件の組合せの同時生起を求めるために、まず、すべての条件について、それが生起する回数を全レコードを参照して求め、さらに、そこで回数が予め定めた閾値より大きかった条件の中から２個が同時に生起する回数を全レコードを参照して求める、ということをｋ個の条件数まで行なう。
【０００３】
これにより、全レコードに占める回数の割合が一定値以上であるｋ個までの条件の組合せを得ることができる。
【０００４】
【非特許文献１】Rakesh  Agrawal,  Ramakrishnan  Srikant,"Fast  Algorithms  for  Mining  AssociationRules",Proceedings  of  the  20th  VLDB  Conference  Santiago,  Chile(1994)
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記非特許文献１には以下のような課題がある。非特許文献１にあるように、この手法は最大ｋ条件の同時生起を考慮するのに、ｋ回にわたって全レコードを読む必要がある。
【０００６】
このため、第１に、計算の途中で止めてみても、少ない条件数の結果が得られるだけであり、例えば１００個のデータに関する計算を全体の計算時間の半分で止めても、５０個分の完全な答えが得られるわけではない。計算を途中で止めた場合に、参照したレコード数に対応した完全な結果が欲しい場合があるが、これは、そのような要求には応えられない。
【０００７】
第２に、閾値以上の条件の種類自体がレコード集合に対応しているので、レコードが追加されたり削除されたりした場合には、追加・削除分だけの再計算では済まず、もう一度すべてのレコードを読み直した上で、閾値以上の条件の種類を見つける必要がある。つまりレコードが次々と更新されるような状況には対応できない。
【０００８】
第３に、全レコードを読んで回数を求めるところを並列化しようとすれば、配分が適切ではない場合、計算終了時刻がそれぞれのプロセッサで異なることが起こり得、待ち状態となるプロセッサが生じ、時間と計算資源の無駄となる。
【０００９】
第４に、回数の閾値は、条件を確定するために使われるため、計算が始まった後に変更ができない。閾値をより低く設定変更するときには、計算を全く最初からやり直す必要が生じる。
【００１０】
したがって、本発明の第１の目的は、計算を途中で止めることができるようにすることと、その際に、参照したレコード数に対応した完全な出力結果を得られるようにすることである。また、本発明の第２の目的は、レコードが次々と更新されるようなときに、すべての計算をやり直さなくても、更新されたデータの分だけ処理すれば、正確な結果が得られるようにすることである。また、本発明の第３の目的は、並列処理を行なう際に、適切なレコード配分を行なうようにすることである。また、本発明の第４の目的は、データマイニング処理に関わる閾値等のパラメータを変更しても、それが、レコードの読み直しの必要を生じさせないようにすることである。
【課題を解決するための手段】
【００１１】
本発明は、条件に対応する回数を算出するカウンタを持ち、レコードを１度読むことで対応するカウンタをすべて更新できるようにした。既に参照したレコードは、参照後は利用しないで済むようにした。また、計算を途中でやめるように指示を入力する手段を持ってもよい。また、どこまで計算して止めたかわかるように、止めたレコードの位置がわかるようにしてもよい。
【００１２】
また、本発明は、レコードが追加・削除されたときに、対応するカウンタの値のみを更新する手段を提供してもよい。また、次々と入力されるレコードに対して、最新のレコードから何個前から何個前までを計算対象とするかを指定する手段を持ち、上述のカウンタの値を更新する手段を用いて、計算対象のレコードのみがカウントされている出力結果を常に得られるようにしてもよい。また、上述の計算対象の区間を動的に変化させられるようにしてもよい。
【００１３】
また、本発明は、並列処理を行なう際に、それぞれのプロセッサの処理能力を表す数値から終了時刻が同時になるようにレコード数を配分してもよい。また、早く終了したプロセッサが他のプロセッサの担当のレコードを通信によって獲得し、処理を肩代りすることによって全体の終了時刻を早めてもよい。また、並列処理に関与するプロセッサと、それぞれのプロセッサの処理能力と残りレコード数を管理するサーバを置くことによって、途中でプロセッサが増えたときにも同時に計算が終了するようにしてもよい。また、あるプロセッサが自らが算出したカウンタの値を、足算をするサーバに送信し、残りのレコードを他のプロセッサに配分することによって処理を終了し、並列処理から脱退することを可能にしてもよい。また、本発明は、カウンタの値を用いた計算は、すべての回数の集計を終了した後に行なうようにしてもよい。
【発明の効果】
【００１４】
以上述べたように、本発明によれば、データマイニングの計算を途中で止めることができる。また、その際に、参照したレコード数に対応した完全な出力結果が得られる。また、一度止めた計算を再開することができる。また、タイムスタンプを参照することで、結果が新しいものかどうか、また、どれくらい新しいものかを知ることができる。
【００１５】
また、本発明によれば、レコードが次々と更新されるようなときに、すべての計算をやり直さなくても、更新されたデータの分だけ処理すれば、正確な結果が得られる。またデータマイニングの結果を逐次に得ることができる。また、対象となっているレコードの対象区間を計算の途中で動的に変更できる。
【００１６】
また、本発明によれば、並列処理を行なう際に、適切なレコード配分を行うことで、全体の計算が早く終わる。また、並列処理するプロセッサの計算の途中での追加や削除が可能となる。
【００１７】
また、本発明によれば、計算に関わるパラメータを、レコードの読み直しなしに変更できる。
【発明を実施するための最良の形態】
【００１８】
以下に、図面を用いて本発明の実施例を説明する。
【実施例１】
【００１９】
以下、本発明の実施の形態の一例を詳細に説明する。図１に本発明の実施の形態の構成図を示す。本発明では、入力装置１００、レコード入力装置１０１、カウンタ初期化装置１０２、カウンタ１０３、カウンタ選択装置１０４、カウンタ更新装置１０５、更新レコードＩＤ記憶装置１０６、終了指示入力装置１０７、終了指示判定装置１０８、出力装置１０９が、バス１１０を介して相互接続されている。また、レコード入力装置１０１は、通信線１１２を介してレコードデータ記憶装置１１１と接続されている。
【００２０】
以下、図２に示すフローチャートを利用して、本発明の実施の形態の一例を詳細に説明する。ステップ２０１では、レコード入力装置のレコード読み出し位置を初期化する。これにより、次にどのレコードをレコードデータ記憶装置１１１から読み出せばよいかが決まる。ここでは、データの先頭レコードを指す。ここで、レコードは、図３に示すような形式で表される。
【００２１】
ステップ２０２では、カウンタの初期化を行なう。カウンタ初期化装置１０２がカウンタ１０３を初期化する。ここでは、必要なカウンタを生成し、すべてのカウンタの内容を０にする。カウンタの例を図４に示す。ステップ２０３では、レコード入力装置１０１が通信線１１２を介してレコードデータ記憶装置１１１からレコードを１つ入力する。
【００２２】
ステップ２０４では、すべてのカウンタの中から、条件が該当するカウンタをカウントアップする。カウンタ選択装置１０４がカウンタ１０３の中から適切なカウンタを選択し、そのカウンタに対して、カウンタ更新装置１０５がカウンタの値を更新する。この場合は１増やす。ステップ２０５では、最新レコードＩＤ記憶装置にある最新レコードＩＤを現在の最新の値に更新する。レコードＩＤとしては、タイムスタンプが実施可能である。ステップ２０６では、終了指示判定装置１０８が、終了指示入力装置１０７からの終了指示があるかどうかを判定し、指示がある場合には、ステップ２０８に移り、指示がない場合には、ステップ２０７に移る。図５に、終了指示入力装置１０７の例を示す。
【００２３】
ステップ２０７では、全レコードが読み出されたかどうかをチェックし、読まれたときには、ステップ２０８に移り、まだ残りがある場合にはステップ２０３に移る。ステップ２０８では、結果を出力する。ここでは、上位Ｎ個のカウンタの条件部とそのカウンタの値と、最新レコードＩＤを出力する。ここで、Ｎの値は予め定めておく。この実施の形態によれば、計算を途中で止めることができ、さらに、その時点でのすべての条件数における上位の条件が出力できる。
【００２４】
また、最新レコードＩＤのタイムスタンプを参照することで、結果が現在でも最新のものか、であるとか、どのくらい新しいまたは古いものかということを知ることができる。また、この実施の形態は以下のように変更して実施することも可能である。
【００２５】
第１に、ステップ２０３におけるレコードの読み込みは１レコードずつでなく、予め定められた複数のレコードずつであってもよい。そのときには、ステップ２０４のカウントアップは複数のレコードに対して行ない、ステップ２０５においては最新のレコードＩＤに更新するようにする。これにより、レコードデータ記憶装置１１１から通信線１１２を介してレコード入力装置１０１にレコードを入力する際の効率の調整が行なえ、より速い処理が可能となる。
【００２６】
第２に、ステップ２０５における最新レコードＩＤは、タイムスタンプではなく、レコードを一意に表すレコードＩＤでもよい。
【００２７】
第３に、ステップ２０５における最新レコードＩＤは、単に、処理したレコードに通算でつけられた数でもよい。この場合は、ステップ２０５での処理は、カウンタを１増やす、という処理と等価になる。
【００２８】
第４に、この一連の処理は、初期値をカウンタ０から始めなくてもよい。すなわち、何度か過去に行なった途中結果を継続するような処理として実施することも可能である。ステップ２０８における結果の出力では、最新レコードＩＤに加えて、全条件のカウンタの値も出力する。この結果を元に、ステップ１０１では、次のレコードを読みに行くように読み出し位置を設定し、ステップ１０２では、カウンタを過去の結果に初期化する。これにより、途中で終了した結果を用いて、それを継続することができる。これは、時間を適当に区切って、そこまでの結果を出力し、さらに、必要に応じてより多くのレコードを参照してその処理を継続する、ということを可能にする。
【００２９】
第５に、これまでの実施例は同時生起であったが、これを、ある特徴を満たすときに特徴的な条件を見つける、というように変更することも可能である。カウンタの構造を図６にあるように、すべての条件に対して、その条件が満たされていたときに、結論が満たされていた場合のカウンタと、結論が満たされていなかった場合のカウンタの２種類を設ける。ステップ２０２のカウンタの初期化では、このようなカウンタを生成し、初期化する。また、ステップ２０４では、対応するカウンタについて、結論が満たされている場合には「結論○」の方のカウンタを増やし、結論が満たされていない場合には「結論×」の方のカウンタを増やす。また、ステップ２０８では、単にカウンタの大きいものをとってくるだけではなく、数１に示す式を用いて、その値が大きいものを出力する。
【００３０】
【数１】
2004272936.tif 000003
【００３１】
以上によれば、ある特殊な条件を満たすときに特徴的な条件が得られる。これは、その特殊な条件の起こる確率が少なくても抽出できる。また、その特殊な条件の起こる確率に関わらず、その特殊な条件と同時に生起する条件を定量的に抽出できる。
【００３２】
第６に、ステップ２０８での上位Ｎ個のＮは予め定めておかず、ステップ２０８において対話的に入力して、結果を出力するように変更できる。そのために、入力装置１００から対話的にＮを入力して、それに対して出力を行なうようにすればよい。そのときに、必要なだけその処理を繰り返すこともできる。このようにすれば、パラメータを替えた解析結果をレコードの読み直しなしに実現できる。
【００３３】
第７に、第４の変更例において再開するときに、得られた最新レコードＩＤのタイムスタンプによって、現在の最新のデータベースとの差分データがジャーナルによってわかるので、それを利用してデータを元に戻してデータマイニングを再開することも実施可能である。
【実施例２】
【００３４】
次に、本発明の第２の実施の形態について詳細に説明する。図７に本発明の実施の形態の構成図を示す。本実施の形態では、入力装置７００、レコード入力装置７０１、カウンタ初期化装置７０２、カウンタ７０３、カウンタ選択装置７０４、カウンタ更新装置７０５、区間変更装置７０６、区間データ記憶装置７０７、終了指示入力装置７０８、終了指示判定装置７０９、出力装置７１０がバス７１１を介して相互接続されている。また、オンライン処理システム７１５がネットワーク７１６に接続されている。また、オンラインデータ記憶装置７１２が通信線Ａ７１３を介してレコード入力装置７０１に接続されており、さらに、通信線Ｂ７１４を介してネットワーク７１６に接続されている。
【００３５】
オンライン処理システム７１５はデータをオンラインに処理し、その結果をオンラインデータ記憶装置７１２に記憶する。バス７１１及びそれにつながる装置はオンラインデータ記憶装置７１２のデータをレコード入力装置７０１を介してのみ利用できるようにしてある。
【００３６】
以下、図８に示すフローチャートを利用して、本発明の実施の形態の一例を詳細に説明する。ステップ８０１では、レコード入力装置のレコード読み出し位置を初期化する。これにより、次にどのレコードをレコードデータ記憶装置７１２から読み出せばよいかが決まる。ここでは、データの先頭レコードを指す。
【００３７】
ステップ８０２では、カウンタの初期化を行なう。カウンタ初期化装置７０２がカウンタ７０３を初期化する。ここでは、必要なカウンタを生成し、すべてのカウンタの内容を０にする。
【００３８】
ステップ８０３では、レコード入力装置７０１が通信線Ａ７１３を介してオンラインデータ記憶装置７１２からレコードを入力する。ここで、入力されるレコードは、区間データ記憶装置７０７に記憶された区間内にあって、かつ、まだ入力されていないレコードすべてである。図９に示すように、時間軸において、区間データというものが定義される。これはデータマイニングに利用されるデータの時間区間を定義するものである。その区間の現在に遠い方の端点を端点Ａとし、現在に近い方の端点を端点Ｂとすると、入力すべきデータは、レコード読み出し位置から端点Ｂまでの間のデータである。レコード読み出し位置が区間内にないときは入力を見送る。
【００３９】
ステップ８０４では、すべてのカウンタの中から、必要なカウンタを更新する。カウンタ選択装置７０４がカウンタ７０３の中から適切なカウンタを選択し、そのカウンタに対して、カウンタ更新装置７０５がカウンタの値を更新する。ここでは、古いデータを捨て、新しいデータを取り込む処理を行なう。図１０に示すように、１回前の端点Ａ、端点Ｂを保存しておき、それぞれ、ここでは、端点Ａ'、端点Ｂ'と呼ぶことにすると、端点Ａ'から端点Ａまでの間のデータが古くなり捨てられるデータであり、端点Ｂ'から端点Ｂまでの間のデータが新しく採用されたデータとなる。参考までに、端点Ｂ'の１個現在側のデータが読み出し位置となっていたデータである。前者の古いデータに対しては、対応するデータを再び読み出し、対応する条件のカウンタを選択してこれを１減らし、後者の新しいデータに対しては、対応する条件のカウンタを選択してこれを１増やす処理を行なう。また、次の処理のために、端点Ａを端点Ａ'として、また、端点Ｂを端点Ｂ'として区間データ記憶装置７０７に保存する。
【００４０】
ステップ８０５では、区間変更装置７０６から区間変更の指示があったかどうかを判定し、区間変更の指示があった場合は、ステップ８０６に進み、区間変更の指示がなかった場合は、ステップ８０７に進む。区間変更の指示は、区間変更装置７０６で行なう。
【００４１】
ステップ８０６では、区間変更を行なう。区間変更の内容は、区間変更装置において図１１にあるように画面上の区間の位置をマウス等の入力装置で変更することによって指示する。これにより、端点Ａと端点Ｂを変更して区間データ記憶装置７０７に記憶する。
【００４２】
ステップ８０７では、今まで読み込んだデータにおけるデータマイニングの結果を出力する。結果は、予め上位Ｎ個のカウンタを出力する、というように指定しておく。カウンタの条件部とカウンタの値を出力する。
【００４３】
ステップ８０８では、終了指示が終了指示入力装置７０８から入力されたかどうかを終了指示判定装置７０９で判定して、終了が指示されているときには、ステップ８０９に移り、指示されていないときには、ステップ８０３に移る。終了指示入力装置７０８は図１２のように、実現できる。
【００４４】
ステップ８０９では、結果を出力する。ここでは、区間データ記憶装置７０７の区間データと、カウンタ７０３のカウンタの値を出力する。
【００４５】
この実施の形態によれば、データを次々と追加・削除しながら、ある定められた時間区間のデータを対象にデータマイニングを実行することができる。また、データマイニングの結果を逐次に得ることができる。また、時間区間自体を動的に変更できる。また、動的な時間区間の変更を利用すれば、カウンタの内容が全くの０の状態から定常状態までのスタートアップを全く同じこのアルゴリズムで実現できる。
【００４６】
また、この実施の形態は以下のように変更して実施することも可能である。第１に、この一連の処理は、初期値をカウンタ０から始めなくてもよい。すなわち、何度か過去に行なった途中結果を継続するような処理として実施することも可能である。ステップ８０９における結果の出力では、カウンタの値と区間データを出力しているので、過去の実行結果のこの出力から初期値をステップ８０１及びステップ８０２で設定して再開することが可能である。これにより、オンラインのデータマイニングの途中での実行停止とその再開が可能となる。
【００４７】
第２に、これまでの実施例は単なる同時生起であったが、これを、ある特徴を満たすときに特徴的な条件を見つける、というように変更することも可能である。カウンタの構造を図６にあるように、すべての条件に対して、その条件が満たされていたときに、結論が満たされていた場合のカウンタと、結論が満たされていなかった場合のカウンタの２種類を設ける。ステップ８０２のカウンタの初期化では、このようなカウンタを生成し、初期化する。また、ステップ８０４では、対応するカウンタについて、結論が満たされている場合には「結論○」の方のカウンタを更新し、結論が満たされていない場合には「結論×」の方のカウンタを更新する。また、ステップ８０７では、単にカウンタの大きいものをとってくるだけではなく、数１に示す式を用いて、その値が大きいものを出力する。以上によれば、ある特殊な条件を満たすときに特徴的な条件が得られる。これは、その特殊な条件の起こる確率が少なくても抽出できる。また、その特殊な条件の起こる確率に関わらず、その特殊な条件と同時に生起する条件を定量的に抽出できる。
【００４８】
第３に、ステップ８０７での上位Ｎ個のＮは予め定めておかず、ステップ８０７において対話的に入力して、結果を出力するように変更できる。そのために、入力装置７００から対話的にＮを入力して、それに対して出力を行なうようにすればよい。そのときに、必要なだけその処理を繰り返すこともできる。このようにすれば、パラメータを替えた解析結果をレコードの読み直しなしに実現できる。
【００４９】
第４に、ステップ８０７の結果の出力において、上位Ｎ個のカウンタの条件部とカウントの値を出力するだけではなく、それに加えて、任意の条件に対して、ヒストグラムを出力し、それに、古いデータで捨てられたデータの度数、新しく入ったデータの度数、それらの差し引きのデータの度数がヒストグラムの形で重畳表示されるようにすることもできる。図１３にそれを例示する。図中の横軸の変数は入力装置７００によって変更が可能である。
【実施例３】
【００５０】
次に、本発明の第３の実施の形態について詳細に説明する。図１４に本発明の実施の形態の構成図を示す。ネットワーク１４０１に、管理サーバＡ１４０２、計算サーバＢ１４０４、計算サーバＣ１４０６、計算サーバＤ１４０８が接続されている。また、管理サーバＡ１４０２には、レコードデータ記憶装置Ａ１４０３が接続されており、計算サーバＢ１４０４には、レコードデータ記憶装置Ｂ１４０５が接続されており、計算サーバＣ１４０６には、レコードデータ記憶装置Ｃ１４０７が接続されており、計算サーバＤ１４０８には、レコードデータ記憶装置Ｄ１４０９が接続されている。実際には、計算サーバとレコードデータ記憶装置の組は２個以上であればいくつでも実施可能である。
【００５１】
次に、管理サーバＡでのアルゴリズムの流れをフローチャートで図１５に示す。ステップ１５０１では、管理サーバＡが計算サーバを決定する。図１４の例では、計算サーバは、計算サーバＢ１４０４、計算サーバＣ１４０６、計算サーバＤ１４０８の３つである。
【００５２】
ステップ１５０２では、管理サーバＡが、それぞれの計算サーバから、計算サーバの処理能力をネットワーク１４０１を介した通信によって取得する。計算サーバの処理能力は、単位時間あたりの処理レコード数で表される。
【００５３】
ステップ１５０３では、管理サーバＡが、それぞれの計算サーバに対してレコードデータを配分する。配分は、レコード数が処理能力に比例するようにする。元々は管理サーバＡに接続されているレコードデータ記憶装置Ａに記憶されていたレコードをこの数にしたがって、それぞれの計算サーバに送り、それぞれの計算サーバは自分に接続されているレコードデータ記憶装置にそのレコードを保存する。管理サーバＡ１４０２が保持している計算サーバに関するデータを図１６に示す。図１６のように、計算サーバの一覧と、それぞれについて、処理能力が数値で表されており、初期状態では、残りレコード数の値は、最初に送信したレコード数となっている。この表形式で管理サーバＡは計算サーバの情報を記憶する。
【００５４】
ステップ１５０４では、計算サーバから計算終了通知が来ているかどうかを判定する。来ている場合には、ステップ１５０５に移り、来ていない場合には、ステップ１５０６に移る。
【００５５】
ステップ１５０５では、すべての計算サーバから計算終了通知が来ているかどうかを判定する。すべての計算サーバから計算終了通知が来ている場合にはステップ１５０９に移り、少なくとも一つでも計算終了通知が来ていない計算サーバがあるときにはステップ１５０８に移る。
【００５６】
ステップ１５０６では、計算サーバの追加・削除通知が来ているかどうか判定する。来ている場合には、ステップ１５０７に移り、来ていない場合には、ステップ１５０４に移る。
【００５７】
ステップ１５０７では、計算サーバの追加・削除処理を行なう。計算サーバの追加については、図１６で示した計算サーバの表を垂直方向に増やす処理を行なう。計算サーバ名には、計算サーバの名前を入れ、処理能力を入れ、残りレコード数は０とする。計算サーバの削除については、残りレコードを任意の計算サーバに送信し、自計算サーバのカウンタの内容をすべて管理サーバＡに送信し、図１６で示す表の該当するサーバの欄を削除する。カウンタには図４に示すように、全ての条件に対応するレコードデータの回数が記されている。
【００５８】
ステップ１５０８では、レコードデータの再配分を行なう。図１６に示す表において、残りレコード数をすべての計算サーバから通信によって取得し、最新の値に更新する。残りレコード数の合計を計算し、それを処理能力に比例配分した値を計算し、その値が残りレコード数より少ない場合は、その分だけ、多いところにレコードデータを送信し、その分の自らのレコードを削除する。逆に、その値が残りレコード数より多い場合は、その分だけ、他からレコードデータを取得し、自らのレコードに追加する。図１６に示す表は最新の値に更新する。
【００５９】
ステップ１５０９では、図１６の表に示してある計算サーバすべてからカウンタの内容を取得し、合計する。ステップ１５１０では、カウンタの合計で上位Ｎ個の条件部とカウンタの値を出力する。Ｎの値は予め定めておく。
【００６０】
次に、それぞれの計算サーバでのアルゴリズムの流れをフローチャートで図１７に示す。ステップ１７０１では、ステップ１５０３で管理サーバＡが送信したレコードを受信する。受信したレコードは自らに接続されているレコードデータ記憶装置に記憶する。
【００６１】
ステップ１７０２では、レコードをレコードデータ記憶装置から計算サーバに入力する。
【００６２】
ステップ１７０３では、対応する条件のカウンタの値を更新する。カウンタは、図４のように、条件部に対してその回数を記録できるようになっている。予めすべての条件部のカウンタを用意しておく。
【００６３】
ステップ１７０４では、レコードデータ記憶装置のレコードをすべて参照したかどうか判定する。すべて参照した場合には、ステップ１７０５に移り、残りがある場合にはステップ１７０２に移る。ステップ１７０５では、計算終了通知を管理サーバＡに送信する。ステップ１５０４では、ここで送信された計算終了通知を取得することになる。
【００６４】
ステップ１７０６では、レコード受信が起こったかどうかを判定する。これは、ステップ１５０７、ステップ１５０８の後で、他の計算サーバからレコードが送信されてくる場合に、レコード受信が生ずることとなる。レコード受信が起こった場合には、ステップ１７０２に戻り、起こらなかった場合にはステップ１７０７に移る。ステップ１７０７ではカウンタの内容を管理サーバＡに送信する。
【００６５】
以上の実施の形態によれば、終了時刻が同時になるようにレコードをやりとりできる。また、先に計算が終了した計算サーバが他のまだ終わっていない計算サーバのレコードデータを取得して計算を肩代りすることで、全体の終了時刻を早めることができる。また、途中で計算サーバの追加・削除が動的にできる。
【００６６】
以上の実施の形態は次のように変更して実施することも可能である。第１に、この一連の処理は、初期値をカウンタ０から始めなくてもよい。すなわち、何度か過去に行なった途中結果を継続するような処理として実施することも可能である。ステップ１５１０における結果の出力で、カウンタの値すべてを出力しているので、過去の実行結果のこの出力から管理サーバＡのカウンタの初期値を設定しておけば、新たなデータを追加してカウンタの計算を継続することが可能である。これにより、データマイニングの途中での実行停止とその再開が可能となる。
【００６７】
第２に、これまでの実施例は同時生起であったが、これを、ある特徴を満たすときに特徴的な条件を見つける、というように変更することも可能である。カウンタの構造を図６にあるように、すべての条件に対して、その条件が満たされていたときに、結論が満たされていた場合のカウンタと、結論が満たされていなかった場合のカウンタの２種類を設ける。管理サーバＡとすべての計算サーバでは、カウンタはこのような形式で持つようにする。また、ステップ１７０３では、対応するカウンタについて、結論が満たされている場合には「結論○」の方のカウンタを更新し、結論が満たされていない場合には「結論×」の方のカウンタを更新する。
【００６８】
また、ステップ１５１０では、単にカウンタの大きいものをとってくるだけではなく、数１に示す式を用いて、その値が大きいものを出力する。以上によれば、ある特殊な条件を満たすときに特徴的な条件が得られる。これは、その特殊な条件の起こる確率が少なくても抽出できる。また、その特殊な条件の起こる確率に関わらず、その特殊な条件と同時に生起する条件を定量的に抽出できる。
【００６９】
第３に、ステップ１５１０での上位Ｎ個のＮは予め定めておかず、ステップ１５１０において対話的に入力して、結果を出力するように変更できる。このようにすれば、パラメータを替えた解析結果をレコードの読み直しなしに実現できる。
【００７０】
第４に、ステップ１５０８において管理サーバＡはすべての計算サーバから残りレコード数のみを取得するだけではなく、最近の処理能力の値も取得する。これにより、処理能力が時間とともに変化するような場合にでも適切なレコードの配分が行なえ、より早い計算の終了が期待できる。
【実施例４】
【００７１】
以上述べた３つの実施の形態のすべてに共通する実施の変更例について述べる。第１に、図３に示したようなテーブル形式のデータではなく、図１８で示すようなトランザクションデータが入力される場合にも対応が可能である。前者が、集計データであるのに対して、後者は、何らかのイベントに対応した情報だけが記述されている。図１８で示す例は、スーパのレジなどで用いられるＰＯＳにおいて、一人の客が買った商品が顧客ＩＤとともに記されている。商品の組合せを問題にするときに、顧客ＩＤとすべての商品の組合せについての条件の組合せをカウンタとして生成しておく。そのカウンタの例を図１９に示す。このようにすれば、テーブル形式のデータを持たなくても、トランザクションデータから直接に、対応するカウンタの更新を行なえば、前述の３つの実施の形態をそのまま実施できる。
【００７２】
第２に、上述の３つの実施の形態はレコードを１パスで読んで処理するような手法であったが、一度１パスで処理を終了し、その後に、条件を変えてさらに１パスの処理を繰り返すことにより、得られる結果を詳細化することができる。その処理を図２０で説明する。
【００７３】
ステップ２００１にある処理Ａは、これまで説明してきた３つの実施の形態での処理が入る。すなわち、レコードが与えられて、一連のデータマイニング処理をして結果が出力されるまでを表す。ステップ２００２では、これで処理を終了するかどうかを判定し、終了するときはこれで処理を終了し、そうでないときにはステップ２００３に移る。
【００７４】
ステップ２００３では、条件の変更を行ない、ステップ２００１に移る。ここで条件の変更について説明する。処理Ａが１度終わると、有意な条件がいくつか出力される。この有意な条件に限って、カテゴリ化の閾値を変更してより詳細な条件を求める。ここでカテゴリ化とは、例えば、年齢を１０代、２０代、３０代というような離散的なカテゴリに分ける処理のことである。また、カテゴリ化の閾値を変更してより詳細な条件を求めるとは、例えば最初の処理Ａで、２０代という年齢が条件として有意になったとき、２回目では、これを２０代前半と２０代後半に分けるようなことが考えられる。このようにすれば、何度か処理Ａを繰り返すことにより、より詳細な結果出力が期待できる。
【００７５】
また、上述の実施の形態を次のように変更もできる。条件の変更の際に、有意な条件を満たすレコードのみをピックアップし、レコードの全体集合自体を小さくする。そして小さくなったレコード集合に対して、処理Ａを繰り返すことにすると、まったく同じ結果をより高速に得ることができる。
【００７６】
第３に、上記で説明したすべての方法をコンピュータで読み取り可能なプログラムに格納し、記憶した媒体とすることもできる。
【００７７】
第４に、上記で説明したすべての方法をコンピュータで読み取り可能なプログラムに格納し、ネットワークを通じて配布するシステムも実施可能である。
【図面の簡単な説明】
【００７８】
【図１】本発明の第１の実施の形態の構成図である。
【図２】本発明の第１の実施の形態のフローチャートである。
【図３】レコード形式の例を示す図である。
【図４】カウンタの第１の例を示す図である。
【図５】終了指示入力装置の表示例である。
【図６】カウンタの第２の例を示す図である。
【図７】本発明の第２の実施の形態の構成図である。
【図８】本発明の第２の実施の形態のフローチャートである。
【図９】区間データを示す図である。
【図１０】区間データの更新を示す図である。
【図１１】区間変更装置の例を示す図である。
【図１２】終了指示入力装置の例を示す図である。
【図１３】差分データの重畳表示の例を示す図である。
【図１４】本発明の第３の実施の形態の構成図である。
【図１５】管理サーバＡのフローチャートである。
【図１６】計算サーバの表を例示する図である。
【図１７】計算サーバのフローチャートである。
【図１８】トランザクションデータの例を示す図である。
【図１９】カウンタの例を示す図である。
【図２０】詳細化処理のフローチャートである。
【符号の説明】
【００７９】
１００・・・入力装置、１０１・・・レコード入力装置、１０２・・・カウンタ初期化装置、１０３・・・カウンタ、１０４・・・カウンタ選択装置、１０５・・・カウンタ更新装置、１０６・・・最新レコードＩＤ記憶装置、１０７・・・終了指示入力装置、１０８・・・終了指示判定装置、１０９・・・出力装置、１１０・・・バス、１１１・・・レコードデータ記憶装置、１１２・・・通信線
【図１】
2004272936.tif 000004
【図２】
2004272936.tif 000005
【図３】
2004272936.tif 000006
【図４】
2004272936.tif 000007
【図５】
2004272936.tif 000008
【図６】
2004272936.tif 000009
【図７】
2004272936.tif 000010
【図８】
2004272936.tif 000011
【図９】
2004272936.tif 000012
【図１０】
2004272936.tif 000013
【図１１】
2004272936.tif 000014
【図１２】
2004272936.tif 000015
【図１３】
2004272936.tif 000016
【図１４】
2004272936.tif 000017
【図１５】
2004272936.tif 000018
【図１６】
2004272936.tif 000019
【図１７】
2004272936.tif 000020
【図１８】
2004272936.tif 000021
【図１９】
2004272936.tif 000022
【図２０】
2004272936.tif 000023