【課題を解決するための手段】
【0007】
本発明は、データ利用者に提供するデータセット(以降、テーブルという。)の加工時に、そのテーブルを構成する各属性に対して重み(重要度)を設定し、特殊な関数を用いて、加工したテーブルを評価することで、データ利用者が求める情報を可能な限り保持する。
【0008】
すなわち、本発明は、トップダウン手法を実施した後、ボトムアップ手法により逆方向に変形し、さらにトップダウン手法で再度変形する、という処理を繰り返すことにより最適なテーブルを導出する。その際には、k−匿名性(k−anonymity)判定に加え、l−多様性(l−diversity)判定もしくはt−近似性(t−closeness)判定も行う。また、前処理によりトップダウン処理の欠点であった処理負荷がかかる問題を解決する。さらにトップダウン手法において評価ポイントの概算を導入し、不要な処理を削減する。そのうえ、評価ポイントが最高となったテーブルについて部分匿名化を実施することにより、さらに情報量の多いテーブルを作成する。
【0009】
本発明は、評価ポイントの概算について、2種類の評価関数を用意し、選択制とすることにより異なる特性を持つテーブルを出力する。本手法により、より最適なテーブルを高速に得ることができる。
さらに、本発明は、事前サンプリング処理により一部のデータを削除することで、他のデータが必要以上に一般化されることを防止する機能を備える。
【0010】
本発明の主な特徴について、重要度の入力、事前サンプリング処理、評価ポイントの算出、前処理、トップダウン処理、ボトムアップ処理、再トップダウン処理、部分匿名化処理、匿名性条件判定、及び木構造データごとに説明する
【0011】
[重要度の入力]
匿名化されたテーブルの生成は、ユーザが入力した各属性の重要度に基づいて行う。重要度は、重要度ポイントの大きい順に属性の優先順位を表わし、ユーザが最も重視する属性を最上位とする。一般化処理においては、優先順位が最下位の属性から順に一般化を行い、k−匿名性を満たした段階で終了する。したがって、最上位の属性ほど、元の情報が保持される確率が高くなる。利用者は、GUIを利用して各属性に対して重要情報(sensitive information)、準識別子(quasi−identifier)、削除すべき情報、のうちどの情報であるか、及び優先順位を入力する。
なお、重要情報に指定された属性の変更は行われない。また、削除すべき情報に指定された情報は一般化の際に自動的に削除される。ユーザは、各優先順位に対して、重要度ポイント(数値)を設定する。この値は、一般化を行う属性を選択する際に使用される。
【0012】
[事前サンプリング処理]
k−匿名化を実施する対象属性は、上記の通り優先順位が設定されており、また属性ごとに一般化処理を行う上限が設定されているものとする。このとき、事前サンプリング処理は以下の手順で実施される。
【0013】
(1)テーブルをk−匿名化を実施する対象属性でソートする。ソートによって対象属性の組が一致するレコードの数を数え上げることができる。
(2)対象属性の組が一致するレコードをグループ化し、グループごとのレコード数をカウントする。
(3)レコード数がM未満のグループを抽出する。Mはユーザによって設定された値である。
(4)優先順位が下位の属性から順に1段階ずつ一般化を実施する。1つの属性の一般化が終了するごとに、全てのグループがM以上のレコード数を持つようになったかどうかをチェックする。チェックを通れば終了する。全ての属性を上限まで一般化してもチェックを通らなかった場合には、次のステップに進む。
(5)ステップ(4)が終了した時点で、M未満のグループに所属するレコードは全て削除する。すなわち、元のテーブルからこのレコードを削除した後のテーブルで以降の匿名化処理を実施する。
【0014】
[評価ポイントの算出]
評価ポイントを算出する評価関数として以下の2種類の関数を用いる。
【0015】
【数1】
【0016】
【数2】
【0017】
上記の2つの評価関数を選択する方式とすることにより、以下のような異なる特性を持つテーブルを出力できるようにする。
数式1の評価関数は、準識別子の属性値の種類数の変化と、準識別子の重要度とに依存するので、数式1の評価関数によれば、例えば、属性に偏った匿名化が可能である。
また、数式2の評価関数は、数式1の評価関数に比べて、偏りなく匿名化が可能である。
【0018】
さらに、νを順序の代わりに、エントロピーを用いることで、さらに特性の異なるテーブルを導出することも可能である。
【0019】
【数3】
【0020】
次に、テーブルの加工について説明する。
テーブルは、属性ごとに、準識別子か重要情報かを決め、テーブルを全ての準識別子からなる部分と、全ての重要情報からなる部分に分割する。
【0021】
[前処理]
前処理では、それぞれの属性単体を、単体で(k+l)−匿名性を満たすように一般化する。lは、システムのパラメータとする。また、属性によってユーザが一般化の限界レベルを設定しているものについては、その限界レベルを超えて一般化はしない。
また、属性単体で(k+l)−匿名性を満たすように一般化したレコードが、k−匿名性(準識別子の属性値が全て等しいレコードがk個以上)を満たさなければ、各属性を1レベルだけ一般化して再度チェックを行う。この場合も、ユーザが設定した限界レベルを超えて一般化はせず、他の属性を一般化することで、k−匿名性を達成する。
【0022】
[トップダウン処理]
トップダウン処理は、以下の手順で行う。
【0023】
(1)まず、当該テーブルに対してソートを行い、全ての準識別子の属性値が一致するレコードを集めてグループ化を行う。
【0024】
(2)次に、ユーザによって入力された属性の優先順位情報と、k−匿名性及びl−多様性判定からのフィードバック結果とを基に、詳細化を行う属性及びグループを選択する。具体的には、ユーザによって入力された優先順位が高い(例えば、重要度が大きい)属性から順に詳細化してトップダウン候補データを作成する。
【0025】
その際には、各属性に対して、詳細化を行った場合に取り得る属性の種類の個数と、ユーザによって入力された優先順位(例えば、重要度が大きい順)情報とから、詳細化による評価ポイントの増加分を概算する。この概算結果が大きい順から、詳細化の対象とする。
また、可能性のある詳細化を順番に行ってトップダウン候補データを作成する際に、直前の詳細化を行ったトップダウン候補データの評価ポイントに対して、概算した評価ポイントの増加を考慮しても次に行う詳細化が評価ポイントの上で上回れない場合には、残りの詳細化手順によるトップダウン候補データの作成は行わない。
【0026】
(3)次に、選択したグループの詳細化を行い、k−匿名性及びl−多様性判定をする。具体的には、選択したグループについて、優先順位の高い(例えば、重要度が大きい)属性から順に詳細化(1レベル高い詳細化)を全ての属性について行い、候補データを作成する。
(3−1)k−匿名性及びl−多様性を満たす場合、トップダウン候補データについて、各属性における同じ属性値の個数を算出し、評価ポイントを導出する。k−匿名性及びl−多様性を満たしたトップダウン候補データ及びその評価ポイントを保存する。
トップダウン候補データのうち、最も評価ポイントが大きいものを次の処理対象データとして、(1)から(3)の処理を繰り返す。
(3−2)k−匿名性及びl−多様性を満たさなくなった場合、k−匿名性及びl−多様性を満たさなくなった候補データの中から最も評価ポイントが大きいものをボトムアップ処理に受け渡す。
【0027】
[ボトムアップ処理]
ボトムアップ処理は、以下の手順で行う。
【0028】
(1)トップダウン処理から渡された候補データについて、一般化を行い、ボトムアップ候補データを作成し、k−匿名性及びl−多様性判定をする。
(1−1)k−匿名性及びl−多様性を満たす場合、ボトムアップ候補データについて、各属性における同じ属性値の個数を算出し、評価ポイントを導出する。評価ポイントを比較し、トップダウン処理において保存されたトップダウン候補データの評価ポイントも含めて最大の評価ポイントを得た候補データを匿名テーブルとして保存する。そして、その匿名テーブルを再トップダウン処理に受け渡す。
【0029】
(1−2)k−匿名性及びl−多様性を満たさない場合、ボトムアップ候補データの中から、上記の保存した匿名テーブルよりも評価ポイントが大きく、かつ、ボトムアップ候補データの中で評価ポイントが最も大きいものを選択し、再度ボトムアップ処理を行い同様の判定を行う。
【0030】
全てのボトムアップ候補データがk−匿名性及びl−多様性を満たさず、かつ、現在保存されている匿名テーブルの評価ポイントを上回ることができない場合には、保存されている匿名テーブルをトップダウン処理に渡して終了する。
なお、ユーザが属性に対して一般化レベル限界を設定していた場合には、それを超えて一般化は行わない。
【0031】
[再トップダウン処理]
再トップダウン処理は、トップダウン処理とほぼ同様の手順で行う。
ボトムアップ処理から渡された候補データの詳細化を行う。詳細化を行ったトップダウン候補データのうち、k−匿名性及びl−多様性判定に合格したトップダウン候補データについては、各属性の属性値の数を算出し、評価ポイントを導出する。トップダウン候補データのうち、最も評価ポイントが大きいものを次の処理対象データとする。そしてk−匿名性及びl−多様性を満たさなくなるまで、k−匿名性及びl−多様性を満たしたトップダウン候補データ及びその評価ポイントを保存しながら、トップダウン処理を繰り返す。k−匿名性及びl−多様性を満たさなくなった場合、k−匿名性及びl−多様性を満たさなくなった候補データの中から最も評価ポイントが大きいものをボトムアップ処理に受け渡す。
なお、この場合も、評価ポイントが最も大きいトップダウン候補データは、現在保存されている匿名テーブルの評価ポイントよりも評価ポイントが大きくなければならない。現在保存されている匿名テーブルの評価ポイントを上回ることができない場合には、保存されている匿名テーブルを部分匿名化処理に渡して終了する。
【0032】
[部分匿名化処理]
部分匿名化処理とは、各属性の詳細化(トップダウン)を一律に行うのではなく、細かいクラスタに分割し、各クラスタがk−匿名性及びl−多様性を満たすように詳細化処理を行う手法である。具体的には、準識別子から構成される属性値の組をグループ化し、クラスタとする。このクラスタ単位で、k−匿名性及びl−多様性を満たすように詳細化処理を実行する。各属性が単純木で構成されている場合、互いのクラスタは独立集合であることが保証されるので、各クラスタが、k−匿名性及びl−多様性を満たす限り、この処理によって、全体のk−匿名性及びl−多様性が失われることは無い。したがって、本プロセスでは、詳細化処理のみを行うので、実行によって、評価ポイントが必ず増加することを保証できる。したがって、評価ポイントの算出を省略することにより高速化できる。また、本プロセスはオプションとし、ユーザが望まない場合には処理を省略することも可能とする。最終的に得られたテーブルを匿名テーブル出力に渡して終了する。
【0033】
[匿名性条件判定]
k−匿名性及びl−多様性判定では、入力されたテーブルの全ての準識別子から構成される情報がk−匿名性を満たし、かつ、全ての重要情報から構成される情報がl−多様性もしくはt−近似性を満たすかどうか判定し、満たす場合はテーブルを匿名テーブル出力に受け渡す。満たさない場合、満たさなかったグループをフィードバック情報としてトップダウン処理、ボトムアップ処理、再トップダウン処理に返す。以下の表1に各判定条件を示す。
【表1】
【0034】
匿名テーブル出力は、受け取ったテーブルを成形して出力する。受け取ったテーブルはテーブルそのものではなく、各属性の一般化のレベルで与えられている場合がある。このときには、元のテーブルも読み込み、各属性について与えられたレベルによる一般化を行った後出力する。
【0035】
候補テーブルについて評価ポイントが一致した場合は、優先順位が高い順から属性を見ていき、一般化のレベルが低い方の候補テーブルを採用する。
【0036】
[木構造データ]
属性が数値データではない場合、属性値の持つ意味の包含関係によって構築された木構造が、属性の一般化又は詳細化のための上位又は下位ノード探索のために必要である。例えば
図3のように、年齢について、レベル0(L0)からレベル3(L3)、といった属性値の上下関係によって構成された階層構造を事前に作成しておく必要がある。したがって、各属性に対してこのような木構造データをユーザが設定可能とする。数値データに関しては一定の値ごとに階層化できるため、木構造データは必ずしも必要ではない。なお、木構造データの構成に関して既存のソフトウェアが使用できる場合は、使用してもよい。また、木構造データは各レベルのノード数を情報として含む。
【0037】
具体的には、以下のような解決手段を提供する。
(1) 複数の属性から成るレコードであって前記属性のうち組み合わせると個人を特定することが可能な準識別子を含む複数の前記レコードから構成されるテーブルについて匿名化を行うプライバシー保護装置であって、前記テーブルについて、前記準識別子ごとに、その準識別子の属性値の一般化を行うための限度を表わす上限を設定する上限設定手段と、前記準識別子について設定された前記上限まで一般化を行い、全ての前記準識別子の属性値が一致するレコードを集めたグループについて、そのグループに含まれるレコード数が所定のレコード数未満である特定のグループを抽出し、抽出した前記特定のグループに含まれるレコードを、一般化を行う前の元の前記テーブルから削除する事前処理を行う事前処理手段と、前記事前処理手段によって前記事前処理がされた後の前記テーブルについて、匿名化を行う匿名化処理手段と、を備えるプライバシー保護装置。
【0038】
(1)の構成によれば、(1)に係るプライバシー保護装置は、テーブルについて、準識別子ごとに、その準識別子の属性値の一般化を行うための限度を表わす上限を設定し、準識別子について設定された上限まで一般化を行い、全ての準識別子の属性値が一致するレコードを集めたグループについて、そのグループに含まれるレコード数が所定のレコード数未満である特定のグループを抽出し、抽出した特定のグループに含まれるレコードを、一般化を行う前の元のテーブルから削除する事前処理を行い、事前処理がされた後のテーブルについて、匿名化を行う。
【0039】
すなわち、(1)に係るプライバシー保護装置は、グループに含まれるレコード数が所定のレコード数未満である特定のグループを抽出し、個人を特定する可能性が高いユニークな属性値を有するグループに含まれるレコードを元のテーブルから削除する。
したがって、(1)に係るプライバシー保護装置は、データ利用者が求める情報を欠落させることなく、かつ、情報のプライバシーを保護することができる。特に、事前処理により、個人を特定する可能性が高いユニークな属性値を有する一部のデータを削除することで、プライバシーを保護するために他のデータが必要以上に一般化されることを防止し、データ利用者が求める情報を欠落させないようにすることができる。
【0040】
(2) 前記事前処理手段は、前記準識別子ごとに前記上限まで一般化を行う各段階において全ての前記グループが所定のレコード数以上のレコードを含むと判断した場合に処理を終了する、(1)に記載のプライバシー保護装置。
【0041】
したがって、(2)に係るプライバシー保護装置は、より最適なテーブルを得るための事前処理を高速に終了させることができる。
【0042】
(3) 匿名化が行われた後の前記テーブルを利用する利用者の要求条件に基づいて、前記属性を、匿名化のために削除する識別子と、前記準識別子と、匿名化のための加工をしない重要情報とのいずれかに設定する属性設定手段と、前記属性設定手段によって設定された前記属性に基づいて前記事前処理手段によって事前処理された前記テーブルについて、前記準識別子ごとの属性値の一般化を行い、前記準識別子ごとにおいて所定の数値の匿名性を満たす前記テーブルを作成する前処理手段と、一般化のルールを階層構造として表わす一般化階層構造に基づいて、トップダウン処理による詳細化を行って前記テーブルを加工するトップダウン処理手段と、前記一般化階層構造に基づいて、ボトムアップ処理による一般化を行って前記テーブルを加工するボトムアップ処理手段と、前記テーブルを評価するための評価ポイントを評価関数により算出する評価ポイント算出手段と、全ての前記準識別子を組み合わせてk−匿名性を満たしているか否かと、前記重要情報においてl−多様性を満たしているか否かとについて判定する匿名化判定手段と、をさらに備え、前記匿名化処理手段は、前記前処理手段によって作成された前記テーブルについて、前記トップダウン処理手段による処理と前記ボトムアップ処理手段による処理とを、繰り返し、前記匿名化判定手段によってk−匿名性及びl−多様性を満たしていると判定された前記テーブルのうち、前記評価ポイント算出手段によって算出された前記評価ポイントが最大の前記テーブルを生成する、(1)又は(2)に記載のプライバシー保護装置。
【0043】
したがって、(3)に係るプライバシー保護装置は、k−匿名性とl−多様性の両方を満たし、可能な限り最適なテーブルを高速に生成し、データ利用者が求める情報を欠落させることなく、かつ、情報のプライバシーを保護することができる。
【0044】
(4) 前記準識別子に設定された属性ごとに、前記準識別子同士の相対的な重要性を表わす重要度を設定する重要度設定手段をさらに備え、前記評価関数は、設定された前記重要度を用いた数式1又は数式2で表わされ、いずれかが選択される、(3)に記載のプライバシー保護装置。
【数4】
【数5】
【0045】
したがって、(4)に係るプライバシー保護装置は、データ利用者が求める情報によって評価関数を選択することにより、データ利用者が求める情報を欠落させることが、さらにないようにすることができる。
【0046】
(5) 前記評価関数の前記重要度としてエントロピーを用いる、(4)に記載のプライバシー保護装置。
【0047】
したがって、(5)に係るプライバシー保護装置は、データ利用者が求める情報に適した重要度を用いた評価関数により、データ利用者が求める情報を欠落させることが、さらにないようにすることができる。
【0048】
(6) 前記準識別子の属性値の組み合わせに基づいてクラスタを形成し、形成した前記クラスタごとに、k−匿名性及びl−多様性を満たすように前記準識別子の一般化を行って、匿名化を行う部分匿名化処理手段をさらに備え、前記匿名化処理手段は、生成した前記テーブルを、前記部分匿名化処理手段によってさらに匿名化を行う、(1)から(5)のいずれかに記載のプライバシー保護装置。
【0049】
したがって、(6)に係るプライバシー保護装置は、データ利用者が求める情報を部分匿名化により欠落させることなく、かつ、情報のプライバシーを保護することができる。
【0050】
(7) (1)に記載にプライバシー保護装置が実行する方法であって、前記上限設定手段が、前記テーブルについて、前記準識別子ごとに、その準識別子の属性値の一般化を行うための限度を表わす上限を設定する上限設定ステップと、前記事前処理手段が、前記準識別子について設定された前記上限まで一般化を行い、全ての前記準識別子の属性値が一致するレコードを集めたグループについて、そのグループに含まれるレコード数が所定のレコード数未満である特定のグループを抽出し、抽出した前記特定のグループに含まれるレコードを、一般化を行う前の元の前記テーブルから削除する事前処理を行う事前処理ステップと、前記匿名化処理手段が、前記事前処理ステップによって前記事前処理がされた後の前記テーブルについて、匿名化を行う匿名化処理ステップと、を備える方法。
【0051】
したがって、(7)に係る方法は、(1)と同様に、データ利用者が求める情報を欠落させることなく、かつ、情報のプライバシーを保護することができる。
【0052】
(8) コンピュータに、(7)に記載の方法の各ステップを実行させるためのプログラム。
【0053】
したがって、(8)に係るプログラムは、コンピュータに、データ利用者が求める情報を欠落させることなく、かつ、情報のプライバシーを保護することができるようにさせることができる。