ルール説明
PWS2020実行委員会
Cupワーキンググループ

初版 2020/08/26

第2版 2020/09/04© 2020 PWS2020実行委員会 Cupワーキンググループ

1

PWS2020実行委員会 Cupワーキンググループ メンバ• 千田 浩司（NTT）• 荒井 ひろみ（理研）• 井口 誠（Kii）• 小栗 秀暢（富士通研）• 菊池 浩明（明治大）• 黒政 敦史（FJCT）• 中川 裕志（理研）• 中村 優一（早稲田大）• 西山 賢志郎（BizReach）• 野島 良（NICT）• 長谷川 聡（NTT）• 波多野 卓磨（日鉄ソリューションズ）• 濱田 浩気（NTT）• 古川 諒（NEC）• 村上 隆夫（産総研）• 山岡 裕司（富士通研）• 山田 明（KDDI総研）• 渡辺 知恵美（筑波技術大）© 2020 PWS2020実行委員会 Cupワーキンググループ

2

スケジュール
08/07(金) - 08/26(水)08/26(水)08/27(木) - 09/07(月)09/09(水) - 09/18(金)09/22(火)09/24(木) - 10/05(月)10/07(水) - 10/20(火)10/27(火)10/27(火)エントリー受付
ルール公開
予備戦(匿名化フェーズ)
予備戦(攻撃フェーズ)
予備戦結果通知本戦(匿名化フェーズ)
本戦(攻撃フェーズ)
CSS2020にて、最終結果発表
CSS2020にて、各チームの加工・攻撃手法のポスターセッション© 2020 PWS2020実行委員会 Cupワーキンググループ

3

はじめに
• PWSCUP2020 : 今年で6回目となる、匿名化とその攻撃の技術を競うコンテスト• 通称 AMIC (“Anonymity against Membership Inference” Contest)• 各参加チームは例年通り、与えられたデータを攻撃されないよう匿名化するタスクと、他の参加チームが匿名化したデータを攻撃するタスクを行う• これまでのPWSCUPでは主に再識別攻撃（レコードリンケージ）を安全性の指標としていたが、今回はメンバシップ推定攻撃を安全性の指標として競う‒ メンバシップ推定：匿名化されたデータから、誰のデータが含まれているか推定‒ 機械学習分野等で注目されている擬似データ生成を含む、より多くの匿名化手法の安全性指標として利用できる‒ 機械学習分野のトップ会議 NeurIPS2020 のコンテスト hide-and-seek privacy
challenge でも擬似データに対するメンバシップ推定をテーマにしている• メンバシップ推定は、例えば新型コロナウイルス感染者のデータ分析等、学習データに含まれる対象者の存在自体が機微な場合の安全性指標にも有用と考えられる© 2020 PWS2020実行委員会 Cupワーキンググループ

4はじめに（続き）• 表彰（各部門、得点が高い順に1位から3位まで表彰。得点の定義はp.10参照）‒ 総合部門：1位～3位‒ 匿名化部門：1位～3位
重複受賞OK‒ 攻撃部門：1位～3位‒ 各部門の結果をHPに公開予定です• 禁止事項‒ 各参加チームが出題者から個別に受け取る「サンプリングデータ」に関する情報の別参加チームへの提供‒ 各参加チームが独自に考案したアイデアを実装したプログラムの別参加チームへの提供• アイデア出しやルール確認のために一緒に議論することはOKとする‒ 意図的に運営を妨害する行為• その他‒ 予備戦の内容をふまえて、本戦までにルールが変更される可能性があります。ルールを変更する場合は速やかに参加
チームにご連絡します‒ PWS2020実行委員会 Cupワーキンググループ(WG) メンバの参加も認めています。ただし、メンバの参加者に対しては問い合わせ先MLから外すなど公平性を期すようにしています‒ WGから、匿名化データを評価してもらう目的で匿名化部門のみに参加するチームがおりますが、当該チームは各部門の順位から除外します‒ 予備戦の総合部門、匿名化部門、攻撃部門の結果をHPに公開予定です（表彰はありません）© 2020 PWS2020実行委員会 Cupワーキンググループ

