以下、本発明の実施形態を図面を用いて説明する。
図1に本発明によるデータ分析システムの一実施形態を示すシステム構成図であって、1,1a,1b,1c,……は店舗、2はセンタサーバ、3はデータ入力装置、4はデータ収集装置、5は生データ格納部、6はプログラム実行部、7は分析データ送信部、8はデータ分析装置、9はプログラム管理部、10は管理データ格納部、11は分析データ受信部、12はプログラム実行部、100は前処理プログラム、101は分析プログラム、102は配布プログラム、103は送り先リスト表である。
同図において、この実施形態は、店舗1a,1b,1c,……(これらを総称して、店舗1という)側とセンタサーバ2とがネットワーク(図示せず)を介して接続されてシステムを構成しており、店舗1側には、データ入力装置3とデータ収集装置4とからなるデータ分析システムのデータ収集側の機構部が設けられている。データ入力装置3はデータが入力されるPOSやセンサ,カードリーダ,カメラ,マイクなどであって、店舗1では、これらのうちの少なくともいずれか1つがデータ入力装置3として使用される。また、データ収集装置4は、データに有力装置3からの入力データが、生データとして、格納される生データ格納部5と、CPUやメモリなどからなり、生データ格納部5の生データを、分析のために、前処理するプログラム実行部6と、プログラム実行部6で消え処理されたデータを、分析データとして、センタサーバ2に送信する分析データ送信部7とから構成されている。
センタサーバ2には、データ分析装置8と、プログラム管理部9と、管理データ格納部10とからなるデータ分析システムのデータ分析側の機構部が設けられている。プログラム管理部9には、店舗1側で使用される前処理プログラム100と分析プログラム101とが格納されて管理されており、データ分析装置8は、店舗1からの前処理された分析データを受信するための分析データ受信部11と、分析データ受信部11で受信した店舗1からの分析データをプログラム管理部9での分析プログラム101を用いて分析するプログラム実行部12とからなり、このプログラム実行部12による分析データの分析結果が、管理データとして、管理データ格納部10に格納される。
なお、データ分析装置8には、前処理ブログラム100の送り先(店舗1)と送り先への前処理プログラム100とを対応付けた送り先リスト表103が配布プログラム102に設けられており、店舗1からの要求などに応じて、プログラム実行部12は、この送り先リスト表103を基に配布プログラム102を実行することにより、この店舗1に該当する前処理プログラム100をプログラム管理部9から取得し、要求があったこの店舗1に配信する。これにより、この店舗1では、前処理プログラム100が設定され、生データ格納部5での生データがプログラム実行部6でこの前処理プログラムを用いて前処理され、分析データ送信部7からセンタサーバ2に送信される。
また、送り先リスト表103では、新規の店舗1でデータ入力装置3やデータ収集装置4が設置されると、この店舗1を送り先とし、これに該当する前処理プログラムに関する情報(識別子IDなど)を送り先と関連付けて登録される。ここでは、要求があった店舗1にセンタサーバ2側からこの店舗1に該当する前処理プログラム100を配信するものとしたが、この新規の店舗1とセンタサーバ2との通信が可能となると、この送り先リスト表103を基に、この新規の店舗1にこれに該当する前処理プログラム100を転送するようにしてもよい。
かかる構成のこの実施形態では、店舗1において、データ入力装置3で得られた生データがデータ収集装置4で収集されて一旦格納され、それらに分析のための前処理がなされてセンタサーバ2に送信される。センタサーバ2では、各店舗1からの前処理された分析データがデータ分析装置8で受信されて分析され、その分析結果が、管理データとして、管理データ格納部10に格納される。この管理データ格納部10での管理データ(分析結果)は、各店舗1や本店(図示せず)に、その要求に応じて、提供することができるようにしている。
以下、店舗1とセンタサーバ2について、より詳細に説明する。
店舗1では、POSやセンサ,カードリーダ,カメラ,マイクなどのデータ入力装置3から得られたデータが、生データとして、データ収集装置4の生データ格納部5に一旦集める。生データ格納部5に集められた生データは、プログラム実行部6で前処理プログラム100を基に、前処理される。このデータ収集装置4とセンタサーバ2のデータ分析装置8とは、分析データ送信部7と分析データ受信部11とにより、図示しない通信経路などのネットワークを介して互いに接続されており、前処理された分析データとしての、例えば、平均値化されたデータやデータ数などが、分析データ送信部7により、データ分析装置8の分析データ受信部11に送信される。前処理された分析データ(以下、前処理済データという)では、平均値化などの結果、個人情報が秘匿される。
センタサーバ2では、データ分析装置8において、前処理された分析データが分析データ受信部11され、プログラム実行部12において、プログラム管理部9から該当する分析プログラム101が読み出され、この分析プログラム101を基に、この受信した前処理済みの分析データの分析が行なわれる。
ここで、後述するように、店舗1a,1b,1c,……毎に夫々、固有の店舗IDが割り当てられており、店舗1の分析データ送信部7から送信される前処理済データには、これを送信する店舗1の店舗IDが付加されている。センタサーバ2では、データ分析装置8において、前処理済分析データが分析データ受信部11で受信され、プログラム実行部12において、この店舗IDを基に、プログラム管理部9から該当する分析プログラム101が読み出され、この分析プログラム101を基に、この受信した前処理済みの分析データの分析が行なわれる。
なお、店舗1の分析データ送信部7から送信される前処理済データに前処理プログラム100のプログラムIDが付加され、センタサーバ2では、このプログラムIDを基にプログラム管理部9からの該当する分析プログラム101が読み出されるようにしてもよい。
店舗1でのデータ収集装置4の前処理プログラム100は、センタサーバ2のデータ分析装置8における送り先リスト表103で各店舗1など毎に決められており、プログラム実行部12は、この送り先リスト表103を基に配布プログラム102を実行することにより、プログラム管理部9から該当する前処理プログラム100が読み出され、送り先リスト表103での該当する送り先(店舗1など)に転送されたものである。
このように、この実施形態では、データを提供する店舗1側に前処理プログラム101を実行するプログラム実行部6が設けられ、生データを、データの分析を行なうセンタサーバ2に転送する前に、このプログラム実行部6で前処理プログラム101を実行することによって、前処理しており、このように前処理されたデータをセンタサーバ2に送信するものであるから、店舗側からセンタサーバ2側への分析のためのデータ送信量を大幅に低減させることができる。
図2は図1に示す実施形態に対して一般的に想定される典型的なデータ分析システムの一例を示すシステム構成図であって、図1に対応する部分には同一符号を付けて重複する説明を省略する。
店舗1で収集されたデータをセンタサーバ2で分析する場合、一般的に想定される典型的なデータ分析システムとしては、図2に示すように、分析処理とともに、その分析のための生データの前処理もセンタサーバ2で行なわれるシステム構成となる。
即ち、店舗1側では、データ入力装置3で得られる生データは、一旦生データ格納部5に格納された後、分析データ送信部7からそのままセンタサーバ2に送信される。センタサーバ7では、この生データを分析データ受信部11が受信すると、プログラム実行部12が、まず、この生データを送信した店舗1に該当する前処理プログラム100をプログラム管理部9から取得してこの生データの前処理を行ない、次いで、分析プログラム101をプログラム管理部9から取得してこの前処理されたデータの分析を行なう。
ここで、店舗1側からセンタサーバ2に送信される生データは、上記の非特許文献1で指摘されるように、特定の目的とは無関係のデータやノイズ,誤ったデータなどの分析の対象とはならないデータを含むものであり、図2に示す分析システムでは、分析の対象となるデータにかかる分析の対象とならないデータが付加されたまま、センタサーバ2に送信されることになり、無駄なデータも送信してそのデータ送信量が非常に大きなものとなる。このため、データを送信するに要する時間が長くなり、各店舗1からデータの送信が円滑に行なわれなくなる事態も生ずるし、センタサーバ2での1店舗からのデータの処理時間も長くなる。 これに対し、図1に示す実施形態では、店舗1側でデータの前処理が行なわれ、前処理された分析対象となるデータだけがセンタサーバ2に送信されるから、かかる問題が解消できる。
図3は図1における1つの店舗1での前処理前のデータ売上げ(トランザクション)データの構成の一具体例を示す図であって、20はトランザクションテーブル、21はトランザクションID、22は会員情報、23は売上げ発生年月日、24は売上げ時間帯、25は商品分類、26は購入金額である。ここで、このデータはこの店舗1の取引き(売上げ)のデータであり、以下では、かかる売上げデータをトランザクションという。
各店舗1では、トランザクションが、図3に示すように、トランザクションテーブル20により、テーブル形式で管理されている。このように管理されるトランザクションは、属性としてのトランザクション毎に割り当てられるトランザクションID21,会員情報22,売上げ発生年月日23,売上げ時間帯24,購入された商品分類25,購入金額26などからなるものである。
ここで、トランザクションは顧客毎に、かつ販売された商品の分類(種別)毎に作成され、会員情報22は会員と非会員とに判別され、会員の場合には、会員毎に割り当てられて会員を識別可能な会員IDが用いられる。また、時間帯24は、ここでは、一日24時間の1時間毎の時間帯とするが、例えば、午前,午後といった他の時間帯としてもよい。例えば、トランザクションID21が「1」(以下、トランザクションID21「1」という。他のトランザクションIDについても、同様)のトランザクションは、非会員が2008年10月21日の9時の時間帯に、商品分類25が「1」(以下、商品分類25「1」という。他の商品分類25についも同様)の商品を350円(購入金額26)で購入したことによって作成されたものであり、また、トランザクションID21「4」のトランザクションは、会員ID(会員情報22)が「10001」の会員が2008年10月21日の9時の時間帯に、商品分類25「1」の商品を600円(購入金額26)で購入したことによって作成されたものである。
図4は図1におけるプログラム管理部9の一具体例を模式的に示す図であって、30はプログラム管理テーブル、30aは分析内容、30bは対応する前処理プログラム、31は分析プログラムリスト、31aはプログラムNo、31bは分析処理内容、32は前処理プログラムリスト、32aはプログラムNo、32bは前処理内容である。
同図において、プログラム管理部9には、前処理プログラム100のリスト、即ち、前処理プログラム32と、分析プログラム101のリスト、即ち、分析プログラムリスト31とが設けられ、これらにより、前処理プログラム100と分析プログラム101とが管理されている。各前処理プログラム100は、これらに割り当てられたプログラムID32aとその前処理内容32bとからなり、各分析プログラム101は、これらに割り当てられたプログラムID31aとその分析内容31bとからなる。
また、プログラム管理部9には、分析プログラム101と前処理プログラム100との関係を示すプログラム管理テーブル30が設けられており、このプログラム管理テーブル30では、分析プログラムリスト31での分析プログラム101のプログラムNo31aと前処理プログラムリスト32での分析プログラム100のプログラムNo32aとが対応付けられている。
図5は図1におけるデータ分析装置8内の送り先リスト表103の一具体例を示す図であって、103aは送り先、103bは分析プログラムID、103cは前処理プログラム配布状態である。
同図において、送り先リスト表103には、前処理プログラム100を配信する相手先の店舗1を表わす送り先103aと、送り先103aである店舗1での分析データの分析に用いられる分析プログラム101の分析プログラムID103bと、送り先103aである店舗1での前処理プログラム100の配布状態を示す前処理プログラム配布状態103cとが設定される。
ここで、送り先103aとしては、店舗1の固有の情報、例えば、店舗1に割り当てられたID(店舗ID)が用いられる。分析プログラムID103bとしては、図4に示す分析プログラムリスト31での分析プログラム101のプログラムID31aが用いられる。前処理プログラム配布状態103cは、店舗1に該当する前処理プログラム100が配布されたか否かを示すものであって、配布済みの場合には、「済」を表わすコードの情報が、未配布の場合には、「未」を表わすコードの情報が夫々登録される。
店舗1に前処理プログラム100を配布する場合には、この送り先リスト表103から、この店舗1に対して用いられる分析プログラム101の分析プログラムID103bを検出し、この分析プログラムID103bを基に、プログラム管理部9から、図4に示すプログラム管理テーブル30を用いて該当する前処理プログラム100を判定し、前処理プログラムリスト32から該当する前処理プログラム100を読み出して該当する店舗1に配布する。
次に、図1に示す実施形態の知識発見の処理動作について説明する。ここでは、分析データからの知識発見のための処理は、前述の通り、分析データの獲得→分析データの前処理→分析データの分析処理という一連の処理から構成されるものとし、これら処理毎に、以下、図1を参照して説明する。
図6は図1における店舗1でのデータ収集装置4の分析データの獲得のプロセスの一具体例を示すフローチャートである。
同図において、まず、POS端末やカードリーダなどのデータ入力装置3によってデータを読み取り(ステップS100)、生データ格納部5に格納する(ステップS101)。
図7は図1における店舗1でのデータ収集装置4の分析データの前処理のプロセスの一具体例を示すフローチャートである。
同図において、まず、収集した生データを生データ格納部5から読み出し(ステップS200)、プログラム実行部6で、前処理プログラム100を用いて、前処理を行なう(ステップS201)。そして、前処理済みの分析データを分析データ送信部7からセンタサーバ2のデータ分析装置8に送信する(ステップS202)。
図8は図1におけるセンタサーバ2でのデータ分析装置8による分析データの分析処理のプロセスの一具体例を示すフローチャートである。
同図において、まず、データ分析装置8は、前処理済みデータを受信し(ステップS300)、受信した前処理済みデータを分析プログラム101でデータマイニングを実行する(ステップS301)。データマイニングとしては、統計処理や機械学習が実行される。
なお、標準的なデータマイニングでも、データマイニング機能を搭載した実施の形態では、ここに示した処理フローを実現する機能がすべてあるいは部分的に実装されていると考えることができる。本発明の実施の形態でも同様に適用されるものであるが、この実施形態の特徴は、前処理が、センタサーバ2のデータ分析装置8ではなく、データを収集する店舗1側のデータ収集装置4で実施される点である。
図9は図1における配布プログラム102による処理の一具体例を示すフローチャートである。
同図において、まず、処理9002で、プログラム実行部12が、分析配布プログラム102を実行して、送り先リスト表103(図5)からターゲットとする送り先(要求があった店舗1)103aに対応する分析プログラム101(分析プログラムID103b)と前処理プログラムは畏怖状態103cとを参照する(ステップS400)。例えば、図5において、送り先103aがB店である場合には、分析プログラム101は分析プログラムID=2の分析プログラムとなる。また、送り先103aがA店である場合には、前処理プログラム100は配布済みとなっている。
次に、送り先リスト表103の前処理プロクラム配布状態103cをもとに、当該送り先では、前処理プログラム100が配布済みか否かを判定し(ステップS401)、配布済みである場合には(ステップS401の“yes”)、処理を終了するが(ステップS402)、未配布である場合には(ステップS401の“no”)、プログラム管理部9のプログラム管理テーブル30や前処理プログラムリスト32(図4)を参照して当該送り先の分析プログラム101に対応する前処理プログラム100を取得する(ステップS403)。例えば、このプログラム管理テーブル30によってプログラムID=1の分析プログラム101にプログラムID=aの前処理プログラム100が対応づけられる。
次に、処理9006で、当該送り先103aのデータ収集装置4(ず1)にこの前処理プログラム100を送信し(ステップS404)、送り先リスと表103での当該送り先103aの前処理プログラム配布状態103cを「未配布」から「配布済み」に更新する。
次に、図1におけるプログラム実行部6での前処理プログラム100による分析データの前処理について説明する。ここでは、具体的には、小売業の売上げデータを収集して分析する状況するものとし、図3に示すデータ売上げ(トランザクション)データのトランザクションテーブル20を基に説明する。
このトランザクションテーブル20では、顧客を特定しない(即ち、非会員)の売上げデータの中にカードを持った一部の顧客の特定が可能な(即ち、会員の)売上げデータが混在している。ここで、
・トランザクションID1〜ID3及びID5〜ID9が顧客を特定しない(非会員の)売上げデータ
・トランザクションID4とID10が顧客を特定する(会員の)売上げデータ
である。
そして、これらのデータに対して、図4に示す前処理プログラムリスト32から選択されてデータ収集装置4(図1)に配布された前処理プログラム100で前処理を行なうものとする。ここでは、前処理の一例として、図4に示すプログラム管理テーブル30でのプログラムNo.1の分析プログラム101に対する前処理プログラムリスト32のプログラムNo.aの前処理プログラム100の処理と、同じくプログラムNo.2の分析プログラム101に対するプログラムNo.bの前処理プログラム100の処理とについて、説明する。
図10は上記のプログラムNo.1の分析プログラム101に対するプログラムNo.aの前処理プログラム100の処理による前処理済みのデータのテーブルの一具体例を示す図であって、40は前処理済みデータテーブル、41は前処理済データID、42は店舗ID、43は売上げ年月日、44は売上げ時間帯、45はトランザクション数、46は購入金額である。これは、顧客を特定する売上げと特定しない売上げとを区別しないで(即ち、会員と非会員との区別なしに)なされた前処理の結果を示すものである。
この具体例の前処理では、図4に示すトランザクションテーブル20において、年月日と時間帯とを前処理の単位とするものであり、この前処理単位内の全てのトランザクションをまとめる処理がこの場合の前処理である。図10は所定の店舗1で得られた前処理済の分析データを前処理済みデータテーブル40として示したものである。
これによって得られる前処理済みのデータは、この前処理済みデータテーブル40で示すように、この前処理単位毎に得られる前処理済みデータに割り当てられる前処理済データ41と、この店舗1に割り当てられた店舗ID42と、前処理単位を表わす売上げ年月日43と売上げ時間帯44と、この前処理単位でのトランザクション数45と、この前処理単位での購入金額46とからなるものである。
図3に示すトランザクションテーブル20では、2008年10月21日の9時台と10時台との時間帯について、トランザクションが登録されているものであり、これら時間帯を前処理単位とし、これら前処理単位についての前処理済データを示したものが図10に示す前処理済みデータテーブル40であるが、2008年10月21日の9時台の前処理単位の前処理済データID41=1の前処理済データに対しては、トランザクション数45が値「4」(図3でのトランザクションID1〜ID4)であり、同じく10時台の前処理単位の前処理済データID41=2の前処理済データに対しては、トランザクション数45が値「6」(図3でのトランザクションID5〜ID10)である。
また、購入金額46は前処理単位内での平均購入金額を表わすものであって、前処理済データID41=1の前処理済データに対しては、その購入金額46は、計算値C=(350+600+1100+600)/4=662円であり、前処理済データID41=2の前処理済データに対しては、その購入金額46は、計算値F=(400+500+600+500+600+600)/6=633円である。
図11は上記のプログラムNo.1の分析プログラム101に対するプログラムNo.aの前処理プログラム100の処理による前処理済みのデータのテーブルの他の具体例を示す図であって、40aは前処理済みデータテーブル、47は会員IDでであり、図10に対応する部分には同一符号を付けて重複する説明を省略する。この前処理済みデータテーブル40aは、顧客を特定する売上げと特定しない売上げとを区別して(即ち、会員と非会員との区別をして)なされた前処理の結果を示すものであり、
この具体例は、図10に示す具体例に対し、さらに、会員と非会員との区別もして売上げ動向の比較分析をしつつ、特定の顧客の売上げ動向の分析を実施するような場合に用いることができるようにしたものである。そこで、非会員のトランザクションは、複数トランザクションをまとめて統計的情報に要約し、要約した情報のみを分析に活用する。一方で、会員のトランザクションは、複数トランザクションをまとめた統計的情報を非会員の統計情報と比較するだけでなく、かかる会員としての顧客個人の履歴を多面的に分析するために、1件ずつ全ての情報を分析に活用するものとする。
図11において、前処理済みデータテーブル40aでは、前処理済みデータが会員に関するものであるか、非会員に関するものであるかを識別するための会員ID47が登録されるものである。非会員については、図10の場合と同様に、前処理単位に対して前処理が行なわれるが、会員については、一人一人について前処理が行なわれ、会員ID47は、非会員については、前処理済データに対して、非会員を表わす予め決められた符号などの情報が登録され、会員については、その会員に割り当てられたIDが登録される。
いま、得られた生データが図3に示すものとすると、2008年10月21日の9時台の前処理単位では、トランザクションID21=1〜3の非会員の生データとトランザクションID21=4の会員の生データとに区分され、これらトランザクションID21=1〜3の非会員に対する生データは、前処理されることにより、図11に示す前処理済みデータテーブル40aのように、前処理済データID=1の前処理済データとなり、この場合、会員ID47としては、上記の「非会員」が登録され、トランザクション数45=3が登録される。購入金額46は、図10に示す前処理済みデータテーブル40と同様、トランザクションID21=1〜3の非会員の購入金額26(図3)の平均金額が、計算値Aとして、登録される。
トランザクションID21=4の会員の生データは、前処理されることにより、図11に示す前処理済みデータテーブル40aのように、前処理済データID=2の前処理済データとなり、この場合、会員ID47としては、その会員に割り当てられたID「10001」が登録され、トランザクション数45=1が登録される。購入金額46としては、図3に示す生データでの購入金額26(この場合、600円)が、計算値Cとして、そのまま登録される。
図3での次の前処理単位(2008年10月21日の10時台)のトランザクションID21=1〜3の非会員の生データやトランザクションID21=4の会員の生データについても同様であり、図11に示す前処理済みデータテーブル40aにおいては、夫々前処理済データID=3の前処理済データ,前処理済データID=4の前処理済データとなる。
なお、図10,図11に示すように、前処理済データには、それを送信する店舗ID42が付加されており、これを受信したセンタサーバ2のデータ分析装置8のプログラム実行部12では、受信した前処理済みデータに付加されているこの店舗ID42を基に、送り先リスト表103(図5)から分析プログラムID103aを求め、この分析プログラムID103bを基に、プログラム管理部9での分析プログラムリスト31からこの前処理済みデータに該当する分析プログラム101を取得してこの前処理済みデータの分析を行なう。
あるいは、図1において、店舗1側から送信される前処理済み分析データに、上記のように、このデータを前処理した前処理プログラムのプログラムID32a(図4では、「プログラムNo」と表記)が付加されているときには、センタサーバ2では、プログラム実行部12が受信した前処理済みデータからプこのログラムID32aを抽出し、これに該当する分析プログラム101をプログラム管理テーブル30(図4)から判別し、分析プログラムリスト31から該当する分析プログラム101を抽出するようにしてもよい。
図12は図10に示す前処理済データを得るための図1におけるプログラム実行部6の前処理プログラム100による前処理の一具体例を示すフローチャートである。この前処理は前処理単位毎に行なわれるものであり、1つの前処理単位の図12による前処理が行なわれると、次の前処理単位の図12による前処理が行なわれる。以下では、図3でのトランザクションID=1〜4の4件のトランザクションの前処理単位について説明する。
図12において、店舗1のデータ収集装置4でのプログラム実行部6(図1)において、まず、購入の平均金額C=0、集計(合計)金額=0、集計カウンタ=0、トランザクション数=4の初期設定が行なわれる(ステップS500)。次に、トランザクションID=0とし(ステップS501)、さらに、トランザクションIDを値1だけインクリメントし、トランザクションID=1とする(ステップS502)。そして、図3に示すトランザクションID=1のトランザクションの購入金額T(ここでは、350円)が読み出され(ステップS503)、集計カウンタを値1だけインクリメントして集計カウンタ=1とし(ステップS504)、集計金額にステップS503で読み出した購入金額Tを加算する(ステップS505)。このときの集計金額は、0+350=350円となる。そして、このときの購買の平均金額Cを求める(ステップS506)。このときの購買の平均金額Cは、C=350/1=350円となる。
そして、トランザクション数(=4)>トランザクションID(=1)であるから(ステップS507の“yes”)、ラベル1に戻ってトランザクションID=2とし(ステップS502)、次のトランザクションID=2のトランザクションについて、ステップS503の処理を行なう。このときの購入金額Tは600円であり(ステップS503)、集計カウンタ=2(ステップS504)、集計金額=350+600(ステップS505)、購買の平均金額C=(350+600)/2(ステップS506)となる。
以下同様の処理をトランザクションID=4のトランザクションまで行ない(ステップS507の“no”)、そのときの集計カウンタが図10でのトランザクション数45となり、購買の平均金額Cが図10での購入金額46の計算値Cとなる(ステップS509)。これにより、このときの前処理単位での前処理が終了する(ステップS510)。次の前処理単位に対しては、ステップ500から行なわれる。
図3に示す前処理前のデータと図10に示す前処理後のデータとを比較すると、前処理後のデータは前処理前のデータと比べてデータ量が大幅に減ることは一目瞭然であり、転送経路及び受信する側のデータ分析装置8の演算負荷の低減が期待できる。しかも、一般に平均値を求める計算は低負荷な演算処理で済むので、データ収集装置4への負荷増というデメリットは微小といえる。
かかる前処理済データ(図10に示す前処理済データ)を受信するセンタサーバ2のデータ分析装置8では、どのデータ収集装置4(即ち、店舗1)でどんな前処理プログラム100が実行されているかを、前処理プログラムの配布元として認識しているので、この秘匿されたデータの値を部分的に復元できる。復元できる生データは、上記の購買の平均金額C並びにトランザクション数の記録をもとに、元の前処理単位のトランザクションのデータの総和である(なお、個々のトランザクションの生データの復元には、別途追加情報が必要である)。
また、各店舗1からのデータの総和とサンプル数(トランザクション数)との情報がデータ分析装置8に蓄積されるので、全店舗の平均値を求めるような、大域的な統計分析が可能になる。
図13は図11に示す前処理済データを得るための図1におけるプログラム実行部6の前処理プログラム100による前処理の他の具体例を示すフローチャートである。この前処理は前処理単位毎に行なわれるものであるが、会員,非会員毎に区別して行なわれるものであり、非会員については、図12に示した処理と同様であるが、会員については、1人ずつ前処理を行なうものである。そして、図12に示した処理と同様、1つの前処理単位の図12による前処理が行なわれると、次の前処理単位の図12による前処理が行なわれる。以下では、図3でのトランザクションID=1〜4の4件のトランザクションの前処理単位について説明する。
なお、図1において、データ収集装置4では、データ入力装置3で生データ(トランザクション)がその入力順に生データ格納部5に格納され、この入力順序は、その入力データが非会員によるものか、会員によるものかには関係がない。しかし、ここでは、生データ格納部5では、かかるトランザクションの配列が、図3に示すように、同じ前処理単位(図3では、時間帯)内では、非会員のトランザクションと会員のトランザクションとに区分され、まず、非会員のトランザクションに入力順にトランザクションID21が割り当てられ、しかる後、会員のトランザクションに入力順にトランザクションID21が割り当てられるものとする。従って、夫々の前処理単位(9時台と10時台)において、図3に示すように、入力されたトランザクションにトランザクションID21が付与される。以下、このような生データの前処理単位のトランザクションの前処理について説明する。
図13において、ステップS500〜S510は図12に示す前処理と同様であるが、かかるステップS500〜S510の前処理が繰り返されてステップ510で前処理が終了するのは、図3における1つの前処理単位としてのトランザクションID=1〜4の4件のトランザクションが全て非会員の場合である。このときには、図11では、トラクジクション数45が「4」の前処理済データID=1の前処理済データが得られるだけで、前処理済データID=2の前処理済データは得られない。
次に、図3でのトランザクションID=1〜4の4件のトランザクションのうちのトランザクションID=4のトランザクションが会員による場合について説明する。
なお、ステップS600では、生データ5(図1)に格納されている生データのうちの前処理されていない生データ(トランザクション)の全数が設定され、また、ステップS500では、非会員購買の平均金額A=0,非会員購買の集計金額=0,非会員の集計カウンタ=0,前処理単位のトランザクション数が夫々設定される。
トランザクションID=1〜3については、非会員によるものであるため(ステップS601の“yes”)、これらトランザクション毎にステップS500〜S510の前処理が実行される。このときには、ステップS506でトランザクションID=1〜3のトランザクションによる非会員購買の平均金額Aが求められている。
しかる後、トランザクションID=4となり(ステップS502)、このトランザクションID=4のトランザクションの購入金額T(ここでは、600円)が読み出され(ステップS503)、集計カウンタを値1だけインクリメントして集計カウンタ=4とする(ステップS504)。
このとき、図3での会員情報21から、このトランザクションID=4のトランザクションは会員によるものであるから(ステップS601の“no”)、このときステップS504で得られた集計カウンタから値「1」だけ差し引いた集計カウンタでステップS505で求めたトランザクションID=1〜3の集計金額を割算して非会員購買の平均金額Aを求め(ステップS602:なお、この平均金額Aは、既にステップS506で得られているので、設けなくともよい)、また、このステップS505で求めたトランザクションID=1〜3の集計金額にステップS503で求めたトランザクションID=4の会員のトランザクションの購入金額26(ここでは、600円)を加算して集計金額を求め(ステップS603)、その集計金額をステップS504で得られたトランザクションID=4の会員のトランザクションまでの集計カウンタで割算し、トランザクションID=1〜4の前処理単位のトランザクションに対する平均金額Cを求める(ステップS604)。
そして、ステップS506で得られたトランザクションID=1〜3の非会員のトランザクションの非会員購買の平均金額Aを図11での前処理済データID=1の前処理済データでの購入金額46(計算値A)とし(ステップS605)、ステップS604で得られたトランザクションID=1〜4の非会員及び会員のトランザクションの購買の平均金額Cを図11での前処理済データID=2の前処理済データでの購入金額46(計算値C)とする(ステップS605)。この場合、図13のステップS604には示していないが、前処理済データID=1の前処理済データでは、集計カウンタS504で得られた非会員のトランザクションID=1〜3のトランザクションの集計カウンタをトランザクション数45(=3)とし、前処理済データID=2の前処理済データでは、会員のトランザクションID=4のトランザクションに対して集計カウンタを「1」とし、これをトランザクション数45(=1)とする。
以上のより、1つの前処理単位での前処理が終了する。
しかる後、ステップS500と同様に、非会員購買の平均金額A=0、非会員の集計金額=0、非会員の集計カウンタ=0、次の前処理単位での非会員のトランザクション数の初期設定が行なわれる(ステップS606)。そして、ステップ502で設定されたIDがステップS600で設定された全トランザクション数との間に、全トランザクション数>IDでないときには、生データ格納部5(図1)での全ての生データの前処理が完了したことになるので(ステップS607の“no”)、前処理を終了し(ステップS609)、上記の判定の通りであるときには(ステップS607の“yes”)、ラベル1に戻り、ステップS501から次の前処理単位の前処理へと進む。
なお、ここでは、生データ格納部5では、非会員と会員との生データの配列順を入力順から、図3に示すように、変更するものとしたが、変更しなくともよい。この場合には、図14に示すように、トランザクションID1〜ID6が前処理単位となるが、そのうちの途中のトランザクションID4が会員のものとなる。この場合には、図13において、ステップS600,S606は除かれ、ステップS607はステップS500で初期設定された前処理単位のトランザクション数との比較となり、図13の処理は1つの前処理単位の処理ということになる。
これにより、図14での非会員のトランザクションID=1〜3と会員のトランザクションID=4に対して、ステップS605で前処理済データID=1,2の前処理済データが得られ、次の非会員のトランザクションID=5〜6に対して、ステップS509で前処理済データID=3の前処理済データが得られる。
以上のようにして、図3に示す生データから、図11に示すように、前処理単位毎に、非会員のトランザクションによる前処理済データと会員のトランザクションによる前処理済データとが得られることになる。
この前処理では、前処理単位において、非会員のトランザクションに対しては、これらトランザクションでの購入金額の平均金額が購入金額46として設定され、会員のトランザクションに対しては、この前処理単位での全トランザクションの平均金額が購入金額46となる。
そして、このようにして、前処理により、前処理済データ量は、前処理前の前処理単位のデータのデータ量よりも大幅に削減されることになり、分析データの伝送経路及び受信する側のデータ分析装置の演算負荷を低減させることができる。しかも、一般に、平均値を求める計算は、低負荷な演算処理で済むので、データ収集装置への負荷増というデメリットもなくすことができる。
前処理済みデータ(図11)を受信する側であるデータ分析装置8(図1)では、どの店舗などに存在するデータ収集装置4(図1)で、どのような前処理プログラム100が実行されているかを、送り先リスト表103(図1)などによって認識しているので、前処理によって秘匿されたデータの値を復元できる。図13での平均金額A,C並びにトランザクション数の記録を用いて、元の4件のトランザクションのデータの総和や会員のトランザクションの生データを復元できる。また、各店舗1からのデータの総和とサンプル数(トランザクション数)の情報がデータ分析装置8に蓄積されるので、全店舗1の平均値を求めるような、大域的な統計分析とともに、会員のトランザクション(購買行動)の特徴を、非会員も含めた全体的な傾向と比較評価することが可能になる。この評価結果は、会員(優良顧客であることが多い)に対して、さらに、積極的な購買行動を促すための施策立案に指針として活用できると考えられる。
以上、この実施形態においては、平均値とトランザクション数を手がかりに各店舗1からのデータの前処理による秘匿とその復元を行なう処理を示したが、有限要素法のように、データ群の部分集合から全体を推測できるような手法を適用してもよい。有限要素法などをデータ収集装置4側のデータ前処理に適用して部分集合を作成し、データ分析側で全体を推測する(近似的に復元する)実装の形態であっても、本発明の趣旨を逸脱しない。
なお、有限要素法とは、実際には、複雑な形状・性質を持つ物体を単純な形状・性質の小部分(要素)に分割し、その1つ1つの要素の特性を、数学的な方程式を用いて近似的に表現した後、この単純な方程式を組み合わせ,すべての方程式が成立する解を求めることによって、全体の挙動を予測しようとするものである(有限要素法については、http://www.mmm.muroran-it.ac.jp/~msakai/St_Exp/fem_01.htmを引用)。