[匿名化装置の構成]
図1は、実施例に係る匿名化装置の構成を示すブロック図である。図1に示す匿名化装置1は、複数の個人それぞれの個人情報を含むパーソナルデータを、当該データの提供者側と利用者側とのやりとりに基づいて匿名化する。ここでいう「匿名化」とは、個人を特定できないようにすることをいい、実施例では、「一般化」と同義であるとする。なお、実施例では、パーソナルデータを匿名化して提供する主体を「提供者」といい、匿名化されたデータを利用する主体を「利用者」または「提供先」というものとする。
ここで、実施例に係る匿名化装置1の処理の一例を、図2Aおよび図2Bを参照して説明する。図2Aおよび図2Bは、実施例に係る匿名化装置の処理の一例を示す図である。
図2Aに示すように、提供者側では、匿名化装置1が、パーソナルデータ21について、属性ごとに、所定幅の区間で形成される階級ごとに度数を表すヒストグラム22´を生成する。
ここでいうパーソナルデータ21は、複数の個人それぞれの個人情報を含むデータである。パーソナルデータ21は、例えば、1人1行の複数行のデータであって、1行には複数の属性の属性値を含む2次元の表データである。但し、パーソナルデータ21は、2次元の表データの形式に限定されるものではない。ここでは、パーソナルデータ21には、複数の個人それぞれの個人情報として年齢および体重を含むデータが設定される。
ここでいうヒストグラム22´は、度数分布表であっても良い。ここでは、ヒストグラム22´は、年齢について、10歳幅の区間で形成される階級ごとに度数を表わしている。
匿名化装置1は、ヒストグラム22´に含まれる複数の区間のうち、度数が閾値k未満を示す区間を削除する(<1>)。これは、匿名性が破られないようにするため、特定の属性値が全行の中にk個以上存在するようにするためである。つまり、特定の属性値を持つ行数が全行の中にk個未満となることを防止し、特定の属性値の個人が知られる(匿名性が破られる)ことを防止するためである。閾値kは、例えば、「2」であったり、「3」であったりするが、「2」以上であれば良い。実施例では、閾値kは「2」であるとする。ここでは、年齢が80代の度数が閾値k未満であるので、80代の区間が削除される。
次に、匿名化装置1は、削除した後のヒストグラム22´の複数の区間の中で閾値kの倍以上の度数を有する区間を、それぞれ度数が閾値k以上となるように、互いに重なりのないように、複数の区間に分割する(<2>)。例えば、区間を半分の区間に分割すれば良い。ここでは、例えば、年齢が60代の区間が閾値kの倍以上の度数を有する区間であるとする。すると、匿名化装置1は、60代の区間を、それぞれ度数が閾値k以上となるように、互いに重なりのないように、度数が4人を示す60〜64の区間と度数が3人を示す65〜69の区間に分割する。なお、匿名化装置1は、区間の度数が閾値k以上になる限り、区間を半分ずつに分割する処理を繰り返せば良い。
次に、匿名化装置1は、分割後の各区間の情報および各区間の度数の情報を、提供先に出力する。例えば、匿名化装置1は、詳細化された区間を用いたヒストグラムの情報を提供先に出力する。ここでは、各区間の度数の情報は、例えば、以下のようになる。「10〜19」の度数が2、・・・、「60〜64」の度数が4、「65〜69」の度数が3、「70〜79」の度数が2である。そして、「80代」の度数は出力されない。すなわち、匿名化装置1は、匿名性を確保する観点から、詳細化が可能な区間の情報を提供先に出力する。
匿名化装置1は、他の属性である体重についても、年齢の場合と同様の処理を行う(<1>〜<3>)。
図2Bに示すように、提供先は、属性ごとに、提供者側から出力された分割後の区間を組み合わせて一般化の意向を作成する。ここでは、提供先は、年齢が高齢であり、体重が高体重である人に興味がある場合とする。提供先の意向は、年齢については、「60未満」、「60〜64」、「65〜69」、「70代」であり、体重については、「70未満」、「70台」、「80台」であるとする。体重についての「70未満」は、30台、40台、・・・、60台を組み合わせたものである。
これにより、提供先は、パーソナルデータ21について、匿名化されるデータを、有用性を維持したまま要求することができる。ここでいう「有用性」とは、匿名化されるデータを用いて提供先が分析する場合に有用であることをいう。
匿名化装置1は、提供先から一般化についての意向を含む一般化要求を受け付ける。
次に、匿名化装置1は、一般化についての意向の区間をチェックする(<4>)。すなわち、匿名化装置1は、意向のそれぞれの区間が、分割された後のいずれかの区間と一致するか、または、分割された後の区間を連結した区間と一致するかを判定する。匿名化装置1が、意向のそれぞれの区間が、分割された後のいずれかの区間と一致するか、または、分割された後の区間を連結した区間と一致する場合には、一般化を受認する。意向のそれぞれの区間が、分割された後のいずれかの区間と一致するか、または分割された後の区間を連結した区間と一致すれば、これらの区間の度数が閾値k以上となるので、匿名性が破られないからである。ここでは、匿名化装置1は、一般化についての意向のそれぞれの区間は、分割された後のいずれかの区間と一致するか、または分割された後の区間を連結した区間と一致するため、一般化を受認する。なお、匿名化装置1が、意向のそれぞれの区間が、分割された後のいずれかの区間と一致しないか、および、分割された後の区間を連結した区間と一致しない場合には、一般化を拒絶する。
次に、匿名化装置1は、意向に含まれる属性ごとに、パーソナルデータ21の属性値を、意向に含まれる該当する区間に置き換えて、パーソナルデータ21を一般化する(<5>)。符号24で示されるデータが、一般化後データである。なお、該当する区間がない属性値は、空白値や予め定められた欠損値に置換されれば良い。ここでは、例えば、パーソナルデータ21の2行目について、年齢が「62」であるので、意向に含まれる該当する区間「60−64」に置換され、体重が「82」であるので、意向に含まれる該当する区間「80台」に置換される。パーソナルデータ21の4行目について、年齢が「84」であるので、意向に含まれる該当する区間がなく、空白値に置換され、体重が「64」であるので、意向に含まれる該当する区間「70未満」に置換される。
そして、匿名化装置1は、一般化後データ24について、匿名性を評価し、匿名性が破られるリスクが低いと評価すると、提供先に提供する(<6>)。
これにより、匿名化装置1は、パーソナルデータ21を提供先の有用性を維持しつつ匿名化することが可能となる。言い換えれば、匿名化装置1は、パーソナルデータ21について、匿名性と有用性を両立した一般化を実現することができる。このような匿名化装置1の構成について、以下で説明する。
匿名化装置1は、制御部10および記憶部20を有する。
制御部10は、CPU(Central Processing Unit)などの電子回路に対応する。そして、制御部10は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部10は、度数分布表生成部11、詳細化情報生成部12、詳細化情報出力部13、一般化要求入力部14、要求検査部15、一般化部16、一般化後データ評価部17および一般化後データ出力部18を有する。第1の出力部は、詳細化が可能な区間の情報を提供先に出力する機能部である。第2の出力部は、提供先の意向に基づいて一般化を実施した結果を提供先に出力する機能部である。第1の出力部は、度数分布表生成部11、詳細化情報生成部12および詳細化情報出力部13を含む。第2の出力部は、一般化要求入力部14、要求検査部15、一般化部16、一般化後データ評価部17および一般化後データ出力部18を含む。なお、度数分布表生成部11は、第1の生成部の一例である。詳細化情報生成部12は、分割部の一例である。詳細化情報出力部13は、出力部の一例である。一般化要求入力部14は、受付部の一例である。要求検査部15は、判定部の一例である。一般化部16は、匿名化部の一例である。
記憶部20は、例えば、RAM、フラッシュメモリ(Flash Memory)などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。記憶部20は、パーソナルデータ21、度数分布表22、度数分布表(詳細化)23および一般化後データ24を含む。
パーソナルデータ21は、複数の個人それぞれの個人情報を含むデータである。パーソナルデータ21は、例えば、1人1行の複数行のデータであって、1行には複数の属性の値を含む2次元の表データである。但し、パーソナルデータ21は、2次元の表データの形式に限定されず、3次元の表データの形式であっても良い。なお、パーソナルデータ21の一例は、後述する。
度数分布表22は、パーソナルデータ21について、属性ごとに、所定の幅の区間で形成される階級ごとに度数を表わしたものである。なお、度数分布表22の一例は、後述する。
度数分布表(詳細化)23は、度数分布表22から階級を詳細化して生成される度数分布表のことをいう。階級の詳細化は、後述する詳細化情報生成部12によって行われる。なお、度数分布表(詳細化)23の一例は、後述する。
一般化後データ24は、パーソナルデータ21を一般化した後のデータである。一般化後データ24は、後述する一般化部16によって生成される。なお、一般化後データ24の一例は、後述する。
度数分布表生成部11は、パーソナルデータ21について、属性ごとに、所定幅の区間で形成される階級ごとに度数を表す度数分布表22を生成する。例えば、度数分布表生成部11は、R言語のhist関数を利用して度数分布表22を生成するが、R言語のhist関数に限定されず、その他の方法で度数分布表22を生成しても良い。なお、度数分布表生成部11は、度数分布表22の代わりに、n属性についてのn次元の度数分布表に相当するクロス集計表を生成しても良い。
ここで、実施例に係るパーソナルデータ21の一例を、図3を参照して説明する。図3は、実施例に係るパーソナルデータの一例を示す図である。図3に示すように、パーソナルデータ21は、年齢の属性、体重の属性および性別の属性を対応付けたデータである。パーソナルデータ21のこれらの属性の中で年齢の属性および体重の属性は、個人情報である。パーソナルデータ21のそれぞれの行には、個人に対応する属性ごとの属性値が設定される。一例として、1行目には、年齢が「68」である場合に、体重として「49」、性別として「女」と記憶している。
また、実施例に係る度数分布表22の一例を、図4を参照して説明する。図4は、実施例に係る度数分布表の一例を示す図である。図4に示すように、度数分布表22は、属性ごとに、所定の幅の区間と度数とを対応付けた情報である。一例として、属性が年齢である場合も、体重である場合も、区間の幅を「10」としている。属性が年齢である場合には、区間として「60〜69」、度数として「1」と記憶している。区間として「70〜79」、度数として「5」と記憶している。区間として「80〜89」、度数として「2」と記憶している。属性が体重である場合には、区間として「40〜49」、度数として「6」と記憶している。区間として「50〜59」、度数として「2」と記憶している。
また、度数分布表22の代わりのクロス集計表の一例を、図5を参照して説明する。図5は、体重と性別のクロス集計表の一例を示す図である。すなわち、図5では、図4が示す属性が体重である場合の体重と性別のクロス集計表の一例が表わされている。一例として、体重の区間が「40〜49」である場合であって性別が「女」である場合の度数として「4」、性別が「男」である場合の度数として「2」と記憶している。体重の区間が「50〜59」である場合であって性別が[女]である場合の度数として「0」、性別が「男」である場合の度数として「2」と記憶している。
図1に戻って、度数分布表生成部11は、度数分布表22に含まれる複数の区間のうち、度数が閾値k未満を示す区間を削除する。これは、匿名性が破られないようにするためである。すなわち、閾値k未満の区間に含まれる特定の個人が知られる(匿名性が破られる)ことを防止するためである。
ここで、閾値k未満を削除した度数分布表の一例を、図6を参照して説明する。図6は、k未満を削除した度数分布表の一例を示す図である。閾値kは「2」であるとする。図6に示すように、図4で示した年齢の度数分布表22について、度数がk未満である「1」を示す区間「60〜69」の行が削除されている。
図1に戻って、詳細化情報生成部12は、度数分布表生成部11によって生成された度数分布表22の複数の区間の中で閾値kの倍以上の度数を有する区間を、それぞれ度数が閾値k以上となるように、複数の区間に分割する。なお、分割される複数の区間は、互いの重なりのない区間であるとする。例えば、詳細化情報生成部12は、度数が閾値kの倍以上の区間を、半分ずつとなるような複数の区間に分割する。詳細化情報生成部12は、パーソナルデータ21を用いて、分割後の区間の度数を計算する。詳細化情報生成部12は、分割後の区間の度数が閾値k以上になる限り、区間を半分ずつに分割する処理を繰り返す。詳細化情報生成部12は、分割後の区間の度数がそれぞれ閾値k以上であれば、度数分布表22を分割後の区間に更新する。詳細化情報生成部12は、分割後の区間のどちらか一方の度数が閾値k未満であれば、度数分布表22を分割後の区間に更新しない。このようにして、詳細化情報生成部12は、度数分布表22を詳細化した度数分布表(詳細化)23を生成する。
ここで、詳細化の際に区間を半分ずつに分割するのは、提供先(利用者側)での有用性が高くなり易いからである。つまり、例えば、詳細化の際に、区間「40−49」を区間「40−42」と区間「43−49」とのデータが得られるより、半分ずつに分割された区間「40−44」と区間「45−49」とのデータが得られる方が、多くの利用者にとって有用であると考えられるからである。
ここで、実施例に係る度数分布表(詳細化)23の一例を、図7を参照して説明する。図7は、実施例に係る度数分布表(詳細化)の一例を示す図である。
図7に示すように、図6で示した年齢の度数分布表22の区間「70〜79」が、区間「70〜74」と区間「75〜79」とに分割されている。それぞれの区間の度数は、「2」、「3」であり、閾値k以上である。すなわち、詳細化情報生成部12は、区間「70〜79」の度数が「5」であり、2k以上であるため、当該区間を半分の区間とした区間「70〜74」と区間「75〜79」とに分割する。詳細化情報生成部12は、パーソナルデータ21を用いて、年齢について、分割後の区間「70〜74」の度数を「2」と計算する。分割後の区間「75〜79」の度数を「3」と計算する。詳細化情報生成部12は、分割後の区間の度数がそれぞれ閾値k以上であるので、度数分布表22を分割後の区間に更新する。そして、詳細化情報生成部12は、図7の左図の度数分布表(詳細化)23を生成する。
また、図7に示すように、図6で示した体重の度数分布表22の区間「40〜49」が、区間「40〜44」と区間「45〜49」とに分割されている。それぞれの区間の度数は、「2」、「4」であり、閾値k以上である。すなわち、詳細化情報生成部12は、区間「40〜49」の度数が「6」であり、2k以上であるため、当該区間を半分の区間とした区間「40〜44」と区間「45〜49」とに分割する。詳細化情報生成部12は、パーソナルデータ21を用いて、体重について、分割後の区間「40〜44」の度数を「2」と計算する。分割後の区間「45〜49」の度数を「4」と計算する。詳細化情報生成部12は、分割後の区間の度数がそれぞれ閾値k以上であるので、度数分布表22を分割後の区間に更新する。さらに、詳細化情報生成部12は、区間「45〜49」の度数が「4」であり、2k以上であるため、該当区間を半分の区間とした区間「45〜47」(45以上47.5未満を整数で表現)と区間「48〜49」(47.5以上50未満を整数で表現)に分割する。詳細化情報生成部12は、パーソナルデータ21を用いて、体重について、分割後の区間「45〜47」の度数を「1」と計算する。分割後の区間「48〜49」の度数を「3」と計算する。詳細化情報生成部12は、分割後の区間の度数がどちらも閾値k以上でないので、度数分布表22を分割後の区間に更新しない。そして、詳細化情報生成部12は、図7の右図の度数分布表(詳細化)23を生成する。
なお、n次元のクロス集計表に対しては、1つの属性に対して詳細化を行っても良いし、複数の属性に対して詳細化を行っても良い。1つの属性に対して詳細化する場合には、詳細化情報生成部12は、上記と同様の処理をすれば良い。複数の属性に対して詳細化する場合には、詳細化情報生成部12は、各区間の度数がk以上になる限り、各区間をn個の各属性について半分ずつ2n分割する処理を繰り返せば良い。
ここで、図3のパーソナルデータ21とは別のパーソナルデータの2次元のクロス集計表を詳細化したクロス集計表を、図8に示す。図8は、詳細化した2次元クロス集計表の一例を示す図である。図8左図は、図3のパーソナルデータ21とは別のパーソナルデータから生成された2次元クロス集計表である。年齢「70〜79」および体重「40〜49」の区間の度数は、閾値k以上であるため、詳細化情報生成部12は、区間の分割を行う。この結果、詳細化情報生成部12は、分割結果の各区分の度数が全て閾値k以上となったので、図8右図のクロス集計表(詳細化)を生成する。
図1に戻って、詳細化情報出力部13は、詳細化された度数分布表の情報を提供先に出力する。例えば、詳細化情報出力部13は、詳細化情報生成部12によって生成された属性ごとの度数分布表の各区間の情報および各区間の度数を詳細化情報として提供先に出力する。一例として、詳細化情報出力部13は、詳細化された度数分布表を示す度数分布表(詳細化)23をヒストグラムに変換した情報を出力しても良い。別の例として、詳細化情報出力部13は、度数分布表22から変換されたヒストグラムをベースにしたグラフの情報を出力しても良い。例えば、詳細化情報出力部13は、分割される前の各階級の区間および各階級の度数を有するヒストグラムに、詳細化(分割)された後の各階級の区間および各階級の度数を重ねて表すために、補助線を追記する。そして、詳細化情報出力部13は、補助線を追記したヒストグラムの情報を出力する。これにより、詳細化情報出力部13が出力する各区間では閾値k以上の度数があり、この区間の単位での一般化に制限することで、後述する提供先からの一般化要求のどの区間による意向でも匿名性が担保される。言い換えれば、詳細化情報出力部13は、各区間には必ずk個以上のデータが含まれているので、この区間の単位での一般化に制限すれば、各属性単位でk個未満を識別することができず、一定の匿名性を確保できる。
ここで、詳細化情報付きのヒストグラムの情報を、図9を参照して説明する。図9は、実施例に係る詳細化情報付きヒストグラム情報の一例を示す図である。図9に示すように、属性が年齢である場合の詳細化情報付きヒストグラムが表わされている。かかるヒストグラムには、詳細化(分割)される前の10歳階級のヒストグラムをベースにして、詳細化(分割)された後の区間と度数を表す補助線が追記されている。これにより、かかる詳細化情報付きのヒストグラムは、ベースのヒストグラムによる区間幅が揃っているため、提供先(利用者側)での有用性が高くなり易い。また、詳細化情報付きのヒストグラムの情報が出力されることにより、提供先(利用者側)が、詳細化情報を把握し易くなる。なお、詳細化情報付きヒストグラムは、さらに、度数の多少を色などで表現されても良い。
図1に戻って、一般化要求入力部14は、提供先から一般化要求を入力として受け取る。一般化要求とは、各属性についてそれぞれどのように一般化するかの情報である。例えば、一般化要求入力部14は、提供先から提供を所望する属性およびどのように一般化するかを示す区間を対応付けた情報を含む一般化要求を受け付ける。
ここで、一般化要求の一例を、図10を参照して説明する。図10は、実施例に係る一般化要求の一例を示す図である。図10に示すように、一般化要求は、提供を所望する属性および区間を対応付けた情報を含む。区間は、一般化対象の属性をどのように一般化するかを示す情報である。一例として、属性が「年齢」である場合に、70〜79の各年齢を区間「70〜79」に一般化する。80〜89の各年齢を区間「80〜89」に一般化する。また、属性が「体重」である場合に、40〜44の各年齢を区間「40〜44」に一般化する。45〜49の各年齢を区間「45〜49」に一般化する。50〜59の各年齢を区間「50〜59」に一般化する。
図1に戻って、要求検査部15は、一般化要求を検査し、一般化処理を進めるか否かを決定する。例えば、要求検査部15は、一般化要求に含まれる属性に対する区間が、詳細化された(分割後の)いずれかの階級の区間に一致するか、または詳細化された(分割後の)階級の区間を連結した区間に一致するか否かを判定する。要求検査部15は、一般化要求に含まれる属性に対する区間が、詳細化された(分割後の)いずれかの階級の区間に一致する場合、または詳細化された(分割後の)階級の区間を連結した区間に一致する場合には、一般化処理を進めると決定する。また、要求検査部15は、一般化要求に含まれる属性に対する区間が詳細化された(分割後の)いずれかの階級の区間に一致しない、且つ詳細化された(分割後の)階級の区間を連結した区間に一致しない場合には、一般化処理を進めないと決定する。
一例として、要求検査部15は、図10で示す一般化要求を検査するとする。1行目について、属性「年齢」に対する区間「70〜79」は、詳細化された度数分布表23(図7参照)の年齢の区間「70〜74」と「75〜79」とを連結した区間に一致する。2行目について、属性「年齢」に対する区間「80〜89」は、詳細化された度数分布表23(図7参照)の年齢の区間「80〜89」に一致する。3行目について、属性「体重」に対する区間「40〜44」は、詳細化された度数分布表23(図7参照)の体重の区間「40〜44」に一致する。4行目について、属性「体重」に対する区間「45〜49」は、詳細化された度数分布表23(図7参照)の体重の区間「45〜49」に一致する。5行目について、属性「体重」に対する区間「50〜59」は、詳細化された度数分布表23(図7参照)の体重の区間「50〜59」に一致する。したがって、要求検査部15は、図10で示す一般化要求に対して一般化処理を進めると決定する。
なお、検査がNGとなる一般化要求の一例を、図11を参照して説明する。図11は、検査NGとなる一般化要求の一例を示す図である。図11に示す一般化要求では、2行目について、属性「体重」に対する区間「40〜59」は、詳細化された度数分布表23(図7参照)の体重の区間「40〜44」と「45〜49」と「50〜59」とを連結した区間に一致する。ところが、1行目については、属性「年齢」に対する区間「70〜84」は、詳細化された度数分布表23(図7参照)のいずれかの年齢の区間に一致しない、且つ年齢の区間を連結した区間に一致しない。したがって、要求検査部15は、図11で示す一般化要求に対して一般化処理を進めないと決定する。
図1に戻って、一般化部16は、一般化要求に対して一般化処理を進めると決定した場合には、パーソナルデータ21を一般化要求に基づいて一般化処理を行う。例えば、一般化部16は、一般化要求に対して一般化処理を進めると決定した場合には、一般化要求で指定される属性に対応する、パーソナルデータ21の属性の属性値を、一般化要求で指定される区間に置き換えて、パーソナルデータ21を一般化する。一般化部16は、パーソナルデータ21を一般化した結果として一般化後データ24を生成する。なお、一般化部16は、パーソナルデータ21の属性値に対応する、一般化要求で指定される区間がない場合には、当該属性値を空白値や予め定められた欠損値に置き換えれば良い。
ここで、一般化後データ24の一例を、図12を参照して説明する。図12は、実施例に係る一般化後データの一例を示す図である。図12が示す一般化後データ24は、図3で示したパーソナルデータ21が図10で示した一般化要求に基づき一般化されたものである。
例えば、一般化部16は、パーソナルデータ21と一般化要求とを受け付けると、パーソナルデータ21の1行目から順番に、一般化要求で指定される属性に対応する、パーソナルデータ21の属性の属性値を、一般化要求で指定される区間に置き換える。一例として、パーソナルデータ21の1行目の年齢の属性値「68」は一般化要求に該当する区間がないので、属性値「68」は、空白値に置き換えられる。パーソナルデータ21の1行目の体重の属性値「49」は一般化要求に該当する区間「45〜49」に置き換えられる。パーソナルデータ21の2行目の年齢の属性値「71」は一般化要求に該当する区間「70〜79」に置き換えられる。パーソナルデータ21の2行目の体重の属性値「44」は一般化要求に該当する区間「40〜44」に置き換えられる。このようにして、一般化部16は、一般化後データ24を生成する。なお、図3で示したパーソナルデータ21の性別の属性は、一般化要求に含まれていないので、図12の一般化後データ24では削除されているが、そのまま残しても良い。
図1に戻って、一般化後データ評価部17は、一般化後データ24について、さらに、匿名性を評価する。例えば、一般化後データ評価部17は、一般化後データ24について、k−匿名性を満たしているか否かを評価する。一般化後データ評価部17は、k−匿名性を満たしていないと評価した場合には、一般化後データ24を加工する。ここでいう「k−匿名性」とは、同じ属性(属性の属性値)を持つ人が少なくともk人以上存在するように情報を匿名加工することをいう。一例として、一般化後データ評価部17は、一般化後データ24の同じ属性値の行がk個未満しかない行を削除する。そして、一般化後データ評価部17は、削除した後、行を並び替える。これにより、一般化後データ評価部17は、各行には必ずk個以上のデータが含まれているので、各行単位でk個未満を識別することができず、さらなる匿名性の向上を実現できる。なお、一般化後データ評価部17は、一般化後データ24の同じ属性値の行がk個未満しかない行を削除すると説明したが、これに限定されず、他の匿名性を担保できる方法に加工しても良い。
ここで、加工後の一般化後データ24の一例を、図13を参照して説明する。図13は、加工後の一般化後データの一例を示す図である。図13が示す加工後の一般化後データ24は、図12で示した一般化後データ24を評価し、加工したものである。なお、kは、2であるとする。
例えば、一般化後データ評価部17は、一般化後データ24のm(1〜n)行目から順番に、匿名性を評価するために、同じ属性値の行が閾値k(ここでは「2」)個以上存在するか否かを判定する。一般化後データ評価部17は、同じ属性値の行が2個以上存在しない場合には、m行目の行を削除する。ここでは、1行目の年齢空白、体重「45〜49」の行が、2個未満しか存在しない。3行目の年齢「70〜79」、体重「45〜49」の行が、2個未満しか存在しない。したがって、一般化後データ評価部17は、一般化後データ24の1行目と3行目とを削除し、行をソートして、加工後の一般化後データ24を生成する。
図1に戻って、一般化後データ出力部18は、加工後の一般化後データ24を提供先に出力する。
[第1の出力部のフローチャート]
図14は、実施例に係る第1の出力部の処理のフローチャートの一例を示す図である。
図14に示すように、度数分布表生成部11は、パーソナルデータ21(以下、Dで表わす)、閾値kを入力として受け付けると(ステップS11)、パーソナルデータDに未処理の属性があるか否かを判定する(ステップS12)。なお、未処理の属性があれば属性aとする。
パーソナルデータDに未処理の属性aがあると判定した場合には(ステップS12;Yes)、度数分布表生成部11は、パーソナルデータDのうち属性aの部分のデータに対し、通常のヒストグラム情報(以下、Haで表わす)を生成する(ステップS13)。ここでいうヒストグラム情報は、度数分布表22に対応する。度数分布表生成部11は、ヒストグラム情報Haから度数がk未満の区間(ビン)を削除する(ステップS14)。そして、度数分布表生成部11は、次の属性を判定すべく、ステップS12に移行する。
ステップS12において、度数分布表生成部11は、パーソナルデータDに未処理の属性がないと判定した場合には(ステップS12;No)、詳細化情報生成部12は、全ヒストグラム情報Haを未処理とみなす(ステップS15)。詳細化情報生成部12は、未処理のヒストグラム情報Haがあるか否かを判定する(ステップS16)。
未処理のヒストグラム情報Haがあると判定した場合には(ステップS16;Yes)、詳細化情報生成部12は、未処理のヒストグラム情報Haに未処理の区間があるか否かを判定する(ステップS17)。なお、未処理の区間があればrとする。未処理のヒストグラム情報Haに未処理の区間がないと判定した場合には(ステップS17;No)、詳細化情報生成部12は、次のヒストグラム情報を判定すべく、ステップS16に移行する。
一方、未処理のヒストグラム情報Haに未処理の区間rがあると判定した場合には(ステップS17;Yes)、詳細化情報生成部12は、以下の処理を行う。詳細化情報生成部12は、未処理の区間rを半分に分割すると、分割後各区間に分類されるパーソナルデータDの度数(人数)はそれぞれk以上であるか否かを判定する(ステップS18)。分割後各区間に分類されるパーソナルデータDの度数(人数)はそれぞれk以上でないと判定した場合には(ステップS18;No)、詳細化情報生成部12は、次の未処理の区間を判別すべく、ステップS17に移行する。
一方、分割後各区間に分類されるパーソナルデータDの度数(人数)はそれぞれk以上であると判定した場合には(ステップS18;Yes)、詳細化情報生成部12は、区間rを半分ずつに分割した情報にヒストグラム情報Haを更新する。更新されたヒストグラム情報Haは、詳細化された度数分布表である度数分布表(詳細化)23に対応する。詳細化情報生成部12は、分割後の各区間を未処理とみなす(ステップS19)。そして、詳細化情報生成部12は、次の未処理の区間を判別すべく、ステップS17に移行する。
ステップS16において、未処理のヒストグラム情報Haがないと判定した場合には(ステップS16;No)、詳細化情報生成部12は、ステップS20に移行する。ステップS20において、詳細化情報出力部13は、未出力のヒストグラム情報Haがあるか否かを判定する(ステップS20)。未出力のヒストグラム情報Haがあると判定した場合には(ステップS20;Yes)。詳細化情報出力部13は、未出力のヒストグラム情報Haを提供先に出力する(ステップS21)。そして、詳細化情報出力部13は、次の未出力のヒストグラム情報を判別すべく、ステップS20に移行する。
一方、未出力のヒストグラム情報Haがないと判定した場合には(ステップS20;No)、詳細化情報出力部13は、第1の出力部の処理を終了する。
[第2の出力部のフローチャート]
図15は、実施例に係る第2の出力部の処理のフローチャートの一例を示す図である。
図15に示すように、一般化要求入力部14は、パーソナルデータ21(以下、Dで表わす)、詳細化されたヒストグラム情報群H、一般化要求Gを入力として受け付ける(ステップS31)。ここでいう一般化要求Gは、提供先から受け付けられ、例えば、図10で示される情報である。また、ここでいう詳細化されたヒストグラム情報は、度数分布表(詳細化)23に対応する。
要求検査部15は、一般化要求Gに未処理の属性があるか否かを判定する(ステップS32)。なお、一般化要求Gの未処理の属性があればbとする。一般化要求Gに未処理の属性があると判定した場合には(ステップS32;Yes)、要求検査部15は、一般化要求Gのうち未処理の属性bについての、一般化要求Gbについて、それぞれの区間の間で重なりがあるか否かを判定する(ステップS33)。
一般化要求Gbについて、それぞれの区間の間で重なりがあると判定した場合には(ステップS33;Yes)、要求検査部15は、一般化要求をエラーとすべく、ステップS36に移行する。
一般化要求Gbについて、それぞれの区間の間で重なりがないと判定した場合には(ステップS33;No)、要求検査部15は、一般化要求Gbに未処理の区間があるか否かを判定する(ステップS34)。なお、一般化要求Gbの未処理の区間があればrとする。一般化要求Gbに未処理の区間がないと判定した場合には(ステップS34;Yes)、要求検査部15は、以下の処理を行う。要求検査部15は、詳細化されたヒストグラム情報群Hのうち未処理の属性bについての詳細化されたヒストグラム情報Hbの1つ以上の区間を連結すると未処理の区間rになるか否かを判定する(ステップS35)。
詳細化されたヒストグラム情報Hbの1つ以上の区間を連結すると未処理の区間rになると判定した場合には(ステップS35;Yes)、要求検査部15は、次の未処理の区間を判定すべく、ステップS34に移行する。
一方、詳細化されたヒストグラム情報Hbの1つ以上の区間を連結すると未処理の区間rにならないと判定した場合には(ステップS35;No)、要求検査部15は、一般化要求をエラーとすべく、ステップS36に移行する。
ステップS36において、要求検査部15は、要求に応じられない旨を提供先に出力する(ステップS36)。そして、要求検査部15は、要求検査処理を終了する。
ステップS34において、一般化要求Gbに未処理の区間がないと判定した場合には(ステップS34;No)、要求検査部15は、次の未処理のヒストグラム情報を判定すべく、ステップS32に移行する。
ステップS32において、一般化要求Gに未処理のヒストグラム情報がないと判定した場合には(ステップS32;No)、要求検査部15は、一般化部16の一般化処理に移行する。
一般化部16は、パーソナルデータDに未処理の属性があるか否かを判定する(ステップS38)。なお、未処理の属性があればaとする。パーソナルデータDに未処理の属性があると判定した場合には(ステップS38;Yes)、一般化部16は、一般化要求Gに未処理の属性aについての一般化要求Gaがあるか否かを判定する(ステップS39)。
一般化要求Gに未処理の属性aについての一般化要求Gaがないと判定した場合には(ステップS39;No)、一般化部16は、パーソナルデータDのうち未処理の属性aの部分のデータを全て削除する(ステップS40)。一般化部16は、次の未処理の属性を判定すべく、ステップS38に移行する。
一方、一般化要求Gに未処理の属性aについての一般化要求Gaがあると判定した場合には(ステップS39;Yes)、一般化部16は、パーソナルデータDのうち未処理の属性aの部分のデータについて、未処理のセルがあるか否かを判定する(ステップS41)。なお、未処理のセルがあればcとする。未処理のセルcがないと判定した場合には(ステップS41;No)、一般化部16は、次の未処理の属性を判定すべく、ステップS38に移行する。
一方、未処理のセルcがあると判定した場合には(ステップS41;Yes)、一般化部16は、一般化要求Gaに、未処理のセルcの値を含む区間があるか否かを判定する(ステップS42)。なお、未処理のセルcの値を含む区間があればrとする。一般化要求Gaに未処理のセルcの値を含む区間rがないと判定した場合には(ステップS42;No)、一般化部16は、セルcの値を削除する(ステップS43)。そして、一般化部16は、次の未処理のセルを判定すべく、ステップS41に移行する。
一方、一般化要求Gaに未処理のセルcの値を含む区間rがあると判定した場合には(ステップS42;Yes)、一般化部16は、セルcの値を区間rに置換する(ステップS44)。そして、一般化部16は、次の未処理のセルを判定すべく、ステップS41に移行する。
ステップS38において、パーソナルデータDに未処理の属性がないと判定した場合には(ステップS38;No)、一般化部16は、一般化後データ評価部17の一般化後データ評価処理に移行する。一般化後のパーソナルデータDは、一般化後データ24に対応する。
一般化後データ評価部17は、必要に応じて、一般化後のパーソナルデータDをさらに加工する(ステップS45)。そして、一般化後データ出力部18は、一般化後のパーソナルデータDを提供先に出力する(ステップS46)。
[実施例の効果]
上記実施例によれば、匿名化装置1は、複数の個人それぞれの個人情報を含むパーソナルデータ21について、属性ごとに、所定幅の区間で形成される階級ごとに度数を表す度数分布表22を生成する。匿名化装置1は、属性ごとに、生成された度数分布表22の複数の階級の中で予め定められた閾値であって2以上の閾値の倍以上の度数を有する階級を、それぞれ度数が閾値以上となるように複数の階級に分割する。匿名化装置1は、分割された後の、属性ごとの度数分布表23の各階級の区間および各階級の度数を、パーソナルデータ21を所望する提供先に出力する。かかる構成によれば、匿名化装置1は、個人情報を含むパーソナルデータ21を、提供先の有用性を維持しつつ匿名化することが可能となる。例えば、匿名化装置1は、各区間には必ず閾値以上の度数が含まれているので、この区間の単位での一般化(匿名化)に制限すれば、各属性単位で閾値未満を識別することができず、一定の匿名性を確保することが可能となる。
また、上記実施例によれば、匿名化装置1は、さらに、度数分布表22に含まれる複数の階級のうち、度数が閾値未満を示す階級を削除し、削除した階級を除く度数分布表22を生成する。かかる構成によれば、匿名化装置1は、個人情報を含むパーソナルデータ21を、2以上の閾値未満を示す階級を削除することで、確実にパーソナルデータ21の匿名化をすることが可能となる。
また、上記実施例によれば、匿名化装置1は、予め定められた閾値であって2以上の閾値の倍以上の度数を有する階級を、当該階級の区間幅の半分ずつの複数の階級に分割する。かかる構成によれば、匿名化装置1は、階級を詳細化する際に、階級を当該階級の区間幅を半分ずつに分割することで、多くの提供先(利用者)に有用な情報として提供できる。
また、上記実施例によれば、匿名化装置1は、属性ごとに、分割される前の各階級の区間および各階級の度数を有する度数分布表22を用いてヒストグラムを生成する。そして、匿名化装置1は、生成したヒストグラムに、分割された後の各階級の区間および各階級の度数を重ねて表すヒストグラムを生成し、出力する。かかる構成によれば、匿名化装置1は、分割される前のヒストグラムに、分割された後の区間および度数を重ねて表すようにすることで、提供先が情報を視覚的に把握し易くなり、提供先の有用性を確保できる。
また、上記実施例によれば、匿名化装置1は、提供先から提供を所望する属性および区間を対応付けて受け付ける。匿名化装置1は、受け付けられた属性に対応付けられた区間が分割された後の階級の区間と一致するか、または分割された後の階級の区間を連結した区間と一致するかを判定する。匿名化装置1は、受け付けられた属性に対する区間が分割された後の階級の区間と一致する、または分割された後の階級の区間を連結した区間と一致すると判定された場合には、以下の処理を行う。すなわち、匿名化装置1は、パーソナルデータ21の属性の属性値を、受け付けられた属性に対する区間に置き換えて、パーソナルデータ21を匿名化する。かかる構成によれば、匿名化装置1は、分割された後の階級の区間は閾値以上の度数を持ち、この区間の単位での匿名化に制限することで、匿名性を確保することができる。
ここで、図17で示す複数の意向を含む要求を受け付けた場合には、匿名化装置1は、第2の意向「年齢を10歳単位に一般化するが、80歳代は83歳以下と84歳以上とする」について、年齢に対する区間「80〜83」が1人となってしまう。すなわち、匿名化装置1は、年齢に対する区間「80〜83」が分割された後の階級の区間と一致しないこととなるので、匿名化の処理を行わない。したがって、匿名化装置1は、複数の意向に対する匿名化の処理結果を出力しないこととなるので、匿名化されたデータから匿名性が破られるということはない。
[その他]
なお、匿名化装置1は、既知のパーソナルコンピュータ、ワークステーション等の装置に、上記した詳細化情報生成部12、詳細化情報出力部13、一般化要求入力部14、要求検査部15、一般化部16等の各機能を搭載することによって実現することができる。
また、図示した装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、詳細化情報生成部12と詳細化情報出力部13とをそれぞれ1個の部として統合しても良い。一方、度数分布表生成部11を度数分布表22を生成する処理部と、生成された度数分布表22から度数が閾値k未満の区間を削除する削除部とに分散しても良い。また、記憶部20を匿名化装置1の外部装置としてネットワーク経由で接続するようにしても良い。
また、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーション等のコンピュータで実行することによって実現することができる。そこで、以下では、図1に示した匿名化装置1と同様の機能を実現する匿名化プログラムを実行するコンピュータの一例を説明する。図16は、匿名化プログラムを実行するコンピュータの一例を示す図である。
図16に示すように、コンピュータ200は、各種演算処理を実行するCPU203と、ユーザからのデータの入力を受け付ける入力装置215と、表示装置209を制御する表示制御部207とを有する。また、コンピュータ200は、記憶媒体からプログラム等を読取るドライブ装置213と、ネットワークを介して他のコンピュータとの間でデータの授受を行う通信制御部217とを有する。また、コンピュータ200は、各種情報を一時記憶するメモリ201と、HDD(Hard Disk Drive)205を有する。そして、メモリ201、CPU203、HDD205、表示制御部207、ドライブ装置213、入力装置215、通信制御部217は、バス219で接続されている。
ドライブ装置213は、例えばリムーバブルディスク211用の装置である。HDD205は、匿名化プログラム205aおよび匿名化処理関連情報205bを記憶する。
CPU203は、匿名化プログラム205aを読み出して、メモリ201に展開し、プロセスとして実行する。かかるプロセスは、匿名化装置1の各機能部に対応する。匿名化処理関連情報205bは、パーソナルデータ21、度数分布表22、度数分布表(詳細化)23、一般化後データ24に対応する。そして、例えばリムーバブルディスク211が、匿名化プログラム205a等の各情報を記憶する。
なお、匿名化プログラム205aについては、必ずしも最初からHDD205に記憶させておかなくても良い。例えば、コンピュータ200に挿入されるフレキシブルディスク(FD)、CD−ROM(Compact Disk Read Only Memory)、DVD(Digital Versatile Disk)、光磁気ディスク、IC(Integrated Circuit)カード等の「可搬用の物理媒体」に当該プログラムを記憶させておく。そして、コンピュータ200がこれらから匿名化プログラム205aを読み出して実行するようにしても良い。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)複数の個人それぞれの個人情報を含むパーソナルデータを匿名化する匿名化装置であって、
前記パーソナルデータについて、属性ごとに、所定幅の区間で形成される階級ごとに度数を表す度数分布表を生成する第1の生成部と、
属性ごとに、前記第1の生成部によって生成された度数分布表の複数の階級の中で予め定められた閾値であって2以上の閾値の倍以上の度数を有する階級を、それぞれ度数が前記閾値以上となるように複数の階級に分割する分割部と、
前記分割部によって分割された後の、属性ごとの度数分布表の各階級の区間および各階級の度数を出力する出力部と、
を有することを特徴とする匿名化装置。
(付記2)前記第1の生成部は、さらに、前記度数分布表に含まれる複数の階級のうち、度数が前記閾値未満を示す階級を削除し、削除した階級を除く前記度数分布表を生成する
ことを特徴とする付記1に記載の匿名化装置。
(付記3)前記分割部は、予め定められた閾値であって2以上の閾値の倍以上の度数を有する階級を、当該階級の区間幅の半分ずつの複数の階級に分割する
ことを特徴とする付記1に記載の匿名化装置。
(付記4)前記出力部は、属性ごとに、分割される前の各階級の区間および各階級の度数を有する度数分布表を用いてヒストグラムを生成し、生成したヒストグラムに、分割された後の各階級の区間および各階級の度数を重ねて表すヒストグラムを出力する
ことを特徴とする付記1に記載の匿名化装置。
(付記5)提供先から提供を所望する属性および区間を対応付けて受け付ける受付部と、
前記受付部によって受け付けられた属性に対応付けられた区間が前記分割された後の階級の区間と一致するか、または前記分割された後の階級の区間を連結した区間と一致するかを判定する判定部と、
前記判定部によって前記区間が前記分割された後の階級の区間と一致する、または前記分割された後の階級の区間を連結した区間と一致すると判定された場合には、前記パーソナルデータの属性の属性値を前記区間に置き換えて、前記パーソナルデータを匿名化する匿名化部と、
をさらに有することを特徴とする付記1から付記4のいずれか1つに記載の匿名化装置。
(付記6)複数の個人それぞれの個人情報を含むパーソナルデータについて、属性ごとに、所定幅の区間で形成される階級ごとに度数を表す度数分布表を生成し、
属性ごとに、生成された度数分布表の複数の階級の中で予め定められた閾値であって2以上の閾値の倍以上の度数を有する階級を、それぞれ度数が前記閾値以上となるように複数の階級に分割し、
分割された後の、属性ごとの度数分布表の各階級の区間および各階級の度数を出力する、
処理をコンピュータが実行することを特徴とする匿名化方法。
(付記7)複数の個人それぞれの個人情報を含むパーソナルデータについて、属性ごとに、所定幅の区間で形成される階級ごとに度数を表す度数分布表を生成し、
属性ごとに、生成された度数分布表の複数の階級の中で予め定められた閾値であって2以上の閾値の倍以上の度数を有する階級を、それぞれ度数が前記閾値以上となるように複数の階級に分割し、
分割された後の、属性ごとの度数分布表の各階級の区間および各階級の度数を出力する、
処理をコンピュータに実行させることを特徴とする匿名化プログラム。