5

再識別（レコードリンケージ）とメンバシップ推定②行をランダムに入れ替え
ID

属性1

属性2

・・・

③匿名化データ
PID(仮名)①パーソナルデータセット

00002

10001

（個人とIDが1対１に対応）

00005

10002

00001

10003

00001

00004

10004

00002

00003

10005

00003

・・・

・・・

ID

属性1

属性2

・・・

00004

④行をサンプリング

00005
ID

・・・

属性1

属性2

属性2

・・・

00003
00004

・・・

PID

ID

加工

10001

00004

10002

00002

10003

00001

(行の関係は維持)

10004

00005

10005

00003

⑤匿名化データ

00001

• 用語

属性1

再識別（レコードリンケージ）①と③から②のID列を推定

属性1

属性2

・・・

加工

正解率
40%

メンバシップ推定①と⑤から④のID列を推定(順不同)
ID
00002
00003

正解率
33%

00005

・・・

‒ パーソナルデータセット：各行に個人のデータが記載された表形式のデータ• 本コンテストでは1人1行とする（複数行に同一IDは無い）‒ 攻撃：メンバシップ推定や再識別（レコードリンケージ）のこと。正解率が高いほど強力な攻撃となる‒ 匿名化：攻撃を防ぐためのパーソナルデータセットの加工（①→③、①→⑤、②→③、④→⑤）© 2020 PWS2020実行委員会 Cupワーキンググループ

6

AMICの全体像
擬似データ

サンプリングデータ

12
3
4

サンプリングデータ

匿名化フェーズ
匿名化データ

1

サンプ
リング

1

3

2
3

1

3

…

…

4

…

…

…

• 10万人分(10万行)のデータ• 各加工者用の1万人分(1万行)のデータ

加工者（各参加チーム）

匿名化• 1万人分(1万行)のデータ• 出題者に提出

攻撃フェーズ
10万人分の擬似データ(10万行)

出題者

各加工者の匿名化データ
各加工者の匿名化データ(1万行)
各加工者の匿名化データ
(1万行)
(1万行)

擬似データと各加工者の匿名化データ
1
2

3
4
…

推定したサンプリングデータ

メンバシップ
推定

❓
❓
❓
❓
❓
❓

2
3

2

…

3

2

…

3

攻撃者
（加工者以外の参加チーム）…

• 各組のサンプリングデータを推定し、出題者に提出• Remark‒ パーソナルデータセットの擬似データを用いる → 加工者に非サンプリングデータを知られないようにするため• 擬似データ (Synthetic Data)：パーソナルデータセットとデータの分布等の特徴が類似した別のデータセット• パーソナルデータセットは、公開データセットの Census Income Data Set を使用（後述）‒ 擬似データは加工者に対しても秘匿（サンプリングデータのみ提供。擬似データは攻撃フェーズで攻撃者に提供）‒ サンプリングは、加工者毎にランダムサンプリング‒ メンバシップ推定は、各匿名化データに対して最も自信のある100レコード（の行番号）を提出© 2020 PWS2020実行委員会 Cupワーキンググループ

7

AMICで用いるパーソナルデータセット• Census Income Data Set https://archive.ics.uci.edu/ml/datasets/census+income• 機械学習の試用を想定した15属性の訓練用データ32,561レコード、テスト用データ16,281レコード• 次頁で説明する擬似データ生成手法を活用し、重複レコードの無い10万レコードの擬似データを生成‒ 重複を含む100万レコードの擬似データを生成してから、重複を削除し、10万レコードをランダムサンプリング• 属性値の数・分布や重複度等を考慮し、以下の9属性を用いる (73*8*16*7*14*6*2*99*2=2,175,731,712通り）
表1:AMICで用いる属性と属性値
age: continuous. [17-90]
workclass(8): Private, Self-emp-not-inc, Self-emp-inc, Federal-gov, Local-gov, State-gov, Without-pay, Never-worked.
education(16): Bachelors, Some-college, 11th, HS-grad, Prof-school, Assoc-acdm, Assoc-voc, 9th, 7th-8th, 12th, Masters, 1st-4th, 10th, Doctorate, 5th-6th, Preschool.
marital-status(7): Married-civ-spouse, Divorced, Never-married, Separated, Widowed, Married-spouse-absent, Married-AF-spouse.
occupation(14): Tech-support, Craft-repair, Other-service, Sales, Exec-managerial, Prof-specialty, Handlers-cleaners, Machine-op-inspct, Adm-clerical, Farming-fishing,Transport-moving, Priv-house-serv, Protective-serv, Armed-Forces.
relationship(6): Wife, Own-child, Husband, Not-in-family, Other-relative, Unmarried.
sex(2): Female, Male.
hours-per-week: continuous. [1-99]
income(2): >50K, <=50K
ヘッダ→(今回はヘッダ
行を除いたファイ
ルを扱う)

