Model pembelajaran mesin dengan privasi diferensial

Privasi Data dan Anonimisasi di Python

Rebeca Gonzalez

Data Engineer

Berbagi data secara aman

Perusahaan dengan data serupa berbagi informasi untuk meningkatkan produk dan layanan.
  • Termasuk model Machine Learning (ML)

Gambar seseorang melihat bagan data

Privasi Data dan Anonimisasi di Python

Model pembelajaran mesin dengan privasi diferensial

  • Perusahaan SaaS dengan banyak toko online sebagai mitra.
  • Saat mitra baru bergabung, butuh berbulan-bulan untuk mengumpulkan data yang cukup
  • Dengan DP, perusahaan SaaS dapat mendorong mitra untuk berbagi data

Gambar pria memegang laptop dengan roket keluar dari layar

$$ $$ Gambar pria dengan banyak ikon orang di bawahnya, mewakili banyak mitra

Privasi Data dan Anonimisasi di Python

Machine learning dan privasi

  • Dataset berisi data sensitif
  • Penyerang dapat mengeksploitasi keluaran algoritma machine learning
Privasi Data dan Anonimisasi di Python

Machine learning dan privasi

Model pembelajaran mesin dengan privasi diferensial

  • Mengikuti distribusi data terkait
  • Dapat menjamin privasi individu
Privasi Data dan Anonimisasi di Python

Model klasifikasi dengan privasi diferensial

# Import the scikit-learn naive Bayes classifier
from sklearn.naive_bayes import GaussianNB


# Import the differentially private naive Bayes classifier from diffprivlib.models import GaussianNB
Privasi Data dan Anonimisasi di Python

Classifier non-pribadi

from sklearn.naive_bayes import GaussianNB

# Bangun classifier non-pribadi nonprivate_clf = GaussianNB()
# Latih model pada data nonprivate_clf.fit(X_train, y_train)
print("Akurasi model non-pribadi adalah ", nonprivate_clf.score(X_test, y_test))
Akurasi model non-pribadi adalah  0.8333333333333334
Privasi Data dan Anonimisasi di Python

Classifier dengan privasi diferensial

from diffprivlib.models import GaussianNB as dp_GaussianNB

# Bangun classifier privat dengan konstruktor kosong private_clf = dp_GaussianNB()
# Latih model pada data dan lihat skornya private_clf.fit(X_train, y_train)
print("Akurasi model privat adalah ", private_clf.score(X_test, y_test))
Akurasi model privat adalah  0.7
PrivacyLeakWarning: Batas (bounds) belum ditentukan dan akan dihitung 
  dari data yang diberikan. Ini dapat menimbulkan kebocoran privasi tambahan.
  Untuk memastikan privasi diferensial tanpa kebocoran tambahan, tentukan bounds untuk tiap dimensi.
  "privacy leakage, specify bounds for each dimension.", PrivacyLeakWarning)
Privasi Data dan Anonimisasi di Python

Hindari kebocoran privasi

Untuk mencegah kebocoran data, ganti nilai min dan max dengan argumen bounds. Dapat berupa:

  • Tuple berbentuk (min, max)
    • Integer yang mencakup min/maks seluruh data
      • Contoh:
        (0,100)
        
    • Array untuk nilai min dan max tiap kolom data.
      • Contoh:
        ([0,1,0,2],[10,80,5,70])
        
Privasi Data dan Anonimisasi di Python

Hindari kebocoran privasi

# Tetapkan bounds untuk minimal mencakup nilai min dan max 
bounds = (X_train.min(axis=0) - 1, X_train.max(axis=0) + 1)

# Bangun classifier dengan epsilon 0.5 dp_clf = dp_GaussianNB(epsilon=0.5, bounds=bounds)
# Latih model pada data dan lihat skornya dp_clf.fit(X_train, y_train) print("Akurasi model privat adalah ", private_clf.score(X_test, y_test))
Akurasi model privat adalah  0.807000
Privasi Data dan Anonimisasi di Python

Lebih lanjut tentang penambahan bounds

# Import modul random
import random
# Tetapkan min dan max bounds pada data ditambah sedikit noise
bounds = (X_train.min(axis=0) - random.sample(range(0, 30), 12), 
          X_train.max(axis=0) + random.sample(range(0, 30), 12))


# Bangun classifier dengan epsilon 0.5 dp_clf = dp_GaussianNB(epsilon=0.5, bounds=bounds)
# Latih model pada data dan lihat skornya dp_clf.fit(X_train, y_train) print("Akurasi classifier privat dengan bounds adalah ", dp_clf.score(X_test, y_test))
Akurasi classifier privat dengan bounds adalah 0.7544444444
Privasi Data dan Anonimisasi di Python

Beragam nilai epsilon

Plot yang membandingkan akurasi dari berbagai nilai epsilon

Privasi Data dan Anonimisasi di Python

Ayo berlatih!

Privasi Data dan Anonimisasi di Python

Preparing Video For Download...