差分プライバシー入門

Pythonで学ぶデータプライバシーと匿名化

Rebeca Gonzalez

Instructor

差分プライバシー(DP)とは?

髪を染めていますか?

$$ $$ 2つのボタンの一方を指し、チェックマークのある方を選択する手の画像

金髪の女性の絵

Pythonで学ぶデータプライバシーと匿名化

差分プライバシー(DP)とは?

コインの画像

Pythonで学ぶデータプライバシーと匿名化

差分プライバシー(DP)とは?

左の枝で「表」を指すコインの図

Pythonで学ぶデータプライバシーと匿名化

差分プライバシー(DP)とは?

左の枝で表を指すコインの図。続いて「実際の答え」という語句

Pythonで学ぶデータプライバシーと匿名化

差分プライバシー(DP)とは?

枝の右側で裏面を指すコインの図

Pythonで学ぶデータプライバシーと匿名化

差分プライバシー(DP)とは?

枝の右側で裏面を指すコインの図。続いて表と裏の選択肢

Pythonで学ぶデータプライバシーと匿名化

差分プライバシー(DP)とは?

枝の右側で裏面を指すコインの図。続いて表と裏の選択肢。表は「No」、裏は「Yes」で終了

Pythonで学ぶデータプライバシーと匿名化

差分プライバシー(DP)とは?

差分プライバシーは、プライバシーの数学的定義です。

半分に分かれた顔の絵。右半分にクエスチョンマーク

Pythonで学ぶデータプライバシーと匿名化

誰が差分プライバシー(DP)を使っているか

Appleのロゴ

Pythonで学ぶデータプライバシーと匿名化

誰が差分プライバシー(DP)を使っているか

Appleの絵文字キーワード

Appleのロゴ

Pythonで学ぶデータプライバシーと匿名化

グローバル差分プライバシー

  • 信頼できる管理者がデータを保護
  • 出力にノイズを追加

グローバル差分プライバシーの図

Pythonで学ぶデータプライバシーと匿名化

ローカル差分プライバシー

  • 信頼主体は不要
  • 共有前にノイズを追加

ローカル差分プライバシーの図

Pythonで学ぶデータプライバシーと匿名化

イプシロン差分プライバシー

ギリシャ文字イプシロン $\epsilon$: 公開のプライバシー度とノイズ量。

  • $\epsilon$ が高いほど、精度は高くプライバシーは低い
  • 低 $\epsilon$ では、データは強くランダム化
Pythonで学ぶデータプライバシーと匿名化

イプシロンは指数的に効く

例として $\epsilon$ = 1。

$\epsilon^1=2.72$

  • $\epsilon$ = 2 より約3倍プライベート
    • $\epsilon^2=7.39$
  • $\epsilon$ = 10 より8,000倍以上プライベート
    • $\epsilon^10=22000$
Pythonで学ぶデータプライバシーと匿名化

k-匿名化と差分プライバシー

k-匿名化は「構文的」保証

  • いまも広く利用
  • 多くの場面で不十分

差分プライバシーは事実上の標準モデル

  • 企業に好まれる:Apple、Uber、Google
  • 公開ごとのプライバシー劣化を正確に定量化可能
Pythonで学ぶデータプライバシーと匿名化

diffprivlib 入門

IBM の diffprivlib v0.3

IBM のロゴ

Pythonで学ぶデータプライバシーと匿名化

ヒストグラム

# Get counts and bars for non-private histogram of salaries
counts, bins = np.histogram(salaries)


# Normalize counts to get proportions of the height proportions = counts / counts.sum()
# Draw the histogram of proportions plt.bar(bins[:-1], height=proportions, width=(bins[1] - bins[0])) plt.show()
Pythonで学ぶデータプライバシーと匿名化

ヒストグラム

非プライベートなヒストグラムの結果

Pythonで学ぶデータプライバシーと匿名化

プライベートなヒストグラム

import diffprivlib.tools

# Get counts and bars for private histogram of salaries with epsilon of 0.1 dp_counts, dp_bins = tools.histogram(salaries, epsilon=0.1)
# Normalize counts to get proportions dp_proportions = dp_counts / dp_counts.sum()
# Draw the histogram of proportions and see differences plt.bar(dp_bins[:-1], dp_proportions, width=(dp_bins[1] - dp_bins[0])) plt.show()
Pythonで学ぶデータプライバシーと匿名化

プライベートなヒストグラム

非プライベートなヒストグラム 非プライベートなヒストグラムの結果

プライベートなヒストグラム(結果) プライベートなヒストグラムの結果

Pythonで学ぶデータプライバシーと匿名化

Laten we oefenen!

Pythonで学ぶデータプライバシーと匿名化

Preparing Video For Download...