age

workclasseducation

marital-status

occupation

relationshipsexhours-per-weekincome39

State-gov

Bachelors

Never-married

Adm-clerical

Not-in-familyMale

40 <=50K

50

Self-emp-not-inc

Bachelors

Married-civ-spouse

Exec-managerial

HusbandMale

13 >50K

38

PrivateHS-gradDivorced

Handlers-cleaners

Not-in-familyMale

40 <=50K

53

Private11th

Married-civ-spouse

Handlers-cleaners

HusbandMale

40 <=50K

28

PrivateBachelors

Married-civ-spouse

Prof-specialty

Wife

Female40 >50K

…

…

…

…

…

…

…

…

…

© 2020 PWS2020実行委員会 Cupワーキンググループ

8

AMICで用いる擬似データ生成アルゴリズム• [OMTH17] 岡田ら: 統計値を用いたプライバシ保護擬似データ生成手法, CSS2017 3F3-4.
• 入力のパーソナルデータセットの各数値属性の平均、分散共分散行列と等しい擬似データ‒ ただし実際には、離散化や最大小値補正により多少異なる• カテゴリ属性はダミー変数化して数値属性として扱う• 擬似データのレコード数は任意に設定できる
Input: 各属性の平均のベクトル 𝝁、分散共分散行列 Σ 、各属性のヒストグラム、擬似データのレコード数
Output: 擬似データ 𝑍
1. 各属性のヒストグラムとレコード数が入力と一致するランダムなデータセット 𝑌 を生成

2.

𝑌 を白色化し、各属性の平均が0、分散共分散行列が単位行列となるデータセット 𝑌′ を生成3. Σ = 𝑈Λ𝑈 𝑇 となる回転行列 および拡大縮小行列 Λ1/2 （ Λ の各要素を平方根に変換）
4.

𝑌′(𝑈Λ1/2 )𝑇 を計算し、各行に 𝝁 を足したデータセット 𝑍 ∗ を計算

5.

𝑍 ∗ に離散化や最大小値補正を行ったものを擬似データ 𝑍 をとして出力© 2020 PWS2020実行委員会 Cupワーキンググループ

9

A. パーソナルデータセット
B. 擬似データ
Ci. 加工者 i のサンプリングデータ

勝敗
A.パーソナルデータセットB.擬似データCi.サンプリングデータ

1

1
2

擬似化

3

2
3

4

4

…

…

Di. 加工者 i の匿名化データ
Eij. 攻撃者 j が加工者 i のサンプリングデータを推定したデータ
Ci.サンプリングデータ

匿名化フェーズ
Di.匿名化データ

1

サンプ
リング

1

3

2
3

1

3

…

…

4

…

• 10万人分(10万行)のデータ• 各加工者用の1万人分(1万行)のデータ

加工者 i（各参加チーム）

匿名化• 1万人分(1万行)のデータ…

“A,B,C,D,E”と覚えてください• 出題者に提出

攻撃フェーズ

B.10万人分の擬似データ(10万行)

出題者

B.擬似データと各加工者のDi.匿名化データ Eij.サンプリングデータの推定データ

