Farklılaştırılmış gizlilikli makine öğrenimi modelleri

Python ile Veri Gizliliği ve Anonimleştirme

Rebeca Gonzalez

Data Engineer

Verileri güvenle paylaşma

Benzer verileri olan şirketler, ürün ve hizmetleri iyileştirmek için bilgi paylaşır.
  • Makine Öğrenimi (ML) modelleri dahil

Veri grafiklerine bakan birinin görüntüsü

Python ile Veri Gizliliği ve Anonimleştirme

Farklılaştırılmış gizlilikli makine öğrenimi modelleri

  • Birden çok çevrimiçi mağaza ortağı olan bir SaaS şirketi
  • Yeni bir ortak katıldığında, yeterli veri toplaması aylar sürebilir
  • DP ile SaaS şirketi, ortakları veri paylaşmaya teşvik edebilir

Ekranından roket çıkan dizüstü bilgisayar tutan bir adam çizimi

$$ $$ Bir adamın altında birden çok kişi simgesi görülen, çoklu ortakları temsil eden çizim

Python ile Veri Gizliliği ve Anonimleştirme

Makine öğrenimi ve gizlilik

  • Veri kümeleri hassas bilgiler içerir
  • Saldırganlar, makine öğrenimi çıktılarından yararlanabilir
Python ile Veri Gizliliği ve Anonimleştirme

Makine öğrenimi ve gizlilik

Farklılaştırılmış gizlilikli makine öğrenimi modelleri

  • İlgili veri dağılımlarını izler
  • Bireylere gizlilik güvencesi sağlar
Python ile Veri Gizliliği ve Anonimleştirme

Gizlilikli sınıflandırma modelleri

# 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
Python ile Veri Gizliliği ve Anonimleştirme

Gizlilik içermeyen sınıflandırıcı

from sklearn.naive_bayes import GaussianNB

# Build 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
Python ile Veri Gizliliği ve Anonimleştirme

Farklılaştırılmış gizlilikli sınıflandırıcı

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)
Python ile Veri Gizliliği ve Anonimleştirme

Gizlilik sızıntısını önleme

Veri sızıntısını önlemek için, bounds bağımsız değişkeniyle min ve max değerleri belirleyebiliriz. Şunlar olabilir:

  • (min, max) biçiminde bir demet
    • Tüm veri için min/max’ı kapsayan tamsayılar
      • Örnek:
        (0,100)
        
    • Verideki her sütun için min ve max dizileri
      • Örnek:
        ([0,1,0,2],[10,80,5,70])
        
Python ile Veri Gizliliği ve Anonimleştirme

Gizlilik sızıntısını önleme

# 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
Python ile Veri Gizliliği ve Anonimleştirme

Sınırlar (bounds) ekleme üzerine

# 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
Python ile Veri Gizliliği ve Anonimleştirme

Farklı epsilon değerleri

Farklı epsilon değerlerine göre doğruluk karşılaştırma grafiği

Python ile Veri Gizliliği ve Anonimleştirme

Gizliliği koruyan modeller oluşturalım!

Python ile Veri Gizliliği ve Anonimleştirme

Preparing Video For Download...