【文献】
竹之内隆夫他,部分データセットとの突合に対する耐性を有するレセプト匿名化方式,医療情報学 ,日本,一般社団法人日本医療情報学会 株式会社篠原出版新社,2013年 9月30日,第33巻,第3号,p.127-p.138
(58)【調査した分野】(Int.Cl.,DB名)
メモリに記憶した複数の属性の属性値を含む複数の個人データに対し、前記属性毎に算出された分割度合に基づいて分割する際に着目する属性を決定し、分割基準値を更に決定する決定処理と、前記分割基準値に基づいて前記複数の個人データを2つのグループに分割する分割処理と、前記各グループに対して少なくとも前記決定処理及び前記分割処理を再帰的に行う処理とを実行した後、グループ毎に、各グループ内の個人データが同一になるように匿名化する匿名化装置であって、
前記決定処理を行う前に、前記属性毎に異なる属性値の種類数を算出する種類数算出手段と、
前記算出した種類数に更に基づいて前記着目する属性を決定する決定手段と、
前記分割処理を行う前に、前記算出した種類数に基づき、前記複数の個人データをソートするソート手段と、
を備えたことを特徴とする匿名化装置。
前記決定手段は、前記算出した分割度合が最も大きい属性が複数存在する場合、当該複数の属性のうち前記算出した種類数が最も少ない属性を前記着目する属性として決定し、前記算出した分割度合が最も大きい属性が複数存在しない場合、前記分割度合が最も大きい属性を前記着目する属性として決定する
ことを特徴とする請求項1に記載の匿名化装置。
メモリに記憶した複数の属性の属性値を含む複数の個人データに対し、前記属性毎に算出された分割度合に基づいて分割する際に着目する属性を決定し、前記着目する属性の属性値に対する分割基準値を更に決定する決定処理と、前記分割基準値に基づいて前記複数の個人データを2つのグループに分割する分割処理と、前記各グループに対して前記決定処理及び前記分割処理を再帰的に行う処理とを実行した後、グループ毎に、各グループ内の個人データが同一になるように匿名化する匿名化装置に用いられるプログラムであって、
前記匿名化装置を、
前記決定処理を行う前に、前記属性毎に異なる属性値の種類数を算出する種類数算出手段、
前記算出した種類数に更に基づいて前記着目する属性を決定する決定手段、
前記分割処理を行う前に、前記算出した種類数に基づき、前記複数の個人データをソートするソート手段、
として機能させるためのプログラム。
【発明を実施するための形態】
【0019】
以下、一実施形態について図面を用いて説明するが、その前に、一実施形態に一般的に用いられるk―匿名化手法及びその評価手法について述べる。また、一実施形態に用いられる匿名化装置は、ハードウェア構成、又はハードウェア資源とソフトウェアとの組合せ構成の何れでも実施可能となっている。組合せ構成のソフトウェアとしては、予めネットワーク又は記憶媒体から各コンピュータにインストールされ、匿名化装置の機能を当該各コンピュータに実現させるためのプログラムが用いられる。なお、一実施形態の匿名化装置は、スタンドアロンのユーザ端末として実施してもよく、クライアントサーバシステムにおけるサーバ装置として実施してもよい。また、一実施形態の匿名化装置は、プライベートクラウド又はパブリッククラウド等のクラウドコンピューティングシステムにおいて、低負荷時に選択される複数台の処理実行装置の各々として実施してもよい。
【0020】
<k―匿名化手法>
個人データを匿名化する手法の1つとして、少なくともk人の個人データが同一となるように匿名化し、当該匿名化された個人データからは個人が特定されないようにする、k―匿名化手法が知られている。この種の手法としては、例えば、第1の文献([Mondrian])の手法がある。ここで、第1の文献([Mondrian])に関する情報は、次の通りである。
【0021】
[Mondrian] K.LeFevre, DJ.DeWitt, R. Ramakrishnan, “Mondrian Multidimensional K-Anonymity”, Proceedings of the 22
nd International Conference on Data Engineering, IEEE Computer Society, 2006.
本手法は、メモリに記憶した複数の属性の属性値を含む複数レコードの個人データに対し、以下の(i) ― (iii)の処理を実行した後、グループ毎に、各グループ内の個人データが同一になるように匿名化する手法である。以下、この手法をモンドリアン(Mondrian)方式とも呼ぶ。
【0022】
(i) 分割する際に着目する属性と、分割基準値とを決定する決定処理。
【0023】
(ii) 当該決定した分割基準値に基づいて複数レコードの個人データを2つのグループに分割する分割処理。
【0024】
(iii) 当該分割した各グループに対して決定処理及び分割処理を再帰的に行う処理。
【0025】
本実施形態では、このモンドリアン方式を用いて、複数レコードの個人データをk―匿名化する。
【0026】
なお、複数の属性の属性値を含む個人データの単位は「レコード」であるが、以下の説明では、「複数レコードの個人データ」、「個人データのレコード数」は、それぞれ「複数の個人データ」、「個人データの個数」と読み替えてもよい。また、複数レコードからなる個人データの組の単位を、「グループ」と言う。すなわち、「複数レコードからなる個人データの組」を「個人データのグループ」、又は単に「グループ」と読み替えてもよい。
【0027】
次に、モンドリアン方式によるk―匿名化のアルゴリズムについて説明する。
【0028】
モンドリアン方式の基本的なモデルは、以下の分割可否判定、属性決定、分割基準値決定、分割、再帰処理制御、連結、及び匿名化の7つの関数(以下、アルゴリズムともいう)からなる。
【0029】
(分割可否判定)
分割可否判定アルゴリズムは、複数の個人データDが入力されると、当該複数の個人データDが2つの個人データのグループDR,DLに分割できるか否かの判定結果を再帰処理制御アルゴリズムに向けて出力する。分割可否判定アルゴリズムは、入力された複数の個人データDのレコード数が、予め定められたkに対して、2k―1個より大きい場合、分割可能と判定し、2k―1個以下の場合、分割不可能と判定する。
【0030】
(属性決定)
属性決定アルゴリズムは、複数の個人データDが入力されると、当該複数の個人データDを分割する際に着目する属性Aを決定し、当該属性Aを分割基準値決定アルゴリズム及び分割アルゴリズムに向けて出力する。
【0031】
(分割基準値決定)
分割基準値決定アルゴリズムは、複数の個人データDを分割する際に着目する属性Aが入力されると、分割基準値Sを決定し、当該分割基準値Sを分割アルゴリズムに向けて出力する。
【0032】
(分割)
分割アルゴリズムは、着目する属性Aと、分割基準値Sとが入力されると、複数の個人データDを、分割基準値Sより大きいグループRHS(Right Hand Side)と、分割基準値S以下のグループLHS(Left Hand Side)とに分割する。しかる後、分割アルゴリズムは、当該分割により得られた各グループRHS,LHSをそれぞれ再帰処理制御アルゴリズムに向けて出力する。
【0033】
なお、以下の説明では、複数の個人データDが分割されてなるグループRHS及びグループLHSを、個人データDの参照符号“D”の後にそれぞれ符号“R”及び“L”を付記し、グループDR,DL、又は分割データDR,DLと称する。
【0034】
(再帰処理制御)
再帰処理制御アルゴリズムは、分割された各グループDR,DLが入力されると、当該各グループDR,DLを分割可否判定アルゴリズムに入力する。再帰処理制御アルゴリズムは、各グループDR,DLに対して得られた分割可否判定結果に基づき、分割可能と判定されたグループを属性決定アルゴリズムに向けて再帰的に出力し、分割不可能と判定されたグループを連結アルゴリズムに向けて出力する。
【0035】
(連結)
連結アルゴリズムは、複数の個人データDから分割して得られた全てのグループが分割不可能と判定され、連結アルゴリズムに向けて出力された当該全てのグループが再帰処理制御アルゴリズムから入力されると、動作する。すなわち、連結アルゴリズムは、再帰処理制御アルゴリズムから入力された全てのグループ内の個人データを、各個人データが分類されたグループと関連付けて連結し、連結データD’を匿名化アルゴリズムに向けて出力する。
【0036】
(匿名化)
匿名化アルゴリズムは、連結データD’が入力されると、同じグループに関連付けられた個人データ内の各属性の属性値が同一の内容となるように、連結データD’を匿名化し、匿名化データD”を出力する。
【0037】
以上により、モンドリアン方式によるk―匿名化処理が終了する。
【0038】
このようなモンドリアン方式によって、k=2についてk―匿名化処理を実施した場合、
図25に示す如き一般的な複数の個人データDは、
図26に示す如き匿名化データD”にk―匿名化される。
【0039】
<情報損失量評価手法>
次に、k―匿名化したデータの情報損失量を評価する手法について述べる。
【0040】
k―匿名化したデータに対して情報損失量を評価する手法として、試験データに対してk―匿名化を実施し、k―匿名化前後における情報量を比較する方式が知られている。この種の方式としては、例えば、第2の文献([Loss Metric])に記載されている方式がある。本方式は、ロスメトリック(Loss Metric)方式とも呼ぶ。本実施形態では、このロスメトリック方式を用いて、複数の個人データDに対する匿名化データD”の情報損失量を評価する。
【0041】
また、ロスメトリック方式によりk―匿名化したデータを評価する際に使用する試験データとして、例えば、カリフォルニア大学アーバイン校が機械学習用に公開しているデータベース([UCI 機械学習リポジトリ(Machine Learning Repository)])のデータがある。なお、このデータベース([UCI 機械学習リポジトリ])は、k―匿名化の評価を行う際に事実上の標準試験データとして用いられている。ここで、第2の文献([Loss Metric])及びデータベース([UCI 機械学習リポジトリ])に関する情報は、次の通りである。
【0042】
[Loss Metric]M. Ercan Nergiz, C. Clifton, “Thoughts on k-anonymization”, Data & Knowledge Engineering, Vol. 63, pp.622-645, 2007.
[UCI 機械学習リポジトリ(アダルト)] Adult Data Set, https://archive.ics.uci.edu/ml/datasets/Adult
[UCI 機械学習リポジトリ(センサス−インカム(KDD))] Census-Income (KDD) Data Set, https://archive.ics.uci.edu/ml/datasets/Census-Income+%28KDD%29
[UCI 機械学習リポジトリ(ハーバーマンズ・サバイバル)] Haberman’s Survival Data Set, https://archive.ics.uci.edu/ml/datasets/Haberman%27s+Survival
[UCI 機械学習リポジトリ(ナーサリー)] Nursery Data Set, https://archive.ics.uci.edu/ml/datasets/Nursery
次に、ロスメトリック方式による情報損失量の算出アルゴリズムについて説明する。ロスメトリック方式による情報損失量は、以下のように定義される。
【0044】
ここで、l[i][j]は、匿名化データD”の各個人データの各属性値における情報損失量である(ただし、0≦l[i][j]≦1)。情報損失量Lは、各属性値の情報損失量l[i][j]を匿名化データD”全体で平均化した情報損失量であり(ただし、0≦L≦1)、個人データ全体の情報損失量Lともいう。
【0045】
また、匿名化データD”を表形式で表現した場合、表の各行をレコードと呼び、表の各列を属性と呼ぶ。mは、匿名化データD”を表形式で表現した場合のレコード数であり、nは、各個人データ内の属性数である。「属性数」は、「属性の個数」又は「属性の種類数」と呼んでもよい。
【0046】
RT[i][j]は、当該表形式で表現された匿名化データD”のj番目のレコードにおけるi番目の属性の属性値を示す。なお、匿名化されたデータD”は、k―匿名化によって少なくともk個以上の個人データが同一となるように匿名化され、同一の内容となった各個人データは、それぞれ同じグループに関連付けられている。
【0047】
f(RT[i][j])は、RT[i][j]が入力されると自然数N1を返す関数である。ここで、自然数N1は、RT[i][j]が関連付けられたグループにおける、属性iの匿名化前の属性値の範囲を示す。属性値の範囲とは、属性値が、例えば「年齢」のような数値で表される属性の場合、当該グループ内における最大値と最小値との値の差に“1”を加算した値と定義する。また、属性値の範囲は、属性値が、例えば「住所」や「性別」のような非数値で表される属性の場合、同じ属性値を1つと数えた場合における属性値の個数と定義する。
【0048】
g(PT
i)は、PT
iが入力されると自然数N2を返す関数である。ここで、PT
iは、匿名化データD”における属性iを示す。自然数N2は、匿名化データD”の匿名化前のデータにおける、属性iに関する属性値の範囲を示す。
【0049】
以上により、ロスメトリック方式による情報損失量の算出処理が終了する。
【0050】
このようなロスメトリック方式によって情報損失量を評価した場合、
図26に示す如き一般的な匿名化データD”における、各個人データに対する各属性値の情報損失量l[i][j]及び匿名化データD”全体の情報損失量Lは、
図27に示す通りとなる。
【0051】
このような情報損失量Lは、Lの値が大きいほど、情報損失量が大きいと判断される。
【0052】
<一実施形態>
図1は、一実施形態に係る匿名化装置の構成例を示す模式図である。匿名化装置1は、メモリに記憶した複数の属性の属性値を含む複数の個人データに対し、当該属性毎に算出された分割度合に基づいて分割する際に着目する属性を決定し、分割基準値を更に決定する決定処理と、当該分割基準値に基づいて当該複数の個人データを2つのグループに分割する分割処理と、当該各グループに対して少なくとも当該決定処理及び当該分割処理を再帰的に行う処理とを実行した後、グループ毎に、各グループ内の個人データが同一になるように匿名化する。この匿名化装置1は、入力部11、種類数算出部12、ソート部13、制御部14、分割度合算出部15、属性決定部16、分割基準値決定部17、分割部18、連結部19、匿名化部20、出力部21及び記憶部22を備えている。
【0053】
入力部11は、匿名化装置1からの複数の属性の属性値を含む複数の個人データDの入力を受け付け、当該複数の個人データDを記憶部22に記憶する。また、入力部11は、入力を受け付けた複数の個人データDを種類数算出部12に送信する。
【0054】
なお、以下の説明では、「入力を受け付けた複数の個人データ」を、「元データ」と読み替えてもよい。
【0055】
ここで、元データDは、各個人に関する情報として、複数の属性の属性値を含んでいる。各属性としては、例えば、「氏名」、「性別」、「年齢」を用いている。なお、元データDは、匿名化の対象となる個人データであって、匿名化された後、速やかに所定の解析に使用されることを想定している。したがって、入力部11は、例えば、入力されたデータ内に「氏名」等の直接個人を特定可能な属性が含まれている場合、当該属性を削除する機能を備えていてもよい。また、入力部11は、不要な属性を削除した個人データを、元データDとして入力を受け付けてもよい。
【0056】
なお、元データDとしては、例えば、「年齢」、「性別」、「住所」及び「病名」という各属性の属性値を個人毎に含むレセプト情報等を使用してもよい。この場合、「病名」を匿名化せず、「年齢」、「性別」、「住所」を適宜、匿名化して所定の解析に使用することが好ましい。したがって、元データDの属性は、
図2に示す如く、匿名化対象属性と、非匿名化対象属性とに予め分類されていてもよく、当該分類した結果を示す分類情報を匿名化対象情報100aとして記憶部22に予め記憶してもよい。
図2に示す例では、属性「年齢」、「性別」及び「住所」が匿名化対象属性に分類されており、属性「病名」が非匿名化対象属性に分類されている。
【0057】
また、各属性の属性値は、
図3及び
図4に示す如く、属性値によって小項目、中項目といった階層構造に分類されていてもよい。また、当該分類した結果を示す分類情報は、属性毎にそれぞれ属性項目情報100b,100cとして予め記憶部22に記憶されていてもよい。また、属性項目情報100b,100cの如き、階層構造を持つ分類情報は、個人データを匿名化する際に、下位の項目を表す属性値をより上位の項目を表す属性値に置き換えることで、当該属性の属性値を匿名化するための情報として使用されてもよい。ここで、下位の項目を表す属性値は、より上位の項目を表す属性値に包含されている。
【0058】
種類数算出部12は、入力部11から元データDを受信し、属性i毎に異なる属性値の種類数C
iを算出する。種類数算出部12は、属性決定部16及び分割基準値決定部17がそれぞれ決定処理を行う前に、当該各種類数C
iを算出する。種類数算出部12は、元データD及び算出した各種類数C
iをソート部13に送信し、算出した各種類数C
iを更に属性決定部16に送信する。
【0059】
ここで、種類数C
iは、個人データ内の属性iにおける属性値について、同じ属性値は1つの種類として計算することで算出される、異なる属性値の種類の数である。また、「種類数」は、「バリエーション数」と呼んでもよい。バリエーション数C
iは、属性iにおける属性値のうち、互いに異なる属性値の個数としてもよい。
【0060】
なお、種類数算出部12は、ソート優先順位として、算出した種類数C
iが多い順に属性i毎の優先順位を算出してもよく、当該ソート優先順位と種類数C
iとを関連付けてソート部13に送信してもよい。また、種類数算出部12は、属性決定優先順位として、算出した種類数C
iが少ない順に属性i毎の優先順位を算出してもよく、当該属性決定優先順位と種類数C
iとを関連付けて属性決定部16に送信してもよい。ここで、ソート優先順位と、属性決定優先順位との関係は、属性i毎に算出される優先順位が逆になる関係にある。
【0061】
また、種類数算出部12は、匿名化対象情報100aを記憶部22から読出し、当該匿名化対象情報100aに基づき、匿名化対象属性毎に異なる属性値の種類数C
iを算出してもよい。この場合、非匿名化対象属性については、種類数及び優先順位は算出されない。
【0062】
ソート部13は、元データD、当該元データDにおける種類数C
iを種類数算出部12から受信する。ソート部13は、分割部18が分割処理を行う前に、当該種類数C
iに基づき、元データDをソートする。
【0063】
また、ソート部13は、種類数C
iを、当該属性毎のソート優先順位と関連付けて種類数算出部12から受信してもよく、ソート優先順位に基づき、属性毎の種類数が大きい順に元データDをソートし、ソートデータDnを生成してもよい。ここで、ソートデータDnは、n個の属性に対しそれぞれソートを実施した結果、最後のn回目のソートにより得られたデータである。ソート部13は、ソートデータDnを制御部14に送信する。
【0064】
なお、ソート部13は、元データDを、例えば昇順又は降順等、任意のソート手法でソート可能である。なお、ソート部13は、「性別」や「住所」のように、属性値が非数値で表される属性に対しては、
図5及び
図6に示すように、属性毎の各属性値に対応数値を関連付けた対応数値情報100d,100eに基づき、ソートを実施してもよい。この場合、対応数値情報100d,100eは、予め記憶部22に記憶されていてもよく、ソート部13は、当該対応数値情報100d,100eを適宜読出し、ソートを実施してもよい。また、「対応数値」の値としては、例えば「0」から昇順の値を各属性値に関連付ければよい。
【0065】
制御部14は、分割度合算出部15が行う算出処理と、属性決定部16及び分割基準値決定部17がそれぞれ行う決定処理と、分割部18が行うデータ分割処理とを再帰的に行う処理をするための制御機能を有する。制御部14は、ソートデータDnをソート部13から受信し、又はグループに分割された複数の個人データ(以下、「分割データ」と言う。)DR,DLを分割部18から受信し、分割可能か否かを判定する。制御部14は、元データD又は分割データDR,DLが分割可能と判定された場合、再帰的処理を行うために当該元データD又は分割データDR,DLを分割度合算出部15に送信する。制御部14は、元データD又は分割データDR,DLが分割不可能と判定された場合、当該元データD又は分割データDR,DLに対する再帰的処理を終了し、連結部19に送信する。
【0066】
なお、制御部14は、受信した複数の個人データDのレコード数が2k−1よりも大きい場合、上記再帰的処理を実行してもよい。ここで、kは、任意の自然数であり、設定されるkの値は、匿名化されることにより匿名化対象属性の属性値が同一の内容となる個人データの最小レコード数に対応する。例えば、kに“2”が設定された場合、制御部14は、匿名化によって少なくとも2レコード以上の個人データが同一の内容となるように再帰的処理を制御する。
【0067】
また、制御部14は、再帰的処理により、分割データDRを更にグループに分割して得られる分割データDRR,DRL、及び分割データDLを更にグループに分割して得られる分割データDLR,DLL等も受信してもよい。なお、当該分割データDRR,DRL,DLR,DLLに関する処理は、元データD、及び分割データDR,DLに関する処理と同様であるため、説明を省略している。また、以下の各部についても同様である。
【0068】
分割度合算出部15は、分割可能と判定された元データD又は分割データDR,DLを制御部14から受信し、属性毎の分割度合P
iを算出する。分割度合算出部15は、元データD又は分割データDR,DL、及び算出した分割度合P
iを属性決定部16に送信する。
【0069】
ここで、分割度合P
iとは、元データDにおける属性iの属性値の範囲に対する、受信した複数の個人データ(分割データDR,DL)における属性iの属性値の範囲の割合である。
【0070】
ここで、属性値の範囲とは、複数の個人データ内の各属性における属性値の存在範囲であり、属性値の性質によって計算方法が異なっていてもよい。例えば、属性が「年齢」等のように、属性値が数値で表される属性の場合、属性値の範囲は、その属性における属性値の最大値と最小値との差に“1”を足した値として算出されてもよい。また、例えば、属性が「性別」や「住所」等のように、属性値がカテゴリのように非数値で表される属性の場合、属性値の範囲は、属性値の種類数C
iとして算出されてもよい。
【0071】
なお、属性値が非数値で表される属性の場合であっても、分割度合算出部15は、当該属性値が非数値で表される属性の属性値に対し、対応する数値を付与することで、属性値が数値で表される属性の場合と同様の手法で属性値の範囲を算出してもよい。すなわち、属性値が非数値で表される属性の場合、当該属性の属性値毎に「対応数値」の値を「0」から昇順に付与することで、当該属性における対応数値の最大値と最小値との差に「1」を足した値として、当該属性における属性値の範囲を算出可能である。
【0072】
分割度合算出部15は、元データDに対して属性毎の属性値の範囲を算出した場合、当該元データDの属性値の範囲を記憶部22に記憶する。分割度合算出部15は、記憶部22から元データDの属性値の範囲を読出し、当該元データDの属性値の範囲に対し、算出した属性値の範囲の割合を各属性に対して計算し、分割度合P
iを算出する。
【0073】
属性決定部16は、種類数C
iを種類数算出部12から受信し、元データD又は分割データDR,DL及び分割度合P
iを分割度合算出部15から受信する。属性決定部16は、元データD又は分割データDR,DL及び分割度合P
iと、更に種類数C
iとに基づき、分割する際に着目する属性Aを決定する。また、属性決定部16は、種類数C
iと、当該属性毎の属性決定優先順位とを関連付けたデータを種類数算出部12から受信してもよく、当該属性決定優先順位に更に基づき、分割する際に着目する属性Aを決定してもよい。
【0074】
具体的には、属性決定部16は、分割度合が最も大きい属性が複数存在する場合、当該複数の属性のうち種類数が最も少ない属性、即ち属性決定優先順位が最も高い属性を着目する属性Aとして決定する。また、属性決定部16は、分割度合が最も大きい属性が複数存在しない場合、当該分割度合が最も大きい属性を着目する属性Aとして決定する。属性決定部16は、分割する際に着目する属性Aと、元データD又は分割データDR,DLとを分割基準値決定部17に送信する。
【0075】
なお、属性決定部16は、分割度合が最も大きい属性が複数存在し、当該複数の分割度合が最も大きい属性について、種類数が最も少ない属性が更に複数存在する場合は、該当する各属性のうち、任意の属性を着目する属性Aとして決定してもよい。また、該当する属性のうち、個人データ内の最左列の属性を着目する属性Aとして決定してもよい。
【0076】
分割基準値決定部17は、着目する属性Aと、元データD又は分割データDR,DLとを属性決定部16から受信し、分割基準値Sを決定する。分割基準値決定部17は、決定した分割基準値Sと、着目する属性Aと、元データD又は分割データDR,DLとを分割部18に送信する。
【0077】
ここで、分割基準値Sは、受信した個人データのレコード数の中央値である。なお、分割基準値Sは、着目する属性Aにおける属性値の最大値と最小値との中央値であってもよく、中央値以外でも、例えば、当該着目する属性Aの属性値の平均値や最頻値等、任意の決定の仕方が適用されてもよい。
【0078】
分割部18は、分割基準値Sと、着目する属性Aと、元データD又は分割データDR,DLとを分割基準値決定部17から受信する。分割部18は、着目する属性Aについて、元データD又は分割データDR,DLをソートする。分割部18は、分割基準値Sに基づいて、属性Aについてソートした元データD又は分割データDR,DLを2つのグループに分割し、分割データDR,DL、又は分割データDRR,DRL,DLR,DLLを得る。分割部18は、2つのグループに分割された各分割データを、それぞれ制御部14に送信する。
【0079】
また、分割部18は、属性Aについてソートした複数の個人データのうち、レコード数が分割基準値Sより大きい個人データであるか、分割基準値S以下の個人データであるかに基づき、元データD又は分割データDR,DLを2つのグループに分割する。なお、分割部18は、分割基準値Sが属性Aに基づいて決定された場合、当該属性Aの属性値が分割基準値Sより大きい属性値を有する個人データであるか、分割基準値S以下の属性値を有する個人データであるかに基づき、元データD又は分割データDR,DLを2つのグループに分割してもよい。
【0080】
連結部19は、分割不可能と判定された元データD又は分割データDR,DLを制御部14から受信する。
【0081】
連結部19は、元データDを受信した場合、当該元データDを匿名化部20に送信する。連結部19は、分割データDR,DLを受信した場合、元データDに係るその他の全てのグループの分割データを受信するまで、当該分割データDR,DLを記憶部22に記憶してもよい。また、連結部19は、元データDに係る全てのグループの分割データを受信した場合、当該記憶した分割データDR,DLを記憶部22から読出してもよい。連結部19は、元データDに係る全てのグループの分割データを受信した後、各分割データDR,DLを記憶部22から読出して1つのデータに連結し、連結データD’を生成する。なお、連結部19は、各個人データがどのグループに属しているかを対応付けて、連結データD’を生成する。
【0082】
匿名化部20は、元データD又は連結データD’を連結部19から受信し、当該元データD又は連結データD’を匿名化し、匿名化データD”を得る。具体的には、匿名化部20は、元データDを受信した場合、全ての個人データが同一の内容になるように匿名化する。また、匿名化部20は、連結データD’を受信した場合、連結データD’内のグループ毎に、各グループ内の個人データが同一の内容となるように匿名化する。
【0083】
また、匿名化部20は、属性項目情報100b,100cを記憶部22から読出し、各属性値が表す項目をより上位の項目に置き換えることにより、個人データの匿名化を実施してもよい。なお、例えば、匿名化部20は、「年齢」のように属性値が数値で表される属性の場合、グループ内の属性値が含まれる任意の範囲(例えば、5歳刻みや10歳刻み)に置き換えることで匿名化を実施してもよい。また、匿名化部20は、上述の方法に限らず、グループ内の属性値の平均値、最頻値等に置き換える等、任意の方法で属性値の匿名化を実施可能である。
【0084】
また、匿名化部20は、匿名化対象情報100aを記憶部22から読出し、当該匿名化対象情報100aに基づき、連結データD’内の各属性のうち、非匿名化対象属性については匿名化を実施しなくてもよい。匿名化部20は、匿名化データD”を出力部21に送信する。
【0085】
出力部21は、匿名化データD”を匿名化部20から受信し、匿名化装置1の外部に出力する。
【0086】
記憶部22は、読出し/書込み可能なメモリであり、匿名化対象情報100a、属性項目情報100b,100c、及び対応数値情報100d,100eが予め記憶されている。また、記憶部22は、入力部11に入力された元データDを記憶する。また、記憶部22は、元データDに対する各属性の分割度合を記憶してもよく、分割不可能と判定された分割データを記憶してもよい。また、記憶部22は、元データDに関する全ての個人データが分割不可能と判定された場合、記憶した各分割データを連結部19から読み出されてもよい。
【0087】
次に、以上のように構成された匿名化装置1の動作について、
図7及び
図8のフローチャートを用いて説明する。なお、以下の説明において、匿名化装置1は、
図25に示す如き元データDを入力としてk=2についてk―匿名化し、匿名化データD”を出力するものとする。また、記憶部22は、
図2に示す匿名化対象情報100a、
図3及び
図4に示す属性項目情報100b,100c、及び
図5及び
図6に示す対応数値情報100d,100eを予め記憶し、匿名化装置1の各部は、当該各情報に基づいて匿名化処理を行うものとする。また、ソート部13は、各属性値について、昇順となるようにソートするものとし、分割基準値決定部17は、分割基準値Sを、個人データのレコード数の中央値として決定するものとする。また、匿名化部20は、「年齢」の属性を匿名化する場合、一の位が0〜4又は5〜9の5歳刻みとなるように匿名化を実施し、それでも一致しない場合は、一の位が0〜9又は5〜4の10歳刻みとなるように匿名化を実施するものとする。
【0088】
始めに、入力部11は、外部から元データDを入力され(ST101)、当該入力された元データDを記憶部22に記憶すると共に、種類数算出部12に送信する。
【0089】
種類数算出部12は、受信した元データDについて、当該元データD内の属性毎に、異なる属性値の種類数C
iを算出する(ST102)。なお、種類数算出部12は、分割する際に着目する属性Aを決定する前に、属性毎の属性値の種類数C
iを算出する。
【0090】
また、種類数算出部12は、算出した種類数C
iに基づき、ソート優先順位及び属性決定優先順位を算出し、これらを関連付けてソート部13及び属性決定部16に送信する。種類数算出部12は、元データDをソート部13に更に送信する。
【0091】
具体的には、種類数算出部12は、記憶部22から匿名化対象情報100aを読出し、
図9に示すように、匿名化対象属性である「年齢」、「性別」、及び「住所」の種類数C
iとして、それぞれ“14”、“2”、及び“5”を算出する。また、種類数算出部12は、種類数C
iが多い順である「年齢」、「住所」、及び「性別」の順にソート優先順位を算出し、種類数C
iが少ない順である「性別」、「住所」、及び「年齢」の順に属性決定優先順位を算出する。なお、種類数算出部12は、非匿名化対象属性である「病名」については、種類数C
i及び各優先順位を算出しない。
【0092】
ソート部13は、受信した元データDと、種類数C
i及びソート優先順位とに基づき、元データDをソートする(ST103)。
【0093】
まず、ソート部13は、
図10に示す通り、ソート優先順位が1番の属性である「年齢」について、元データDをソートし、ソートデータD1を得る。次に、ソート部13は、
図11に示す通り、ソート優先順位が2番の属性である「住所」について、ソートデータD1をソートし、ソートデータD2を得る。最後に、ソート部13は、
図12に示す通り、ソート優先順位が3番の属性である「性別」について、ソートデータD2をソートし、ソートデータD3を得る。なお、「住所」及び「性別」のように、属性値が数値でない属性の場合、ソート部13は、記憶部22から対応数値情報100d,100eを読出し、各属性値を対応数値に読み替えて、ソートを実施してもよい。
【0094】
ソート部13は、得られたソートデータD3を制御部14に送信する。
【0095】
制御部14は、受信したソートデータD3が分割可能か否かを判定する(ST104)。制御部14は、ソートデータD3が分割可能と判定された場合(ST104;Yes)、再帰的処理を行うために当該ソートデータD3を分割度合算出部15に送信する。制御部14は、ソートデータD3が分割不可能と判定された場合(ST104;No)、当該ソートデータD3に対する再帰的処理を終了し、連結部19に送信し、ステップST109に進む。なお、ここではk=2におけるk―匿名化を想定しているため、ソートデータD3は、分割可能と判定される。
【0096】
分割度合算出部15は、受信したソートデータD3について、属性毎の分割度合P
iを算出する(ST105)。具体的には、分割度合算出部15は、
図13に示す通り、元データDにおける属性値の範囲に対する受信データにおける属性値の範囲の割合を算出する。なお、分割度合算出部15は、属性が「性別」及び「住所」の場合、対応数値情報100d,100eを記憶部22から読出し、当該対応数値情報100d,100eに基づき、属性値の範囲を算出する。なお、分割度合算出部15は、ソートデータD3が入力された場合、
図13に示す通り、元データDと受信データD3とが同じデータとなるため、分割度合P
iは、どの属性においても“1”と算出される。
【0097】
分割度合算出部15は、元データDにおける属性値の範囲を算出すると、当該属性値の範囲を記憶部22に記憶する。また、分割度合算出部15は、算出した分割度合P
iと、ソートデータD3とを属性決定部16に送信する。
【0098】
属性決定部16は、受信した分割度合P
i及びソートデータD3と、更に種類数C
iとに基づき、分割する際に着目する属性Aを決定する(ST106)。具体的には、属性決定部16は、
図8に示すステップST201−ST203に従って、着目する属性Aを決定する。
【0099】
属性決定部16は、分割度合が最大となる属性が複数あるか否かを判定する(ST201)。属性決定部16は、分割度合が最大となる属性が複数ある場合(ST201;Yes)、分割度合が最大の属性のうち、種類数が最小となる属性を着目する属性Aに決定する(ST202)。また、属性決定部16は、属性毎の分割度合が最大となる属性が複数ない場合(ST201;No)、分割度合が最大となる属性を着目する属性Aに決定する(ST203)。
【0100】
なお、ソートデータD3が入力された場合、属性決定部16は、分割度合が最大となる属性が複数存在するためステップST202に進み、当該分割度合が最大となる属性のうち種類数が最小の属性である「性別」を着目する属性Aに決定する。
【0101】
なお、例えば
図14に示す如く、分割度合が最大となる属性が複数存在しないソートデータD3が入力された場合、属性決定部16は、ステップST203に進み、当該分割度合が最大となる属性である「年齢」を着目する属性Aに決定する。
【0102】
属性決定部16は、着目する属性Aである「性別」と、ソートデータD3とを分割基準値決定部17に送信する。
【0103】
分割基準値決定部17は、着目する属性Aである「性別」を受信し、ソートデータD3の「性別」について、ソートデータD3を再度ソートし、ソートデータDfを得る。ここでは、ソートデータDfはソートデータD3と同じ結果となる。分割基準値決定部17は、ソートデータDfに対し、分割基準値Sを決定する(ST107)。具体的には、分割基準値決定部17は、ソートデータDfのレコード数の中央値“8.5”を分割基準値Sとして決定する。
【0104】
分割基準値決定部17は、分割基準値“8.5”と、ソートデータDfとを分割部18に送信する。
【0105】
分割部18は、受信した分割基準値“8.5”に基づき、ソートデータDfを2つのグループに分割する(ST108)。具体的には、分割部18は、
図15(A)に示す通り、ソートデータDfのレコード数が分割基準値“8.5”番目より大きいグループDRと、
図15(B)に示す通り、レコード数が分割基準値“8.5”番目以下のグループDLとに分割する。
【0106】
分割部18は、分割して得られた各分割データDR,DLを、それぞれ制御部14に送信する。
【0107】
制御部14は、受信した各分割データDR,DLが分割可能か否かを判定する(ST104)。以下、各分割データDR,DLに関する再帰的処理に係るステップ(ST104−ST108)は、同様の動作となるため、説明を省略する。なお、説明を省略した再帰的処理に係るステップ(ST104−ST108)の結果、ソートデータD3に対する再帰的処理は全て終了し、ステップST109に進む。
【0108】
連結部19は、
図16に示すように、各グループに関連付けられたすべての分割データを連結し、連結データD’を得る(ST109)。連結部19は、連結データD’を匿名化部20に送信する。
【0109】
匿名化部20は、受信した連結データD’をk―匿名化する(ST110)。具体的には、匿名化部20は、
図17に示すように、連結データD’のデータ内のグループ毎に、各グループ内の個人データが同一になるように匿名化する。なお、匿名化部20は、属性項目情報100b,100cを記憶部22から読出し、各属性値が表す項目をより上位の項目に置き換えることにより、個人データの匿名化を実施する。なお、匿名化部20は、匿名化対象情報100aを記憶部22から読出し、非匿名化対象属性については匿名化を実施しない。匿名化部20は、匿名化データD”を出力部21に送信する。
【0110】
出力部21は、匿名化データD”を受信し、匿名化装置1の外部に出力する(ST111)。
【0111】
これにより、匿名化装置1は、複数の個人データDをk―匿名化しつつ、情報損失量を低減させた匿名化データD”を出力することができる。ユーザは、情報損失量を低減させた匿名化データD”を分析することにより、個人のプライバシーの侵害を回避しつつ、元々の個人データを分析して得られる情報を正しく反映した分析結果を得ることができる。
【0112】
具体的には、
図25に示す元データDにおける、本実施形態を用いた場合の各個人データに対する各属性値の情報損失量l[i][j]及び個人データ全体の情報損失量Lは、
図18に示す通りとなる。
【0113】
一方、同様の元データDに対し、従来手法を用いた場合の各個人データに対する各属性値の情報損失量l[i][j]及び個人データ全体の情報損失量Lは、
図27に示す通りとなる。
図18に示す本実施形態の情報損失量L=0.085は、
図27に示す従来手法の情報損失量L=0.196に比べ、情報損失量を5割以上も低減することができている。
【0114】
また、データベース[UCI 機械学習リポジトリ]の4種類のデータに対して本実施形態を用いてk―匿名化した際の情報損失量Lを、ロスメトリック方式によって評価する。評価の結果、本実施形態は、
図19〜
図23に示す如く、各データに対してk=2,4,8,16,32のいずれの場合においても、従来のモンドリアン方式に対して情報損失量Lの値が小さくなる結果を得る。例えば、
図19〜
図23中、従来のモンドリアン方式の情報損失量Lに対する本実施形態の情報損失量Lの比率は、全て1より小さい。即ち、本実施形態では、データをk―匿名化しつつ情報損失量を低減できる結果を得ることができる。
【0115】
上述したように、本実施形態によれば、分割する際に着目する属性を決定し、分割基準値を更に決定する決定処理を行う前に、上記属性毎に異なる属性値の種類数を算出する。また、当該算出した種類数に更に基づいて当該着目する属性を決定する。また、当該基準値に基づいて複数の個人データを2つのグループに分割する分割処理を行う前に、当該算出した種類数に基づき、複数の個人データをソートする。これにより、データをk―匿名化しつつ情報損失量を低減することができる。
【0116】
補足すると、決定処理を行う前に属性毎の種類数を算出し、当該種類数に基づき、分割処理を行う前に複数の個人データをソートし、当該種類数に基づき、着目する属性を決定する。これにより、分割の際に、種類数の少ない属性の属性値が近い又は同じレコード同士を同じグループ内に残しやすくすることができる。これにより、種類数の少ない属性値が匿名化によって同一の情報となるため、情報損失量が大幅に増加することを防止することができる。
【0117】
また、当該決定処理では、分割度合が最も大きい属性が複数存在する場合、当該複数の個人データ内の属性のうち種類数が最も少ない属性を着目する属性として決定する。また、分割度合が最も大きい属性が複数存在しない場合、分割度合が最も大きい属性を着目する属性として決定する。これにより、データをk―匿名化しつつ情報損失量を低減することができる。
【0118】
補足すると、種類数が少ない属性を着目する属性として決定することにより、分割部18が分割前に行うソートによって種類数の少ない属性の属性値が近い又は同じレコード同士を同じグループに残しやすくすることができる。これにより、種類数の少ない属性が匿名化によって同一の情報となり、情報損失量が大幅に増加することを防止することができる。
【0119】
また、算出した種類数が大きい属性順に複数の個人データをソートする。これにより、データをk―匿名化しつつ情報損失量を低減することができる。
【0120】
補足すると、種類数の多い属性から順にソートすると、種類数の最も少ない属性が最後にソートされる。種類数の少ない属性は、種類数の多い属性よりも、ソートした際に、より近い又は同じ値が並ぶことが期待できる。これにより、属性値の種類数の少ない属性が匿名化によって同一の情報となり、情報損失量が大幅に増加することを防止することができる。
【0121】
また、属性は、匿名化対象属性と非匿名化対象属性とに分類され、着目する属性は、匿名化対象属性に分類された属性に対して決定される。これにより、匿名化が不要な属性を除いてk―匿名化を実施することができる。
【0122】
また、再帰的に行う処理は、複数の個人データのレコード数が2k−1よりも大きい場合に実行される。これにより、複数の個人データを分割する際に、任意の自然数kに対して、最小レコード数のグループに分割することができる。
【0123】
その他、匿名化装置の構成や機能、通信手順、処理手順と処理内容等についても、この発明の要旨を逸脱しない範囲で種々変形して実施可能である。
【0124】
例えば、種類数算出部12は、属性決定部16及び分割基準値決定部17がそれぞれ決定処理を行う前に各種類数C
iを算出すればよく、制御部14によって再帰的に処理するように制御されてもよい。
【0125】
また、ソート部13は、分割部18が分割処理を行う前に、ソートを実施すればよく、制御部14によって再帰的に処理するように制御されてもよい。
【0126】
このように、種類数算出部12及びソート部13による処理を再帰的に実行する時の動作例を
図24のフローチャートを用いて説明する。なお、当該動作例における前提条件は、
図7のフローチャートに基づく動作例の場合と同等であるとする。
【0127】
始めに、入力部11は、外部から元データDが入力されると(ST301)、当該入力された元データDを制御部14に送信する。
【0128】
制御部14は、受信した元データDが分割可能か否かを判定する(ST302)。制御部14は、元データDが分割可能と判定された場合(ST302;Yes)、再帰的処理を行うために当該元データDを分割度合算出部15に送信する。制御部14は、元データDが分割不可能と判定された場合(ST302;No)、当該元データDに対する再帰的処理を終了し、連結部19に送信し、ステップST309に進む。なお、ここではk=2におけるk―匿名化を想定しているため、元データDは、分割可能と判定される。
【0129】
分割度合算出部15は、受信した元データDについて、属性毎の分割度合P
iを算出する(ST303)。
【0130】
分割度合算出部15は、元データDにおける属性値の範囲を算出すると、当該属性値の範囲を記憶部22に記憶する。また、分割度合算出部15は、元データDを種類数算出部12に送信し、算出した分割度合P
iを属性決定部16に送信する。
【0131】
種類数算出部12は、受信した元データDについて、当該元データD内の属性毎に、異なる属性値の種類数C
iを算出する(ST304)。なお、種類数算出部12は、分割する際に着目する属性Aを決定する前に、属性毎の属性値の種類数C
iを算出する。
【0132】
また、種類数算出部12は、算出した種類数C
iに基づき、ソート優先順位及び属性決定優先順位を算出し、これらを関連付けてソート部13及び属性決定部16に送信する。種類数算出部12は、元データDをソート部13に更に送信する。
【0133】
ソート部13は、受信した元データDと、種類数C
i及びソート優先順位とに基づき、元データDをソートし、ソートデータD3を得る(ST305)。
【0134】
ソート部13は、得られたソートデータD3を属性決定部16に送信する。
【0135】
属性決定部16は、受信した分割度合P
i及びソートデータD3と、更に種類数C
iとに基づき、分割する際に着目する属性Aを決定する(ST306)。具体的には、属性決定部16は、
図8に示すステップST201−ST203に従って、着目する属性Aを決定する。ここでは、ステップST201−203については、上述の動作例と同様であるため、説明を省略する。なお、ソートデータD3が入力された場合、属性決定部16は、分割度合が最大となる属性が複数存在するためステップST202に進み、当該分割度合が最大となる属性のうち種類数が最小の属性である「性別」を着目する属性Aに決定する。
【0136】
属性決定部16は、着目する属性Aである「性別」と、ソートデータD3とを分割基準値決定部17に送信する。
【0137】
分割基準値決定部17は、着目する属性Aである「性別」を受信し、ソートデータD3の「性別」について再度ソートを実施し、ソートデータDfを得る。分割基準値決定部17は、ソートデータDfに基づき、分割基準値Sを決定する(ST307)。具体的には、分割基準値決定部17は、ソートデータDfのレコード数“16”の中央値である“8.5”を分割基準値Sとして決定する。
【0138】
分割基準値決定部17は、着目する属性「性別」について決定した分割基準値“8.5”とソートデータDfとを分割部18に送信する。
【0139】
分割部18は、受信した分割基準値“8.5”に基づき、ソートデータDfを2つのグループに分割し、分割データDR,DLを得る(ST308)。
【0140】
分割部18は、分割して得られた各分割データDR,DLを、それぞれ制御部14に送信する。
【0141】
以下、各分割データDR,DLに関する再帰的処理に係るステップ(ST302−ST308)は、上述と同様の動作となるため、説明を省略する。また、再帰的処理が終了した後のステップ(ST309−ST311)は、実施形態におけるステップ(ST109−ST111)と同様の動作となるため、説明を省略する。
【0142】
このように、この変形例では、種類数算出部12及びソート部13による処理が、制御部14によって再帰的に処理するように制御されている。
【0143】
これにより、再帰的処理毎に種類数を算出し、当該再帰的処理毎に算出した種類数に基づいてソートを実施することができ、データをk―匿名化する際に、情報損失量を低減することができる。
【0144】
なお、上記の実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク(フロッピー(登録商標)ディスク、ハードディスク等)、光ディスク(CD−ROM、DVD等)、光磁気ディスク(MO)、半導体メモリ等の記憶媒体に格納して頒布することができる。
【0145】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であってもよい。
【0146】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているOS(オペレーティングシステム)や、データベース管理ソフト、ネットワークソフト等のMW(ミドルウェア)等が上記実施形態を実現するための各処理の一部を実行してもよい。
【0147】
さらに、実施形態における記憶媒体は、コンピュータと独立した媒体に限らず、LANやインターネット等により伝送されたプログラムをダウンロードして記憶又は一時記憶した記憶媒体も含まれる。
【0148】
また、実施形態における記憶媒体は1つに限らず、複数の媒体から上記の実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であってもよい。
【0149】
なお、実施形態におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記の実施形態における各処理を実行するものであって、パソコン等の1つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であってもよい。
【0150】
また、実施形態におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【0151】
なお、本発明の実施形態を説明したが、この実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。この実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。