D3.各加工者の匿名化データ
D2.各加工者の匿名化データ(1万行)
D1.各加工者の匿名化データ
(1万行)
(1万行)

1

メンバシップ
推定

2
3
4
…

•

‒ 攻撃者は、各加工者の匿名化データ Di をメンバシップ推定  推定データ
Eij を提出‒ 攻撃者 j の加工者 i に対する正解率の定義：|𝐸𝑖𝑗 ⋂𝐶𝑖 |/100‒ 加工者 i の得点：1から全攻撃者の中の最高正解率を引いた値

2

…

3

2

…

3

• 各組のサンプリングデータを推定し、出題者に提出• 攻撃部門 ： 下記の得点が高い順に順位付け

例：匿名化部門5位、攻撃部門3位の場合の得点は、(5+3)-1=0.125• 匿名化部門 ： 下記の得点が高い順に順位付け

3…

• 総合部門 ： 下記の得点が高い順に順位付け‒ 参加チームの得点：匿名化部門と攻撃部門の順位の和の逆数

❓
❓
❓
❓
❓
❓

2

攻撃者 j
（加工者以外の参加チーム）‒

攻撃者の得点：匿名化部門の1～3位（自身が1～3位の場合は、自身の順位を除
く1～4位）の匿名化データに対する正解率の平均• 予備戦の得点1割、本戦の得点9割として、足した値を匿名化部門、攻撃部門
それぞれの得点とする•

その他：得点は細かい値にならないよう1,000倍および小数点以下切り捨て予定© 2020 PWS2020実行委員会 Cupワーキンググループ10記号と処理フロー

準備：出題者

G

𝐴

パーソナル 擬似データ
データセット 生成関数

加工者 𝑖 の𝐴の擬似データ サンプリング
サンプリングデータ
関数
攻撃：攻撃者 𝒋

匿名化：加工者 𝒊

Q𝑖

𝐶𝑖

𝐷𝑖

サンプリング 匿名化関数 匿名化データ
データ
有用性指標
𝑘 の評価値

有用性評価：出題者

V𝑘

𝐷𝑖
サンプリング
データ

?

𝐶𝑖

𝑈𝑖𝑘
≥

匿名化データ
有用性指標
𝑘 の評価関数

𝑇𝑇𝑖𝐶𝑖
𝑖

H

𝐵

𝑇𝑘
有用性指標
𝑘 の閾値

R𝑗

𝐵

𝐸𝑖𝑗

擬似データ メンバシップ 推定結果
推定関数

𝐷𝑖
匿名化データ

安全性評価：出題者

𝐸𝑖𝑗
推定結果

𝐶𝑖

W

𝑆𝑖𝑗

安全性指標の安全性指標の 評価値
評価関数

正解データ

• 有用性指標‒ パーソナルデータセットとその匿名化データからそれぞれ得られる統計量や機械学習の予測・分類結果等の類似性を定量的に評価したもの‒ 類似しているほど有用性が高い• 安全性指標‒ 攻撃に対する耐性を定量的に評価したもの‒ メンバシップ推定の正解率が低いほど安全性が高い© 2020 PWS2020実行委員会 Cupワーキンググループ

11

準備：出題者のタスク

準備：出題者

𝐴

G

𝐵

パーソナル 擬似データ
データセット 生成関数

H

𝑇𝑇𝑖𝐶𝑖
𝑖

