(57)【要約】      （修正有）【課題】数値データの匿名化前後におけるデータ品質の劣化を抑制する。【解決手段】匿名化サーバ１００は、一般化階層の第１階層の作成処理において、第１階層の一つ下の階層である第０階層に含まれる第１ノードと、数値の大小関係において第１ノードに隣接するノードそれぞれと、の組み合わせを生成し、生成した組み合わせそれぞれに対して、当該組み合わせのノードを統合したノードを当該組み合わせのノードそれぞれに対応する第１階層のノードに決定した場合における第１階層を用いて匿名化された数値データの統計指標と、数値データの統計指標と、の乖離を算出し、算出した乖離が最小である組み合わせのノードを統合したノードを、当該組み合わせのノードそれぞれに対応する第１階層のノードに決定する。【選択図】図１
2016184213.tif 000002
【特許請求の範囲】
【請求項１】
複数の数値を含む数値データを保持する数値データ匿名化サーバが、前記数値データを匿名化する方法であって、
前記数値データ匿名化サーバは、プログラムを実行するプロセッサと、前記プロセッサがアクセスするメモリと、を有し、
前記方法は、
前記プロセッサが、前記数値データに含まれる数値に基づいて、複数の階層からなる一般化階層を作成し、
前記プロセッサが、前記一般化階層を用いて、前記数値データを匿名化し、
前記一般化階層の第１階層の作成処理において、
前記第１階層の一つ下の階層である第０階層に含まれる第１ノードと、数値の大小関係において前記第１ノードに隣接するノードそれぞれと、の組み合わせを生成し、
前記生成した組み合わせそれぞれに対して、当該組み合わせのノードを統合したノードを当該組み合わせのノードそれぞれに対応する前記第１階層のノードに決定した場合における前記第１階層を用いて匿名化された前記数値データの統計指標と、前記数値データの統計指標と、の乖離を算出し、
前記算出した乖離が最小である組み合わせのノードを統合したノードを、当該組み合わせのノードそれぞれに対応する前記第１階層のノードに決定する、方法。
【請求項２】
請求項１に記載の方法であって、
前記統計指標は、平均値であり、
前記方法は、
前記プロセッサが、前記生成した組み合わせそれぞれに対する前記乖離を、下記数式を用いて算出し、
【数１】
2016184213.tif 000004
上記数式における、Ａは当該組み合わせに対する前記乖離、ｎは当該組み合わせのノードに対応する数値の前記数値データにおける合計頻度、Ｖは当該組み合わせのノードに含まれる数値の最小値と最大値の平均値、ｌｉは当該組み合わせのノードそれぞれの子孫ノードである葉ノードに対応する数値、Ｒは前記数値データのレコード数である、方法。
【請求項３】
請求項１に記載の方法であって、
前記プロセッサが、
前記第１階層の作成処理において、
前記第１ノードと、数値の大小関係において前記第１ノードに隣接するノードの一方と、の第１組み合わせに対して、前記乖離を算出し、
前記算出した乖離が閾値以下である場合、
前記第１ノードと、前記第１ノードに隣接するノードの他方と、の第２組み合わせに対する前記乖離を算出せず、
前記第１組み合わせのノードを統合したノードを、前記第１組み合わせのノードそれぞれに対応する前記第１階層のノードに決定する、方法。
【請求項４】
請求項１に記載の方法であって、
前記プロセッサが、
前記一般化階層の階層を最下の階層から順に１階層ずつ作成する作成処理を、ルートノードを示す階層を作成するまで繰り返し、
重複を除いた前記数値データを、前記一般化階層の最下の階層に決定し、
前記最下の階層以外の各階層の作成処理において、当該階層を前記第１階層とする、方法。
【請求項５】
複数の数値を含む数値データを匿名化する、数値データ匿名化サーバであって、
プロセッサと、記憶装置と、を備え、
前記記憶装置は、前記数値データを保持し、
前記プロセッサは、
前記数値データに含まれる数値に基づいて、複数の階層からなる一般化階層を作成し、
前記一般化階層を用いて、前記数値データを匿名化し、
前記一般化階層の第１階層の作成において、
前記第１階層の１つ下の階層である第０階層に含まれる第１ノードと、数値の大小関係において前記第１ノードに隣接するノードそれぞれと、の組み合わせそれぞれに対して、前記数値データの統計指標と、当該組み合わせのノードを統合したノードを当該組み合わせのノードそれぞれに対応する前記第１階層のノードに決定した場合における前記第１階層を用いて匿名化された前記数値データの統計指標と、の乖離を算出し、
前記算出した乖離が最小である第１組み合わせのノードを統合したノードを、前記第１組み合わせのノードそれぞれに対応する前記第１階層のノードに決定する、数値データ匿名化サーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、数値データを匿名化する方法及び数値データ匿名化サーバに関する。
【背景技術】
【０００２】
近年、安価なサービスや情報を集約化するため、クラウドコンピューティングが急速に普及している。しかし、クラウドコンピューティングにおけるセキュリティやプライバシーに対する配慮はまだ必ずしも十分とはいえない状況である。
【０００３】
個人を特定不可能な匿名情報の匿名性を評価する指標としてｋ−匿名性がある。本技術分野の背景技術として、国際公開第２０１１／１４５４０１号（特許文献１）がある。この公報には、「各個人の情報は複数の属性に対する該個人の属性値を含む。この属性値を曖昧化することで匿名化を達成するが、属性値の曖昧化対象をその曖昧さの程度によって木構造で表現したものを一般化階層木と呼ぶ。本個人情報匿名化装置は、属性値の頻度情報を用いて木を構成することで自動的な構成を達成する。また、損失情報量計量手段を定義することで、一般化階層木を用いて、２つの匿名データ間、または匿名化途中のデータ間の情報量損失を定量的に判定する。」と記載されている（要約参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２０１１／１４５４０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載の技術は、匿名化対象データの各属性について、Ｈｕ−Ｔｕｃｋｅｒ符号木を作成し、Ｈｕ−Ｔｕｃｋｅｒ符号木が示す一般化階層を用いて各属性の属性値を一般化することにより、ｋ−匿名化を実行する。Ｈｕ−Ｔｕｃｋｅｒ符号木は、属性値の頻度情報と順序情報とから生成される。しかし、Ｈｕ−Ｔｕｃｋｅｒ符号木の作成において、属性値そのものは考慮されていない。従って、特許文献１に記載の技術がＨｕ−Ｔｕｃｋｅｒ符号木を用いて一般化した属性値から算出される統計指標は、一般化前の属性値の統計指標と著しく乖離するおそれがある。即ち、特許文献１に記載の技術におけるｋ−匿名化によって、データ品質が著しく劣化するおそれがある。
【課題を解決するための手段】
【０００６】
上記課題を解決するため、本発明の一態様は、例えば、以下の構成を採用する。複数の数値を含む数値データを保持する数値データ匿名化サーバが、前記数値データを匿名化する方法であって、前記数値データ匿名化サーバは、プログラムを実行するプロセッサと、前記プロセッサがアクセスするメモリと、を有し、前記方法は、前記プロセッサが、前記数値データに含まれる数値に基づいて、複数の階層からなる一般化階層を作成し、前記プロセッサが、前記一般化階層を用いて、前記数値データを匿名化し、前記一般化階層の第１階層の作成処理において、前記第１階層の一つ下の階層である第０階層に含まれる第１ノードと、数値の大小関係において前記第１ノードに隣接するノードそれぞれと、の組み合わせを生成し、前記生成した組み合わせそれぞれに対して、当該組み合わせのノードを統合したノードを当該組み合わせのノードそれぞれに対応する前記第１階層のノードに決定した場合における前記第１階層を用いて匿名化された前記数値データの統計指標と、前記数値データの統計指標と、の乖離を算出し、前記算出した乖離が最小である組み合わせのノードを統合したノードを、当該組み合わせのノードそれぞれに対応する前記第１階層のノードに決定する、方法。
【発明の効果】
【０００７】
本発明の一態様によれば、匿名化によるデータ品質の劣化を抑制することができる。
【０００８】
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【０００９】
【図１】実施例１における匿名化サーバの構成例を示すブロック図である。
【図２】実施例１における匿名化対象データの一例である。
【図３】実施例１における一般化階層データの一例である。
【図４】実施例１における匿名化結果データの一例である。
【図５】実施例１におけるｋ−匿名化の全体処理の一例を示すフローチャートである。
【図６】実施例１における数値型準識別子の一般化階層作成処理の一例を示すフローチャートである。
【図７】従来手法における年齢階層データの一例である。
【図８】実施例１の一般化階層を用いた数値型準識別子の匿名化と、従来の一般化階層を用いた数値型準識別子の匿名化と、の比較の一例を示す図である。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照して本発明の実施形態を説明する。本実施形態の匿名化サーバは、数値で示される準識別子の一般化階層を、匿名化前後の当該準識別子の統計指標間の乖離を小さくするよう作成する。匿名化サーバは、当該一般化階層を用いて当該準識別子に含まれる値を匿名化することにより、匿名化によるデータ品質の劣化を抑制することができる。
【実施例１】
【００１１】
図１は、本実施例の匿名化サーバの構成例を示す。本実施例の匿名化サーバ１００は、プロセッサ（ＣＰＵ）１０１、メモリ１０２、補助記憶装置１０３及び通信インターフェース１０４を有する計算機によって構成される。
【００１２】
プロセッサ１０１は、メモリ１０２に格納されたプログラムを実行する。メモリ１０２は、不揮発性の記憶素子であるＲＯＭ及び揮発性の記憶素子であるＲＡＭを含む。ＲＯＭは、不変のプログラム（例えば、ＢＩＯＳ）などを格納する。ＲＡＭは、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような高速かつ揮発性の記憶素子であり、プロセッサ１０１が実行するプログラム及びプログラムの実行時に使用されるデータを一時的に格納する。
【００１３】
補助記憶装置１０３は、例えば、磁気記憶装置（ＨＤＤ）、フラッシュメモリ（ＳＳＤ）等の大容量かつ不揮発性の記憶装置であり、プロセッサ１０１が実行するプログラム及びプログラムの実行時に使用されるデータを格納する。すなわち、プログラムは、補助記憶装置１０３から読み出されて、メモリ１０２にロードされて、プロセッサ１０１によって実行される。
【００１４】
匿名化サーバ１００は、入力インターフェース１０５及び出力インターフェース１０８を有してもよい。入力インターフェース１０５は、キーボード１０６やマウス１０７などが接続され、オペレータからの入力を受けるインターフェースである。出力インターフェース１０８は、ディスプレイ装置１０９やプリンタなどが接続され、プログラムの実行結果をオペレータが視認可能な形式で出力するインターフェースである。
【００１５】
通信インターフェース１０４は、所定のプロトコルに従って、他の装置との通信を制御するネットワークインターフェース装置である。また、通信インターフェース１０４は、例えば、ＵＳＢ等のシリアルインターフェースを含む。
【００１６】
プロセッサ１０１が実行するプログラムは、リムーバブルメディア（ＣＤ−ＲＯＭ、フラッシュメモリなど）又はネットワークを介して匿名化サーバ１００に提供され、非一時的記憶媒体である不揮発性の補助記憶装置１０３に格納される。このため、匿名化サーバ１００は、リムーバブルメディアからデータを読み込むインターフェースを有するとよい。
【００１７】
匿名化サーバ１００は、物理的に一つの計算機上で、又は、論理的又は物理的に構成された複数の計算機上で構成される計算機システムであり、同一の計算機上で別個のスレッドで動作してもよく、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。
【００１８】
プロセッサ１０１は、匿名化対象データ取込部１１１、一般化階層作成部１１２、統計指標計算部１１３、ｋ−匿名化実行部１１４、及びｋ−匿名化結果出力部１１５を含む。例えば、プロセッサ１０１は、メモリ１０２にロードされた匿名化対象データ取込プログラムに従って動作することで、匿名化対象データ取込部１１１として機能し、メモリ１０２にロードされた一般化階層作成プログラムに従って動作することで、一般化階層作成部１１２として機能する。プロセッサ１０１に含まれる他の部についても同様である。
【００１９】
匿名化対象データ取込部１１１は、通信インターフェース１０４又は入力インターフェース１０５を介して、匿名化対象データ１２１を取り込み、取り込んだデータを匿名化対象データ１２１として補助記憶装置１０３に格納する。一般化階層作成部１１２は、匿名化対象データ１２１の準識別子それぞれに対して、ｋ−匿名化のための一般化階層を作成する。一般化階層は、例えば木構造で与えられ、匿名化前後のデータ値の関係を階層的に示す。一般化階層作成部１１２は、作成した一般化階層それぞれを示す情報を、一般化階層データ１２２として補助記憶装置１０３に格納する。
【００２０】
ｋ−匿名化実行部１１４は、一般化階層データ１２２を参照して、匿名化対象データ１２１をｋ−匿名化し、ｋ−匿名化したデータを匿名化結果データ１２３として補助記憶装置１０３に格納する。ｋ−匿名化結果出力部１１５は、例えば、出力インターフェース１０８を介してディスプレイ装置１０９に、又は通信インターフェース１０４を介して他の装置等に、匿名化結果データ１２３を出力する。
【００２１】
補助記憶装置１０３は、匿名化対象データ１２１、一般化階層データ１２２、及び匿名化結果データ１２３を保持する。匿名化対象データ１２１は、ｋ−匿名化の対象となる元データである。一般化階層データ１２２は、匿名化対象データ１２１に含まれる準識別子それぞれを一般化する階層を示すデータである。なお、準識別子とは、他の準識別子と組み合わせることによって間接的に個人を識別できる情報である。これに対して、識別子とは、識別子単体で直接的に個人を識別できる情報である。匿名化結果データ１２３は、一般化階層データ１２２に基づいて、ｋ−匿名化された匿名化対象データ１２１である。
【００２２】
なお、本実施形態において、匿名化サーバ１００が使用する情報は、データ構造に依存せずどのようなデータ構造で表現されていてもよい。例えば、テーブル、リスト、データベース又はキューから適切に選択したデータ構造体が、情報を格納することができる。なお、後述する図３から図６では、補助記憶装置１０３が保持する各データがテーブル構造で表現されている例を示す。
【００２３】
図２は、匿名化対象データ１２１の例を示す。匿名化対象データ１２１は、１種類以上の準識別子を含む。図２の例では、匿名化対象データ１２１は、いずれも準識別子である、年齢１２１０、及び住所１２１１を含む。年齢１２１０は、当該レコードに対応する個人の年齢を格納する。住所１２１１は、当該レコードに対応する個人の住所を格納する。
【００２４】
なお、匿名化対象データ１２１に含まれる準識別子は、図２の例に限られず任意でよい。また、匿名化対象データ１２１は、１種類以上の識別子をさらに含んでもよい。このとき、例えば、匿名化対象データ１２１は各カラムが識別子であるか準識別子であるかを示す情報を含む。また匿名化対象データ１２１は、複数のテーブルからなってもよい。
【００２５】
図３は、一般化階層データ１２２の例を示す。一般化階層データ１２２は、匿名化対象データ１２１に含まれる各準識別子における、木構造で表された一般化階層を示す情報である。図３は、図２の匿名化対象データ１２１に含まれる準識別子に対応する一般化階層データ１２２の例である。
【００２６】
一般化階層データ１２２は、年齢階層データ１２２０、及び住所階層データ１２２４を含む。年齢階層データ１２２０は、年齢１２１０の木構造で表された一般化階層を示す。年齢階層データ１２２０は、第０階層１２２１、第１階層１２２２、及びルートノード１２２３を含む。
【００２７】
第０階層１２２１は、当該木構造における最下の階層であり、第０階層１２２１の各ノードは当該木構造における葉ノードである。第０階層１２２１の葉ノードそれぞれは、年齢１２１０に含まれる重複を除く値それぞれに対応する。
【００２８】
第１階層１２２２は、当該木構造における第０階層１２２１の一つ上の階層である。第１階層１２２２の各ノードは、第０階層１２２１の対応するノードの親ノードであり、当該対応するノードと同一のノード、又は当該対応するノードと当該対応するノードに隣接するノードの一方とが統合されたノードである。つまり、第０階層１２２１のノードに含まれる値は、第１階層１２２２の対応するノードに含まれる。第１階層１２２２の各ノードは、第０階層１２２１の対応するノードと比較して、匿名化の程度が同一又は高い。
【００２９】
ルートノード１２２３は、当該木構造における最上の階層であり、ルートノード１２２３の各ノードは、第０階層１２２１の全てのノードが統合されたノードである。つまり、ルートノード１２２３の各ノードは、他階層のノードに含まれる全ての値を含む最も抽象的な概念である。なお、例えば、年齢１２１０に含まれる値の種類数に応じて、年齢階層データ１２２０の階層の数は増加する。
【００３０】
住所階層データ１２２４は、住所１２１１の木構造で表された一般化階層を示す。住所階層データ１２２４は、第０階層１２２５、第１階層１２２６、及びルートノード１２２７を含む。住所階層データ１２２４の各カラムについては、年齢階層データ１２２０の各カラムと同様であるため、説明を省略する。
【００３１】
なお、年齢階層データ１２２０において、例えば、「２０〜２５」のように範囲表示されたノードは、年齢が２０歳以上かつ２５歳以下であることを示す。また、住所階層データ１２２４において、例えば、「神奈川県；東京都；沖縄県」のように複数の値が「；」で区切られて記載されたノードは、住所が神奈川県、東京都、又は沖縄県であることを示す。
【００３２】
図４は、匿名化結果データ１２３の例を示す。匿名化結果データ１２３は、ｋ−匿名化された匿名化対象データ１２１である。図４は、図２の匿名化対象データ１２１がｋ−匿名化された例を示す。
【００３３】
匿名化結果データ１２３に含まれる準識別子それぞれは、一般化階層データ１２２に含まれる当該準識別子に対応する階層データに基づいて、ｋ−匿名化された準識別子である。図４の例では、匿名化結果データ１２３は、年齢１２３０、及び住所１２３１を含む。年齢１２３０は、年齢階層データ１２２０に基づいて、ｋ−匿名化された年齢１２１０である。住所１２３１は、住所階層データ１２２４に基づいてｋ−匿名化された住所１２１１である。
【００３４】
図５は、本実施例の匿名化サーバ１００が匿名化対象データ１２１をｋ−匿名化する処理の一例を示す。まず匿名化対象データ取込部１１１は、例えば、入力インターフェース１０５又は通信インターフェース１０４を介して、匿名化対象データ１２１を取り込み、補助記憶装置１０３に格納する（Ｓ５０１）。続いて、一般化階層作成部１１２は、匿名化対象データ１２１のレコード件数を算出する（Ｓ５０２）。
【００３５】
続いて、一般化階層作成部１１２は、匿名化対象データ１２１に含まれる各準識別子について、一般化階層を作成する（Ｓ５０３）。準識別子のうち、例えば、順序尺度であり、数値で示される準識別子（図２の例における年齢１２１０）、における一般化階層作成方法については、図６を用いて後述する。また、例えば、数値で示される全ての準識別子について図６の一般化階層作成方法を適用してもよい。以下、図６の一般化階層作成方法の適用対象となる準識別子を数値型準識別子と称する。なお、匿名化サーバ１００は、各準識別子が数値型準識別子か否かについての情報を保持しているものとする。当該情報は、例えば、匿名化対象データ１２１に含まれていてもよいし、別のデータとして補助記憶装置１０３に格納されていてもよい。
【００３６】
一般化階層作成部１１２は、数値型準識別子以外の準識別子それぞれ（図２の例における住所１２１１）に対して、例えば、当該準識別子に含まれる値の頻度情報からＨｕ−Ｔｕｃｋｅｒ符号木を構成して、これを一般化階層とする。
【００３７】
続いて、ｋ−匿名化実行部１１４は、一般化階層データ１２２を参照し、例えば、予め定められた匿名化プランに基づいて、匿名化対象データ１２１のカラムそれぞれに対して、オペレータ等が指定したｋを満たすｋ−匿名化を実行する（Ｓ５０４）。ｋ−匿名化プランは、準識別子に含まれる値を匿名化するための処理を示す。
【００３８】
以下、ステップＳ５０４のｋ−匿名化実行処理の具体例について述べる。ｋ−匿名化実行部１１４は、例えば、一般化階層データ１２２に含まれる全ての階層データの、ルートノードと、各階層の葉ノード以外のノードと、からなるノードリストを作成する。ｋ−匿名化実行部１１４は、ノードリストのノードを、当該ノードを用いて匿名化対象データ１２１の値を一般化した場合における情報損失量が小さい順に、ソートする。例えば、ノードに属する匿名化対象データ１２１の値の頻度が小さいほど、当該ノードを用いて匿名化対象データ１２１の値を一般化した場合における情報損失量が小さい。
【００３９】
ｋ−匿名化実行部１１４は、例えば、ノードリストから情報損失量が最小のノードを選択し、空の選択済みノードリストに追加する。ｋ−匿名化実行部１１４は、選択済みノードリストのノードを用いて匿名化対象データ１２１の値を一般化した匿名化結果がｋを満たすか否かを判定する。匿名化結果がｋを満たす場合、匿名化結果を匿名化結果データ１２３として補助記憶装置１０３に格納する。
【００４０】
匿名化結果がｋを満たさない場合、ｋ−匿名化実行部１１４は、ノードリストに含まれる未選択のノードから、情報損失量が最小のノードを選択し、選択済みノードリストに追加し、新たな選択済みノードリストに基づいて、上述したｋを満たすか否かの判定を行う。匿名化結果がｋを満たすまで、同様の処理を繰り返す。なお、選択済みノードリストに親子関係にあるノードが含まれる場合、ｋ−匿名化実行部１１４は、階層が最も高いノードを用いて匿名化対象データ１２１の値を一般化する。
【００４１】
なお、匿名化対象データ１２１に識別子が含まれる場合、例えば、ｋ−匿名化実行部１１４は、識別子を削除する又は識別子の各値を別の値に置換する、等の処理を行う。
【００４２】
続いて、ｋ−匿名化結果出力部１１５は、匿名化結果データ１２３を、例えば、ディスプレイ装置１０９、他の計算機等に出力する（Ｓ５０５）。
【００４３】
図６は、一般化階層作成部１１２が、各数値型準識別子における一般化階層を作成する処理の一例を示す。一般化階層作成部１１２は、匿名化対象データ１２１に含まれる数値型準識別子それぞれに対して、ステップＳ６０２〜ステップＳ６０６からなるループを開始する（Ｓ６０１）。一般化階層作成部１１２は、当該数値型準識別子に含まれる各値の頻度を取得し、重複を削除した値を昇順にソートする（Ｓ６０２）。一般化階層作成部１１２は、ソート結果を当該数値型準識別子の階層データにおける第０階層に決定する。
【００４４】
一般化階層作成部１１２は、当該数値型準識別子の階層データにおけるルートノードを作成するまで、即ち第０階層の全てのノードが統合されたノードを作成するまで、階層データの最上位の階層のノードについて、ステップＳ６０４〜ステップＳ６０５からなるループを開始する（Ｓ６０３）。
【００４５】
一般化階層作成部１１２は、当該階層の一部又は全部のノードそれぞれについて、隣接するノードそれぞれとの組み合わせにおける統計指標の乖離Ａを算出する（Ｓ６０４）。統計指標の乖離Ａは、匿名化前の当該数値型準識別子の統計指標と、当該隣接するノードを統合したノードで当該数値型準識別子の値を匿名化した匿名化結果データの統計指標と、の乖離を示す。
【００４６】
以下の数式（１）は、統計指標が平均値である場合の、隣接する２つのノードの組み合わせにおける統計指標の乖離Ａの算出式である。
【００４７】
【数１】
2016184213.tif 000003
【００４８】
数式（１）における、ｎは当該組み合わせのノードに属する値の合計頻度、ｌｉは当該組み合わせのノードそれぞれに対応する匿名化対象データ１２１の値、Ｖは当該組み合わせのノードに含まれる値の最小値と最大値の平均値、Ｒは匿名化対象データ１２１のレコード数である。例えば、組み合わせのノードそれぞれが「５」、「１０」である場合、当該組み合わせのノードに含まれる最小値は「５」、最大値は「１０」であるため、Ｖ＝（５＋１０）／２＝７．５である。組み合わせのノードそれぞれが「１〜５」、「６〜１０」である場合、当該組み合わせのノードに含まれる最小値は「１」、最大値は「１０」であるため、Ｖ＝（１＋１０）／２＝５．５である。
【００４９】
また、例えば、組み合わせのノードそれぞれが「５」、「６〜１０」である場合を考える。このとき、さらに匿名化対象データ１２１の当該数値型準識別子が、「５」に対応する値として「５」を、「６〜１０」に対応する値として「６」、「８」、「１０」を含み、かつ「５」、「６」、「８」、「１０」の頻度それぞれが「３」、「１」、「２」、「１」である場合、ｎ＝３＋１＋２＋１＝７、ｌ１＝５、ｌ２＝５、ｌ３＝５、ｌ４＝６、ｌ５＝８、ｌ６＝８、ｌ７＝１０である。
【００５０】
続いて、一般化階層作成部１１２は、統計指標の乖離Ａが最小である組み合わせのノードを統合したノードを、当該組み合わせのノードそれぞれに対応する１つ上の階層のノード、即ち親ノードに決定し、当該組み合わせのノードそれぞれの頻度の和を、当該親ノードの頻度とする（Ｓ６０５）。一般化階層作成部１１２は、当該組み合わせ以外のノードについては、例えば、当該ノードと同一のノードを当該ノードに対応する１つ上の階層のノードに決定する。
【００５１】
なお、統計指標の乖離Ａが最小である複数の組み合わせが存在する場合、例えば、一般化階層作成部１１２は、当該複数の組み合わせから選択した１つの組み合わせのノードを統合する。一般化階層作成部１１２は、当該選択において、例えば、ランダムに１つの組み合わせを選択してもよいし、当該複数の組み合わせに含まれる値の最大値又は最小値が、最大又は最小の組み合わせを選択してもよい。
【００５２】
なお、一般化階層作成部１１２は、統計指標の乖離Ａの算出の過程において、ある組み合わせにおける統計指標の乖離Ａが、所定の閾値以下であると判定した場合、当該組み合わせのノードを統合し、その他の組み合わせにおけるＡの算出を中止してもよい。これにより、一般化階層作成部１１２は、匿名化前後の統計指標の乖離を低減しつつ、演算量を削減することができる。当該所定の閾値が０である場合、匿名化前後の統計指標の乖離を特に低減することができる。
【００５３】
続いて、一般化階層作成部１１２は、ルートノードを作成したら、当該数値型準識別子における階層データ作成を終了する（Ｓ６０６）。ルートノードが作成されていない場合、一般化階層作成部１１２は、最上位の階層についてステップＳ６０４〜ステップＳ６０５の処理を行う。
【００５４】
一般化階層作成部１１２は、全ての数値型準識別子における階層データを作成したら、一般化階層作成処理を終了する（Ｓ６０７）。階層データが作成されていない数値型準識別子が存在する場合、一般化階層作成部１１２は、階層データが作成されていない数値型準識別子に対して、ステップＳ６０２〜ステップＳ６０６の処理を行う。
【００５５】
以下、一般化階層作成部１１２が、匿名化対象データ１２１の年齢１２１０から年齢階層データ１２２０を作成する処理（ステップＳ６０２〜ステップＳ６０６に相当）の例を説明する。統計指標が平均値である例を示す。一般化階層作成部１１２は、年齢１２１０に含まれる値「２５」、「５」、「２０」それぞれの頻度「３」、「２」、「１」を取得する。一般化階層作成部１１２は、年齢１２１０に含まれる値を昇順に即ち「５」、「２０」、「２５」の順にソートし、ソート結果を第０階層１２２１とする。
【００５６】
一般化階層作成部１１２は、隣接するノードである「５」と「２０」との組み合わせの統計指標の乖離Ａ１、及び隣接するノードである「２０」と「２５」との組み合わせの統計指標の乖離Ａ２を算出する。
【００５７】
以下、Ａ１の算出処理を示す。Ｒ＝６、Ｖ＝（５＋２０）／２＝１２．５であるため、Ａ１＝｜｛（５−１２．５）＋（５−１２．５）＋（２０−１２．５）｝／６｜＝１．２５である。
【００５８】
以下、Ａ２の算出処理を示す。Ｒ＝６、Ｖ＝（２０＋２５）／２＝２２．５であるため、Ａ２＝｜｛（２０−２２．５）＋（２５−２２．５）＋（２５−２２．５）＋（２５−２２．５）｝／６｜＝０．８３３・・・である。
【００５９】
Ａ１＞Ａ２であるため、一般化階層作成部１１２は、「２０」と「２５」とを統合したノード「２０〜２５」を作成する。一般化階層作成部１１２は、作成したノード「２０〜２５」を、第０階層１２２１のノード「２０」と「２５」それぞれの親ノード、即ち「２０」と「２５」それぞれに対応する第１階層１２２２のノードに決定する。また、一般化階層作成部１１２は、統合の対象とならなかったノード「５」については、「５」自身を、第０階層１２２１の「５」に対応する第１階層１２２２のノードに決定する。
【００６０】
第１階層１２２２は、「５」と「２０〜２５」の２種類のノードからなるため、一般化階層作成部１１２は、これらを統合したノード「５〜２５」を、第１階層１２２２の全てのノードに対応するルートノード１２２３に決定する。
【００６１】
図７は、Ｈｕ−Ｔｕｃｋｅｒ符号木等の従来の手法を用いて作成された、図２の匿名化対象データ１２１の年齢１２１０に対する年齢階層データの一例である。年齢階層データ７００は、第０階層７０１、第１階層７０２、及びルートノード７０３を含む。従来の一般化階層作成処理においては、頻度が少ないノード同士が統合されて、上位階層のノードが作成される。値「５」、「２０」、「２５」の頻度は、それぞれ「２」、「１」、「３」であるため、第１階層７０２において「５」と「２０」が統合されている。この点において、年齢階層データ７００は本実施例の年齢階層データ１２２０と異なる。
【００６２】
図８は、本実施例の一般化階層を用いた数値型準識別子の匿名化と、従来の一般化階層を用いた数値型準識別子の匿名化と、の比較の一例を示す。具体的には、図８は、匿名化サーバ１００が年齢１２１０のみからなるデータにｋ＝２を満たすｋ−匿名化を、従来手法の年齢階層データ７００を用いて施した例と、本実施例の年齢階層データ１２２０を用いて施した例と、を示す。さらに、図８は、年齢１２１０の平均値及び分散と、ｋ−匿名化が施された結果データの平均値及び分散との乖離を、本実施例と従来手法との間で比較した例を示す。ここで、年齢１２１０の平均値は１７．５、分散は８１．２５である。
【００６３】
まず従来手法における年齢階層データ７００を用いたｋ−匿名化について述べる。ｋ−匿名化実行部１１４は、第１階層７０２を用いて年齢１２１０を匿名化することにより、ｋ＝２を満たすｋ−匿名化を実行することができる。ｋ−匿名化実行部１１４は、第１階層７０２を用いて、年齢１２１０に匿名化を施すことにより、結果データ８０２を得る。範囲変換後データ８０３は、結果データ８０２の範囲表示された値、即ち「５〜２０」を、結果データ８０２の平均値及び分散を算出するために、当該範囲の平均値１２．５に変換したデータである。
【００６４】
ここで、範囲変換後データ８０３の平均値は１８．７５、分散は３９．０６２５である。また、年齢１２１０と範囲変換後データ８０３とにおける、平均値の乖離は１．２５、分散の乖離は４２．１８７５である。
【００６５】
続いて本実施例の年齢階層データ１２２０を用いたｋ−匿名化について述べる。ｋ−匿名化実行部１１４は、第１階層１２２２を用いて年齢１２１０を匿名化することにより、ｋ＝２を満たすｋ−匿名化を実行することができる。ｋ−匿名化実行部１１４は、第１階層１２２２を用いて、年齢１２１０に匿名化が施すことにより、結果データ８０４を得る。範囲変換後データ８０５は、結果データ８０４の範囲表示された値、即ち「２０〜２５」を、結果データ８０４の平均値及び分散を算出するために、当該範囲の平均値２２．５に変換したデータである。
【００６６】
ここで、範囲変換後データ８０５の平均値は１６．６６６７、分散は６８．０５５６である。また、年齢１２１０と範囲変換後データ８０５とにおける、平均値の乖離は０．８３３３３、分散の乖離は１３．１９４４である。従って、本実施例における匿名化前後の平均値の乖離は、従来手法における匿名化前後の平均値の乖離よりも小さい。分散の乖離についても同様である。
【００６７】
以上、本実施例の匿名化サーバ１００は、数値型準識別子の一般化階層作成において、ｋ−匿名化前後における数値準識別子の統計指標の乖離を低減することができ、ひいてはｋ−匿名化によるデータ品質の劣化を抑制することができる。また、匿名化サーバ１００は、ｋ−匿名化前後の統計指標自体を算出することなく、統計指標の乖離を算出するため、少ない演算量でデータ品質の劣化を抑制することができる。
【００６８】
また、匿名化サーバ１００は、統計指標として平均値を用いることにより、重要な基本統計量の１つである平均値の、ｋ−匿名化前後における乖離を、少ない演算量で低減することができる。
【００６９】
また、既存の匿名化サーバにおける一般化階層の作成処理を、本実施例のステップＳ５０３に置き換えることにより、既存の匿名化サーバによるｋ−匿名化後のデータ品質を、低コストで向上させることができる。
【００７０】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることも可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【００７１】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【００７２】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【００７３】
１００  匿名化サーバ、１０１  プロセッサ、１０２  メモリ、１０３  補助記憶装置、１１１  匿名化対象データ取込部、１１２  一般化階層作成部、１１３  統計指標計算部、１１４  ｋ−匿名化実行部、１２１  匿名化対象データ、１２２  一般化階層データ、１２３  匿名化結果データ
【図１】
2016184213.tif 000005
【図２】
2016184213.tif 000006
【図３】
2016184213.tif 000007
【図４】
2016184213.tif 000008
【図５】
2016184213.tif 000009
【図６】
2016184213.tif 000010
【図７】
2016184213.tif 000011
【図８】
2016184213.tif 000012