Veri genelleştirme ile anonimleştirme

Python ile Veri Gizliliği ve Anonimleştirme

Rebeca Gonzalez

Data engineer

Veri genelleştirme

Veri değerlerini daha az hassas olanlarla değiştirmeyi sağlayan teknik.

Amaç, analize uygunluğu korurken bazı tanımlayıcıları kaldırmaktır.

Bir değeri daha az hassas bir değerle değiştirmenize olanak tanır: "Dansçı" -> "Sanatçı"

     name               location
0    Amanda Hooper      146 Rodgers Field\nGregoryview, MS 71630
1    Sarah Smith        817 Garcia Shoal\nJonesville, AR 30299
2    Sean Boyd III      1938 90th St\nDallas, TX 59715
     name               location
0    Amanda Hooper      998 Boone Estate\nReedborough, MS 71630
1    Sarah Smith        7255 Shelby Rapids Apt. 455\nKarenland, AK 30299
2    Sean Boyd III      791 Crist Parks\nGreenton, TX 59715
Python ile Veri Gizliliği ve Anonimleştirme

Veri genelleştirme

# Orijinal veriler
df_employees.head()
     first name   last name    age   ssn
0    Amber        Brown        91    798-29-4785
1    William      Gibson       34    431-66-8381
2    Daniel       Lee          92    825-91-5550
3    Andrea       Stevenson    64    188-59-3544
4    Julie        Horn         35    020-60-6388
# Genelleştirilmiş veriler: Yaş aralıkları ve maskelenmiş SSN
generalized_df.head()
    First name    Last name    Age        SSN
0    Amber        Brown        (80, 99]    798-**-****
1    William      Gibson       (30, 50]    431-**-****
2    Daniel       Lee          (80, 99]    825-**-****
3    Andrea       Stevenson    (60, 80]    188-**-****
4    Julie        Horn         (30, 50]    020-**-****

34 yaşındakiler 30-50 aralığına yerleştirilir. Buna ayrıca binleme denir.

Python ile Veri Gizliliği ve Anonimleştirme

Veri toplulaştırma

Solda mesleki pozisyon listesi, sağda genel üst kategoriler bulunan görsel.

Python ile Veri Gizliliği ve Anonimleştirme

Tıbbi veri kümesi

# Veri kümesini inceleyin
df_medical.head()
    age    gender    department    condition
0    30    F         Finance       Anxiety disorders
1    42    M         Production    Bronchitis
2    35    F         Marketing     Dysthymia
3    39    F         Production    Dysthymia
4    40    M         Marketing     Flu
Python ile Veri Gizliliği ve Anonimleştirme

Tıbbi veri kümesi

# Yaş değişkeninin histogramını inceleyin
df_medical['age'].hist(bins=15)

Veri kümesindeki yaş özniteliğinin, hist yöntemiyle oluşturulan histogramı

Python ile Veri Gizliliği ve Anonimleştirme

Genelleştirme

# İkili verilere dönüştürerek genelleştirme uygulayın
df_medical['age'] = df_medical['age'].apply(lambda x:">=40" if x>=40 else "<40" )


# Sonuçlara bakın df_medical.head()
    age    gender    department    condition
0    <40   F         Finance       Bronchitis
1    >=40  M         Production    Bronquitis
2    <40   F         Finance       Dysthymia
3    <40   F         Production    Dysthymia
4    >=40  M         Marketing     Flu
Python ile Veri Gizliliği ve Anonimleştirme

Üst ve alt kodlama

# Yaş değişkeninin histogramını inceleyin
df_medical['age'].hist(bins=15)

Veri kümesindeki yaş özniteliğinin, hist yöntemiyle oluşturulan histogramı

  • 25'ten küçük ve 55'ten büyük çok az kişi var
  • Bu aykırı kişiler için yeniden tanımlama riskini azaltmak üzere sınırlar uygulayın
  • Özellikle dağılımın kuyruklarında, bir kategoride çok az gözlem olduğunda en iyisidir
Python ile Veri Gizliliği ve Anonimleştirme

Üst kodlama

# Etkilenen satırları filtreleyin
df_medical[df_medical['age'] >= 55]
      age   gender   department     condition
26    56    F        Production     Flu
65    55    M        Finance        Dysthymia
126   59    F        Production     Anxiety disorders
139   58    F        Finance        Dysthymia
142   59    M        Marketing      Flu
145   57    M        Marketing      Anxiety disorders
Python ile Veri Gizliliği ve Anonimleştirme

Üstten kodlama

# Yaşı 55'e üstten kodlayın
df_medical.loc[df_medical['age'] > 55, 'age'] = 55


# Etkilenen satırları filtreleyin df_medical[df_medical['age'] >= 55]
      age   gender   department     condition
26    55    F        Production     Flu
65    55    M        Finance        Dysthymia
126   55    F        Production     Anxiety disorders
139   55    F        Finance        Dysthymia
142   55    M        Marketing      Flu
145   55    M        Marketing      Anxiety disorders
Python ile Veri Gizliliği ve Anonimleştirme

Alttan kodlama

# Yaş değişkeninin histogramını inceleyin
df_medical['age'].hist(bins=15)

Üstten kodlama uygulandıktan sonra veri kümesindeki yaş özniteliğinin, hist yöntemiyle oluşturulan histogramı. Histogramın sağ tarafında en yüksek değerlere karşılık gelen aykırı değerler görünmüyor

Python ile Veri Gizliliği ve Anonimleştirme

Alttan kodlama

# Yaşı 25'e alttan kodlayın
df_medical.loc[df['age'] < 25, 'age'] = 25


# Yaş değişkeninin histogramını inceleyin df_medical['age'].hist(bins=15)

Üstten ve alttan kodlama sonrası veri kümesindeki yaş özniteliğinin, hist yöntemiyle oluşturulan histogramı. Aykırı değerler görünmüyor

Python ile Veri Gizliliği ve Anonimleştirme

Veri genelleştirme ve gizlilik modelleri

K-anonimlik gibi bir Gizlilik Modeli ile Bastırma ve Maskeleme ile birlikte kullanıldığında daha etkilidir.

Açıklama riskini kontrol altında tutmak için veri kümesinin sağlaması gereken koşulları belirtir.

Bu gizlilik modelini bir sonraki bölümde uygulamayı öğreneceğiz!

Python ile Veri Gizliliği ve Anonimleştirme

Haydi pratik yapalım!

Python ile Veri Gizliliği ve Anonimleştirme

Preparing Video For Download...