加工者 𝑖 の𝐴の擬似データ サンプリング
サンプリングデータ
関数• パーソナルデータセット‒ Census Income Data Set の訓練用データ32,561レコードのうち、欠損値の無い30,162レコード‒ age, workclass, education, marital-status, occupation, relationship, sex, hours-per-week, incomeの9属性を利用• 擬似データ生成関数‒ [OMTH17]方式を採用‒ 任意レコード数を出力できる（ここでは重複の無い10万レコードの擬似データを出力）‒ 各属性の平均・分散、二属性間の共分散が元のパーソナルデータセットと類似（カテゴリ属性はダミー変数化）‒ 実装コード：gen.py  お試し用に公開• 擬似データ‒ パーソナルデータセットと平均・分散・共分散が類似した、重複の無い10万レコードのデータセット‒ 加工者には渡さない（サンプリングデータしか渡さない）• サンプリング関数‒ データセットを入力し、指定したサンプリング率(0～1)のレコードを出力‒ ここではサンプリング率=0.1とし、10万レコードの擬似データからランダムに1万レコードのサンプリングデータを出力‒ 実装コード：randomsampling.py  お試し用に公開• サンプリングデータ‒ 加工者毎に異なる、擬似データからランダムに1万レコードを抽出したデータ• その他‒ 出題者は加工者毎にサンプリングしたレコードに対応する擬似データの行番号を記録・保持 (行番号は0スタートなので注意！！)© 2020 PWS2020実行委員会 Cupワーキンググループ

12

匿名化：加工者のタスク• サンプリングデータ‒ 出題者が作成した、加工者毎に異なる、擬似データからランダムに1万レコードを抽出したデータ

匿名化：加工者 𝒊

𝐶𝑖

Q𝑖

𝐷𝑖

サンプリング 匿名化関数 匿名化データ
データ• 匿名化関数‒ 加工者が作成‒ 安全性指標の評価値が高くなるような（＝攻撃者がメンバシップ推定しにくくなるような）匿名化データを生成して出力‒ サンプルコードをいくつか公開（後述）• 匿名化データ‒ 出題者に提出‒ レコード数はサンプリングデータのレコード数と一致しなくてもよい（ただし1,000～100,000とする）• ただしレコード数の差が大きくなるほど、有用性指標の評価値が下がるよう設計されているので注意‒ 所定の有用性指標の評価値を満たす必要がある（後述）※満たさないと失格になるので注意！！
‒ 制限事項：有用性指標の都合上、匿名化データの属性はp.7表1の9属性とし、各属性の属性値もp.7表1の何れかとする• 例：属性ageの属性値は17～99の整数→匿名化データのageの属性値も17～99の整数（100、20代、[20-24]といった属性値
は不可）© 2020 PWS2020実行委員会 Cupワーキンググループ

13

匿名化：公開サンプルコード

匿名化：加工者 𝒊

𝐶𝑖

Q𝑖

𝐷𝑖

サンプリング 匿名化関数 匿名化データ
データ• synthetic.py （擬似データ生成）‒ 入力データの各属性の平均・分散、二属性間の共分散が類似する擬似データを生成して出力‒ 擬似データのレコード数を指定できる• rr.py （ランダム化/Randomized Response/PRAM）‒ 維持確率 p（0～1）を指定し、各セルの値に対して確率 p でそのまま維持し、確率 1-p でランダムな属性値に置き換え• rrp.py （ランダム化/Randomized Response/PRAM）‒ 維持確率 p（0～1）を指定し、各セルの値に対して確率 p でそのまま維持し、確率 1-p で入力データの分布に従ったランダムな属性値に置き換え• kanony.py （k-匿名化（レコード削除））‒ 属性および閾値 k の値を指定し（属性は複数指定可） 、指定した属性の各レコードについて、全く同じ属性値の組が k個以上あればそのまま維持し、k-1 個以下であればレコード毎削除する© 2020 PWS2020実行委員会 Cupワーキンググループ

14有用性評価：出題者、加工者の
タスク

V𝑘

𝐶𝑖

有用性指標
𝑘 の評価関数

匿名化データサンプリングデータ

𝑈𝑖𝑘?

‒ パーソナルデータセットとその匿名化データからそれぞれ得られる統計量や機械学習の予測・分類結果等の類似性を定量的に評価したもの‒ 類似しているほど有用性が高い

𝐷𝑖

有用性指標
𝑘 の評価値≥• 有用性指標（再掲）

有用性評価：出題者

𝑇𝑘
有用性指標
𝑘 の閾値

