Differentiële privacy in machinelearningmodellen

Dataprivacy en anonimisering in Python

Rebeca Gonzalez

Data Engineer

Data veilig delen

Bedrijven met vergelijkbare data delen info om producten en services te verbeteren.
  • Inclusief machine learning (ML)-modellen

Afbeelding van iemand die datagrafieken bekijkt

Dataprivacy en anonimisering in Python

Differentiële privacy in machinelearningmodellen

  • SaaS-bedrijf met meerdere online winkels als partners.
  • Een nieuwe partner doet er maanden over om genoeg data te verzamelen
  • Met DP kan het SaaS-bedrijf partners aanmoedigen data te delen

Tekening van een man met een laptop waar een raket uit het scherm komt

$$ $$ Tekening van een man met daaronder meerdere personenpictogrammen, die meerdere partners voorstellen

Dataprivacy en anonimisering in Python

Machine learning en privacy

  • Datasets bevatten gevoelige info
  • Aanvallers kunnen de output van ML-algoritmen misbruiken
Dataprivacy en anonimisering in Python

Machine learning en privacy

Differentiële private machinelearningmodellen

  • Volgen de bijbehorende dataverdelingen
  • Kunnen privacy van individuen garanderen
Dataprivacy en anonimisering in Python

Differentiële private classificatiemodellen

# 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
Dataprivacy en anonimisering in Python

Niet-private classifier

from sklearn.naive_bayes import GaussianNB

# Bouw de niet-private classifier nonprivate_clf = GaussianNB()
# Fit het model op de data nonprivate_clf.fit(X_train, y_train)
print("The accuracy of the non-private model is ", nonprivate_clf.score(X_test, y_test))
The accuracy of the non-private model is  0.8333333333333334
Dataprivacy en anonimisering in Python

Differentiële private classifier

from diffprivlib.models import GaussianNB as dp_GaussianNB

# Bouw de private classifier met lege constructor private_clf = dp_GaussianNB()
# Fit het model op de data en bekijk de score private_clf.fit(X_train, y_train)
print("The accuracy of the private model is ", private_clf.score(X_test, y_test))
The accuracy of the private model is  0.7
PrivacyLeakWarning: Bounds have not been specified and will be calculated 
  on the data provided. This will result in additional privacy leakage.
  To ensure differential privacy and no additional privacy leakage, specify bounds for each dimension.
  "privacy leakage, specify bounds for each dimension.", PrivacyLeakWarning)
Dataprivacy en anonimisering in Python

Voorkom privacylekken

Om datalek te voorkomen, kun je min- en max-waarden vervangen met het argument bounds. Het kan zijn:

  • Een tuple van de vorm (min, max)
    • Gehele getallen die min/max van alle data dekken
      • Voorbeeld:
        (0,100)
        
    • Arrays met min- en max-waarden per kolom in de data.
      • Voorbeeld:
        ([0,1,0,2],[10,80,5,70])
        
Dataprivacy en anonimisering in Python

Voorkom privacylekken

# Stel bounds in die minimaal de min- en max-waarden dekken 
bounds = (X_train.min(axis=0) - 1, X_train.max(axis=0) + 1)

# Bouw de classifier met epsilon 0.5 dp_clf = dp_GaussianNB(epsilon=0.5, bounds=bounds)
# Fit het model op de data en bekijk de score dp_clf.fit(X_train, y_train) print("The accuracy of the private model is ", private_clf.score(X_test, y_test))
The accuracy of the private model is  0.807000
Dataprivacy en anonimisering in Python

Meer over bounds toevoegen

# Importeer de random-module
import random
# Stel min en max van bounds in met wat ruis
bounds = (X_train.min(axis=0) - random.sample(range(0, 30), 12), 
          X_train.max(axis=0) + random.sample(range(0, 30), 12))


# Bouw de classifier met epsilon 0.5 dp_clf = dp_GaussianNB(epsilon=0.5, bounds=bounds)
# Fit het model op de data en bekijk de score dp_clf.fit(X_train, y_train) print("The accuracy of private classifier with bounds is ", dp_clf.score(X_test, y_test))
The accuracy of private classifier with bounds is 0.7544444444
Dataprivacy en anonimisering in Python

Verschillende epsilon-waarden

Plot die nauwkeurigheid vergelijkt voor verschillende epsilon-waarden

Dataprivacy en anonimisering in Python

Laten we privacyvriendelijke modellen maken!

Dataprivacy en anonimisering in Python

Preparing Video For Download...