IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特許7359063生成方法、生成プログラム、および生成装置
<>
  • 特許-生成方法、生成プログラム、および生成装置 図1
  • 特許-生成方法、生成プログラム、および生成装置 図2
  • 特許-生成方法、生成プログラム、および生成装置 図3
  • 特許-生成方法、生成プログラム、および生成装置 図4
  • 特許-生成方法、生成プログラム、および生成装置 図5
  • 特許-生成方法、生成プログラム、および生成装置 図6
  • 特許-生成方法、生成プログラム、および生成装置 図7
  • 特許-生成方法、生成プログラム、および生成装置 図8
  • 特許-生成方法、生成プログラム、および生成装置 図9
  • 特許-生成方法、生成プログラム、および生成装置 図10
  • 特許-生成方法、生成プログラム、および生成装置 図11
  • 特許-生成方法、生成プログラム、および生成装置 図12
  • 特許-生成方法、生成プログラム、および生成装置 図13
  • 特許-生成方法、生成プログラム、および生成装置 図14
  • 特許-生成方法、生成プログラム、および生成装置 図15
  • 特許-生成方法、生成プログラム、および生成装置 図16
  • 特許-生成方法、生成プログラム、および生成装置 図17
  • 特許-生成方法、生成プログラム、および生成装置 図18
  • 特許-生成方法、生成プログラム、および生成装置 図19
  • 特許-生成方法、生成プログラム、および生成装置 図20
  • 特許-生成方法、生成プログラム、および生成装置 図21
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-02
(45)【発行日】2023-10-11
(54)【発明の名称】生成方法、生成プログラム、および生成装置
(51)【国際特許分類】
   G06F 21/62 20130101AFI20231003BHJP