• 有用性指標の評価関数‒ 加工者は、次頁以降で詳述する、ヒストグラム、分散共分散行列、決定木分析の有用性指標が閾値以上となる匿名化データを作成する必要がある‒ 検証用コード utilityfunc.py を公開  加工者は自身が作成した匿名化データの有用性が閾値以上かどうか確認できる• 有用性指標の評価値と閾値‒ 次頁以降で詳述• その他‒ 出題者は、加工者から提出された匿名化データに対して utilityfunc.py を実行し、有用性指標の評価値が閾値以上かどうか確認する  閾値未満の場合は失格とする© 2020 PWS2020実行委員会 Cupワーキンググループ

15

有用性指標：ヒストグラム

V𝑘

𝐶𝑖

有用性指標
𝑘 の評価関数

匿名化データサンプリングデータ• 検証用コード utilityfunc.py を公開  閾値以上かどうか確認できる• 有用性指標の閾値：𝑻𝐡𝐢𝐬𝐭𝐠𝐫𝐚𝐦 = 𝟎. 𝟗𝟗 とする

𝑈𝑖𝑘
?

𝐷𝑖

有用性指標
𝑘 の評価値≥• 出題者に提出する匿名化データは、有用性指標の評価値が閾値未満だと失格になるので注意！！

有用性評価：出題者

𝑇𝑘
有用性指標
𝑘 の閾値

© 2020 PWS2020実行委員会 Cupワーキンググループ

16

有用性指標：分散共分散行列

V𝑘

𝐶𝑖

有用性指標
𝑘 の評価関数

匿名化データサンプリング
データ

𝑈𝑖𝑘
?

𝐷𝑖

有用性指標
𝑘 の評価値≥• 出題者に提出する匿名化データは、有用性指標の評価値が閾値未満だと失格になるので注意！！

有用性評価：出題者

𝑇𝑘
有用性指標
𝑘 の閾値

• 検証用コード utilityfunc.py を公開  閾値以上かどうか確認できる• 有用性指標の閾値：𝑻VCM = 𝟎. 𝟒 とする© 2020 PWS2020実行委員会 Cupワーキンググループ

17

有用性指標：決定木分析• 出題者に提出する匿名化データは、有用性指標の評価値が閾値未満だと失格になるので注意！！

有用性評価：出題者

𝐶𝑖

有用性指標
𝑘 の評価関数

匿名化データサンプリング
データ

𝑈𝑖𝑘
?

V𝑘

≥

𝐷𝑖

有用性指標
𝑘 の評価値

𝑇𝑘
有用性指標
𝑘 の閾値

• 検証用コード utilityfunc.py を公開  閾値以上かどうか確認できる• 有用性指標の閾値：𝑻DTA = 𝟎. 𝟖𝟓 とする（X6,X9ともに）© 2020 PWS2020実行委員会 Cupワーキンググループ

18

決定木分析のアルゴリズム• 決定木分析‒ scikit-learn の sklearn.tree.DecisionTreeClassifer を利用• https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifer.html• DecisionTreeClassifer のパラメータは下記とする。
‒ random_state = 0‒ max_depth = 5 (income 推定)‒ max_depth = 3 (relationship 推定)‒ その他は指定せず、デフォルトのパラメータを用いる。

© 2020 PWS2020実行委員会 Cupワーキンググループ

19

攻撃：攻撃者 𝒋

攻撃：攻撃者のタスク

R𝑗𝐵• 擬似データ、各加工者の匿名化データ

擬似データ‒ 出題者から受け取る

𝐷𝑖• メンバシップ推定関数‒ 擬似データと匿名化データから、擬似データのどのレコードがサンプリング
されて匿名化されたかを推定して出力（出題者に提出）‒ サンプルコード attack.py を公開

𝐸𝑖𝑗

メンバシップ 推定結果
推定関数

匿名化データ• 擬似データ B と匿名化データ Di の各レコードの距離に基づき、サンプリングデータ Ci を推定したデータ Eij を出力• レコード間のユークリッド距離（整数値の属性であれば属性値の差、カテゴリ属性であれば属性値が一致すれば 0、そうでなければ匿名化データ
擬似データ
1 とし、それらの合計）を計算し、匿名化データの各レコードと37 Male
<=50K
43
Male
<=50K
最も距離が小さい擬似データ B のレコードの行番号を返す• 推定結果‒ 攻撃者が出題者に提出‒ 擬似データのどのレコードから匿名化データを生成したか推定‒ 擬似データの行番号100個（0スタートなので注意！）

