(57)【要約】【課題】  データをｋ―匿名化しつつ情報損失量を低減できることである。【解決手段】  実施形態の匿名化装置は、複数の属性の属性値を含む複数の個人データに対し、属性毎に算出された分割度合に基づいて分割する際に着目する属性を決定し、分割基準値を更に決定する決定処理と、分割基準値に基づいて複数の個人データを２つのグループに分割する分割処理と、各グループに対して少なくとも決定処理及び分割処理を再帰的に行う処理とを実行した後、グループ毎に、各グループ内の個人データが同一になるように匿名化する。実施形態の種類数算出手段は、決定処理を行う前に、属性毎に異なる属性値の種類数を算出する。実施形態の決定手段は、算出した種類数に更に基づいて着目する属性を決定する。実施形態のソート手段は、分割処理を行う前に、前記算出した種類数に基づき、前記複数の個人データをソートする。【選択図】図１
2016110399.tif 000002
【特許請求の範囲】
【請求項１】
メモリに記憶した複数の属性の属性値を含む複数の個人データに対し、前記属性毎に算出された分割度合に基づいて分割する際に着目する属性を決定し、分割基準値を更に決定する決定処理と、前記分割基準値に基づいて前記複数の個人データを２つのグループに分割する分割処理と、前記各グループに対して少なくとも前記決定処理及び前記分割処理を再帰的に行う処理とを実行した後、グループ毎に、各グループ内の個人データが同一になるように匿名化する匿名化装置であって、
前記決定処理を行う前に、前記属性毎に異なる属性値の種類数を算出する種類数算出手段と、
前記算出した種類数に更に基づいて前記着目する属性を決定する決定手段と、
前記分割処理を行う前に、前記算出した種類数に基づき、前記複数の個人データをソートするソート手段と、
を備えたことを特徴とする匿名化装置。
【請求項２】
前記決定手段は、前記算出した分割度合が最も大きい属性が複数存在する場合、当該複数の属性のうち前記算出した種類数が最も少ない属性を前記着目する属性として決定し、前記算出した分割度合が最も大きい属性が複数存在しない場合、前記分割度合が最も大きい属性を前記着目する属性として決定する
ことを特徴とする請求項１に記載の匿名化装置。
【請求項３】
前記ソート手段は、前記算出した種類数が多い属性順に前記複数の個人データをソートする
ことを特徴とする請求項１又は請求項２に記載の匿名化装置。
【請求項４】
前記属性は、匿名化対象属性と非匿名化対象属性とに予め分類されており、
前記種類数算出手段は、前記決定処理を行う前に、前記匿名化対象属性毎に異なる属性値の種類数を算出する
ことを特徴とする請求項１乃至請求項３のいずれか１項に記載の匿名化装置。
【請求項５】
前記再帰的に行う処理は、前記複数の個人データの数が２ｋ−１よりも大きい場合に実行される（ここで、ｋは、任意の自然数である）、
ことを特徴とする請求項１乃至請求項４のいずれか１項に記載の匿名化装置。
【請求項６】
メモリに記憶した複数の属性の属性値を含む複数の個人データに対し、前記属性毎に算出された分割度合に基づいて分割する際に着目する属性を決定し、前記着目する属性の属性値に対する分割基準値を更に決定する決定処理と、前記分割基準値に基づいて前記複数の個人データを２つのグループに分割する分割処理と、前記各グループに対して前記決定処理及び前記分割処理を再帰的に行う処理とを実行した後、グループ毎に、各グループ内の個人データが同一になるように匿名化する匿名化装置に用いられるプログラムであって、
前記匿名化装置を、
前記決定処理を行う前に、前記属性毎に異なる属性値の種類数を算出する種類数算出手段、
前記算出した種類数に更に基づいて前記着目する属性を決定する決定手段、
前記分割処理を行う前に、前記算出した種類数に基づき、前記複数の個人データをソートするソート手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、匿名化装置、及びプログラムに関する。
【背景技術】
【０００２】
クラウドコンピューティングサービスの普及により、大量のデータを安価に収集及び、保存することが可能になってきている。その結果、収集したデータを利活用することが可能になり、新たな知見を取得する活動や、新たなサービスを提供する活動が行われている。
【０００３】
特に、個人情報を含む個人データを利活用することで、将来の人の動向に関する知見を取得する試みや、個人毎にきめ細かいサービスを提供する試みが盛んになされている。したがって、個人データは、特に利活用の対象となっているデータと言える。
【０００４】
一方、個人データを利活用する場合、プライバシーを侵害しないように取り扱いに細心の注意が求められる。プライバシーの侵害とは、データから個人が特定されることにより、特定された個人に関し、他人に知られたくないプライベートな情報が漏洩する、ことなどを指す。
【０００５】
したがって、個人データを利活用する場合、プライバシーの侵害を回避するため、利活用される個人データがどの個人の情報かを分かりにくくする匿名化技術が使用される。
【０００６】
匿名化技術の中でも、少なくともｋ人の個人データが同一の情報となるように匿名化するｋ―匿名化手法が注目されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１４−１０６６９１号公報
【特許文献２】特開２０１３−２３９１１８号公報
【特許文献３】特開２０１３−１９０８３８号公報
【特許文献４】特開２０１０−８６１７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、以上のようなｋ―匿名化手法は、本発明者の検討によれば、以下のように不都合な点がある。
【０００９】
一般的に、ｋ―匿名化手法は、与えられたデータに対して削除及び一般化等のデータ変換を繰り返すことで匿名化が実現される。したがって、ｋ―匿名化を実施することにより、元々のデータに含まれていた情報量が損なわれてしまう。
【００１０】
情報量が過剰に損なわれた場合、ｋ―匿名化されたデータを分析して得られる情報が、元々のデータを分析して得られる情報を正しく反映しない可能性があるという点で不都合がある。つまり、情報損失量が増大すると、データ利活用の際に、ｋ―匿名化されたデータを分析して得られる情報から、元々のデータから得られる情報を正しく反映しない誤った情報を導き出すことにより、誤った判断を誘発する可能性がある。
【００１１】
本発明者の検討によれば、上述した不都合な点は、データをｋ―匿名化しつつ情報損失量が低減できれば、回避できると推測される。
【００１２】
本発明が解決しようとする課題は、データをｋ―匿名化しつつ情報損失量を低減し得る匿名化装置、及びプログラムを提供することである。
【課題を解決するための手段】
【００１３】
実施形態の匿名化装置は、メモリに記憶した複数の属性の属性値を含む複数の個人データに対し、分割する際に着目する属性と、分割基準値とを決定する決定処理と、前記分割基準値に基づいて前記複数の個人データを２つのグループに分割する分割処理と、前記各グループに対して少なくとも前記決定処理及び前記分割処理を再帰的に行う処理とを実行した後、グループ毎に、各グループ内の個人データが同一になるように匿名化する。
【００１４】
前記匿名化装置は、種類数算出手段と、ソート手段と、決定手段とを備えている。
【００１５】
前記種類数算出手段は、前記決定処理を行う前に、前記属性毎に異なる属性値の種類数を算出する。
【００１６】
前記ソート手段は、前記算出した種類数に基づき、前記複数の個人データをソートする。
【００１７】
前記決定手段は、前記算出した種類数及び前記ソートした複数の個人データに基づき、前記着目する属性を決定する。
【図面の簡単な説明】
【００１８】
【図１】一実施形態に係る匿名化装置の構成例を示すブロック図である。
【図２】同実施形態における匿名化対象情報の一例を示す模式図である。
【図３】同実施形態における属性項目情報の一例を示す模式図である。
【図４】同実施形態における属性項目情報の一例を示す模式図である。
【図５】同実施形態における対応数値情報の一例を示す模式図である。
【図６】同実施形態における対応数値情報の一例を示す模式図である。
【図７】同実施形態における動作例を説明するためのフローチャートである。
【図８】同実施形態における動作例を説明するためのフローチャートである。
【図９】同実施形態における種類数算出結果の一例を示す模式図である。
【図１０】同実施形態におけるソートの一例を示す模式図である。
【図１１】同実施形態におけるソートの一例を示す模式図である。
【図１２】同実施形態におけるソートの一例を示す模式図である。
【図１３】同実施形態における分割度合算出結果の一例を示す模式図である。
【図１４】同実施形態における分割度合算出結果の一例を示す模式図である。
【図１５】同実施形態におけるデータ分割の一例を示す模式図である。
【図１６】同実施形態におけるデータ連結結果の一例を示す模式図である。
【図１７】同実施形態におけるデータ匿名化結果の一例を示す模式図である。
【図１８】同実施形態における情報損失量評価結果の一例を示す模式図である。
【図１９】同実施形態における情報損失量評価結果の一例を示す模式図である。
【図２０】同実施形態における情報損失量評価結果の一例を示す模式図である。
【図２１】同実施形態における情報損失量評価結果の一例を示す模式図である。
【図２２】同実施形態における情報損失量評価結果の一例を示す模式図である。
【図２３】同実施形態における情報損失量評価結果の一例を示す模式図である。
【図２４】同実施形態の変形例における動作を説明するためのフローチャートである。
【図２５】一般的な複数の個人データの一例を示す模式図である。
【図２６】一般的な匿名化データの一例を示す模式図である。
【図２７】一般的な情報損失量評価結果の一例を示す模式図である
【発明を実施するための形態】
【００１９】
以下、一実施形態について図面を用いて説明するが、その前に、一実施形態に一般的に用いられるｋ―匿名化手法及びその評価手法について述べる。また、一実施形態に用いられる匿名化装置は、ハードウェア構成、又はハードウェア資源とソフトウェアとの組合せ構成の何れでも実施可能となっている。組合せ構成のソフトウェアとしては、予めネットワーク又は記憶媒体から各コンピュータにインストールされ、匿名化装置の機能を当該各コンピュータに実現させるためのプログラムが用いられる。なお、一実施形態の匿名化装置は、スタンドアロンのユーザ端末として実施してもよく、クライアントサーバシステムにおけるサーバ装置として実施してもよい。また、一実施形態の匿名化装置は、プライベートクラウド又はパブリッククラウド等のクラウドコンピューティングシステムにおいて、低負荷時に選択される複数台の処理実行装置の各々として実施してもよい。
【００２０】
＜ｋ―匿名化手法＞
個人データを匿名化する手法の１つとして、少なくともｋ人の個人データが同一となるように匿名化し、当該匿名化された個人データからは個人が特定されないようにする、ｋ―匿名化手法が知られている。この種の手法としては、例えば、第１の文献（［Mondrian］）の手法がある。ここで、第１の文献（［Mondrian］）に関する情報は、次の通りである。
【００２１】
［Mondrian］ K.LeFevre, DJ.DeWitt, R. Ramakrishnan, “Mondrian Multidimensional K-Anonymity”, Proceedings of the 22nd International Conference on Data Engineering, IEEE Computer Society, 2006.
本手法は、メモリに記憶した複数の属性の属性値を含む複数レコードの個人データに対し、以下の(i) ― (iii)の処理を実行した後、グループ毎に、各グループ内の個人データが同一になるように匿名化する手法である。以下、この手法をモンドリアン（Mondrian）方式とも呼ぶ。
【００２２】
(i) 分割する際に着目する属性と、分割基準値とを決定する決定処理。
【００２３】
(ii) 当該決定した分割基準値に基づいて複数レコードの個人データを２つのグループに分割する分割処理。
【００２４】
(iii) 当該分割した各グループに対して決定処理及び分割処理を再帰的に行う処理。
【００２５】
本実施形態では、このモンドリアン方式を用いて、複数レコードの個人データをｋ―匿名化する。
【００２６】
なお、複数の属性の属性値を含む個人データの単位は「レコード」であるが、以下の説明では、「複数レコードの個人データ」、「個人データのレコード数」は、それぞれ「複数の個人データ」、「個人データの個数」と読み替えてもよい。また、複数レコードからなる個人データの組の単位を、「グループ」と言う。すなわち、「複数レコードからなる個人データの組」を「個人データのグループ」、又は単に「グループ」と読み替えてもよい。
【００２７】
次に、モンドリアン方式によるｋ―匿名化のアルゴリズムについて説明する。
【００２８】
モンドリアン方式の基本的なモデルは、以下の分割可否判定、属性決定、分割基準値決定、分割、再帰処理制御、連結、及び匿名化の７つの関数（以下、アルゴリズムともいう）からなる。
【００２９】
（分割可否判定）
分割可否判定アルゴリズムは、複数の個人データＤが入力されると、当該複数の個人データＤが２つの個人データのグループＤＲ，ＤＬに分割できるか否かの判定結果を再帰処理制御アルゴリズムに向けて出力する。分割可否判定アルゴリズムは、入力された複数の個人データＤのレコード数が、予め定められたｋに対して、２ｋ―１個より大きい場合、分割可能と判定し、２ｋ―１個以下の場合、分割不可能と判定する。
【００３０】
（属性決定）
属性決定アルゴリズムは、複数の個人データＤが入力されると、当該複数の個人データＤを分割する際に着目する属性Ａを決定し、当該属性Ａを分割基準値決定アルゴリズム及び分割アルゴリズムに向けて出力する。
【００３１】
（分割基準値決定）
分割基準値決定アルゴリズムは、複数の個人データＤを分割する際に着目する属性Ａが入力されると、分割基準値Ｓを決定し、当該分割基準値Ｓを分割アルゴリズムに向けて出力する。
【００３２】
（分割）
分割アルゴリズムは、着目する属性Ａと、分割基準値Ｓとが入力されると、複数の個人データＤを、分割基準値Ｓより大きいグループＲＨＳ（Right Hand Side）と、分割基準値Ｓ以下のグループＬＨＳ（Left Hand Side）とに分割する。しかる後、分割アルゴリズムは、当該分割により得られた各グループＲＨＳ，ＬＨＳをそれぞれ再帰処理制御アルゴリズムに向けて出力する。
【００３３】
なお、以下の説明では、複数の個人データＤが分割されてなるグループＲＨＳ及びグループＬＨＳを、個人データＤの参照符号“Ｄ”の後にそれぞれ符号“Ｒ”及び“Ｌ”を付記し、グループＤＲ，ＤＬ、又は分割データＤＲ，ＤＬと称する。
【００３４】
（再帰処理制御）
再帰処理制御アルゴリズムは、分割された各グループＤＲ，ＤＬが入力されると、当該各グループＤＲ，ＤＬを分割可否判定アルゴリズムに入力する。再帰処理制御アルゴリズムは、各グループＤＲ，ＤＬに対して得られた分割可否判定結果に基づき、分割可能と判定されたグループを属性決定アルゴリズムに向けて再帰的に出力し、分割不可能と判定されたグループを連結アルゴリズムに向けて出力する。
【００３５】
（連結）
連結アルゴリズムは、複数の個人データＤから分割して得られた全てのグループが分割不可能と判定され、連結アルゴリズムに向けて出力された当該全てのグループが再帰処理制御アルゴリズムから入力されると、動作する。すなわち、連結アルゴリズムは、再帰処理制御アルゴリズムから入力された全てのグループ内の個人データを、各個人データが分類されたグループと関連付けて連結し、連結データＤ’を匿名化アルゴリズムに向けて出力する。
【００３６】
（匿名化）
匿名化アルゴリズムは、連結データＤ’が入力されると、同じグループに関連付けられた個人データ内の各属性の属性値が同一の内容となるように、連結データＤ’を匿名化し、匿名化データＤ”を出力する。
【００３７】
以上により、モンドリアン方式によるｋ―匿名化処理が終了する。
【００３８】
このようなモンドリアン方式によって、ｋ＝２についてｋ―匿名化処理を実施した場合、図２５に示す如き一般的な複数の個人データＤは、図２６に示す如き匿名化データＤ”にｋ―匿名化される。
【００３９】
＜情報損失量評価手法＞
次に、ｋ―匿名化したデータの情報損失量を評価する手法について述べる。
【００４０】
ｋ―匿名化したデータに対して情報損失量を評価する手法として、試験データに対してｋ―匿名化を実施し、ｋ―匿名化前後における情報量を比較する方式が知られている。この種の方式としては、例えば、第２の文献（［Loss Metric］）に記載されている方式がある。本方式は、ロスメトリック（Loss Metric）方式とも呼ぶ。本実施形態では、このロスメトリック方式を用いて、複数の個人データＤに対する匿名化データＤ”の情報損失量を評価する。
【００４１】
また、ロスメトリック方式によりｋ―匿名化したデータを評価する際に使用する試験データとして、例えば、カリフォルニア大学アーバイン校が機械学習用に公開しているデータベース（［UCI 機械学習リポジトリ（Machine Learning Repository）］）のデータがある。なお、このデータベース（［UCI 機械学習リポジトリ］）は、ｋ―匿名化の評価を行う際に事実上の標準試験データとして用いられている。ここで、第２の文献（［Loss Metric］）及びデータベース（［UCI 機械学習リポジトリ］）に関する情報は、次の通りである。
【００４２】
［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
次に、ロスメトリック方式による情報損失量の算出アルゴリズムについて説明する。ロスメトリック方式による情報損失量は、以下のように定義される。
【００４３】
【数１】
2016110399.tif 000003
【００４４】
ここで、l[i][j]は、匿名化データＤ”の各個人データの各属性値における情報損失量である（ただし、０≦l[i][j]≦１）。情報損失量Ｌは、各属性値の情報損失量l[i][j]を匿名化データＤ”全体で平均化した情報損失量であり（ただし、０≦Ｌ≦１）、個人データ全体の情報損失量Ｌともいう。
【００４５】
また、匿名化データＤ”を表形式で表現した場合、表の各行をレコードと呼び、表の各列を属性と呼ぶ。ｍは、匿名化データＤ”を表形式で表現した場合のレコード数であり、ｎは、各個人データ内の属性数である。「属性数」は、「属性の個数」又は「属性の種類数」と呼んでもよい。
【００４６】
RT[i][j]は、当該表形式で表現された匿名化データＤ”のｊ番目のレコードにおけるｉ番目の属性の属性値を示す。なお、匿名化されたデータＤ”は、ｋ―匿名化によって少なくともｋ個以上の個人データが同一となるように匿名化され、同一の内容となった各個人データは、それぞれ同じグループに関連付けられている。
【００４７】
f(RT[i][j])は、RT[i][j]が入力されると自然数Ｎ１を返す関数である。ここで、自然数Ｎ１は、RT[i][j]が関連付けられたグループにおける、属性ｉの匿名化前の属性値の範囲を示す。属性値の範囲とは、属性値が、例えば「年齢」のような数値で表される属性の場合、当該グループ内における最大値と最小値との値の差に“１”を加算した値と定義する。また、属性値の範囲は、属性値が、例えば「住所」や「性別」のような非数値で表される属性の場合、同じ属性値を１つと数えた場合における属性値の個数と定義する。
【００４８】
g(PTi)は、PTiが入力されると自然数Ｎ２を返す関数である。ここで、PTiは、匿名化データＤ”における属性ｉを示す。自然数Ｎ２は、匿名化データＤ”の匿名化前のデータにおける、属性ｉに関する属性値の範囲を示す。
【００４９】
以上により、ロスメトリック方式による情報損失量の算出処理が終了する。
【００５０】
このようなロスメトリック方式によって情報損失量を評価した場合、図２６に示す如き一般的な匿名化データＤ”における、各個人データに対する各属性値の情報損失量l[i][j]及び匿名化データＤ”全体の情報損失量Ｌは、図２７に示す通りとなる。
【００５１】
このような情報損失量Ｌは、Ｌの値が大きいほど、情報損失量が大きいと判断される。
【００５２】
＜一実施形態＞
図１は、一実施形態に係る匿名化装置の構成例を示す模式図である。匿名化装置１は、メモリに記憶した複数の属性の属性値を含む複数の個人データに対し、当該属性毎に算出された分割度合に基づいて分割する際に着目する属性を決定し、分割基準値を更に決定する決定処理と、当該分割基準値に基づいて当該複数の個人データを２つのグループに分割する分割処理と、当該各グループに対して少なくとも当該決定処理及び当該分割処理を再帰的に行う処理とを実行した後、グループ毎に、各グループ内の個人データが同一になるように匿名化する。この匿名化装置１は、入力部１１、種類数算出部１２、ソート部１３、制御部１４、分割度合算出部１５、属性決定部１６、分割基準値決定部１７、分割部１８、連結部１９、匿名化部２０、出力部２１及び記憶部２２を備えている。
【００５３】
入力部１１は、匿名化装置１からの複数の属性の属性値を含む複数の個人データＤの入力を受け付け、当該複数の個人データＤを記憶部２２に記憶する。また、入力部１１は、入力を受け付けた複数の個人データＤを種類数算出部１２に送信する。
【００５４】
なお、以下の説明では、「入力を受け付けた複数の個人データ」を、「元データ」と読み替えてもよい。
【００５５】
ここで、元データＤは、各個人に関する情報として、複数の属性の属性値を含んでいる。各属性としては、例えば、「氏名」、「性別」、「年齢」を用いている。なお、元データＤは、匿名化の対象となる個人データであって、匿名化された後、速やかに所定の解析に使用されることを想定している。したがって、入力部１１は、例えば、入力されたデータ内に「氏名」等の直接個人を特定可能な属性が含まれている場合、当該属性を削除する機能を備えていてもよい。また、入力部１１は、不要な属性を削除した個人データを、元データＤとして入力を受け付けてもよい。
【００５６】
なお、元データＤとしては、例えば、「年齢」、「性別」、「住所」及び「病名」という各属性の属性値を個人毎に含むレセプト情報等を使用してもよい。この場合、「病名」を匿名化せず、「年齢」、「性別」、「住所」を適宜、匿名化して所定の解析に使用することが好ましい。したがって、元データＤの属性は、図２に示す如く、匿名化対象属性と、非匿名化対象属性とに予め分類されていてもよく、当該分類した結果を示す分類情報を匿名化対象情報１００ａとして記憶部２２に予め記憶してもよい。図２に示す例では、属性「年齢」、「性別」及び「住所」が匿名化対象属性に分類されており、属性「病名」が非匿名化対象属性に分類されている。
【００５７】
また、各属性の属性値は、図３及び図４に示す如く、属性値によって小項目、中項目といった階層構造に分類されていてもよい。また、当該分類した結果を示す分類情報は、属性毎にそれぞれ属性項目情報１００ｂ，１００ｃとして予め記憶部２２に記憶されていてもよい。また、属性項目情報１００ｂ，１００ｃの如き、階層構造を持つ分類情報は、個人データを匿名化する際に、下位の項目を表す属性値をより上位の項目を表す属性値に置き換えることで、当該属性の属性値を匿名化するための情報として使用されてもよい。ここで、下位の項目を表す属性値は、より上位の項目を表す属性値に包含されている。
【００５８】
種類数算出部１２は、入力部１１から元データＤを受信し、属性ｉ毎に異なる属性値の種類数Ｃｉを算出する。種類数算出部１２は、属性決定部１６及び分割基準値決定部１７がそれぞれ決定処理を行う前に、当該各種類数Ｃｉを算出する。種類数算出部１２は、元データＤ及び算出した各種類数Ｃｉをソート部１３に送信し、算出した各種類数Ｃｉを更に属性決定部１６に送信する。
【００５９】
ここで、種類数Ｃｉは、個人データ内の属性ｉにおける属性値について、同じ属性値は１つの種類として計算することで算出される、異なる属性値の種類の数である。また、「種類数」は、「バリエーション数」と呼んでもよい。バリエーション数Ｃｉは、属性ｉにおける属性値のうち、互いに異なる属性値の個数としてもよい。
【００６０】
なお、種類数算出部１２は、ソート優先順位として、算出した種類数Ｃｉが多い順に属性ｉ毎の優先順位を算出してもよく、当該ソート優先順位と種類数Ｃｉとを関連付けてソート部１３に送信してもよい。また、種類数算出部１２は、属性決定優先順位として、算出した種類数Ｃｉが少ない順に属性ｉ毎の優先順位を算出してもよく、当該属性決定優先順位と種類数Ｃｉとを関連付けて属性決定部１６に送信してもよい。ここで、ソート優先順位と、属性決定優先順位との関係は、属性ｉ毎に算出される優先順位が逆になる関係にある。
【００６１】
また、種類数算出部１２は、匿名化対象情報１００ａを記憶部２２から読出し、当該匿名化対象情報１００ａに基づき、匿名化対象属性毎に異なる属性値の種類数Ｃｉを算出してもよい。この場合、非匿名化対象属性については、種類数及び優先順位は算出されない。
【００６２】
ソート部１３は、元データＤ、当該元データＤにおける種類数Ｃｉを種類数算出部１２から受信する。ソート部１３は、分割部１８が分割処理を行う前に、当該種類数Ｃｉに基づき、元データＤをソートする。
【００６３】
また、ソート部１３は、種類数Ｃｉを、当該属性毎のソート優先順位と関連付けて種類数算出部１２から受信してもよく、ソート優先順位に基づき、属性毎の種類数が大きい順に元データＤをソートし、ソートデータＤｎを生成してもよい。ここで、ソートデータＤｎは、ｎ個の属性に対しそれぞれソートを実施した結果、最後のｎ回目のソートにより得られたデータである。ソート部１３は、ソートデータＤｎを制御部１４に送信する。
【００６４】
なお、ソート部１３は、元データＤを、例えば昇順又は降順等、任意のソート手法でソート可能である。なお、ソート部１３は、「性別」や「住所」のように、属性値が非数値で表される属性に対しては、図５及び図６に示すように、属性毎の各属性値に対応数値を関連付けた対応数値情報１００ｄ，１００ｅに基づき、ソートを実施してもよい。この場合、対応数値情報１００ｄ，１００ｅは、予め記憶部２２に記憶されていてもよく、ソート部１３は、当該対応数値情報１００ｄ，１００ｅを適宜読出し、ソートを実施してもよい。また、「対応数値」の値としては、例えば「０」から昇順の値を各属性値に関連付ければよい。
【００６５】
制御部１４は、分割度合算出部１５が行う算出処理と、属性決定部１６及び分割基準値決定部１７がそれぞれ行う決定処理と、分割部１８が行うデータ分割処理とを再帰的に行う処理をするための制御機能を有する。制御部１４は、ソートデータＤｎをソート部１３から受信し、又はグループに分割された複数の個人データ（以下、「分割データ」と言う。）ＤＲ，ＤＬを分割部１８から受信し、分割可能か否かを判定する。制御部１４は、元データＤ又は分割データＤＲ，ＤＬが分割可能と判定された場合、再帰的処理を行うために当該元データＤ又は分割データＤＲ，ＤＬを分割度合算出部１５に送信する。制御部１４は、元データＤ又は分割データＤＲ，ＤＬが分割不可能と判定された場合、当該元データＤ又は分割データＤＲ，ＤＬに対する再帰的処理を終了し、連結部１９に送信する。
【００６６】
なお、制御部１４は、受信した複数の個人データＤのレコード数が２ｋ−１よりも大きい場合、上記再帰的処理を実行してもよい。ここで、ｋは、任意の自然数であり、設定されるｋの値は、匿名化されることにより匿名化対象属性の属性値が同一の内容となる個人データの最小レコード数に対応する。例えば、ｋに“２”が設定された場合、制御部１４は、匿名化によって少なくとも２レコード以上の個人データが同一の内容となるように再帰的処理を制御する。
【００６７】
また、制御部１４は、再帰的処理により、分割データＤＲを更にグループに分割して得られる分割データＤＲＲ，ＤＲＬ、及び分割データＤＬを更にグループに分割して得られる分割データＤＬＲ，ＤＬＬ等も受信してもよい。なお、当該分割データＤＲＲ，ＤＲＬ，ＤＬＲ，ＤＬＬに関する処理は、元データＤ、及び分割データＤＲ，ＤＬに関する処理と同様であるため、説明を省略している。また、以下の各部についても同様である。
【００６８】
分割度合算出部１５は、分割可能と判定された元データＤ又は分割データＤＲ，ＤＬを制御部１４から受信し、属性毎の分割度合Ｐｉを算出する。分割度合算出部１５は、元データＤ又は分割データＤＲ，ＤＬ、及び算出した分割度合Ｐｉを属性決定部１６に送信する。
【００６９】
ここで、分割度合Ｐｉとは、元データＤにおける属性ｉの属性値の範囲に対する、受信した複数の個人データ（分割データＤＲ，ＤＬ）における属性ｉの属性値の範囲の割合である。
【００７０】
ここで、属性値の範囲とは、複数の個人データ内の各属性における属性値の存在範囲であり、属性値の性質によって計算方法が異なっていてもよい。例えば、属性が「年齢」等のように、属性値が数値で表される属性の場合、属性値の範囲は、その属性における属性値の最大値と最小値との差に“１”を足した値として算出されてもよい。また、例えば、属性が「性別」や「住所」等のように、属性値がカテゴリのように非数値で表される属性の場合、属性値の範囲は、属性値の種類数Ｃｉとして算出されてもよい。
【００７１】
なお、属性値が非数値で表される属性の場合であっても、分割度合算出部１５は、当該属性値が非数値で表される属性の属性値に対し、対応する数値を付与することで、属性値が数値で表される属性の場合と同様の手法で属性値の範囲を算出してもよい。すなわち、属性値が非数値で表される属性の場合、当該属性の属性値毎に「対応数値」の値を「０」から昇順に付与することで、当該属性における対応数値の最大値と最小値との差に「１」を足した値として、当該属性における属性値の範囲を算出可能である。
【００７２】
分割度合算出部１５は、元データＤに対して属性毎の属性値の範囲を算出した場合、当該元データＤの属性値の範囲を記憶部２２に記憶する。分割度合算出部１５は、記憶部２２から元データＤの属性値の範囲を読出し、当該元データＤの属性値の範囲に対し、算出した属性値の範囲の割合を各属性に対して計算し、分割度合Ｐｉを算出する。
【００７３】
属性決定部１６は、種類数Ｃｉを種類数算出部１２から受信し、元データＤ又は分割データＤＲ，ＤＬ及び分割度合Ｐｉを分割度合算出部１５から受信する。属性決定部１６は、元データＤ又は分割データＤＲ，ＤＬ及び分割度合Ｐｉと、更に種類数Ｃｉとに基づき、分割する際に着目する属性Ａを決定する。また、属性決定部１６は、種類数Ｃｉと、当該属性毎の属性決定優先順位とを関連付けたデータを種類数算出部１２から受信してもよく、当該属性決定優先順位に更に基づき、分割する際に着目する属性Ａを決定してもよい。
【００７４】
具体的には、属性決定部１６は、分割度合が最も大きい属性が複数存在する場合、当該複数の属性のうち種類数が最も少ない属性、即ち属性決定優先順位が最も高い属性を着目する属性Ａとして決定する。また、属性決定部１６は、分割度合が最も大きい属性が複数存在しない場合、当該分割度合が最も大きい属性を着目する属性Ａとして決定する。属性決定部１６は、分割する際に着目する属性Ａと、元データＤ又は分割データＤＲ，ＤＬとを分割基準値決定部１７に送信する。
【００７５】
なお、属性決定部１６は、分割度合が最も大きい属性が複数存在し、当該複数の分割度合が最も大きい属性について、種類数が最も少ない属性が更に複数存在する場合は、該当する各属性のうち、任意の属性を着目する属性Ａとして決定してもよい。また、該当する属性のうち、個人データ内の最左列の属性を着目する属性Ａとして決定してもよい。
【００７６】
分割基準値決定部１７は、着目する属性Ａと、元データＤ又は分割データＤＲ，ＤＬとを属性決定部１６から受信し、分割基準値Ｓを決定する。分割基準値決定部１７は、決定した分割基準値Ｓと、着目する属性Ａと、元データＤ又は分割データＤＲ，ＤＬとを分割部１８に送信する。
【００７７】
ここで、分割基準値Ｓは、受信した個人データのレコード数の中央値である。なお、分割基準値Ｓは、着目する属性Ａにおける属性値の最大値と最小値との中央値であってもよく、中央値以外でも、例えば、当該着目する属性Ａの属性値の平均値や最頻値等、任意の決定の仕方が適用されてもよい。
【００７８】
分割部１８は、分割基準値Ｓと、着目する属性Ａと、元データＤ又は分割データＤＲ，ＤＬとを分割基準値決定部１７から受信する。分割部１８は、着目する属性Ａについて、元データＤ又は分割データＤＲ，ＤＬをソートする。分割部１８は、分割基準値Ｓに基づいて、属性Ａについてソートした元データＤ又は分割データＤＲ，ＤＬを２つのグループに分割し、分割データＤＲ，ＤＬ、又は分割データＤＲＲ，ＤＲＬ，ＤＬＲ，ＤＬＬを得る。分割部１８は、２つのグループに分割された各分割データを、それぞれ制御部１４に送信する。
【００７９】
また、分割部１８は、属性Ａについてソートした複数の個人データのうち、レコード数が分割基準値Ｓより大きい個人データであるか、分割基準値Ｓ以下の個人データであるかに基づき、元データＤ又は分割データＤＲ，ＤＬを２つのグループに分割する。なお、分割部１８は、分割基準値Ｓが属性Ａに基づいて決定された場合、当該属性Ａの属性値が分割基準値Ｓより大きい属性値を有する個人データであるか、分割基準値Ｓ以下の属性値を有する個人データであるかに基づき、元データＤ又は分割データＤＲ，ＤＬを２つのグループに分割してもよい。
【００８０】
連結部１９は、分割不可能と判定された元データＤ又は分割データＤＲ，ＤＬを制御部１４から受信する。
【００８１】
連結部１９は、元データＤを受信した場合、当該元データＤを匿名化部２０に送信する。連結部１９は、分割データＤＲ，ＤＬを受信した場合、元データＤに係るその他の全てのグループの分割データを受信するまで、当該分割データＤＲ，ＤＬを記憶部２２に記憶してもよい。また、連結部１９は、元データＤに係る全てのグループの分割データを受信した場合、当該記憶した分割データＤＲ，ＤＬを記憶部２２から読出してもよい。連結部１９は、元データＤに係る全てのグループの分割データを受信した後、各分割データＤＲ，ＤＬを記憶部２２から読出して１つのデータに連結し、連結データＤ’を生成する。なお、連結部１９は、各個人データがどのグループに属しているかを対応付けて、連結データＤ’を生成する。
【００８２】
匿名化部２０は、元データＤ又は連結データＤ’を連結部１９から受信し、当該元データＤ又は連結データＤ’を匿名化し、匿名化データＤ”を得る。具体的には、匿名化部２０は、元データＤを受信した場合、全ての個人データが同一の内容になるように匿名化する。また、匿名化部２０は、連結データＤ’を受信した場合、連結データＤ’内のグループ毎に、各グループ内の個人データが同一の内容となるように匿名化する。
【００８３】
また、匿名化部２０は、属性項目情報１００ｂ，１００ｃを記憶部２２から読出し、各属性値が表す項目をより上位の項目に置き換えることにより、個人データの匿名化を実施してもよい。なお、例えば、匿名化部２０は、「年齢」のように属性値が数値で表される属性の場合、グループ内の属性値が含まれる任意の範囲（例えば、５歳刻みや１０歳刻み）に置き換えることで匿名化を実施してもよい。また、匿名化部２０は、上述の方法に限らず、グループ内の属性値の平均値、最頻値等に置き換える等、任意の方法で属性値の匿名化を実施可能である。
【００８４】
また、匿名化部２０は、匿名化対象情報１００ａを記憶部２２から読出し、当該匿名化対象情報１００ａに基づき、連結データＤ’内の各属性のうち、非匿名化対象属性については匿名化を実施しなくてもよい。匿名化部２０は、匿名化データＤ”を出力部２１に送信する。
【００８５】
出力部２１は、匿名化データＤ”を匿名化部２０から受信し、匿名化装置１の外部に出力する。
【００８６】
記憶部２２は、読出し／書込み可能なメモリであり、匿名化対象情報１００ａ、属性項目情報１００ｂ，１００ｃ、及び対応数値情報１００ｄ，１００ｅが予め記憶されている。また、記憶部２２は、入力部１１に入力された元データＤを記憶する。また、記憶部２２は、元データＤに対する各属性の分割度合を記憶してもよく、分割不可能と判定された分割データを記憶してもよい。また、記憶部２２は、元データＤに関する全ての個人データが分割不可能と判定された場合、記憶した各分割データを連結部１９から読み出されてもよい。
【００８７】
次に、以上のように構成された匿名化装置１の動作について、図７及び図８のフローチャートを用いて説明する。なお、以下の説明において、匿名化装置１は、図２５に示す如き元データＤを入力としてｋ＝２についてｋ―匿名化し、匿名化データＤ”を出力するものとする。また、記憶部２２は、図２に示す匿名化対象情報１００ａ、図３及び図４に示す属性項目情報１００ｂ，１００ｃ、及び図５及び図６に示す対応数値情報１００ｄ，１００ｅを予め記憶し、匿名化装置１の各部は、当該各情報に基づいて匿名化処理を行うものとする。また、ソート部１３は、各属性値について、昇順となるようにソートするものとし、分割基準値決定部１７は、分割基準値Ｓを、個人データのレコード数の中央値として決定するものとする。また、匿名化部２０は、「年齢」の属性を匿名化する場合、一の位が０〜４又は５〜９の５歳刻みとなるように匿名化を実施し、それでも一致しない場合は、一の位が０〜９又は５〜４の１０歳刻みとなるように匿名化を実施するものとする。
【００８８】
始めに、入力部１１は、外部から元データＤを入力され（ＳＴ１０１）、当該入力された元データＤを記憶部２２に記憶すると共に、種類数算出部１２に送信する。
【００８９】
種類数算出部１２は、受信した元データＤについて、当該元データＤ内の属性毎に、異なる属性値の種類数Ｃｉを算出する（ＳＴ１０２）。なお、種類数算出部１２は、分割する際に着目する属性Ａを決定する前に、属性毎の属性値の種類数Ｃｉを算出する。
【００９０】
また、種類数算出部１２は、算出した種類数Ｃｉに基づき、ソート優先順位及び属性決定優先順位を算出し、これらを関連付けてソート部１３及び属性決定部１６に送信する。種類数算出部１２は、元データＤをソート部１３に更に送信する。
【００９１】
具体的には、種類数算出部１２は、記憶部２２から匿名化対象情報１００ａを読出し、図９に示すように、匿名化対象属性である「年齢」、「性別」、及び「住所」の種類数Ｃｉとして、それぞれ“１４”、“２”、及び“５”を算出する。また、種類数算出部１２は、種類数Ｃｉが多い順である「年齢」、「住所」、及び「性別」の順にソート優先順位を算出し、種類数Ｃｉが少ない順である「性別」、「住所」、及び「年齢」の順に属性決定優先順位を算出する。なお、種類数算出部１２は、非匿名化対象属性である「病名」については、種類数Ｃｉ及び各優先順位を算出しない。
【００９２】
ソート部１３は、受信した元データＤと、種類数Ｃｉ及びソート優先順位とに基づき、元データＤをソートする（ＳＴ１０３）。
【００９３】
まず、ソート部１３は、図１０に示す通り、ソート優先順位が１番の属性である「年齢」について、元データＤをソートし、ソートデータＤ１を得る。次に、ソート部１３は、図１１に示す通り、ソート優先順位が２番の属性である「住所」について、ソートデータＤ１をソートし、ソートデータＤ２を得る。最後に、ソート部１３は、図１２に示す通り、ソート優先順位が３番の属性である「性別」について、ソートデータＤ２をソートし、ソートデータＤ３を得る。なお、「住所」及び「性別」のように、属性値が数値でない属性の場合、ソート部１３は、記憶部２２から対応数値情報１００ｄ，１００ｅを読出し、各属性値を対応数値に読み替えて、ソートを実施してもよい。
【００９４】
ソート部１３は、得られたソートデータＤ３を制御部１４に送信する。
【００９５】
制御部１４は、受信したソートデータＤ３が分割可能か否かを判定する（ＳＴ１０４）。制御部１４は、ソートデータＤ３が分割可能と判定された場合（ＳＴ１０４；Ｙｅｓ）、再帰的処理を行うために当該ソートデータＤ３を分割度合算出部１５に送信する。制御部１４は、ソートデータＤ３が分割不可能と判定された場合（ＳＴ１０４；Ｎｏ）、当該ソートデータＤ３に対する再帰的処理を終了し、連結部１９に送信し、ステップＳＴ１０９に進む。なお、ここではｋ＝２におけるｋ―匿名化を想定しているため、ソートデータＤ３は、分割可能と判定される。
【００９６】
分割度合算出部１５は、受信したソートデータＤ３について、属性毎の分割度合Ｐｉを算出する（ＳＴ１０５）。具体的には、分割度合算出部１５は、図１３に示す通り、元データＤにおける属性値の範囲に対する受信データにおける属性値の範囲の割合を算出する。なお、分割度合算出部１５は、属性が「性別」及び「住所」の場合、対応数値情報１００ｄ，１００ｅを記憶部２２から読出し、当該対応数値情報１００ｄ，１００ｅに基づき、属性値の範囲を算出する。なお、分割度合算出部１５は、ソートデータＤ３が入力された場合、図１３に示す通り、元データＤと受信データＤ３とが同じデータとなるため、分割度合Ｐｉは、どの属性においても“１”と算出される。
【００９７】
分割度合算出部１５は、元データＤにおける属性値の範囲を算出すると、当該属性値の範囲を記憶部２２に記憶する。また、分割度合算出部１５は、算出した分割度合Ｐｉと、ソートデータＤ３とを属性決定部１６に送信する。
【００９８】
属性決定部１６は、受信した分割度合Ｐｉ及びソートデータＤ３と、更に種類数Ｃｉとに基づき、分割する際に着目する属性Ａを決定する（ＳＴ１０６）。具体的には、属性決定部１６は、図８に示すステップＳＴ２０１−ＳＴ２０３に従って、着目する属性Ａを決定する。
【００９９】
属性決定部１６は、分割度合が最大となる属性が複数あるか否かを判定する（ＳＴ２０１）。属性決定部１６は、分割度合が最大となる属性が複数ある場合（ＳＴ２０１；Ｙｅｓ）、分割度合が最大の属性のうち、種類数が最小となる属性を着目する属性Ａに決定する（ＳＴ２０２）。また、属性決定部１６は、属性毎の分割度合が最大となる属性が複数ない場合（ＳＴ２０１；Ｎｏ）、分割度合が最大となる属性を着目する属性Ａに決定する（ＳＴ２０３）。
【０１００】
なお、ソートデータＤ３が入力された場合、属性決定部１６は、分割度合が最大となる属性が複数存在するためステップＳＴ２０２に進み、当該分割度合が最大となる属性のうち種類数が最小の属性である「性別」を着目する属性Ａに決定する。
【０１０１】
なお、例えば図１４に示す如く、分割度合が最大となる属性が複数存在しないソートデータＤ３が入力された場合、属性決定部１６は、ステップＳＴ２０３に進み、当該分割度合が最大となる属性である「年齢」を着目する属性Ａに決定する。
【０１０２】
属性決定部１６は、着目する属性Ａである「性別」と、ソートデータＤ３とを分割基準値決定部１７に送信する。
【０１０３】
分割基準値決定部１７は、着目する属性Ａである「性別」を受信し、ソートデータＤ３の「性別」について、ソートデータＤ３を再度ソートし、ソートデータＤｆを得る。ここでは、ソートデータＤｆはソートデータＤ３と同じ結果となる。分割基準値決定部１７は、ソートデータＤｆに対し、分割基準値Ｓを決定する（ＳＴ１０７）。具体的には、分割基準値決定部１７は、ソートデータＤｆのレコード数の中央値“８．５”を分割基準値Ｓとして決定する。
【０１０４】
分割基準値決定部１７は、分割基準値“８．５”と、ソートデータＤｆとを分割部１８に送信する。
【０１０５】
分割部１８は、受信した分割基準値“８．５”に基づき、ソートデータＤｆを２つのグループに分割する（ＳＴ１０８）。具体的には、分割部１８は、図１５（Ａ）に示す通り、ソートデータＤｆのレコード数が分割基準値“８．５”番目より大きいグループＤＲと、図１５（Ｂ）に示す通り、レコード数が分割基準値“８．５”番目以下のグループＤＬとに分割する。
【０１０６】
分割部１８は、分割して得られた各分割データＤＲ，ＤＬを、それぞれ制御部１４に送信する。
【０１０７】
制御部１４は、受信した各分割データＤＲ，ＤＬが分割可能か否かを判定する（ＳＴ１０４）。以下、各分割データＤＲ，ＤＬに関する再帰的処理に係るステップ（ＳＴ１０４−ＳＴ１０８）は、同様の動作となるため、説明を省略する。なお、説明を省略した再帰的処理に係るステップ（ＳＴ１０４−ＳＴ１０８）の結果、ソートデータＤ３に対する再帰的処理は全て終了し、ステップＳＴ１０９に進む。
【０１０８】
連結部１９は、図１６に示すように、各グループに関連付けられたすべての分割データを連結し、連結データＤ’を得る（ＳＴ１０９）。連結部１９は、連結データＤ’を匿名化部２０に送信する。
【０１０９】
匿名化部２０は、受信した連結データＤ’をｋ―匿名化する（ＳＴ１１０）。具体的には、匿名化部２０は、図１７に示すように、連結データＤ’のデータ内のグループ毎に、各グループ内の個人データが同一になるように匿名化する。なお、匿名化部２０は、属性項目情報１００ｂ，１００ｃを記憶部２２から読出し、各属性値が表す項目をより上位の項目に置き換えることにより、個人データの匿名化を実施する。なお、匿名化部２０は、匿名化対象情報１００ａを記憶部２２から読出し、非匿名化対象属性については匿名化を実施しない。匿名化部２０は、匿名化データＤ”を出力部２１に送信する。
【０１１０】
出力部２１は、匿名化データＤ”を受信し、匿名化装置１の外部に出力する（ＳＴ１１１）。
【０１１１】
これにより、匿名化装置１は、複数の個人データＤをｋ―匿名化しつつ、情報損失量を低減させた匿名化データＤ”を出力することができる。ユーザは、情報損失量を低減させた匿名化データＤ”を分析することにより、個人のプライバシーの侵害を回避しつつ、元々の個人データを分析して得られる情報を正しく反映した分析結果を得ることができる。
【０１１２】
具体的には、図２５に示す元データＤにおける、本実施形態を用いた場合の各個人データに対する各属性値の情報損失量l[i][j]及び個人データ全体の情報損失量Ｌは、図１８に示す通りとなる。
【０１１３】
一方、同様の元データＤに対し、従来手法を用いた場合の各個人データに対する各属性値の情報損失量l[i][j]及び個人データ全体の情報損失量Ｌは、図２７に示す通りとなる。  図１８に示す本実施形態の情報損失量Ｌ＝０．０８５は、図２７に示す従来手法の情報損失量Ｌ＝０．１９６に比べ、情報損失量を５割以上も低減することができている。
【０１１４】
また、データベース［UCI 機械学習リポジトリ］の４種類のデータに対して本実施形態を用いてｋ―匿名化した際の情報損失量Ｌを、ロスメトリック方式によって評価する。評価の結果、本実施形態は、図１９〜図２３に示す如く、各データに対してｋ＝２，４，８，１６，３２のいずれの場合においても、従来のモンドリアン方式に対して情報損失量Ｌの値が小さくなる結果を得る。例えば、図１９〜図２３中、従来のモンドリアン方式の情報損失量Ｌに対する本実施形態の情報損失量Ｌの比率は、全て１より小さい。即ち、本実施形態では、データをｋ―匿名化しつつ情報損失量を低減できる結果を得ることができる。
【０１１５】
上述したように、本実施形態によれば、分割する際に着目する属性を決定し、分割基準値を更に決定する決定処理を行う前に、上記属性毎に異なる属性値の種類数を算出する。また、当該算出した種類数に更に基づいて当該着目する属性を決定する。また、当該基準値に基づいて複数の個人データを２つのグループに分割する分割処理を行う前に、当該算出した種類数に基づき、複数の個人データをソートする。これにより、データをｋ―匿名化しつつ情報損失量を低減することができる。
【０１１６】
補足すると、決定処理を行う前に属性毎の種類数を算出し、当該種類数に基づき、分割処理を行う前に複数の個人データをソートし、当該種類数に基づき、着目する属性を決定する。これにより、分割の際に、種類数の少ない属性の属性値が近い又は同じレコード同士を同じグループ内に残しやすくすることができる。これにより、種類数の少ない属性値が匿名化によって同一の情報となるため、情報損失量が大幅に増加することを防止することができる。
【０１１７】
また、当該決定処理では、分割度合が最も大きい属性が複数存在する場合、当該複数の個人データ内の属性のうち種類数が最も少ない属性を着目する属性として決定する。また、分割度合が最も大きい属性が複数存在しない場合、分割度合が最も大きい属性を着目する属性として決定する。これにより、データをｋ―匿名化しつつ情報損失量を低減することができる。
【０１１８】
補足すると、種類数が少ない属性を着目する属性として決定することにより、分割部１８が分割前に行うソートによって種類数の少ない属性の属性値が近い又は同じレコード同士を同じグループに残しやすくすることができる。これにより、種類数の少ない属性が匿名化によって同一の情報となり、情報損失量が大幅に増加することを防止することができる。
【０１１９】
また、算出した種類数が大きい属性順に複数の個人データをソートする。これにより、データをｋ―匿名化しつつ情報損失量を低減することができる。
【０１２０】
補足すると、種類数の多い属性から順にソートすると、種類数の最も少ない属性が最後にソートされる。種類数の少ない属性は、種類数の多い属性よりも、ソートした際に、より近い又は同じ値が並ぶことが期待できる。これにより、属性値の種類数の少ない属性が匿名化によって同一の情報となり、情報損失量が大幅に増加することを防止することができる。
【０１２１】
また、属性は、匿名化対象属性と非匿名化対象属性とに分類され、着目する属性は、匿名化対象属性に分類された属性に対して決定される。これにより、匿名化が不要な属性を除いてｋ―匿名化を実施することができる。
【０１２２】
また、再帰的に行う処理は、複数の個人データのレコード数が２ｋ−１よりも大きい場合に実行される。これにより、複数の個人データを分割する際に、任意の自然数ｋに対して、最小レコード数のグループに分割することができる。
【０１２３】
その他、匿名化装置の構成や機能、通信手順、処理手順と処理内容等についても、この発明の要旨を逸脱しない範囲で種々変形して実施可能である。
【０１２４】
例えば、種類数算出部１２は、属性決定部１６及び分割基準値決定部１７がそれぞれ決定処理を行う前に各種類数Ｃｉを算出すればよく、制御部１４によって再帰的に処理するように制御されてもよい。
【０１２５】
また、ソート部１３は、分割部１８が分割処理を行う前に、ソートを実施すればよく、制御部１４によって再帰的に処理するように制御されてもよい。
【０１２６】
このように、種類数算出部１２及びソート部１３による処理を再帰的に実行する時の動作例を図２４のフローチャートを用いて説明する。なお、当該動作例における前提条件は、図７のフローチャートに基づく動作例の場合と同等であるとする。
【０１２７】
始めに、入力部１１は、外部から元データＤが入力されると（ＳＴ３０１）、当該入力された元データＤを制御部１４に送信する。
【０１２８】
制御部１４は、受信した元データＤが分割可能か否かを判定する（ＳＴ３０２）。制御部１４は、元データＤが分割可能と判定された場合（ＳＴ３０２；Ｙｅｓ）、再帰的処理を行うために当該元データＤを分割度合算出部１５に送信する。制御部１４は、元データＤが分割不可能と判定された場合（ＳＴ３０２；Ｎｏ）、当該元データＤに対する再帰的処理を終了し、連結部１９に送信し、ステップＳＴ３０９に進む。なお、ここではｋ＝２におけるｋ―匿名化を想定しているため、元データＤは、分割可能と判定される。
【０１２９】
分割度合算出部１５は、受信した元データＤについて、属性毎の分割度合Ｐｉを算出する（ＳＴ３０３）。
【０１３０】
分割度合算出部１５は、元データＤにおける属性値の範囲を算出すると、当該属性値の範囲を記憶部２２に記憶する。また、分割度合算出部１５は、元データＤを種類数算出部１２に送信し、算出した分割度合Ｐｉを属性決定部１６に送信する。
【０１３１】
種類数算出部１２は、受信した元データＤについて、当該元データＤ内の属性毎に、異なる属性値の種類数Ｃｉを算出する（ＳＴ３０４）。なお、種類数算出部１２は、分割する際に着目する属性Ａを決定する前に、属性毎の属性値の種類数Ｃｉを算出する。
【０１３２】
また、種類数算出部１２は、算出した種類数Ｃｉに基づき、ソート優先順位及び属性決定優先順位を算出し、これらを関連付けてソート部１３及び属性決定部１６に送信する。種類数算出部１２は、元データＤをソート部１３に更に送信する。
【０１３３】
ソート部１３は、受信した元データＤと、種類数Ｃｉ及びソート優先順位とに基づき、元データＤをソートし、ソートデータＤ３を得る（ＳＴ３０５）。
【０１３４】
ソート部１３は、得られたソートデータＤ３を属性決定部１６に送信する。
【０１３５】
属性決定部１６は、受信した分割度合Ｐｉ及びソートデータＤ３と、更に種類数Ｃｉとに基づき、分割する際に着目する属性Ａを決定する（ＳＴ３０６）。具体的には、属性決定部１６は、図８に示すステップＳＴ２０１−ＳＴ２０３に従って、着目する属性Ａを決定する。ここでは、ステップＳＴ２０１−２０３については、上述の動作例と同様であるため、説明を省略する。なお、ソートデータＤ３が入力された場合、属性決定部１６は、分割度合が最大となる属性が複数存在するためステップＳＴ２０２に進み、当該分割度合が最大となる属性のうち種類数が最小の属性である「性別」を着目する属性Ａに決定する。
【０１３６】
属性決定部１６は、着目する属性Ａである「性別」と、ソートデータＤ３とを分割基準値決定部１７に送信する。
【０１３７】
分割基準値決定部１７は、着目する属性Ａである「性別」を受信し、ソートデータＤ３の「性別」について再度ソートを実施し、ソートデータＤｆを得る。分割基準値決定部１７は、ソートデータＤｆに基づき、分割基準値Ｓを決定する（ＳＴ３０７）。具体的には、分割基準値決定部１７は、ソートデータＤｆのレコード数“１６”の中央値である“８．５”を分割基準値Ｓとして決定する。
【０１３８】
分割基準値決定部１７は、着目する属性「性別」について決定した分割基準値“８．５”とソートデータＤｆとを分割部１８に送信する。
【０１３９】
分割部１８は、受信した分割基準値“８．５”に基づき、ソートデータＤｆを２つのグループに分割し、分割データＤＲ，ＤＬを得る（ＳＴ３０８）。
【０１４０】
分割部１８は、分割して得られた各分割データＤＲ，ＤＬを、それぞれ制御部１４に送信する。
【０１４１】
以下、各分割データＤＲ，ＤＬに関する再帰的処理に係るステップ（ＳＴ３０２−ＳＴ３０８）は、上述と同様の動作となるため、説明を省略する。また、再帰的処理が終了した後のステップ（ＳＴ３０９−ＳＴ３１１）は、実施形態におけるステップ（ＳＴ１０９−ＳＴ１１１）と同様の動作となるため、説明を省略する。
【０１４２】
このように、この変形例では、種類数算出部１２及びソート部１３による処理が、制御部１４によって再帰的に処理するように制御されている。
【０１４３】
これにより、再帰的処理毎に種類数を算出し、当該再帰的処理毎に算出した種類数に基づいてソートを実施することができ、データをｋ―匿名化する際に、情報損失量を低減することができる。
【０１４４】
なお、上記の実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フロッピー（登録商標）ディスク、ハードディスク等）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤ等）、光磁気ディスク（ＭＯ）、半導体メモリ等の記憶媒体に格納して頒布することができる。
【０１４５】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であってもよい。
【０１４６】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワークソフト等のＭＷ（ミドルウェア）等が上記実施形態を実現するための各処理の一部を実行してもよい。
【０１４７】
さらに、実施形態における記憶媒体は、コンピュータと独立した媒体に限らず、ＬＡＮやインターネット等により伝送されたプログラムをダウンロードして記憶又は一時記憶した記憶媒体も含まれる。
【０１４８】
また、実施形態における記憶媒体は１つに限らず、複数の媒体から上記の実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であってもよい。
【０１４９】
なお、実施形態におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記の実施形態における各処理を実行するものであって、パソコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であってもよい。
【０１５０】
また、実施形態におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【０１５１】
なお、本発明の実施形態を説明したが、この実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。この実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１５２】
１…匿名化装置、１１…入力部、１２…種類数算出部、１３…ソート部、１４…制御部、１５…分割度合算出部、１６…属性決定部、１７…分割基準値決定部、１８…分割部、１９…連結部、２０…匿名化部、２１…出力部、２２…記憶部、１００ａ…匿名化対象情報、１００ｂ，１００ｃ…属性項目情報、１００ｄ，１００ｅ…対応数値情報。
【図１】
2016110399.tif 000004
【図２】
2016110399.tif 000005
【図３】
2016110399.tif 000006
【図４】
2016110399.tif 000007
【図５】
2016110399.tif 000008
【図６】
2016110399.tif 000009
【図７】
2016110399.tif 000010
【図８】
2016110399.tif 000011
【図９】
2016110399.tif 000012
【図１０】
2016110399.tif 000013
【図１１】
2016110399.tif 000014
【図１２】
2016110399.tif 000015
【図１３】
2016110399.tif 000016
【図１４】
2016110399.tif 000017
【図１５】
2016110399.tif 000018
【図１６】
2016110399.tif 000019
【図１７】
2016110399.tif 000020
【図１８】
2016110399.tif 000021
【図１９】
2016110399.tif 000022
【図２０】
2016110399.tif 000023
【図２１】
2016110399.tif 000024
【図２２】
2016110399.tif 000025
【図２３】
2016110399.tif 000026
【図２４】
2016110399.tif 000027
【図２５】
2016110399.tif 000028
【図２６】
2016110399.tif 000029
【図２７】
2016110399.tif 000030