【FI】
G06F21/62 354
【請求項の数】 8
(21)【出願番号】P 2020062248
(22)【出願日】2020-03-31
(65)【公開番号】P2021163014
(43)【公開日】2021-10-11
【審査請求日】2022-12-08
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100104190
【弁理士】
【氏名又は名称】酒井 昭徳
(72)【発明者】
【氏名】小栗 秀暢
【審査官】平井 誠
(56)【参考文献】
【文献】特開2017-215868(JP,A)
【文献】特開2019-032814(JP,A)
【文献】特開2019-021198(JP,A)
【文献】国際公開第2019/168144(WO,A1)
【文献】特開2018-049437(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/62
(57)【特許請求の範囲】
【請求項1】
情報を匿名化する第1の匿名化モデルにより、複数の個人データに含まれる個人データを匿名化した結果に基づいて、前記複数の個人データのうち、匿名度合いが所定の基準を満たさない1以上の個人データを特定し、
特定した前記1以上の個人データに基づいて、情報を匿名化する第2の匿名化モデルを学習し、
特定した前記1以上の個人データに基づいて、前記1以上の個人データのそれぞれの個人データよりも匿名度合いが高い、1以上の匿名データを生成し、
学習した前記第2の匿名化モデルにより、生成した前記1以上の匿名データのそれぞれの匿名データを匿名化して得られた、新たな匿名データを出力する、
処理をコンピュータが実行することを特徴とする生成方法。
【請求項2】
前記第1の匿名化モデルにより、前記複数の個人データに含まれる個人データを匿名化した結果に基づいて、当該個人データの匿名度合いが、前記所定の基準を満たすか否かを判定する、
処理を前記コンピュータが実行し、
前記判定する処理は、
前記第1の匿名化モデルにより、前記複数の個人データに含まれる個人データを匿名化した結果に基づいて、当該個人データの匿名度合いが、前記所定の基準を満たすか否かを判定するにあたり、所定の確率で、前記所定の基準を満たさないと判定し、
前記特定する処理は、
判定した結果に基づいて、前記1以上の個人データを特定する、ことを特徴とする請求項1に記載の生成方法。
【請求項3】
前記判定する処理は、
前記第1の匿名化モデルにより、前記複数の個人データに含まれる個人データを匿名化した際に、当該個人データと同一または類似する値を含む、前記複数の個人データのうちの他の個人データの数が、所定の数以下であれば、前記所定の基準を満たさないと判定する、ことを特徴とする請求項2に記載の生成方法。
【請求項4】
前記第1の匿名化モデルは、前記個人データに含まれる値に、ランダムなノイズ値を加算して得られる匿名データを、1以上生成するモデルであり、
前記判定する処理は、
前記第1の匿名化モデルにより、前記複数の個人データに含まれる個人データを匿名化した際に、加算したノイズ値の代表値が、所定の閾値以下であれば、前記所定の基準を満たさないと判定する、ことを特徴とする請求項2または3に記載の生成方法。
【請求項5】
特定した前記1以上の個人データを、1以上のクラスタに分割する、
処理を前記コンピュータが実行し、
前記学習する処理は、
前記クラスタごとに、前記クラスタに分割した個人データに基づいて、前記クラスタに対応する前記第2の匿名化モデルを学習し、
前記生成する処理は、
前記クラスタごとに、前記クラスタに分割した個人データに基づいて、前記クラスタに分割した個人データのそれぞれよりも匿名度合いが高い、前記クラスタに対応する匿名データを生成し、
前記出力する処理は、
前記クラスタごとに、学習した前記クラスタに対応する前記第2の匿名化モデルにより、生成した前記クラスタに対応する前記匿名データを匿名化して得られた、新たな匿名データを出力する、ことを特徴とする請求項1~4のいずれか一つに記載の生成方法。
【請求項6】
特定した前記1以上の個人データのそれぞれの個人データに含まれる値に関する統計値を算出する、
処理を前記コンピュータが実行し、
前記生成する処理は、
特定した前記1以上の個人データのそれぞれの個人データに含まれる値を、算出した前記統計値に置換し、1以上の匿名データを生成する、ことを特徴とする請求項1~5のいずれか一つに記載の生成方法。
【請求項7】
情報を匿名化する第1の匿名化モデルにより、複数の個人データに含まれる個人データを匿名化した結果に基づいて、前記複数の個人データのうち、匿名度合いが所定の基準を満たさない1以上の個人データを特定し、
特定した前記1以上の個人データに基づいて、情報を匿名化する第2の匿名化モデルを学習し、
特定した前記1以上の個人データに基づいて、前記1以上の個人データのそれぞれの個人データよりも匿名度合いが高い、1以上の匿名データを生成し、
学習した前記第2の匿名化モデルにより、生成した前記1以上の匿名データのそれぞれの匿名データを匿名化して得られた、新たな匿名データを出力する、
処理をコンピュータに実行させることを特徴とする生成プログラム。
【請求項8】
情報を匿名化する第1の匿名化モデルにより、複数の個人データに含まれる個人データを匿名化した結果に基づいて、前記複数の個人データのうち、匿名度合いが所定の基準を満たさない1以上の個人データを特定し、
特定した前記1以上の個人データに基づいて、情報を匿名化する第2の匿名化モデルを学習し、
特定した前記1以上の個人データに基づいて、前記1以上の個人データのそれぞれの個人データよりも匿名度合いが高い、1以上の匿名データを生成し、
学習した前記第2の匿名化モデルにより、生成した前記1以上の匿名データのそれぞれの匿名データを匿名化して得られた、新たな匿名データを出力する、
制御部を有することを特徴とする生成装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、生成方法、生成プログラム、および生成装置に関する。
【背景技術】
【0002】
従来、プライバシーを保護するため、個人データ(PII: Personally Identifiable Information)を匿名化して出力する匿名化手法が存在する。例えば、個人データを加工して匿名データを生成した後、生成した匿名データに対し、プライバシーテストを実施し、元となる個人データに関して匿名性が確保されていると判断した場合にのみ、生成した匿名データを出力する匿名化手法が存在する。
【0003】
先行技術としては、例えば、第1のデータ群に含まれるデータについて、所定の関係を有するデータの数がN個以上である場合に、所定の関係を有する複数のデータを出力するものがある。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2014-016675号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来技術では、出力される匿名データの有用性が損なわれることがある。例えば、プライバシーテストを実施すると、複数の個人データのうち一部の個人データに基づいて生成した匿名データしか出力されないことがある。結果として、出力される複数の匿名データが、統計処理において好ましくないデータになってしまうことがある。具体的には、複数の個人データの特徴分布を示すヒストグラムと、出力される複数の匿名データの特徴分布を示すヒストグラムとが、類似しなくなってしまうことがある。
【0006】
1つの側面では、本発明は、有用な匿名データを得ることを目的とする。
【課題を解決するための手段】
【0007】
1つの実施態様によれば、情報を匿名化する第1の匿名化モデルにより、複数の個人データに含まれる個人データを匿名化した結果に基づいて、前記複数の個人データのうち、匿名度合いが所定の基準を満たさない1以上の個人データを特定し、特定した前記1以上の個人データに基づいて、情報を匿名化する第2の匿名化モデルを学習し、特定した前記1以上の個人データに基づいて、前記1以上の個人データのそれぞれの個人データよりも匿名度合いが高い、1以上の匿名データを生成し、学習した前記第2の匿名化モデルにより、生成した前記1以上の匿名データのそれぞれの匿名データを匿名化して得られた、新たな匿名データを出力する生成方法、生成プログラム、および生成装置が提案される。
【発明の効果】
【0008】
一態様によれば、有用な匿名データを得ることが可能になる。
【図面の簡単な説明】
【0009】
図1図1は、実施の形態にかかる生成方法の一実施例を示す説明図(その1)である。
図2図2は、実施の形態にかかる生成方法の一実施例を示す説明図(その2)である。
図3図3は、データ利活用システム300の一例を示す説明図である。
図4図4は、生成装置100のハードウェア構成例を示すブロック図である。
図5図5は、データ管理テーブル500の記憶内容の一例を示す説明図である。
図6図6は、生成装置100の機能的構成例を示すブロック図である。
図7図7は、生成装置100の第1の動作例を示す説明図である。
図8図8は、生成装置100の第2の動作例を示す説明図である。
図9図9は、生成装置100の第3の動作例を示す説明図である。
図10図10は、メンバーシップインクルージョン攻撃の一例を示す説明図である。
図11図11は、比較対象のヒストグラムの形状の第1の例を示す説明図(その1)である。
図12図12は、比較対象のヒストグラムの形状の第1の例を示す説明図(その2)である。
図13図13は、比較対象のヒストグラムの形状の第1の例を示す説明図(その3)である。
図14図14は、比較対象のヒストグラムの形状の第1の例を示す説明図(その4)である。
図15図15は、比較対象のヒストグラムの形状の第2の例を示す説明図(その1)である。
図16図16は、比較対象のヒストグラムの形状の第2の例を示す説明図(その2)である。
図17図17は、比較対象のヒストグラムの形状の第2の例を示す説明図(その3)である。
図18図18は、準備処理手順の一例を示すフローチャートである。
図19図19は、テスト処理手順の一例を示すフローチャートである。
図20図20は、分岐処理手順の一例を示すフローチャートである。
図21図21は、再利用処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下に、図面を参照して、本発明にかかる生成方法、生成プログラム、および生成装置の実施の形態を詳細に説明する。
【0011】
(実施の形態にかかる生成方法の一実施例)
図1および図2は、実施の形態にかかる生成方法の一実施例を示す説明図である。図1において、生成装置100は、個人データの匿名性を確保しつつ、個人データに基づいて匿名データを生成して出力するコンピュータである。
【0012】
従来では、個人データを加工することにより匿名データを生成して出力するにあたり、個人データの匿名性を確保するため、プライバシーテストが実施されることがある。例えば、プライバシーテストにより、個人データに関して匿名性が確保されていると判断した場合にのみ、個人データに基づいて生成した匿名データが出力されることになる。
【0013】
具体的には、個人データに対して、プライバシーテストを実施することにより、匿名データの有用性と、個人データの匿名性との基準を定める、(k,γ)PD(Plausible Deniability)と呼ばれる安全性指標が存在する。ここで、図2の説明に移行し、従来の(k,γ)PDが行う処理の流れについて説明する。
【0014】
図2において、(k,γ)PDは、個人データ群Dからランダムに選択した個人データdに対して、確率的な差分プライバシーアルゴリズムMを適用することにより、匿名データy=M(d)を生成する。(k,γ)PDは、生成した匿名データyに対して、プライバシーテストを実施する。プライバシーテストは、有用性要件を設定されてもよい。
【0015】
(k,γ)PDは、例えば、個人データ群Dの中に、個人データdと同一の属性値を含む他の個人データdがk以上(k>1)存在していれば、生成した匿名データyを、出力可能と判定し、リリースデータセットに追加する。一方で、(k,γ)PDは、例えば、個人データ群Dの中に、個人データdと同一の属性値を含む他の個人データdがk以上(k>1)存在していなければ、生成した匿名データyを、出力不能と判定して破棄する。
【0016】
また、(k,γ)PDは、パラメータkを推定する攻撃を防止するため、パラメータkに代わり、ランダム化されたパラメータk+Lap(1/ε0)を用いてもよい。Lap(・)は、ラプラス分布に基づく乱数発生メカニズムである。
【0017】
kは、個人データdと同一の属性値を有する他の個人データdが、いくつ以上存在することが、匿名性の観点から好ましいのかを示すパラメータである。kは、値が大きいほど、個人データdに対応する個人を特定されにくくすることができるという性質を有する。
【0018】
γは、確率的な差分プライバシーアルゴリズムMのパラメータである。γは、個人データdに対して確率的に与えるノイズ値を規定するパラメータである。γは、値が小さいほど、個人データdに対して与えるノイズ値を大きくすることができるという性質を有する。ノイズ値が小さいほど、匿名データyが、いずれの個人データdから生成されたのかが、識別される危険性が高くなる傾向がある。
【0019】
ε0は、kに対して与えるランダムなノイズ値を規定するパラメータである。ε0は、値が小さいほど、メンバーシップインクルージョン攻撃への耐性を強めることができるという性質を有する。メンバーシップインクルージョン攻撃の一例については、具体的には、図10を用いて後述する。
【0020】
また、(k,γ)PDについては、例えば、下記非特許文献1を参照することができる。また、(k,γ)PDの他、(k,δ)PDと呼ばれる安全性指標なども存在する。(k,δ)PDについては、例えば、下記非特許文献2を参照することができる。
【0021】
非特許文献1 : Bindschaedler, Vincent, Reza Shokri, and Carl A. Gunter. “Plausible deniability for privacy-preserving data synthesis.” arXiv preprint arXiv:1708.07975 (2017).
【0022】
非特許文献2 : Bindschaedler, Vincent, and Reza Shokri. “Synthesizing plausible privacy-preserving location traces.” 2016 IEEE Symposium on Security and Privacy (SP). IEEE, 2016.
【0023】
しかしながら、従来では、匿名データの有用性が損なわれることがある。例えば、プライバシーテストを実施すると、複数の個人データのうち一部の個人データに基づいて生成した匿名データしか出力されないことがある。結果として、出力される複数の匿名データが、統計処理において好ましくないデータになってしまうことがある。具体的には、複数の個人データの特徴分布を示すヒストグラムと、出力される複数の匿名データの特徴分布を示すヒストグラムとが、類似しなくなってしまうことがある。ヒストグラムについては、具体的には、図11図17を用いて後述する。
【0024】
より具体的には、(k,γ)PDにおいて、匿名データの有用性と、個人データの匿名性とを、バランスよく両立するよう、パラメータk,γ,ε0を調整することは難しい。ここで、(k,γ)PDにおいて、どのようにパラメータk,γ,ε0を調整しても、匿名データの有用性と、個人データの匿名性とのいずれかが損なわれる傾向がある。
【0025】
特に、個人データの匿名性を確保するため、パラメータkの値を大きくすると、出力可能な匿名データを生成する元となる個人データの数が少なくなり、出力される複数の匿名データが、統計処理において好ましくないデータになる。例えば、複数の個人データの特徴分布を示すヒストグラムと、出力される複数の匿名データの特徴分布を示すヒストグラムとが類似しなくなり、出力される複数の匿名データが、統計処理において好ましくないデータになる。
【0026】
また、ユーザが、ヒストグラムを考慮し、匿名データの有用性を向上するため、恣意的に、プライバシーテストを実施してしまうことがある。例えば、ユーザが、特定の個人データに対して、パラメータk+Lap(1/ε0)が偶々大きい値を取るまで、プライバシーテストを繰り返し実施し、特定の個人データに基づいて生成された匿名データを出力しようとすることがある。この場合、個人データの匿名性が損なわれることがある。
【0027】
また、複数の個人データの特徴分布を示すヒストグラムと、出力される複数の匿名データの特徴分布を示すヒストグラムとが類似しなくなった結果、個人データの匿名性も損なわれることがある。比較的少数の個人データに基づいて、匿名データが比較的多量に生成されるため、匿名データに基づいて、個人が識別される危険性が高くなる傾向がある。
【0028】
そこで、本実施の形態では、出力される匿名データの有用性を向上することができる生成方法について説明する。
【0029】
図1の説明に戻り、生成装置100は、複数の個人データを、DB(DataBase)101に記憶する。個人データは、例えば、個人に関する何らかの特徴を示す値を含む。生成装置100は、第1の匿名化モデル110を記憶する。第1の匿名化モデル110は、情報を匿名化するモデルである。匿名化は、加工に対応する。第1の匿名化モデル110は、例えば、個人データに含まれる値に、ランダムなノイズ値を加算して得られる匿名データを、1以上生成するモデルである。第1の匿名化モデル110は、例えば、確率的な差分プライバシーアルゴリズムである。
【0030】
(1-1)生成装置100は、複数の個人データに含まれる個人データを、第1の匿名化モデル110により匿名化した結果に基づいて、複数の個人データのうち、匿名度合いが所定の基準を満たさない1以上の個人データを特定する。所定の基準は、例えば、プライバシーテストの基準である。以下の説明では、所定の基準を満たすことを「OK」と表記し、所定の基準を満たさないことを「NG」と表記する場合がある。匿名度合いが所定の基準を満たさない1以上の個人データは、例えば、NG-DB102に記憶される。
【0031】
生成装置100は、例えば、複数の個人データに含まれる個人データをランダムに選択する。生成装置100は、例えば、個人データを選択する都度、選択した個人データに基づいて、第1の匿名化モデル110により匿名データを1以上生成する。生成装置100は、例えば、1以上の匿名データに基づいて、プライバシーテストを実施し、1以上の匿名データを生成する元となった個人データの匿名度合いが、所定の基準を満たすか否かを判定する。生成装置100は、例えば、判定した結果に基づいて、複数の個人データのうち、匿名度合いが所定の基準を満たさない1以上の個人データを特定する。
【0032】
(1-2)生成装置100は、特定した1以上の個人データに基づいて、第2の匿名化モデル120を学習する。第2の匿名化モデル120は、情報を匿名化するモデルである。第2の匿名化モデル120は、情報を匿名化するモデルである。第2の匿名化モデル120は、匿名データに含まれる値に、ランダムなノイズ値を加算して得られる新たな匿名データを、1以上生成するモデルである。第2の匿名化モデル120は、例えば、確率的な差分プライバシーアルゴリズムである。第2の匿名化モデル120は、例えば、第1の匿名化モデル110と同一のアルゴリズムである。生成装置100は、例えば、特定した1以上の個人データに含まれる値に関する分散および平均に基づいて、第2の匿名化モデル120を学習する。
【0033】
(1-3)生成装置100は、特定した1以上の個人データに基づいて、1以上の個人データのそれぞれの個人データよりも匿名度合いが高い、1以上の匿名データを生成する。1以上の匿名データは、例えば、MA-DB103に記憶される。MAは、ミクロアグリゲーションを意味する。生成装置100は、例えば、ミクロアグリゲーションを実施し、1以上の匿名データを生成する。
【0034】
生成装置100は、具体的には、特定した1以上の個人データのそれぞれの個人データに含まれる値に関する統計値を算出する。統計値は、具体的には、平均値、最大値、最小値、中央値、または、最頻値などである。生成装置100は、具体的には、特定した1以上の個人データのそれぞれの個人データに含まれる値を、算出した統計値に置換することにより、1以上の匿名データを生成する。
【0035】
(1-4)生成装置100は、生成した1以上の匿名データのそれぞれの匿名データを、学習した第2の匿名化モデル120により匿名化して得られた、新たな匿名データを出力する。出力先は、例えば、リリースDB104である。生成装置100は、例えば、1以上の匿名データのそれぞれの匿名データに基づいて、第2の匿名化モデル120により、新たな匿名データを生成して出力する。この際、生成装置100は、例えば、複数の個人データのうち、所定の基準を満たす個人データに基づいて、第1の匿名化モデル110により生成された匿名データを、併せて出力してもよい。
【0036】
これにより、生成装置100は、有用な匿名データを得ることができ、匿名データの有用性と、個人データの匿名性とを両立することができる。
【0037】
生成装置100は、例えば、プライバシーテストにより、匿名度合いが所定の基準を満たさないと判定された個人データに基づいて、新たな匿名データを生成することができる。このため、生成装置100は、例えば、出力される複数の匿名データを、統計処理において好ましいデータにすることができる。生成装置100は、具体的には、複数の個人データの特徴分布を示すヒストグラムと、出力される複数の匿名データの特徴分布を示すヒストグラムとを近づけることができる。
【0038】
また、生成装置100は、例えば、匿名度合いが所定の基準を満たさないと判定された個人データを、より匿名度合いが高い形式である匿名データに変換してから、第2の匿名化モデル120により、新たな匿名データを生成することができる。このため、生成装置100は、例えば、個人データの匿名性を確保し易くすることができる。
【0039】
生成装置100は、例えば、複数の個人データのうち、匿名度合いが所定の基準を満たさない1以上の個人データに基づいて、第2の匿名化モデル120を学習することができる。生成装置100は、例えば、第2の匿名化モデル120により、新たな匿名データを生成することができる。このため、生成装置100は、例えば、出力される複数の匿名データを、統計処理において好ましいデータにすることができる。生成装置100は、具体的には、例えば、匿名度合いが所定の基準を満たさない個人データの特徴分布を示すヒストグラムと、第2の匿名化モデル120により生成される新たな匿名データの特徴分布を示すヒストグラムとを近づけることができる。
【0040】
生成装置100は、本来であればNGと判定され得る個人データに基づいて、匿名データを生成して出力することができる。このため、生成装置100は、ユーザが、匿名データの有用性を向上するため、恣意的に、プライバシーテストを実施してしまうことを防止することができ、個人データの匿名性を確保することができる。
【0041】
以上により、生成装置100は、匿名データの有用性と、個人データの匿名性とを両立し、外部に流通させて第3者に参照されても問題が発生しないと考えられる匿名データのDBを生成することができる。このため、生成装置100は、統計分析、または、機械学習の分野において利用することができる。
【0042】
また、生成装置100は、プライバシーテストを行う手法を改良することができる。生成装置100は、例えば、(k,γ)PD、または、(k,δ)PDなどの手法を改良することができる。生成装置100は、(k,γ)PD、および、(k,δ)PD以外の、プライバシーテストを行う手法を改良することができる。
【0043】
(データ利活用システム300の一例)
次に、図3を用いて、図1に示した生成装置100を適用した、データ利活用システム300の一例について説明する。
【0044】
図3は、データ利活用システム300の一例を示す説明図である。図3において、データ利活用システム300は、生成装置100と、データ提供側装置301と、データ利用側装置302とを含む。
【0045】
データ利活用システム300において、生成装置100とデータ提供側装置301とは、有線または無線のネットワーク310を介して接続される。ネットワーク310は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。また、生成装置100とデータ利用側装置302とは、有線または無線のネットワーク310を介して接続される。
【0046】
生成装置100は、個人データをデータ提供側装置301から収集する。収集した個人データは、例えば、図5に後述するデータ管理テーブル500に記憶される。生成装置100は、収集した複数の個人データに基づいて、複数の匿名データを生成してデータ利用側装置302に送信する。複数の匿名データを生成する具体例については、例えば、図7図9を用いて後述する。生成装置100は、例えば、サーバ、または、PC(Personal Computer)などである。
【0047】
データ提供側装置301は、個人データを取得し、生成装置100に送信する。データ提供側装置301は、操作者の操作入力に基づき、個人データを取得し、生成装置100に送信する。データ提供側装置301は、例えば、タブレット端末、スマートフォン、ウェアラブル端末、IoT(Internet of Things)機器などから、個人データを取得し、生成装置100に送信する。データ提供側装置301は、例えば、サーバ、または、PCなどである。
【0048】
データ利用側装置302は、複数の匿名データを生成装置100から受信する。データ利用側装置302は、複数の匿名データに基づいて、データ利活用タスクを実施する。データ利活用タスクは、例えば、統計分析、または、機械学習などのタスクである。データ利用側装置302は、例えば、サーバ、または、PCなどである。
【0049】
ここでは、生成装置100が、データ提供側装置301とは異なる装置である場合について説明したが、これに限らない。例えば、生成装置100が、データ提供側装置301と一体であり、データ提供側装置301としても動作する場合があってもよい。
【0050】
ここでは、生成装置100が、データ利用側装置302とは異なる装置である場合について説明したが、これに限らない。例えば、生成装置100が、データ利用側装置302と一体であり、データ利用側装置302としても動作する場合があってもよい。
【0051】
ここでは、データ提供側装置301が、サーバ、または、PCなどである場合について説明したが、これに限らない。例えば、データ提供側装置301が、タブレット端末、スマートフォン、ウェアラブル端末、IoT機器などである場合があってもよい。
【0052】
(生成装置100のハードウェア構成例)
次に、図4を用いて、生成装置100のハードウェア構成例について説明する。
【0053】
図4は、生成装置100のハードウェア構成例を示すブロック図である。図4において、生成装置100は、CPU(Central Processing Unit)401と、メモリ402と、ネットワークI/F(Interface)403と、記録媒体I/F404と、記録媒体405とを有する。また、各構成部は、バス400によってそれぞれ接続される。
【0054】
ここで、CPU401は、生成装置100の全体の制御を司る。メモリ402は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU401のワークエリアとして使用される。メモリ402に記憶されるプログラムは、CPU401にロードされることにより、コーディングされている処理をCPU401に実行させる。
【0055】
ネットワークI/F403は、通信回線を通じてネットワーク310に接続され、ネットワーク310を介して他のコンピュータに接続される。そして、ネットワークI/F403は、ネットワーク310と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F403は、例えば、モデムやLANアダプタなどである。
【0056】
記録媒体I/F404は、CPU401の制御に従って記録媒体405に対するデータのリード/ライトを制御する。記録媒体I/F404は、例えば、ディスクドライブ、SSD(Solid State Drive)、USB(Universal Serial Bus)ポートなどである。記録媒体405は、記録媒体I/F404の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体405は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体405は、生成装置100から着脱可能であってもよい。
【0057】
生成装置100は、上述した構成部の他、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、生成装置100は、記録媒体I/F404や記録媒体405を複数有していてもよい。また、生成装置100は、記録媒体I/F404や記録媒体405を有していなくてもよい。
【0058】
(データ管理テーブル500の記憶内容)
次に、図5を用いて、データ管理テーブル500の記憶内容の一例について説明する。データ管理テーブル500は、例えば、図4に示した生成装置100のメモリ402や記録媒体405などの記憶領域により実現される。
【0059】
図5は、データ管理テーブル500の記憶内容の一例を示す説明図である。図5に示すように、データ管理テーブル500は、氏名と、性別と、年齢と、身長とのフィールドを有する。データ管理テーブル500は、個人ごとに各フィールドに情報を設定することにより、個人データがレコード500-aとして記憶される。aは、任意の整数である。
【0060】
氏名のフィールドには、個人を識別する氏名が設定される。性別のフィールドには、個人の属性値として、個人の性別が設定される。年齢のフィールドには、個人の属性値として、個人の年齢が設定される。身長のフィールドには、個人の属性値として、個人の身長が設定される。個人データは、個人の属性値として、個人の氏名と、性別と、年齢と、身長とのいずれかを含まなくてもよい。個人データは、個人の属性値として、個人の氏名と、性別と、年齢と、身長との属性値以外を含んでいてもよい。
【0061】
(データ提供側装置301のハードウェア構成例)
データ提供側装置301のハードウェア構成例は、図4に示した生成装置100のハードウェア構成例と同様であるため、説明を省略する。
【0062】
(データ利用側装置302のハードウェア構成例)
データ利用側装置302のハードウェア構成例は、図4に示した生成装置100のハードウェア構成例と同様であるため、説明を省略する。
【0063】
(生成装置100の機能的構成例)
次に、図6を用いて、生成装置100の機能的構成例について説明する。
【0064】
図6は、生成装置100の機能的構成例を示すブロック図である。生成装置100は、記憶部600と、取得部601と、第1の匿名化部602と、判定部603と、特定部604と、学習部605と、生成部606と、第2の匿名化部607と、出力部608とを含む。
【0065】
記憶部600は、例えば、図4に示したメモリ402や記録媒体405などの記憶領域によって実現される。以下では、記憶部600が、生成装置100に含まれる場合について説明するが、これに限らない。例えば、記憶部600が、生成装置100とは異なる装置に含まれ、記憶部600の記憶内容が生成装置100から参照可能である場合があってもよい。
【0066】
取得部601~出力部608は、制御部の一例として機能する。取得部601~出力部608は、具体的には、例えば、図4に示したメモリ402や記録媒体405などの記憶領域に記憶されたプログラムをCPU401に実行させることにより、または、ネットワークI/F403により、その機能を実現する。各機能部の処理結果は、例えば、図4に示したメモリ402や記録媒体405などの記憶領域に記憶される。
【0067】
記憶部600は、各機能部の処理において参照され、または更新される各種情報を記憶する。記憶部600は、複数の個人データを記憶する。個人データは、例えば、個人に関する何らかの特徴を示す値を含む。値は、例えば、属性値である。個人データは、例えば、取得部601によって取得される。記憶部600は、複数の匿名データを記憶する。匿名データは、例えば、第1の匿名化部602、または、第2の匿名化部607によって生成される。
【0068】
記憶部600は、第1の匿名化モデルを記憶する。第1の匿名化モデルは、情報を匿名化するモデルである。匿名化は、加工に対応する。第1の匿名化モデルは、例えば、個人データに含まれる値に、ランダムなノイズ値を加算して得られる匿名データを、1以上生成するモデルである。第1の匿名化モデルは、例えば、確率的な差分プライバシーアルゴリズムである。第1の匿名化モデルは、例えば、生成部606によって生成される。
【0069】
記憶部600は、第2の匿名化モデルを記憶する。第2の匿名化モデルは、情報を匿名化するモデルである。第2の匿名化モデルは、例えば、匿名データに含まれる値に、ランダムなノイズ値を加算して得られる新たな匿名データを、1以上生成するモデルである。第2の匿名化モデルは、例えば、確率的な差分プライバシーアルゴリズムである。第2の匿名化モデルは、例えば、第1の匿名化モデルと同一のアルゴリズムである。
【0070】
取得部601は、各機能部の処理に用いられる各種情報を取得する。取得部601は、取得した各種情報を、記憶部600に記憶し、または、各機能部に出力する。また、取得部601は、記憶部600に記憶しておいた各種情報を、各機能部に出力してもよい。取得部601は、例えば、ユーザの操作入力に基づき、各種情報を取得する。取得部601は、例えば、生成装置100とは異なる装置から、各種情報を受信してもよい。
【0071】
取得部601は、複数の個人データを取得する。取得部601は、例えば、複数の個人データを、データ提供側装置301から受信することにより取得する。取得部601は、例えば、ユーザの操作入力に基づき、複数の個人データを取得する。取得部601は、例えば、第1の匿名化モデルを取得してもよい。
【0072】
取得部601は、いずれかの機能部の処理を開始する開始トリガーを受け付けてもよい。開始トリガーは、例えば、ユーザによる所定の操作入力があったことである。開始トリガーは、例えば、他のコンピュータから、所定の情報を受信したことであってもよい。開始トリガーは、例えば、いずれかの機能部が所定の情報を出力したことであってもよい。取得部601は、例えば、複数の個人データを取得したことを、第1の匿名化部602~第2の匿名化部607の処理を開始する開始トリガーとして受け付ける。
【0073】
第1の匿名化部602は、複数の個人データに含まれる個人データを、第1の匿名化モデルにより匿名化し、1以上の匿名データを生成する。第1の匿名化部602は、例えば、複数の個人データに含まれる個人データをランダムに複数回選択する。第1の匿名化部602は、例えば、個人データを選択する都度、選択した個人データに基づいて、第1の匿名化モデルにより匿名データを1以上生成する。これにより、第1の匿名化部602は、匿名データを生成し、個人データの匿名性の向上を図ることができる。
【0074】
判定部603は、複数の個人データに含まれる個人データを、第1の匿名化モデルにより匿名化した結果に基づいて、当該個人データの匿名度合いが、所定の基準を満たすか否かを判定する。所定の基準は、例えば、プライバシーテストの基準である。判定部603は、例えば、1以上の匿名データに基づいて、プライバシーテストを実施し、1以上の匿名データを生成する元となった、選択した個人データの匿名度合いが、所定の基準を満たすか否かを判定する。
【0075】
判定部603は、具体的には、複数の個人データに含まれる個人データを、第1の匿名化モデルにより匿名化した際に、当該個人データと同一または類似する値を含む、複数の個人データのうちの他の個人データの数を算出する。また、それぞれの個人データが、複数の値を含む場合が考えられる。この場合、判定部603は、具体的には、特定の項目の値が、匿名化の対象とした個人データと同一または類似する他の個人データの数を算出してもよい。
【0076】
ここで、判定部603は、算出した数が所定の数以下であれば、所定の基準を満たさないと判定する。所定の数は、例えば、固定値である。所定の数は、例えば、可変値であってもよい。可変値は、例えば、k+Lap(1/ε0)である。一方で、判定部603は、算出した数が所定の数より大きければ、所定の基準を満たすと判定する。これにより、判定部603は、個人データの匿名性が確保されているか否かを判定することができる。
【0077】
判定部603は、具体的には、複数の個人データに含まれる個人データを、第1の匿名化モデルにより匿名化した際に、加算したノイズ値の代表値が、所定の閾値以下であれば、所定の基準を満たさないと判定する。代表値は、具体的には、平均値、最大値、最小値、中央値、または、最頻値などである。これにより、判定部603は、個人データの匿名性が確保されているか否かを判定することができる。
【0078】
判定部603は、具体的には、所定の確率で、選択した個人データの実際の匿名度合いによらず、所定の基準を満たさないと判定してもよい。所定の確率は、例えば、ユーザによって設定される。これにより、判定部603は、学習部605が参照可能な個人データの数の増大化を図ることができ、学習部605が第2の匿名化モデルを生成し易くすることができる。
【0079】
特定部604は、複数の個人データのうち、匿名度合いが所定の基準を満たさない1以上の個人データを特定する。特定部604は、例えば、判定した結果に基づいて、1以上の個人データを特定する。特定部604は、具体的には、判定した結果がNGである1以上の個人データを特定する。これにより、特定部604は、プライバシーテストにより破棄された匿名データを生成する元となった、匿名度合いが所定の基準を満たさない1以上の個人データを特定することができる。
【0080】
特定部604は、特定した1以上の個人データを、1以上のクラスタに分割してもよい。特定部604は、例えば、特定した1以上の個人データのそれぞれの個人データに含まれる値に基づいて、特定した1以上の個人データを、1以上のクラスタに分割する。
【0081】
特定部604は、具体的には、特定した1以上の個人データのそれぞれの個人データに含まれる値の大小関係に基づいて、特定した1以上の個人データをソートする。特定部604は、具体的には、ソートした1以上の個人データの上位から、k個の個人データごとに、同一のクラスタに属するよう、1以上の個人データを、1以上のクラスタに分割する。kは、可変値であってもよい。これにより、特定部604は、生成部606が生成する1以上の匿名データの特徴分布を示すヒストグラムを、1以上の個人データの特徴分布を示すヒストグラムと対応させ易くすることができる。
【0082】
学習部605は、特定した1以上の個人データに基づいて、第2の匿名化モデルを学習する。学習部605は、例えば、特定した1以上の個人データのそれぞれの個人データに含まれる値に関する分散および平均に基づいて、第2の匿名化モデルに用いられるノイズ値の範囲を決定し、第2の匿名化モデルを学習する。これにより、学習部605は、第2の匿名化部607が生成する1以上の匿名データの特徴分布を示すヒストグラムを、複数の個人データの特徴分布を示すヒストグラムと対応させ易くすることができる。
【0083】
学習部605は、クラスタごとに、クラスタに分割した個人データに基づいて、クラスタに対応する第2の匿名化モデルを学習する。これにより、学習部605は、第2の匿名化部607が生成する1以上の匿名データの特徴分布を示すヒストグラムを、複数の個人データの特徴分布を示すヒストグラムと対応させ易くすることができる。
【0084】
生成部606は、特定した1以上の個人データに基づいて、1以上の個人データのそれぞれの個人データよりも匿名度合いが高い、1以上の匿名データを生成する。生成部606は、例えば、ミクロアグリゲーションを実施し、1以上の匿名データを生成する。
【0085】
生成部606は、具体的には、特定した1以上の個人データのそれぞれの個人データに含まれる値に関する統計値を算出する。統計値は、具体的には、平均値、最大値、最小値、中央値、または、最頻値などである。生成部606は、特定した1以上の個人データのそれぞれの個人データに含まれる値を、算出した統計値に置換し、1以上の匿名データを生成する。これにより、生成部606は、個人データの匿名性の向上を図ることができる。
【0086】
生成部606は、クラスタごとに、クラスタに分割した個人データに基づいて、クラスタに分割した個人データのそれぞれよりも匿名度合いが高い、クラスタに対応する匿名データを生成する。これにより、生成部606は、クラスタごとに、第2の匿名化モデルが参照する匿名データを生成することができる。
【0087】
第2の匿名化部607は、生成した1以上の匿名データのそれぞれの匿名データを、学習した第2の匿名化モデルにより匿名化し、新たな匿名データを生成する。これにより、第2の匿名化部607は、生成した1以上の新たな匿名データの特徴分布を示すヒストグラムが、複数の個人データの特徴分布を示すヒストグラムに対応するよう、1以上の新たな匿名データを生成することができる。
【0088】
第2の匿名化部607は、クラスタごとに、生成したクラスタに対応する匿名データを、学習したクラスタに対応する第2の匿名化モデルにより匿名化し、新たな匿名データを生成する。これにより、第2の匿名化部607は、クラスタごとに、生成した1以上の新たな匿名データの特徴分布を示すヒストグラムが、複数の個人データの特徴分布を示すヒストグラムに対応するよう、1以上の新たな匿名データを生成することができる。
【0089】
出力部608は、いずれかの機能部の処理結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F403による外部装置への送信、または、メモリ402や記録媒体405などの記憶領域への記憶である。これにより、出力部608は、いずれかの機能部の処理結果をユーザに通知可能にし、生成装置100の利便性の向上を図ることができる。
【0090】
出力部608は、第2の匿名化部607によって生成された新たな匿名データを出力する。出力部608は、さらに、第1の匿名化部602によって生成された匿名データを出力する。出力部608は、例えば、第1の匿名化部602によって生成された匿名データと、第2の匿名化部607によって生成された新たな匿名データとを併せて出力する。これにより、出力部608は、有用な匿名データを利用可能にすることができる。
【0091】
(生成装置100の第1の動作例)
次に、図7を用いて、生成装置100の第1の動作例について説明する。
【0092】
図7は、生成装置100の第1の動作例を示す説明図である。図7において、(7-1)生成装置100は、データ管理テーブル500から、氏名の属性値を削除した後の個人データ群701を取得する。
【0093】
(7-2)生成装置100は、取得した個人データ群701のそれぞれの個人データに含まれる値に基づいて、個人データ群701をクラスタリングする。クラスタリングは、ヒストグラムを作成する可能性が高い属性について実施される。ヒストグラムを作成する可能性が高い属性は、例えば、予めユーザによって指定される。クラスタリングは、例えば、K-匿名化処理に規定されたクラスタリングが用いられる。
【0094】
図7の例では、生成装置100は、個人データ群701を、性別の値が「女性」の個人データを含むクラスタ702と、性別の値が「男性」の個人データを含むクラスタ703とに分割する。ここでは、性別の値が、準識別子として扱われている。性別以外の値が、センシティブ属性として扱われている。生成装置100は、性別の値が「女性」の個人データを含むクラスタ702を、DB710に保存する。生成装置100は、性別の値が「男性」の個人データを含むクラスタ703を、DB720に保存する。
【0095】
以下の説明では、生成装置100が、DB710を処理対象とする場合について説明する。生成装置100が、DB720を処理対象とする場合については、生成装置100が、DB710を処理対象とする場合と同様であるため、説明を省略する。
【0096】
(7-3)生成装置100は、DB710に対して、ノイズ付与とプライバシーテストとを実施する。生成装置100は、例えば、DB710に記憶された個人データ群711を取得する。生成装置100は、例えば、取得した個人データ群711に含まれる個人データを、ランダムに所定回数選択する。
【0097】
生成装置100は、例えば、個人データを選択する都度、選択した個人データに基づいて、生成モデル730により匿名データを1以上生成する。生成モデル730は、確率的な生成モデルである。生成モデル730は、例えば、差分プライバシーのメカニズムを有する生成モデルである。生成モデル730は、例えば、個人データ群711に基づいて生成されてもよい。
【0098】
生成装置100は、例えば、生成した1以上の匿名データに基づいて、プライバシーテストを実施し、生成した1以上の匿名データを生成する元となった個人データの匿名度合いが、所定の基準を満たすか否かを判定する。ここで、生成装置100は、例えば、判定した結果がOKであれば、生成した1以上の匿名データを、リリースDB740に保存する。OKは、個人データの匿名度合いが所定の基準を満たし、プライバシーテストに合格したことを意味する。一方で、生成装置100は、判定した結果がNGであれば、生成した1以上の匿名データを破棄し、生成した1以上の匿名データを生成する元となった個人データを、NG-DB750に保存する。NGは、個人データの匿名度合いが所定の基準を満たさず、プライバシーテストに合格しなかったことを意味する。
【0099】
(7-4)生成装置100は、NG-DB750に対して、ミクロアグリゲーションを実施する。生成装置100は、例えば、NG-DB750に記憶された個人データ群751を取得する。生成装置100は、例えば、取得した個人データ群751に対して、ミクロアグリゲーションを実施する。ミクロアグリゲーションとは、個人データ群751のそれぞれの個人データに含まれる値を、個人データ群751のそれぞれの個人データに含まれる値に関する統計値に置換する手法である。統計値は、具体的には、平均値、最大値、最小値、中央値、または、最頻値などである。
【0100】
図7の例では、生成装置100は、個人データ群751のそれぞれの個人データに含まれる値を、個人データ群751のそれぞれの個人データに含まれる値に関する平均値に置換することにより、匿名データ群761を生成する。生成装置100は、例えば、ミクロアグリゲーションにより、個人データ群751から得られた匿名データ群761を、MA-DB760に保存する。
【0101】
ここでは、生成装置100が、個人データ群751のそれぞれの個人データに含まれる値を、個人データ群751のそれぞれの個人データに含まれる値に関する平均値に置換することにより、匿名データを生成する場合について説明したが、これに限らない。この場合、匿名データは、平均値に比較的近い値を含む個人データに対応する個人のものであると誤認されるおそれがある。このため、例えば、生成装置100が、個人データ群751のそれぞれの個人データに含まれる値を、個人データ群751のそれぞれの個人データに含まれる値から一定以上離れた値に置換することにより、匿名データを生成する場合があってもよい。
【0102】
(7-5)生成装置100は、NG-DB750に基づいて、生成モデル770を学習する。生成装置100は、例えば、NG-DB750に記憶された個人データ群751を取得する。生成装置100は、例えば、取得した個人データ群751のそれぞれの個人データを、学習データに用いて、生成モデル770を学習する。生成モデル770は、確率的な生成モデルである。生成モデル770は、例えば、差分プライバシーのメカニズムを有する生成モデルである。生成装置100は、例えば、取得した個人データ群751のそれぞれの個人データに含まれる値に関する分散および平均に基づいて、生成モデル770を学習する。
【0103】
(7-6)生成装置100は、MA-DB760に対して、ノイズ付与を実施する。生成装置100は、例えば、MA-DB760に記憶された匿名データ群761を取得する。生成装置100は、例えば、取得した匿名データ群761に含まれる匿名データを、ランダムに所定回数選択する。生成装置100は、取得した匿名データ群761のそれぞれの匿名データを選択してもよい。
【0104】
生成装置100は、例えば、匿名データを選択する都度、選択した匿名データに基づいて、学習した生成モデル770により、新たな匿名データを1以上生成する。生成装置100は、例えば、生成した新たな匿名データを含む匿名データ群771を、リリースDB740に保存する。生成装置100は、新たな匿名データを1以上生成した際、プライバシーテストを実施してもよい。
【0105】
このように、生成装置100が、DB710を処理対象とした場合、リリースDB740が得られる。一方で、生成装置100が、DB720を処理対象とした場合、リリースDB781が得られたものとする。
【0106】
(7-7)生成装置100は、DB710を処理対象として得られたリリースDB740と、DB720を処理対象として得られたリリースDB781とを結合し、DB780を生成する。これにより、生成装置100は、有用な匿名データを得ることができ、匿名データの有用性と、個人データの匿名性とを両立することができる。
【0107】
生成装置100は、例えば、プライバシーテストにより、NGと判定された個人データに基づいて、新たな匿名データを生成することができる。このため、生成装置100は、例えば、出力される複数の匿名データを、統計処理において好ましいデータにすることができる。生成装置100は、具体的には、複数の個人データの特徴分布を示すヒストグラムと、出力される複数の匿名データの特徴分布を示すヒストグラムとを近づけることができる。
【0108】
また、生成装置100は、例えば、匿名度合いが所定の基準を満たさないと判定された個人データを、より匿名度合いが高い形式である匿名データに変換してから、生成モデル770により、新たな匿名データを生成することができる。このため、生成装置100は、例えば、個人データの匿名性を確保し易くすることができる。
【0109】
生成装置100は、例えば、複数の個人データのうち、NGと判定された1以上の個人データに基づいて、生成モデル770を学習し、学習した生成モデル770により、新たな匿名データを生成することができる。このため、生成装置100は、例えば、出力される複数の匿名データを、統計処理において好ましいデータにすることができる。生成装置100は、具体的には、例えば、NGと判定された個人データの特徴分布を示すヒストグラムと、生成モデル770により生成される新たな匿名データの特徴分布を示すヒストグラムとを近づけることができる。
【0110】
以上により、生成装置100は、匿名データの有用性と、個人データの匿名性とを両立し、外部に流通させて第3者に参照されても問題が発生しないと考えられる匿名データのDB780を生成することができる。このため、生成装置100は、統計分析、または、機械学習の分野において利用することができる。
【0111】
ここでは、生成装置100が、(7-3)において、単にプライバシーテストを実施する場合について説明したが、これに限らない。例えば、生成装置100が、(7-3)において、プライバシーテストを実施するにあたり、生成した1以上の匿名データを生成する元となった個人データの匿名度合いによらず、一定確率で、NGであると判定するように動作する場合があってもよい。
【0112】
これにより、生成装置100は、NG-DB750に記憶された個人データの数が少ないために、個人データの匿名性が損なわれるおそれが生じるような状況を回避することができる。この場合における生成装置100の動作例は、図8を用いて後述する第2の動作例に対応する。
【0113】
ここでは、生成装置100が、(7-4)において、NG-DB750に記憶された個人データ群751全体に対して、ミクロアグリゲーションを実施する場合について説明したが、これに限らない。例えば、生成装置100が、(7-4)において、NG-DB750に記憶された個人データ群751のうち、k個の個人データごとに、ミクロアグリゲーションを実施する場合があってもよい。この場合、生成装置100は、k個の個人データごとに、生成モデル770を学習することになる。
【0114】
これにより、生成装置100は、NGと判定された個人データの特徴分布を示すヒストグラムと、生成モデル770により生成される新たな匿名データの特徴分布を示すヒストグラムとを、さらに近づけ易くすることができる。この場合における生成装置100の動作例は、図9を用いて後述する第3の動作例に対応する。
【0115】
(生成装置100の第2の動作例)
次に、図8を用いて、生成装置100の第2の動作例について説明する。
【0116】
図8は、生成装置100の第2の動作例を示す説明図である。第2の動作例は、生成装置100が、プライバシーテストを実施するにあたり、生成した1以上の匿名データを生成する元となった個人データの匿名度合いによらず、一定確率で、NGであると判定するように動作する場合に対応する。
【0117】
図8において、(8-1)生成装置100は、(7-1)および(7-2)と同様の動作により、データ管理テーブル500に基づいて、性別の値が「女性」の個人データを含む個人データ群801を、DB800に保存している。
【0118】
以下の説明では、生成装置100が、DB800を処理対象とする場合について説明する。生成装置100が、性別の値が「男性」の個人データを含む個人データ群を保存した他のDBなどを処理対象とする場合については、生成装置100が、DB800を処理対象とする場合と同様であるため、説明を省略する。
【0119】
(8-2)生成装置100は、DB800に対して、ノイズ付与とプライバシーテストとを実施する。生成装置100は、例えば、DB800に記憶された個人データ群801を取得する。生成装置100は、例えば、取得した個人データ群801に含まれる個人データを、ランダムに所定回数選択する。
【0120】
生成装置100は、例えば、個人データを選択する都度、選択した個人データに基づいて、生成モデル810により匿名データを1以上生成する。生成モデル810は、確率的な生成モデルである。生成モデル810は、例えば、差分プライバシーのメカニズムを有する生成モデルである。生成モデル810は、例えば、個人データ群801に基づいて生成されてもよい。
【0121】
生成装置100は、例えば、生成した1以上の匿名データに基づいて、プライバシーテストを実施し、生成した1以上の匿名データを生成する元となった個人データの匿名度合いが、所定の基準を満たすか否かを判定する。この際、生成装置100は、一定確率で、生成した1以上の匿名データを生成する元となった個人データの匿名度合いによらず、所定の基準を満たさないと判定する。
【0122】
ここで、生成装置100は、例えば、判定した結果がOKであれば、生成した1以上の匿名データを、リリースDB820に保存する。一方で、生成装置100は、判定した結果がNGであれば、生成した1以上の匿名データを破棄し、生成した1以上の匿名データを生成する元となった個人データを、NG-DB830に保存する。
【0123】
(8-3)生成装置100は、NG-DB830に対して、ミクロアグリゲーションを実施する。生成装置100は、例えば、NG-DB830に記憶された個人データ群831を取得する。生成装置100は、例えば、取得した個人データ群831に対して、ミクロアグリゲーションを実施する。
【0124】
図8の例では、生成装置100は、個人データ群831のそれぞれの個人データに含まれる値を、個人データ群831のそれぞれの個人データに含まれる値に関する平均値に置換することにより、匿名データ群841を生成する。生成装置100は、例えば、ミクロアグリゲーションにより、個人データ群831から得られた匿名データ群841を、MA-DB840に保存する。
【0125】
ここでは、生成装置100が、個人データ群831のそれぞれの個人データに含まれる値を、個人データ群831のそれぞれの個人データに含まれる値に関する平均値に置換することにより、匿名データを生成する場合について説明したが、これに限らない。この場合、匿名データは、平均値に比較的近い値を含む個人データに対応する個人のものであると誤認されるおそれがある。このため、例えば、生成装置100が、個人データ群831のそれぞれの個人データに含まれる値を、個人データ群831のそれぞれの個人データに含まれる値から一定以上離れた値に置換することにより、匿名データを生成する場合があってもよい。
【0126】
(8-4)生成装置100は、NG-DB830に基づいて、生成モデル850を学習する。生成装置100は、例えば、NG-DB830に記憶された個人データ群831を取得する。生成装置100は、例えば、取得した個人データ群831のそれぞれの個人データを、学習データに用いて、生成モデル850を学習する。生成モデル850は、確率的な生成モデルである。生成モデル850は、例えば、差分プライバシーのメカニズムを有する生成モデルである。生成装置100は、例えば、取得した個人データ群831のそれぞれの個人データに含まれる値に関する分散および平均に基づいて、生成モデル850を学習する。
【0127】
(8-5)生成装置100は、MA-DB840に対して、ノイズ付与を実施する。生成装置100は、例えば、MA-DB840に記憶された匿名データ群841を取得する。生成装置100は、例えば、取得した匿名データ群841に含まれる匿名データを、ランダムに所定回数選択する。生成装置100は、取得した匿名データ群841のそれぞれの匿名データを選択してもよい。
【0128】
生成装置100は、例えば、匿名データを選択する都度、選択した匿名データに基づいて、学習した生成モデル850により、新たな匿名データを1以上生成する。生成装置100は、例えば、取得した匿名データ群841のうち、いずれか一つの匿名データを選択し、選択した匿名データに基づいて、学習した生成モデル850により、新たな匿名データを、匿名データ群841の匿名データの数と同一の数だけ生成してもよい。生成装置100は、例えば、生成した新たな匿名データを含む匿名データ群851を、リリースDB820に保存する。生成装置100は、新たな匿名データを1以上生成した際、プライバシーテストを実施してもよい。
【0129】
このように、生成装置100が、DB800を処理対象とした場合、リリースDB820が得られる。一方で、生成装置100が、性別の値が「男性」の個人データを含む個人データ群を保存した他のDBを処理対象とした場合、リリースDB861が得られたものとする。
【0130】
(8-6)生成装置100は、リリースDB820と、リリースDB861とを結合し、DB860を生成する。これにより、生成装置100は、有用な匿名データを得ることができ、匿名データの有用性と、個人データの匿名性とを両立することができる。
【0131】
生成装置100は、プライバシーテストを実施するにあたり、一定確率で、本来であればOKと判定され得る個人データを、NG-DB830に保存することができる。このため、生成装置100は、NG-DB830に記憶された個人データの数が少ないために、統計的解析により、個人データの匿名性が損なわれるおそれが生じるような状況を回避することができる。
【0132】
また、生成装置100は、プライバシーテストによりOKと判定された個人データの数に対して、所定の閾値を設定してもよい。所定の閾値は、例えば、ユーザによって予め設定される。そして、生成装置100は、OKと判定された個人データの数が、所定の閾値以下である間、一定確率で、本来であればOKと判定され得る個人データをNGと判定し、NG-DB830に保存するという動作を実施する。一方で、生成装置100は、OKと判定された個人データの数が、所定の閾値より大きくなった後、一定確率で、本来であればOKと判定され得る個人データをNGと判定し、NG-DB830に保存するという動作を停止する。これにより、生成装置100は、OKと判定される個人データの数と、NGと判定される個人データの数との偏りを低減することができ、データの匿名性の向上を図り易くすることができる。
【0133】
また、生成装置100は、OKと判定された個人データの数が、所定の閾値より大きくなった後、一定確率で、本来であればOKと判定され得る個人データをNGと判定し、NG-DB830に保存するという動作を開始するようにしてもよい。これにより、生成装置100は、OKと判定される個人データの数と、NGと判定される個人データの数との偏りを低減することができ、データの匿名性の向上を図り易くすることができる。
【0134】
また、生成装置100は、NG-DB830に保存する個人データの数に対して、所定の閾値を設定してもよい。所定の閾値は、例えば、ユーザによって予め設定される。そして、生成装置100は、NG-DB830に保存された個人データの数が、所定の閾値以下である間、一定確率で、本来であればOKと判定され得る個人データをNGと判定し、NG-DB830に保存するという動作を実施する。一方で、生成装置100は、NG-DB830に保存された個人データの数が、所定の閾値より大きくなった後、一定確率で、本来であればOKと判定され得る個人データをNGと判定し、NG-DB830に保存するという動作を停止する。これにより、生成装置100は、OKと判定される個人データの数と、NGと判定される個人データの数との偏りを低減することができ、データの匿名性の向上を図り易くすることができる。
【0135】
(生成装置100の第3の動作例)
次に、図9を用いて、生成装置100の第3の動作例について説明する。
【0136】
図9は、生成装置100の第3の動作例を示す説明図である。第3の動作例は、生成装置100が、プライバシーテストにより、NGと判定された複数の個人データのうち、k個の個人データごとに、ミクロアグリゲーションを実施する場合に対応する。
【0137】
図9において、(9-1)生成装置100は、(7-1)および(7-2)と同様の動作により、データ管理テーブル500に基づいて、性別の値が「女性」の個人データを含む個人データ群を、DB900に保存している。
【0138】
以下の説明では、生成装置100が、DB900を処理対象とする場合について説明する。生成装置100が、性別の値が「男性」の個人データを含む個人データ群を保存した他のDBなどを処理対象とする場合については、生成装置100が、DB900を処理対象とする場合と同様であるため、説明を省略する。
【0139】
(9-2)生成装置100は、DB900に対して、ノイズ付与とプライバシーテストとを実施する。生成装置100は、例えば、DB900に記憶された個人データ群を取得する。生成装置100は、例えば、取得した個人データ群に含まれる個人データを、ランダムに所定回数選択する。
【0140】
生成装置100は、例えば、個人データを選択する都度、選択した個人データに基づいて、生成モデル910により匿名データを1以上生成する。生成モデル910は、確率的な生成モデルである。生成モデル910は、例えば、差分プライバシーのメカニズムを有する生成モデルである。生成モデル910は、例えば、取得した個人データ群に基づいて生成されてもよい。
【0141】
生成装置100は、例えば、生成した1以上の匿名データに基づいて、プライバシーテストを実施し、生成した1以上の匿名データを生成する元となった個人データの匿名度合いが、所定の基準を満たすか否かを判定する。ここで、生成装置100は、例えば、判定した結果がOKであれば、生成した1以上の匿名データを、リリースDB920に保存する。一方で、生成装置100は、判定した結果がNGであれば、生成した1以上の匿名データを破棄し、生成した1以上の匿名データを生成する元となった個人データを、NG-DB930に保存する。
【0142】
(9-3)生成装置100は、NG-DB930に対して、クラスタリングを実施する。生成装置100は、例えば、NG-DB930に記憶された個人データ群940を取得する。生成装置100は、例えば、個人データ群940のそれぞれの個人データに含まれる値が大きい順に、個人データ群940をソートする。
【0143】
生成装置100は、例えば、ソート後の個人データ群940のうち、上位からk個の個人データずつ選択し、同一のクラスタとして分割することにより、ソート後の個人データ群940に対して、クラスタリングを実施する。kは、例えば、変動値であってもよい。換言すれば、クラスタごとに、異なる数の個人データが含まれていてもよい。図9の例では、生成装置100は、個人データ群940を、個人データ群941を同一のクラスタとして分割し、個人データ群942を同一のクラスタとして分割する。
【0144】
(9-4)生成装置100は、クラスタごとに、ミクロアグリゲーションを実施する。生成装置100は、例えば、あるクラスタに分割された個人データ群941を取得する。生成装置100は、例えば、取得した個人データ群941に対して、ミクロアグリゲーションを実施する。図9の例では、生成装置100は、個人データ群941のそれぞれの個人データに含まれる値を、個人データ群941のそれぞれの個人データに含まれる値に関する平均値に置換することにより、匿名データ群961を生成する。
【0145】
生成装置100は、例えば、あるクラスタに分割された個人データ群942を取得する。生成装置100は、例えば、取得した個人データ群942に対して、ミクロアグリゲーションを実施する。図9の例では、生成装置100は、個人データ群942のそれぞれの個人データに含まれる値を、個人データ群942のそれぞれの個人データに含まれる値に関する平均値に置換することにより、匿名データ群962を生成する。生成装置100は、例えば、ミクロアグリゲーションにより、個人データ群941から得られた匿名データ群961と、個人データ群942から得られた匿名データ群962とを合わせた、匿名データ群960を、MA-DB950に保存する。
【0146】
(9-5)生成装置100は、クラスタごとに、生成モデル971,972を学習する。生成モデル971,972は、確率的な生成モデルである。生成モデル971,972は、例えば、差分プライバシーのメカニズムを有する生成モデルである。
【0147】
生成装置100は、例えば、あるクラスタに分割された個人データ群941を取得する。生成装置100は、例えば、取得した個人データ群941のそれぞれの個人データを、学習データに用いて、生成モデル971を学習する。生成装置100は、例えば、取得した個人データ群941のそれぞれの個人データに含まれる値に関する分散および平均に基づいて、生成モデル971を学習する。
【0148】
生成装置100は、例えば、あるクラスタに分割された個人データ群942を取得する。生成装置100は、例えば、取得した個人データ群942のそれぞれの個人データを、学習データに用いて、生成モデル972を学習する。生成装置100は、例えば、取得した個人データ群942のそれぞれの個人データに含まれる値に関する分散および平均に基づいて、生成モデル972を学習する。
【0149】
(9-6)生成装置100は、クラスタごとに、ノイズ付与を実施する。生成装置100は、例えば、あるクラスタに分割された匿名データ群961を取得する。生成装置100は、例えば、取得した匿名データ群961に含まれる匿名データを、ランダムに所定回数選択する。生成装置100は、取得した匿名データ群961のそれぞれの匿名データを選択してもよい。
【0150】
生成装置100は、例えば、匿名データを選択する都度、選択した匿名データに基づいて、学習した生成モデル971により、新たな匿名データを1以上生成する。生成装置100は、例えば、生成した新たな匿名データを含む匿名データ群を、リリースDB920に保存する。生成装置100は、新たな匿名データを1以上生成した際、プライバシーテストを実施してもよい。
【0151】
生成装置100は、例えば、あるクラスタに分割された匿名データ群962を取得する。生成装置100は、例えば、取得した匿名データ群962に含まれる匿名データを、ランダムに所定回数選択する。生成装置100は、取得した匿名データ群962のそれぞれの匿名データを選択してもよい。
【0152】
生成装置100は、例えば、匿名データを選択する都度、選択した匿名データに基づいて、学習した生成モデル972により、新たな匿名データを1以上生成する。生成装置100は、例えば、生成した新たな匿名データを含む匿名データ群を、リリースDB920に保存する。生成装置100は、新たな匿名データを1以上生成した際、プライバシーテストを実施してもよい。
【0153】
このように、生成装置100が、DB900を処理対象とした場合、リリースDB920が得られる。一方で、生成装置100が、性別の値が「男性」の個人データを含む個人データ群を保存した他のDBを処理対象とした場合、リリースDB981が得られたものとする。
【0154】
(9-7)生成装置100は、リリースDB920と、リリースDB981とを結合し、DB980を生成する。これにより、生成装置100は、有用な匿名データを得ることができ、匿名データの有用性と、個人データの匿名性とを両立することができる。また、生成装置100は、NGと判定された個人データの特徴分布を示すヒストグラムと、生成モデル971,972により生成される新たな匿名データの特徴分布を示すヒストグラムとを、さらに近づけ易くすることができる。
【0155】
このように、生成装置100は、(k,γ)PDなどのプライバシーテストを含む匿名化データの生成アルゴリズムについて、出力される匿名データの有用性を向上することができ、匿名データの有用性と、個人データの匿名性とを両立することができる。
【0156】
(生成装置100による効果)
次に、図10図17を用いて、生成装置100による効果について説明する。
【0157】
図10は、メンバーシップインクルージョン攻撃の一例を示す説明図である。生成装置100は、動作例1~動作例3により、メンバーシップインクルージョン攻撃を防止することができる。
【0158】
メンバーシップインクルージョン攻撃は、個人データdに係る個人と同一の属性を有する1以上の個人が、攻撃者と結託したと仮定した場合に可能な攻撃である。例えば、攻撃者は、プライバシーテストのパラメータk=3である場合、個人データdに係る個人と同一の属性を有する2名の個人を知っていれば、残りの1名の個人データdを推定可能である。
【0159】
図10の例では、Aliceが存在し、また、Aliceと同一の属性「女性」「10代」を有するBecky、Chlis、Dazyが存在する。そして、それぞれの個人の個人データが、データ管理テーブル500に記憶されている。従来では、データ管理テーブル500に基づいて、それぞれの個人の個人データにノイズを加えたデータを含めたリリースデータセット1001が出力されることになる。
【0160】
ここで、攻撃者は、Alice、Becky、Chlis、Dazyの背景情報を知り、リリースデータセット1001を観察することにより、リリースデータセット1001に、Aliceの個人データを基にしたデータが含まれると推定可能である。攻撃者は、例えば、Aliceと同一の属性「女性」「10代」を有するBecky、Chlis、Dazyが存在することを知っている場合、Aliceに関する真値に近い個人データを取得することができる。
【0161】
これに対し、生成装置100は、データ管理テーブル500に基づいて、ランダムに選択した個人データにノイズを加えたデータを含めたリリースデータセット1002を出力することになる。このため、生成装置100は、それぞれの個人の個人データの匿名性を確保し、メンバーシップインクルージョン攻撃を防止することができる。
【0162】
生成装置100は、本来であればNGと判定され得る個人データに基づいて、匿名データを生成して出力することができる。このため、生成装置100は、ユーザが、匿名データの有用性を向上するため、恣意的に、プライバシーテストを実施してしまうことを防止することができ、メンバーシップインクルージョン攻撃を防止し易くすることができる。
【0163】
図11図14は、比較対象のヒストグラムの形状の第1の例を示す説明図である。生成装置100は、動作例1~動作例3により、複数の個人データの特徴分布を示すヒストグラムと、出力される複数の匿名データの特徴分布を示すヒストグラムとを近づけることができ、有用な匿名データを得ることができる。
【0164】
ここで、生成装置100との比較対象として、従来のプライバシーテストにより出力される複数の匿名データの特徴分布を示すヒストグラムについて説明する。図11の表1100は、従来のプライバシーテストにおいて、ε0を100に固定し、kを1~1000まで変動した場合に、1月~12月までのいずれかの値を有する個人データに基づいて出力される匿名データの数を示す。ここで、図12の説明に移行し、表1100をグラフ化した一例について説明する。
【0165】
図12のグラフ1200は、表1100をグラフ化した一例である。表1100およびグラフ1200に示すように、個人データの匿名性を向上するため、kを大きくすると、出力される匿名データの数に偏りが生じることになる。例えば、k=1000の場合、k=1の場合に比べて、1月~9月のいずれかの値を有する個人データに基づく匿名データは、出力されなくなっている。
【0166】
これに対し、従来のプライバシーテストにおいて、ε0を小さくし、偏りの低減化を図ることも考えられる。図13の表1300は、従来のプライバシーテストにおいて、ε0を0.1に固定し、kを1~1000まで変動した場合に、1月~12月までのいずれかの値を有する個人データに基づいて出力される匿名データの数を示す。ここで、図14の説明に移行し、表1300をグラフ化した一例について説明する。
【0167】
図14のグラフ1400は、表1300をグラフ化した一例である。表1300およびグラフ1400に示すように、ε0を小さくしても、出力される匿名データの数に偏りが生じることになる。例えば、k=1000の場合、k=1の場合に比べて、11月の値を有する個人データに基づく匿名データの数は8割程度減少するのに対し、4月の値を有する個人データに基づく匿名データの数は5割程度減少することになる。
【0168】
一方で、生成装置100は、プライバシーテストにより、NGと判定された個人データに基づいて、新たな匿名データを生成して出力することができる。このため、生成装置100は、出力される匿名データの数に、偏りが生じにくくすることができ、複数の個人データの特徴分布を示すヒストグラムと、出力される複数の匿名データの特徴分布を示すヒストグラムとを近づけることができる。そして、生成装置100は、有用な匿名データを得ることができる。
【0169】
また、生成装置100は、本来であればNGと判定され得る個人データに基づいて、匿名データを生成して出力することができる。このため、生成装置100は、ユーザが、匿名データの有用性を向上するため、恣意的に、プライバシーテストを実施してしまうことを防止することができ、個人データの匿名性を向上することができる。
【0170】
図15図17は、比較対象のヒストグラムの形状の第2の例を示す説明図である。生成装置100は、動作例1~動作例3により、複数の個人データの特徴分布を示すヒストグラムと、出力される複数の匿名データの特徴分布を示すヒストグラムとを近づけることができ、有用な匿名データを得ることができる。
【0171】
ここで、生成装置100との比較対象として、従来のプライバシーテストにより出力される複数の匿名データの特徴分布を示すヒストグラムについて説明する。図15のグラフ1500は、1月~12月までのいずれかの値を有する個人データの数をグラフ化した一例である。次に、図16の説明に移行する。
【0172】
図16のグラフ1601~1603は、従来のプライバシーテストにおいて、kを平均値k1に固定し、ε0を0.001~100まで変動した場合に、1月~12月までのいずれかの値を有する個人データに基づいて出力される匿名データの数をグラフ化した一例である。図16のグラフ1601は、ε0を0.001にした場合に対応する。図16のグラフ1602は、ε0を1にした場合に対応する。図16のグラフ1603は、ε0を100にした場合に対応する。
【0173】
グラフ1601~1603に示すように、個人データの匿名性を向上するため、ε0を大きくすると、出力される匿名データの数に偏りが生じることになる。例えば、ε0=100の場合、1月~4月、6月、8月のいずれかの値を有する個人データに基づく匿名データは、出力されなくなっている。次に、図17の説明に移行する。
【0174】
図17のグラフ1701~1703は、従来のプライバシーテストにおいて、kを最低値k2に固定し、ε0を0.001~100まで変動した場合に、1月~12月までのいずれかの値を有する個人データに基づいて出力される匿名データの数をグラフ化した一例である。図17のグラフ1701は、ε0を0.001にした場合に対応する。図17のグラフ1702は、ε0を1にした場合に対応する。図17のグラフ1703は、ε0を100にした場合に対応する。
【0175】
グラフ1701~1703に示すように、ε0を大きくすると、出力される匿名データの数に基づいて、kの値が推定され易くなってしまう。例えば、ε0=100の場合、4月の値を有する個人データに基づく匿名データの数のみが5割程度減少しており、4月の値を有する個人データに基づく匿名データの数に基づいて、kの値が推定され易くなってしまう。
【0176】
一方で、生成装置100は、プライバシーテストにより、NGと判定された個人データに基づいて、新たな匿名データを生成して出力することができる。このため、生成装置100は、出力される匿名データの数に、偏りが生じにくくすることができ、複数の個人データの特徴分布を示すヒストグラムと、出力される複数の匿名データの特徴分布を示すヒストグラムとを近づけることができる。そして、生成装置100は、有用な匿名データを得ることができる。また、生成装置100は、プライバシーテストのパラメータを推定されにくくすることができる。
【0177】
このように、従来のプライバシーテストのパラメータk,γ,ε0を、匿名データの有用性と、個人データの匿名性とを、バランスよく両立するよう、調整することは難しい。これに対し、生成装置100は、プライバシーテストのパラメータk,γ,ε0を、適切に調整せずとも、匿名データの有用性と、個人データの匿名性とを、バランスよく両立することができる。
【0178】
生成装置100は、プライバシーテストのパラメータk,γ,ε0により、NGと判定される個人データの数が増加したとしても、匿名データの有用性と、個人データの匿名性とを、バランスよく両立することができる。結果として、生成装置100は、複数の個人データの特徴分布を示すヒストグラムと、出力される複数の匿名データの特徴分布を示すヒストグラムとの、数量と比率とを類似させることができ、かつ、個人データの匿名性を確保することができる。
【0179】
(準備処理手順)
次に、図18を用いて、生成装置100が実行する、準備処理手順の一例について説明する。準備処理は、例えば、図4に示したCPU401と、メモリ402や記録媒体405などの記憶領域と、ネットワークI/F403とによって実現される。
【0180】
図18は、準備処理手順の一例を示すフローチャートである。図18において、まず、生成装置100は、ヒストグラムの有用性を一定にする対象の属性を取得する(ステップS1801)。対象の属性は、例えば、ユーザによって予め設定される。ユーザは、例えば、ヒストグラムの有用性を一定にする属性の優先度を、性別、身長の順に設定する。
【0181】
次に、生成装置100は、DBの記憶内容を取得する(ステップS1802)。そして、生成装置100は、優先度に沿って、いずれかの属性について、DBの記憶内容を分割する(ステップS1803)。生成装置100は、例えば、優先度に沿って、性別が女性と男性とで、DBの記憶内容を分割する。
【0182】
次に、生成装置100は、分割した記憶内容のそれぞれを、DBnとして保存する(ステップS1804)。そして、生成装置100は、未処理の属性が存在するか否かを判定する(ステップS1805)。
【0183】
ここで、未処理の属性が存在する場合(ステップS1805:Yes)、生成装置100は、ステップS1802の処理に戻る。一方で、未処理の属性が存在しない場合(ステップS1805:No)、生成装置100は、準備処理を終了する。
【0184】
(テスト処理手順)
次に、図19を用いて、生成装置100が実行する、テスト処理手順の一例について説明する。テスト処理は、例えば、図4に示したCPU401と、メモリ402や記録媒体405などの記憶領域と、ネットワークI/F403とによって実現される。
【0185】
図19は、テスト処理手順の一例を示すフローチャートである。図19において、生成装置100は、安全性基準を取得する(ステップS1901)。安全性基準は、例えば、プライバシーテストのパラメータk,γ,ε0を含む。
【0186】
次に、生成装置100は、DBnの記憶内容を取得する(ステップS1902)。そして、生成装置100は、DBnの記憶内容に基づいて、データを生成するメカニズムMを生成する(ステップS1903)。
【0187】
メカニズムMは、差分プライバシーを保証したデータを生成するアルゴリズムである。生成装置100は、例えば、DBnの記憶内容の各レコードriに含まれる値に関する平均および分散を算出し、算出した平均および分散と、安全性基準とに基づいて、メカニズムMを生成する。
【0188】
次に、生成装置100は、DBnの記憶内容から、未処理のいずれかのレコードriを抽出し、メカニズムMへの入力に設定する(ステップS1904)。そして、生成装置100は、メカニズムMにより、レコードriにノイズを加えたデータM(ri)を、所定の数だけ生成する(ステップS1905)。
【0189】
次に、生成装置100は、kのランダム化処理を実施する(ステップS1906)。生成装置100は、例えば、kに関するメカニズムM’により、kのランダム化処理を実施する。この際、生成装置100は、複数のランダム化したk’を生成してもよい。そして、生成装置100は、ランダム化したk’を取得する(ステップS1907)。
【0190】
次に、生成装置100は、レコードriに対してプライバシーテストを実施し、OKか否かを判定する(ステップS1908)。この際、生成装置100は、一定確率で、NGであると判定してもよい。ここで、NGである場合(ステップS1908:No)、生成装置100は、ステップS1910の処理に移行する。一方で、OKである場合(ステップS1908:Yes)、生成装置100は、ステップS1909の処理に移行する。
【0191】
ステップS1909では、生成装置100は、データM(ri)をリリースデータセットとして、RL-DBに保存する(ステップS1909)。RL-DBは、リリースDBである。そして、生成装置100は、ステップS1911の処理に移行する。
【0192】
ステップS1910では、生成装置100は、レコードriをNG-DBに保存する(ステップS1910)。そして、生成装置100は、ステップS1911の処理に移行する。
【0193】
ステップS1911では、生成装置100は、レコードriを所定の数抽出したか否かを判定する(ステップS1911)。ここで、所定の数抽出していない場合(ステップS1911:No)、生成装置100は、ステップS1904の処理に戻る。一方で、所定の数抽出している場合(ステップS1911:Yes)、生成装置100は、テスト処理を終了する。
【0194】
(分岐処理手順)
次に、図20を用いて、生成装置100が実行する、分岐処理手順の一例について説明する。分岐処理は、例えば、図4に示したCPU401と、メモリ402や記録媒体405などの記憶領域と、ネットワークI/F403とによって実現される。
【0195】
図20は、分岐処理手順の一例を示すフローチャートである。図20において、生成装置100は、安全性基準を取得する(ステップS2001)。安全性基準は、例えば、プライバシーテストのパラメータk,γ,ε0を含む。
【0196】
次に、生成装置100は、RL-DBの記憶内容を取得する(ステップS2002)。そして、生成装置100は、RL-DBの記憶内容におけるレコードの数を取得する(ステップS2003)。
【0197】
次に、生成装置100は、レコードの数が上限以上であるか否かを判定する(ステップS2004)。ここで、レコードの数が上限以上である場合(ステップS2004:Yes)、生成装置100は、ステップS2005の処理に移行する。一方で、レコードの数が上限未満である場合(ステップS2004:No)、生成装置100は、ステップS2007の処理に移行する。
【0198】
ステップS2005では、生成装置100は、プライバシーテストのオプションのPTOPを変更する(ステップS2005)。次に、生成装置100は、図19に示したテスト処理を再度実行する(ステップS2006)。そして、生成装置100は、分岐処理を終了する。
【0199】
ステップS2007では、生成装置100は、レコードの数が下限以下であるか否かを判定する(ステップS2007)。ここで、レコードの数が下限以下である場合(ステップS2007:Yes)、生成装置100は、ステップS2008の処理に移行する。一方で、レコードの数が下限より大きい場合(ステップS2007:No)、生成装置100は、ステップS2009の処理に移行する。
【0200】
ステップS2008では、生成装置100は、ミクロアグリゲーションのオプションのMAOPを変更する(ステップS2008)。そして、生成装置100は、ステップS2009の処理に移行する。
【0201】
ステップS2009では、生成装置100は、図21に後述する再利用処理を実行する(ステップS2009)。そして、生成装置100は、分岐処理を終了する。
【0202】
(再利用処理手順)
次に、図21を用いて、生成装置100が実行する、再利用処理手順の一例について説明する。再利用処理は、例えば、図4に示したCPU401と、メモリ402や記録媒体405などの記憶領域と、ネットワークI/F403とによって実現される。
【0203】
図21は、再利用処理手順の一例を示すフローチャートである。図21において、生成装置100は、安全性基準を取得する(ステップS2101)。安全性基準は、例えば、プライバシーテストのパラメータk,γ,ε0を含む。
【0204】
次に、生成装置100は、NG-DBの記憶内容を取得する(ステップS2102)。そして、生成装置100は、MAOPを取得し、NG-DBの記憶内容に対してミクロアグリゲーション処理を実行する(ステップS2103)。
【0205】
次に、生成装置100は、NG-DBの記憶内容のうち、上位からk個のデータを抽出する(ステップS2104)。そして、生成装置100は、抽出したk個のデータに基づいて、データを生成するメカニズムMiを生成する(ステップS2105)。
【0206】
メカニズムMiは、差分プライバシーを保証したデータを生成するアルゴリズムである。生成装置100は、例えば、抽出したk個のデータに含まれる値に関する平均および分散を算出し、算出した平均および分散と、安全性基準とに基づいて、メカニズムMiを生成する。
【0207】
次に、生成装置100は、k個のデータを平均化し、i番目の処理対象としてMA-DBに保存する(ステップS2106)。そして、生成装置100は、NG-DBの記憶内容のすべてのデータを抽出したか否かを判定する(ステップS2107)。ここで、未抽出のデータが残っている場合(ステップS2107:No)、生成装置100は、ステップS2104の処理に戻る。一方で、すべてのデータを抽出している場合(ステップS2107:Yes)、生成装置100は、ステップS2108の処理に移行する。
【0208】
ステップS2108では、生成装置100は、MA-DBの記憶内容から、i番目の処理対象のレコードmi,kを抽出する(ステップS2108)。次に、生成装置100は、メカニズムMiにより、レコードmi,kを変換し、レコードMi(mi,k)を生成する(ステップS2109)。そして、生成装置100は、生成したレコードMi(mi,k)をRL-DBに保存する(ステップS2110)。
【0209】
次に、生成装置100は、MA-DBの記憶内容のすべてのレコードを抽出したか否かを判定する(ステップS2111)。ここで、未抽出のレコードが残っている場合(ステップS2111:No)、生成装置100は、ステップS2108の処理に戻る。一方で、すべてのレコードを抽出している場合(ステップS2111:Yes)、生成装置100は、再利用処理を終了する。
【0210】
ここで、生成装置100は、図18図21の各フローチャートの一部ステップの処理の順序を入れ替えて実行してもよい。例えば、ステップS1904,1905の処理と、ステップS1906,1907の処理との順序は入れ替え可能である。また、生成装置100は、図18図21の各フローチャートの一部ステップの処理を省略してもよい。例えば、ステップS1801~S1805の処理は省略可能である。
【0211】
以上説明したように、生成装置100によれば、複数の個人データに含まれる個人データを、第1の匿名化モデルにより匿名化した結果に基づいて、複数の個人データのうち、匿名度合いが所定の基準を満たさない1以上の個人データを特定することができる。生成装置100によれば、特定した1以上の個人データに基づいて、第2の匿名化モデルを学習することができる。生成装置100によれば、特定した1以上の個人データに基づいて、1以上の個人データのそれぞれの個人データよりも匿名度合いが高い、1以上の匿名データを生成することができる。生成装置100によれば、生成した1以上の匿名データのそれぞれの匿名データを、学習した第2の匿名化モデルにより匿名化して得られた、新たな匿名データを出力することができる。これにより、生成装置100は、有用な匿名データを得ることができ、匿名データの有用性と、個人データの匿名性とを両立することができる。
【0212】
生成装置100によれば、複数の個人データに含まれる個人データを、第1の匿名化モデルにより匿名化した結果に基づいて、当該個人データの匿名度合いが、所定の基準を満たすか否かを判定することができる。生成装置100によれば、複数の個人データに含まれる個人データの匿名度合いが、所定の基準を満たすか否かを判定するにあたり、所定の確率で、所定の基準を満たさないと判定することができる。生成装置100によれば、判定した結果に基づいて、1以上の個人データを特定することができる。これにより、生成装置100は、所定の基準を満たさないと判定される個人データの数が少ないために、統計的解析により、個人データの匿名性が損なわれるおそれが生じるような状況を回避することができる。
【0213】
生成装置100によれば、複数の個人データに含まれる個人データを、第1の匿名化モデルにより匿名化した際に、当該個人データと同一または類似する値を含む、複数の個人データのうちの他の個人データの数を算出することができる。生成装置100によれば、算出した数が、所定の数以下であれば、所定の基準を満たさないと判定することができる。これにより、生成装置100は、個人データの匿名性が確保されているか否かを判定することができる。
【0214】
生成装置100によれば、所定の数に、可変値を採用することができる。これにより、生成装置100は、メンバーシップインクルージョン攻撃を防止し易くすることができる。
【0215】
生成装置100によれば、第1の匿名化モデルに、個人データに含まれる値に、ランダムなノイズ値を加算して得られる匿名データを、1以上生成するモデルを採用することができる。生成装置100によれば、複数の個人データに含まれる個人データを、第1の匿名化モデルにより匿名化した際に、加算したノイズ値の代表値が、所定の閾値以下であれば、所定の基準を満たさないと判定することができる。これにより、生成装置100は、個人データの匿名性が確保されているか否かを判定することができる。
【0216】
生成装置100によれば、特定した1以上の個人データを、1以上のクラスタに分割することができる。生成装置100によれば、クラスタごとに、クラスタに分割した個人データに基づいて、クラスタに対応する第2の匿名化モデルを学習することができる。生成装置100によれば、クラスタごとに、クラスタに分割した個人データに基づいて、クラスタに分割した個人データのそれぞれよりも匿名度合いが高い、クラスタに対応する匿名データを生成することができる。生成装置100によれば、クラスタごとに、生成したクラスタに対応する匿名データを、学習したクラスタに対応する第2の匿名化モデルにより匿名化して得られた、新たな匿名データを出力することができる。これにより、生成装置100は、第2の匿名化モデルにより匿名化して得られる1以上の新たな匿名データの特徴分布を示すヒストグラムを、複数の個人データの特徴分布を示すヒストグラムと類似させ易くすることができる。
【0217】
生成装置100によれば、特定した1以上の個人データのそれぞれの個人データに含まれる値に関する統計値を算出することができる。生成装置100によれば、特定した1以上の個人データのそれぞれの個人データに含まれる値を、算出した統計値に置換し、1以上の匿名データを生成することができる。これにより、生成装置100は、個人データの匿名性の向上を図ることができる。
【0218】
生成装置100によれば、さらに、複数の個人データのうち、匿名度合いが所定の基準を満たす個人データを、第1の匿名化モデルにより匿名化して得られた匿名データを出力することができる。これにより、生成装置100は、ユーザが、有用な匿名データを利用可能にすることができる。
【0219】
生成装置100によれば、第2の匿名化モデルに、匿名データに含まれる値に、ランダムなノイズ値を加算して得られる新たな匿名データを、1以上生成するモデルを採用することができる。これにより、生成装置100は、個人データの匿名性を向上可能な第2の匿名化モデルを採用することができる。
【0220】
生成装置100によれば、特定した1以上の個人データのそれぞれの個人データに含まれる値に関する分散および平均に基づいて、第2の匿名化モデルに用いられるノイズ値の範囲を決定し、第2の匿名化モデルを学習することができる。これにより、生成装置100は、第2の匿名化モデルにより匿名化して得られる1以上の新たな匿名データの特徴分布を示すヒストグラムを、複数の個人データの特徴分布を示すヒストグラムと類似させ易くすることができる。
【0221】
なお、本実施の形態で説明した生成方法は、予め用意されたプログラムをPCやワークステーションなどのコンピュータで実行することにより実現することができる。本実施の形態で説明した生成プログラムは、コンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。記録媒体は、ハードディスク、フレキシブルディスク、CD(Compact Disc)-ROM、MO(Magneto Optical disc)、DVD(Digital Versatile Disc)などである。また、本実施の形態で説明した生成プログラムは、インターネットなどのネットワークを介して配布してもよい。
【0222】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0223】
(付記1)情報を匿名化する第1の匿名化モデルにより、複数の個人データに含まれる個人データを匿名化した結果に基づいて、前記複数の個人データのうち、匿名度合いが所定の基準を満たさない1以上の個人データを特定し、
特定した前記1以上の個人データに基づいて、情報を匿名化する第2の匿名化モデルを学習し、
特定した前記1以上の個人データに基づいて、前記1以上の個人データのそれぞれの個人データよりも匿名度合いが高い、1以上の匿名データを生成し、
学習した前記第2の匿名化モデルにより、生成した前記1以上の匿名データのそれぞれの匿名データを匿名化して得られた、新たな匿名データを出力する、
処理をコンピュータが実行することを特徴とする生成方法。
【0224】
(付記2)前記第1の匿名化モデルにより、前記複数の個人データに含まれる個人データを匿名化した結果に基づいて、当該個人データの匿名度合いが、前記所定の基準を満たすか否かを判定する、
処理を前記コンピュータが実行し、
前記判定する処理は、
前記第1の匿名化モデルにより、前記複数の個人データに含まれる個人データを匿名化した結果に基づいて、当該個人データの匿名度合いが、前記所定の基準を満たすか否かを判定するにあたり、所定の確率で、前記所定の基準を満たさないと判定し、
前記特定する処理は、
判定した結果に基づいて、前記1以上の個人データを特定する、ことを特徴とする付記1に記載の生成方法。
【0225】
(付記3)前記判定する処理は、
前記第1の匿名化モデルにより、前記複数の個人データに含まれる個人データを匿名化した際に、当該個人データと同一または類似する値を含む、前記複数の個人データのうちの他の個人データの数が、所定の数以下であれば、前記所定の基準を満たさないと判定する、ことを特徴とする付記2に記載の生成方法。
【0226】
(付記4)前記所定の数は、可変値である、ことを特徴とする付記3に記載の生成方法。
【0227】
(付記5)前記第1の匿名化モデルは、前記個人データに含まれる値に、ランダムなノイズ値を加算して得られる匿名データを、1以上生成するモデルであり、
前記判定する処理は、
前記第1の匿名化モデルにより、前記複数の個人データに含まれる個人データを匿名化した際に、加算したノイズ値の代表値が、所定の閾値以下であれば、前記所定の基準を満たさないと判定する、ことを特徴とする付記2~4のいずれか一つに記載の生成方法。
【0228】
(付記6)特定した前記1以上の個人データを、1以上のクラスタに分割する、
処理を前記コンピュータが実行し、
前記学習する処理は、
前記クラスタごとに、前記クラスタに分割した個人データに基づいて、前記クラスタに対応する前記第2の匿名化モデルを学習し、
前記生成する処理は、
前記クラスタごとに、前記クラスタに分割した個人データに基づいて、前記クラスタに分割した個人データのそれぞれよりも匿名度合いが高い、前記クラスタに対応する匿名データを生成し、
前記出力する処理は、
前記クラスタごとに、学習した前記クラスタに対応する前記第2の匿名化モデルにより、生成した前記クラスタに対応する前記匿名データを匿名化して得られた、新たな匿名データを出力する、ことを特徴とする付記1~5のいずれか一つに記載の生成方法。
【0229】
(付記7)特定した前記1以上の個人データのそれぞれの個人データに含まれる値に関する統計値を算出する、
処理を前記コンピュータが実行し、
前記生成する処理は、
特定した前記1以上の個人データのそれぞれの個人データに含まれる値を、算出した前記統計値に置換し、1以上の匿名データを生成する、ことを特徴とする付記1~6のいずれか一つに記載の生成方法。
【0230】
(付記8)前記出力する処理は、
さらに、前記複数の個人データのうち、匿名度合いが前記所定の基準を満たす個人データを、前記第1の匿名化モデルにより匿名化して得られた匿名データを出力する、ことを特徴とする付記1~7のいずれか一つに記載の生成方法。
【0231】
(付記9)前記第2の匿名化モデルは、前記匿名データに含まれる値に、ランダムなノイズ値を加算して得られる新たな匿名データを、1以上生成するモデルである、ことを特徴とする付記1~7のいずれか一つに記載の生成方法。
【0232】
(付記10)前記学習する処理は、
特定した前記1以上の個人データのそれぞれの個人データに含まれる値に関する分散および平均に基づいて、前記第2の匿名化モデルに用いられるノイズ値の範囲を決定し、前記第2の匿名化モデルを学習する、ことを特徴とする付記9に記載の生成方法。
【0233】
(付記11)情報を匿名化する第1の匿名化モデルにより、複数の個人データに含まれる個人データを匿名化した結果に基づいて、前記複数の個人データのうち、匿名度合いが所定の基準を満たさない1以上の個人データを特定し、
特定した前記1以上の個人データに基づいて、情報を匿名化する第2の匿名化モデルを学習し、
特定した前記1以上の個人データに基づいて、前記1以上の個人データのそれぞれの個人データよりも匿名度合いが高い、1以上の匿名データを生成し、
学習した前記第2の匿名化モデルにより、生成した前記1以上の匿名データのそれぞれの匿名データを匿名化して得られた、新たな匿名データを出力する、
処理をコンピュータに実行させることを特徴とする生成プログラム。
【0234】
(付記12)情報を匿名化する第1の匿名化モデルにより、複数の個人データに含まれる個人データを匿名化した結果に基づいて、前記複数の個人データのうち、匿名度合いが所定の基準を満たさない1以上の個人データを特定し、
特定した前記1以上の個人データに基づいて、情報を匿名化する第2の匿名化モデルを学習し、
特定した前記1以上の個人データに基づいて、前記1以上の個人データのそれぞれの個人データよりも匿名度合いが高い、1以上の匿名データを生成し、
学習した前記第2の匿名化モデルにより、生成した前記1以上の匿名データのそれぞれの匿名データを匿名化して得られた、新たな匿名データを出力する、
制御部を有することを特徴とする生成装置。
【符号の説明】
【0235】
100 生成装置
102,750,830,930 NG-DB
103,760,840,950 MA-DB
104,740,781,820,861,920,981 リリースDB
110 第1の匿名化モデル
120 第2の匿名化モデル
300 データ利活用システム
301 データ提供側装置
302 データ利用側装置
310 ネットワーク
400 バス
401 CPU
402 メモリ
403 ネットワークI/F
404 記録媒体I/F
405 記録媒体
500 データ管理テーブル
600 記憶部
601 取得部
602 第1の匿名化部
603 判定部
604 特定部
605 学習部
606 生成部
607 第2の匿名化部
608 出力部
701,711,751,801,831,842,940~942 個人データ群
702,703 クラスタ
710,720,780,800,860,900,980 DB
730,770,810,850,910,971,972 生成モデル
761,771,841,851,960~962 匿名データ群
1001,1002 リリースデータセット
1100,1300 表
1200,1400,1500,1601~1603,1701~1703 グラフ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21