44

Female

>50K

39

Male

>50K

28

Female<=50K52

Female

>50K

・・・

・・・

・・・

距離

6
3
17

• TIPS(?)‒ 匿名化データとサンプリングデータは、ヒストグラム、分散共分散行列、決定木分析の分類結果が類似（閾値以上を満たす） → 匿名化データとヒストグラム、分散共分散行列、決定木分析の分類結果が類似（閾値以上を満たす）するよ
うなサンプリングデータの候補を疑似データの中から見つける© 2020 PWS2020実行委員会 Cupワーキンググループ
20安全性指標：出題者のタスク• 推定結果‒ 攻撃者が出題者に提出した、疑似データのどのレコードから匿名化データを生成したか推定した擬似データの行番号100個（0スタートなので注意！）

安全性評価：出題者

𝐸𝑖𝑗
推定結果

𝐶𝑖

W
安全性指標の評価関数

𝑆𝑖𝑗
安全性指標の評価値

正解データ• 正解データ‒ 出題者が加工者毎に渡したサンプリングデータ‒ 実際には擬似データのどの行をサンプリングしたか分かる行番号のみでよい（行番号は0スタートなので注意！）• 安全性指標の評価関数‒ 推定結果（100行）に対する、正解データ（1万行）との一致数を安全性指標の評価値として返す‒ すなわち安全性指標の評価値は最高100点、最低0点となる‒ 実装コード：privacymeasure.py  お試し用に公開© 2020 PWS2020実行委員会 Cupワーキンググループ

21

出題者が準備するデータやコード等のまとめ• 加工者に提供するデータ・コード‒ サンプリングデータ（加工者毎に異なる） 匿名化
データを‒ 匿名化サンプルコード1 synthetic.py
作成して‒ 匿名化サンプルコード2 rr.py
出題者に‒ 匿名化サンプルコード3 kanony.py‒ 有用性評価関数 utilityfunc.py
提出• 攻撃者に提供するデータ・コード‒ 擬似データ‒ 各加工者の匿名化データ‒ 攻撃サンプルコード attack.py• お試し用データ・コード

攻撃結果(推定結果)を出題者に提出‒ ヒストグラム：0.99‒ 分散共分散行列：0.4‒ 決定木分析：0.85

パーソナル 擬似データ
データセット 生成関数

加工者 𝑖 の𝐴の擬似データ サンプリング
サンプリングデータ
関数
攻撃：攻撃者 𝒋

匿名化：加工者 𝒊

Q𝑖

𝐶𝑖

𝐷𝑖

サンプリング 匿名化関数 匿名化データ
データ
有用性指標
𝑘 の評価値

有用性評価：出題者

V𝑘

𝐷𝑖
匿名化データ𝐶𝑖
サンプリング
データ

𝑇𝑇𝑖𝐶𝑖
𝑖

H

𝐵

𝑈𝑖𝑘
?

• 有用性指標の閾値

G

𝐴

≥

‒ Census Income Data Set‒ お試し用擬似データ‒ お試し用サンプリングデータ‒ お試し用匿名化データ‒ お試し用正解データ‒ 擬似データ生成関数 gen.py‒ サンプリング関数 randomsampling.py‒ 安全性評価関数 privacymeasure.py

準備：出題者

有用性指標
𝑘 の評価関数

𝑇𝑘
有用性指標
𝑘 の閾値

R𝑗

𝐵

𝐸𝑖𝑗

擬似データ メンバシップ 推定結果
推定関数

𝐷𝑖
匿名化データ

安全性評価：出題者

𝐸𝑖𝑗
推定結果

𝐶𝑖

W

𝑆𝑖𝑗

安全性指標の安全性指標の 評価値
評価関数

正解データ

© 2020 PWS2020実行委員会 Cupワーキンググループ

22

