Anonimisasi dengan generalisasi data

Privasi Data dan Anonimisasi di Python

Rebeca Gonzalez

Data engineer

Generalisasi data

Teknik untuk mengganti nilai data dengan yang kurang presisi.

Tujuannya menghilangkan sebagian pengenal sambil mempertahankan kegunaan data untuk analisis.

Memungkinkan mengganti nilai dengan yang lebih umum: "Penari" -> "Seniman"

     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
Privasi Data dan Anonimisasi di Python

Generalisasi data

# Data asli
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
# Data yang digeneralisasi: Umur dalam interval dan SSN dimasking
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-**-****

Mereka yang berusia 34 tahun akan masuk rentang 30–50. Ini juga disebut binning.

Privasi Data dan Anonimisasi di Python

Agregasi data

Gambar menampilkan daftar profesi di kiri dan kategori umum di kanan.

Privasi Data dan Anonimisasi di Python

Dataset medis

# Jelajahi dataset
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
Privasi Data dan Anonimisasi di Python

Dataset medis

# Jelajahi histogram variabel age
df_medical['age'].hist(bins=15)

Histogram atribut age dari dataset, dibuat dengan metode hist

Privasi Data dan Anonimisasi di Python

Generalisasi

# Terapkan generalisasi dengan mengubah ke data biner
df_medical['age'] = df_medical['age'].apply(lambda x:">=40" if x>=40 else "<40" )


# Lihat hasil 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
Privasi Data dan Anonimisasi di Python

Top dan bottom coding

# Jelajahi histogram variabel age
df_medical['age'].hist(bins=15)

Histogram atribut age dari dataset, dibuat dengan metode hist

  • Sedikit yang berusia <25 dan >55
  • Terapkan batas untuk kurangi risiko re-identifikasi pada outlier ini
  • Terbaik saat sangat sedikit observasi dalam kategori, terutama di ekor distribusi
Privasi Data dan Anonimisasi di Python

Top coding

# Saring untuk melihat baris yang terpengaruh
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
Privasi Data dan Anonimisasi di Python

Top code

# Top code age ke 55
df_medical.loc[df_medical['age'] > 55, 'age'] = 55


# Saring untuk melihat baris yang terpengaruh 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
Privasi Data dan Anonimisasi di Python

Bottom coding

# Jelajahi histogram variabel age
df_medical['age'].hist(bins=15)

Histogram atribut age setelah top coding. Tidak menampilkan outlier di sisi kanan untuk nilai tertinggi

Privasi Data dan Anonimisasi di Python

Bottom code

# Bottom code age ke 25
df_medical.loc[df['age'] < 25, 'age'] = 25


# Jelajahi histogram variabel age df_medical['age'].hist(bins=15)

Histogram atribut age setelah top dan bottom coding. Tidak menampilkan outlier

Privasi Data dan Anonimisasi di Python

Generalisasi data dan model privasi

Lebih baik dipakai bersama Suppression dan Masking mengikuti Privacy Model seperti K-anonymity.

Tetapkan kondisi yang harus dipenuhi dataset untuk menjaga risiko pengungkapan.

Kita akan mempelajari cara menerapkan model privasi ini di bab berikutnya!

Privasi Data dan Anonimisasi di Python

Ayo berlatih!

Privasi Data dan Anonimisasi di Python

Preparing Video For Download...