パーソナル履歴データに対する 匿名化と再識別 PWSCUP 参加者からの報告 中川裕志 出町彰啓、中川拓麻 (東京大学) SCIS2017 沖縄 2017 Jan 25
履歴データの匿名化
• 購買履歴、移動履歴、Web閲覧履歴、医療履歴などビジネスや社会で有用なデータには履歴データが多い
• とりわけ、重要なのはプライバシー保護が必要な個人データ
• そこで、履歴データの有効活用を目指して、その匿名化に関する技術を検討し、PWSCUPに参加し技術を競った。
以下は、PWSCUP主催者側ではなく、戦った参加者側からの発表
履歴データを匿名化して作り出したい状況
個人履歴データ
個人履歴データ
個人履歴データ
匿名化 履歴データ 匿名化 履歴データ 匿名化 履歴データ
他のデータ や情報
ううむ。。。この匿名化履歴データは他の入手可能なデータと突き合わせても
が特定できんな!
どのような
匿名化加工をすればよいかが研究課題
データマイニングでけっこう良い結果が
出るぞ データマイニング事業者
プライバシー悪用を狙う攻撃者
?
PWSCUPの枠組み:最大知識攻撃者モデル
個人履歴データ
個人履歴データ
個人履歴データ
匿名化 履歴データ 匿名化 履歴データ 匿名化 履歴データ
ううむ。。。この匿名化履歴データは個人名削除の履歴データと突き合わせても
が特定できんな!
どのような
匿名化加工をすればよいかが研究課題
データマイニングでけっこう良い結果が
出るぞ データマイニング事業者
プライバシー悪用を狙う攻撃者
?
個人履歴データ
個人履歴データ
個人履歴データ
左のデータと同じだが、個人名だけは削除されている
PWSCUPの枠組み:匿名化のプロはこうする!
個人履歴データ
個人履歴データ
個人履歴データ
匿名化 履歴データ 匿名化 履歴データ 匿名化 履歴データ
この方法を使えば再識別できそうだぞ!
この方法を推定したうえで、それで破れない匿名化を方法を考えるのがプロだぜ!
データマイニングでけっこう良い結果が
出るぞ データマイニング事業者
プライバシー悪用を狙う攻撃者
?
個人履歴データ
個人履歴データ
個人履歴データ
左のデータと同じだが、個人名だけは削除されている
履歴データの構造
• 個人データのデータベースの要素となる個人データレコードの構造
– 個人識別子:氏名,公的個人ID番号(パスポート番号),など
– 属性データ:生年月日,住所,国籍,など
– 履歴データ:(時刻,品目,位置情報,など)の繰り返し
個人識別子 属性データ 履歴データ
履歴データの例
• 購買履歴の場合 – (購買日時,購買店舗,購買品目,購買金額,など)の繰り返し
• 移動履歴の場合 – (出発地点,出発時刻,経路,到着地点,到着時刻 など)の繰り返し
• Webの閲覧履歴 – (閲覧したWebページのURL,閲覧時刻 など)の繰り返し
履歴データの仮名化
• 履歴データを含むレコード構造の場合でも仮名化は有効なプライバシー保護手段である。
仮名 属性データ 履歴データ
個人識別子 仮名=hash関数(個人識別子)
第3者に渡るのはこちらだけ
履歴データのk-匿名化
• 仮名+属性データ+履歴データを含むレコード構造の場合
• k-匿名化は属性データの精度を落として、データベース中で同じ属性データを持つレコードがk個以上存在するように変換
仮名 属性データ 履歴データ
仮名 精度落とした属性データ 履歴データ
同じ属性データが kレコード以上
しかし、履歴データと仮名は1対1対応している
履歴データの匿名化の問題点
• 属性データを匿名化しただけでは、履歴データから仮名を再識別できてしまう。 再識別とは、匿名化(=細工された)履歴データと属性データを元々の仮名データに紐付けてしまうこと。
• だからといって、履歴データをk-匿名化するように精度落とすと、データの価値が激減
• データの価値を落とさぬように履歴データに細工する方法を模索せねば!!! そこでPWSCUP! 詳細は直前の発表2D1,2,3にて紹介された
匿名化への2つのアプローチ
1. データの有用性を与えられた範囲内にしたうえで,再識別ができるだけ困難な匿名化処理を行う.
2. 再識別の困難さを与えられた範囲内にしたうえで,データ有用性ができるだけ高い匿名化処理を行う
• Sweenyのk-匿名化、トップ/ボトムコーディングはタイプ2.
• 後述のPWSCUPはタイプ1.
再識別と匿名化の枠組み-記法
• 記法
• D:対象の個人データのデータベース • U:有用性指標 • A:匿名化手法 • A(D):匿名化後のデータベース • C:A(D)が満たすべき条件 • R:再識別法 • Res: RをA(D)に適用したときの再識別率
匿名化手法開発の流れ ー再識別率:Resの最小化ー
1. Res,Aを初期化 2. repeat 3. A’=A 4. 新規のAを考案 5. AをDに適用しA(D)を得る 6. if {A(D)がCを満たす} 7. A(D)の再識別法Rを考案 8. RをA(D)に適用し再識別率Resを計算 9. end if 10. until Resが改善せず 11. return 匿名化手法 A’
匿名化手法開発の流れ ー再識別率に要求水準付与ー
1. while{再識別率が要求水準より高い} 2. 新規のA(匿名化法)を考案 3. AをデータベースDに適用しA(D)を得る 4. if {A(D)が有用性条件Cを満たす} 5. A(D)の再識別法Rを考案 6. RをA(D)に適用し再識別率を計算 7. end if 8. end while 9. return 匿名化手法A
留意点 • 最適化したほうが形式的にはよさそうだが Resの最小化は計算量莫大 k-匿名化ですら、最適化はNP-完全
これは開発の流れであって、アルゴリズムではないことに留意 アルゴリズム自体を考案するのは現状、人手。
再識別率=0にできないなら
むしろ、再識別率自体を利用者が設定、調整して、計算時間が耐えられるレベルにする枠組みが現実的
最大知識攻撃者モデル
• 攻撃者(=再識別を行う者)は、M,Tを知っている
• その上で、匿名化されたM’、T’からレコードの置換{p(i), i=1,n}を推定する
– これが再識別
–正しく推定できた割合が再識別率
有用性指標:cmae 詳細は2D1-1, 2D1-2
• 性別と国籍によって顧客をクラスタ化
– クラスタ全体を{C}. Cの部分集合をs, 置換をp
–購買履歴データT内でクラスタsに含まれる顧客に対応する部分をT|s, Tのj番目のレコードをtj
クラスタ内平均単価:𝜇𝑢𝑝 𝑇|𝑠 = 𝑡𝑗
単価∙𝑡𝑗個数𝑡𝑗∈𝑇|𝑠
𝑡𝑗個数
𝑡𝑗∈𝑇|𝑠
絶対値誤差の全クラスタでの平均値:
𝑐𝑚𝑎𝑒 𝑀,𝑀′, 𝑇, 𝑇′ = 𝜇𝑢𝑝 𝑇|𝑠 − 𝜇𝑢𝑝 𝑇′|𝑠
|𝐶|𝑠∈𝐶
有用性指標:subset
• M’から10人の顧客を任意に選び,その集合をX’とする.
• MにおいてX’対応する集合をX
• T上の連続した30日間の履歴データ:𝐷に対し,XとX’の購入総額の平均値の差の最大値
• 𝑠𝑢𝑏𝑠𝑒𝑡 𝑀,𝑀′, 𝑇, 𝑇′, 𝑝 =
𝑚𝑎𝑥𝑋′,𝐷( 𝜇𝑡𝑝 𝑋′, 𝐷, 𝑇′ − 𝜇𝑡𝑝 𝑋,𝐷, 𝑇 )
有用性指標:ut-jaccard
• 顧客𝑐𝑖がTで購入している商品集合:𝑆 𝑇, 𝑖 • 顧客𝑐𝑖がT’で購入している商品集合:𝑆 𝑇′, 𝑖 • Jaccard係数:
𝑑 𝑆 𝑇, 𝑖 , 𝑆 𝑇′, 𝑖 = 1 −𝑆 𝑇, 𝑖 ∩ 𝑆 𝑇′, 𝑖
𝑆 𝑇, 𝑖 ∪ 𝑆 𝑇′, 𝑖
• 𝑑の𝑀における総和: 𝑢𝑡 − 𝑗𝑎𝑐𝑐𝑎𝑟𝑑 𝑀,𝑀′, 𝑇, 𝑇′, 𝑝
=1
𝑛′ 𝑑 𝑆 𝑇, 𝑖 , 𝑆 𝑇′, 𝑖𝑛′
𝑖=1
𝑛′は𝑀′中のレコード数
有用性指標:RFM
• RFM(M, M', T, T’)
• M, M'の顧客を、それぞれT, T'の
– Recency (最後の購買日),
– Frequency(購買頻度),
– Monetary (購買額)
• の3つの条件でクラス分けした顧客数の二乗平均平方根誤差を(最大値で割ることで0~1に)正規化した値
• 性別と国籍が同じクラスタ内で仮ID入れ替えをしていれば、cmae は維持される。
• M,T ,M′,T ′ を知っている再識別側の攻撃者が使うであろう方法 1. M,T から生年月日が1964/10/1 でapple を購買した顧客が3456 であることが分かる
2. 攻撃者はM′,T ′ から仮ID =c が顧客ID=3456 に対応すると考える.同様に,攻撃者は b ↔ 1234,a ↔ 5678 という対応関係を予想し再識別する.
3. これらは正解の対応関係とは全て異なる
– 仮ID の入れ替えだけで組織的な再識別を防ぐことが出来る.
• しかし,全顧客について仮ID を入れ替える匿名化手法では ut-jaccard の値が大きくなり、過加工となってしまう.
そこで,ut-jaccard の値を維持するように更に匿名化手法を工夫して考える必要がある
そのような手法は ut-jaccard 維持する匿名化手法への再識別手法 re-itemset に破られやすい
re-itemset を想定した匿名化手法の開発が必要
有用性指標の条件と匿名化の枠組み
• 𝑠𝑢𝑏𝑠𝑒𝑡 ≤ 50000 and 𝑢𝑡 − 𝑗𝑎𝑐𝑐𝑎𝑟𝑑 ≤ 0.7 ∙ 𝑇の総レコード数
• ut-jaccard は厳しい条件
– 履歴データの値の大きな変更やレコードのシャッフルができない
1. ut-jaccardの条件をぎりぎりで満たすような匿名化を目指す。
2. 再識別側は、そのような匿名化処理をしてくることを前提に再識別処理を工夫
3. 匿名化側は、そのような再識別処理をかいくぐるような匿名化手法を開発
有効な再識別手法の設計
• 各チームから提出されたデータでは各顧客の購入商品集合はある程度以上は保存されている
• 元のデータにおける顧客ごとの購入商品集合には相当のばらつきがあり,ut-jaccard を維持しながら他のレコードと完全に紛らわせることは難しい
• このことを勘案して、以下のような再識別手法 re-itemset を導入した。
有効な再識別手法:re-itemset
1. 𝑛′ ← 𝑀′
2. for{𝑖 = 1 𝑡𝑜 𝑛′}
3. 𝑞 𝑖 ← 𝑎𝑟𝑔𝑚𝑖𝑛𝑗𝑑 𝑆 𝑇, 𝑖 , 𝑆 𝑇′, 𝑖
4. end for
5. return 𝑄 = 𝑞 1 ,⋯ . 𝑞 𝑛′
このre-itemsetは事実上最も有効な再識別手法となり,他チームの多くのデータに対して最大識別数を記録した.
re-itemset 対策の概要 1. 顧客ci のS(T ; i) に近いS(T ; j) をもつ顧客cj をjaccard クラスタ とし
てまとめる この部分は重要なので後述 2. この処理後の顧客 cj のアイテム集合𝑆 𝑇′, 𝑝−1 𝑗 が𝑆 𝑇, 𝑖 に
一致するように顧客cj のアイテムを変更する. 3. これにより,jaccard クラスタ 内の顧客の処理後のアイテム集合
は一致し,顧客間で区別できなくなる. よって,re-itemset ではjaccard クラスタ内の顧客cj は全て顧客ci として再識別される
各jaccard クラスタ で再識別される顧客を高々1 人(真の顧客ci)に抑えることができる つまり、できるだけjaccardクラスタ数を減らせればうれしい。 ただし、ut-jaccard<0.7 などの条件は満たさないといけない。
re-itemset対策アルゴリズム:つづき 端数処理
この「つづき」の部分では、jaccard クラスタ の作成時に余った顧客については3 人ずつjaccard クラスタ としてまとめる. ut-jaccard(jac)=0+1+1=2 < 0.7・3=0.21 条件満足
想定される再識別率と本戦の結果
• 詳細は略すが、提案アルゴリズムは
• 𝑢𝑡 − 𝑗𝑎𝑐𝑐𝑎𝑟𝑑 = 𝑢𝑡 − 𝑗𝑎𝑐𝑐𝑎𝑟𝑑 𝑗𝑎𝑐𝑗𝑎𝑐
≤ 0.7 ∙ 𝑗𝑎𝑐 = 0.7 ∙𝑗𝑎𝑐 レコード数
• というut-jaccardの制約条件を満たす。
本戦では、400人(=レコード)の顧客を89個のjaccardクラスタにまとめた。 このときのut-jaccardは0.699
よって、ut-jaccardを対象にした再識別手法では、90人以上再識別されないはず もしクラスタ内の個人毎識別ができなければ
予想通り、本戦では再識別されたのは89人に留まった!!!
匿名化におけるクラスタ編成手法
• ut-jaccardを対象にした再識別手法では、90人以上再識別されないはず もしクラスタ内の個人毎識別ができなければ
• だからと言って、クラスタや個別データのランダム化を無制限に行うと有用性が下落
クラスタとデータのランダム化と有用性維持を両立させるクラスタ編成手法が必要
匿名化におけるクラスタ編成手法
• クラスタ編成手法について以下で説明
Step 1 顧客の購買統計データとクラスタをランダム化.
Step 2有用性を維持すべく購買統計データを調整.
Step 3 調整された購買統計データを満たすT ′ を作成.
Step 1
• クラスタと クラスタをランダムに移動し( )、元のデータとの対応が着きにくくする。
• 水平方向の移動によってランダム化する。 • 水平方向の移動 有効性指標RFMのうち、購買額がクラスタ内で変化しない
• 赤丸の一つが左に動いた場合、別の赤丸をそれと同程度だけ逆方向すなわち右に動かす。青丸の同様である。これによって、有効性指標RFMのうち購買個数もクラスタ内で変化しないためである。
購買額
購買個数
購買額
購買個数
ランダム化
Step 2
• 有用性指標の平均絶対値誤差cmaeを劣化させない 各クラスタにおいてクラスタ重心に傾き(=平均購買額)が変化させない
• この条件でランダムに移動する。 • Step2では各顧客データ,移動するのは1 度のみとする。
• 未移動顧客の数が最小である未調整クラスタの全未移動顧客を移動し,
• そのクラスタ平均を調整する作業も行う
購買額
購買個数
購買額
購買個数
ランダム化
Step 3
• Step 2 で,T ′ において各顧客が満たすべき購買総個数と購買総額を算出した.
• Step 3 ではこの制約を満たし,topitem,ut-jaccard とsubset の有用性が落ちないようにT ′ を作成する.
• 詳細については省くが,Step 3 ではおおよそ既に述べたut-jaccard 維持する匿名化処理(個別データの値の変更)が行われる
まとめ
• 再識別フェーズではut-jaccard を軸にしたre-itemset のような再識別手法を考えているチームが多かったらしい
• 筆者らの加工データは400 人のうち最大で89 人(22.25%)が再識別された
• このことは,既に述べたように匿名化時の予測に合致しており,ut-jaccard を軸にした再識別手法の限界値が89 人である
• ただし,22.25% という値それ自体は – 有用性指標の与え方 – 対象データベースの性質
• に強く依存
• 今回のコンテストの設定における参考値に過ぎない