出題者が準備/取得するデータやコードの形式
分類
出題者が保持するデータ加工者に提供するデータ・
コード

加工者から取得するデータ

攻撃者に提供するデータ・
コード
攻撃者から取得するデータ

お試し用データ・コード

説明

ファイル名

形式/引数

• 文字コード: UTF-8• pre/main: 予備戦=pre, 本戦=main
備考

サンプリングした行番号[pre/main]_answer_[加工者番号].index

1列100行のindexファイル• 行番号は0スタート

サンプリングデータ[pre/main]_samplingdata_[加工者番号].csv

9列1万行のcsvファイル• 加工者番号: 01～99

匿名化サンプルコード1

synthetic.py

readme.txt 参照

匿名化サンプルコード2

rr.py

readme.txt 参照

匿名化サンプルコード3

rrp.pyreadme.txt 参照

匿名化サンプルコード4

kanony.py

readme.txt 参照

有用性評価関数utilityfunc.py

readme.txt 参照

決定木分析テストデータ

test.csv

9列15,060行のcsvファイル

匿名化データ[pre/main]_anonymizeddata_[加工者番号].csv

9列1,000～10万行のcsvファイル

擬似データ[pre/main]_syntheticdata.csv

9列10万行のcsvファイル

各加工者の匿名化データ[pre/main]_anonymizeddata_[加工者番号].csv

9列1,000～10万行のcsvファイル

攻撃サンプルコード

attack.py

readme.txt 参照

推定結果データ

inference_[加工者番号]_[攻撃者番号].index

1列100行のindexファイル

Census Income Data Set

census_income.data.csv

9列30,1621行のcsvファイル

お試し用擬似データ

trial_syntheticdata.csv

9列10万行のcsvファイル

お試し用サンプリングデータ

trial_samplingdata.csv

9列1万行のcsvファイル

お試し用正解データ

trial_answer.index

1列1万行のindexファイル

お試し用匿名化データ

trial_anonymizeddata.csv

9列1万行のcsvファイル

擬似データ生成関数

gen.pyreadme.txt 参照

サンプリング関数

randomsampling.py

readme.txt 参照

安全性評価関数

privacymeasure.py

readme.txt 参照

あくまでお試し用であって、これらを使って匿名化や攻撃を行わなければいけないものではありません• ランダムサンプリング© 2020 PWS2020実行委員会 Cupワーキンググループ

23

アンケート• 予備戦/本戦の匿名化フェーズ終了後、加工者は以下のアンケートにご回答ください‒ どのような匿名化手法を用いたか、攻撃者に通知する
予定です‒ 匿名化データの利用者の立場からすると、どのような匿名化手法を用いたかは必要な情報とおもわれるため、このようなルールとしました
安全性指標

加工方法
レコード削除適用したレコード数(おおよそ)：トップ(ボトム)コーディング

適用した属性番号(1 8)
適用したレコード数(おおよそ)：

レコード一部抽出

適用したレコード数(おおよそ)：

ミクロアグリゲーション

適用した属性番号(1 8)
適用したレコード数(おおよそ)：

データ交換(スワッピング)

適用した属性番号(1 2 3 4 5 6 7 8 9)
適用したレコード数(おおよそ)：ノイズ(誤差)付加

適用した属性番号(1 2 3 4 5 6 7 8 9)
適用したレコード数(おおよそ)：

疑似データ生成適用した属性番号(1 2 3 4 5 6 7 8 9)
適用したレコード数(おおよそ)：

差分プライバシー𝜖, 𝛿の値：

k-匿名性

k の値：

Pk-匿名性k の値：

ダミーレコード追加

適用したレコード数(おおよそ)：

𝛿-存在性

𝛿 の値：

その他：

⁇ の値：

ランダム化/Randomized
Response/PRAM

適用した属性番号(1 2 3 4 5 6 7 8 9)
適用したレコード数(おおよそ)：

その他：

適用した属性番号(1 2 3 4 5 6 7 8 9)
適用したレコード数(おおよそ)：© 2020 PWS2020実行委員会 Cupワーキンググループ

24