Modely strojového učení s diferenciálním soukromím

Ochrana soukromí a anonymizace dat v Pythonu

Rebeca Gonzalez

Data Engineer

Bezpečné sdílení dat

Společnosti se sdílenými daty za účelem zlepšení produktů a služeb.
  • Včetně modelů strojového učení (ML)

Obrázek osoby prohlížející datové grafy

Ochrana soukromí a anonymizace dat v Pythonu

Modely strojového učení s diferenciálním soukromím

  • SaaS společnost s více partnerskými e-shopy.
  • Nový partner může potřebovat měsíce na shromáždění dostatečného množství dat
  • S DP může SaaS společnost partnery motivovat ke sdílení dat

Kresba muže s laptopem, z jehož obrazovky vylétá raketa

$$ $$ Kresba muže s ikonami lidí níže, znázorňující více partnerů

Ochrana soukromí a anonymizace dat v Pythonu

Strojové učení a soukromí

  • Datasety obsahují citlivé informace
  • Útočníci mohou zneužít výstupy algoritmů strojového učení
Ochrana soukromí a anonymizace dat v Pythonu

Strojové učení a soukromí

Modely strojového učení s diferenciálním soukromím

  • Sledují odpovídající datová rozdělení
  • Mohou zaručit soukromí jednotlivcům
Ochrana soukromí a anonymizace dat v Pythonu

Klasifikační modely s diferenciálním soukromím

# 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
Ochrana soukromí a anonymizace dat v Pythonu

Klasifikátor bez ochrany soukromí

from sklearn.naive_bayes import GaussianNB

# Built the non-private classifier nonprivate_clf = GaussianNB()
# Fit the model to the 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
Ochrana soukromí a anonymizace dat v Pythonu

Klasifikátor s diferenciálním soukromím

from diffprivlib.models import GaussianNB as dp_GaussianNB

# Build the private classifier with empty constructor private_clf = dp_GaussianNB()
# Fit the model to the data and see the 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)
Ochrana soukromí a anonymizace dat v Pythonu

Zamezení úniku soukromí

Únikům dat zabráníme předáním argumentu bounds s hodnotami min a max. Může být:

  • Tuple ve tvaru (min, max)
    • Celá čísla pokrývající min/max celého datasetu
      • Příklad:
        (0,100)
        
    • Pole hodnot min a max pro každý sloupec datasetu.
      • Příklad:
        ([0,1,0,2],[10,80,5,70])
        
Ochrana soukromí a anonymizace dat v Pythonu

Zamezení úniku soukromí

# Set the bounds to cover at least the min and max values 
bounds = (X_train.min(axis=0) - 1, X_train.max(axis=0) + 1)

# Built the classifier with epsilon of 0.5 dp_clf = dp_GaussianNB(epsilon=0.5, bounds=bounds)
# Fit the model to the data and see the 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
Ochrana soukromí a anonymizace dat v Pythonu

Více o přidávání mezí

# Import random module
import random
# Set the min and max of bounds in the data plus some noise
bounds = (X_train.min(axis=0) - random.sample(range(0, 30), 12), 
          X_train.max(axis=0) + random.sample(range(0, 30), 12))


# Build the classifier with epsilon of 0.5 dp_clf = dp_GaussianNB(epsilon=0.5, bounds=bounds)
# Fit the model to the data and see the 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
Ochrana soukromí a anonymizace dat v Pythonu

Různé hodnoty epsilon

Graf porovnávající přesnost pro různé hodnoty epsilon

Ochrana soukromí a anonymizace dat v Pythonu

Vytvořte modely zachovávající soukromí!

Ochrana soukromí a anonymizace dat v Pythonu

Preparing Video For Download...