Generalisasi data dengan hierarki

Privasi Data dan Anonimisasi di Python

Rebeca Gonzalez

Data engineer

Generalisasi data

Memungkinkan Anda mengganti nilai data dengan nilai yang kurang presisi.

  • "Dancer" -> "Artist"
  • "Archaeologist" -> "Scientist"
  • "Allergist" -> "Doctor"
Privasi Data dan Anonimisasi di Python

Generalisasi data dengan hierarki

Gambar daftar profesi di kiri dan kategori umum di kanan.

Privasi Data dan Anonimisasi di Python

Dataset status pengungsi

# Explore dataset
refugee_df.head()
     Nationality    Gender    RefugeeStatus    Year
0    russian        F         0                2010
1    colombian      M         0                2008
2    vietnamese     F         1                2008
3    korean         M         0                2010
4    ethiopian      F         1                2012
Privasi Data dan Anonimisasi di Python

Menjelajahi dataset

# Set k value to 4
k = 4


# Calculate how many unique combinations are for nationality and gender df_count = df.groupby(['Nationality', 'Gender']).size().reset_index(name='Count')
# Filter the rows that have a count value less than k df_count[df_count['Count'] < k]
      Nationality   Gender    Count
4     colombian     F         2
7     cuban         M         2
12    liberian      F         2
14    mexican       F         3
15    mexican       M         3
17    russian       M         1
20    ukranian      F         3
21    ukranian      M         1
Privasi Data dan Anonimisasi di Python

Generalisasi data dengan hierarki

# See the combination counts
df['Nationality'].value_counts()
belarusian    14
korean        14
ethiopian     10
chinese       10
vietnamese     9
taiwanese      9
colombian      6
cuban          6
russian        6
mexican        6
liberian       6
ukranian       4
Name: Nationality, dtype: int64
Privasi Data dan Anonimisasi di Python

Generalisasi data dengan hierarki

# Create hierarchies for origin countries
hierarchies = {'Europe': ['ukranian','russian','belarusian'], 
               'America':['mexican','colombian','cuban'],
               'Asia': ['taiwanese','korean','chinese'],
               'Africa': ['ethiopian','liberian']}
Privasi Data dan Anonimisasi di Python

Generalisasi data dengan hierarki

# Creating hierachy father for each contry
origin_hierarchy = {}
for (key, countries) in hierarchies.items():
    for country in countries:
        origin_hierarchy[country] = key

origin_hierarchy
{'belarusian': 'Europe',
 'chinese': 'Asia',
 'colombian': 'America',
 'cuban': 'America',
 'ethiopian': 'Africa',
 'korean': 'Asia',
 'liberian': 'Africa',
 'mexican': 'America',
 'russian': 'Europe',
 'taiwanese': 'Asia',
 'ukranian': 'Europe'}
Privasi Data dan Anonimisasi di Python

Generalisasi data dengan hierarki

# Apply origin_hierarchy hierarchy generalization to Nationality
df['Nationality_generalized'] = df['Nationality'].map(origin_hierarchy)


# Explore resulting dataset df.head()
     Nationality   Gender    RefugeeStatus    Year    Nationality_generalized
0    korean        M         1                2019    Asia
1    ethiopian     M         1                2003    Africa
2    cuban         M         0                2015    America
3    cuban         F         0                2001    America
4    korean        M         0                2013    Asia
Privasi Data dan Anonimisasi di Python

Generalisasi data dengan hierarki

# Calculate how many unique combinations are for Nationality_generalized and Gender
df_count = df.groupby(['Nationality_generalized', 'Gender']).size()
                                                            .reset_index(name='Count')

# Filter the combinations that appear less than k times
df_count[df_count['Count'] < k] 
    Nationality_generalized    Gender    Count
Privasi Data dan Anonimisasi di Python

Lebih jauh tentang K-anonymity

Jenis:

  • Pendekatan berbasis kendala
  • Pendekatan multidimensi Mondrian
Privasi Data dan Anonimisasi di Python

Seaman apa K-anonymity?

Tabel yang menunjukkan potensi kebocoran privasi saat atribut sensitif kurang beragam. Contoh: Bob ada di tabel, memenuhi semua karakteristik, dan karena ia berada dalam grup berukuran k yang semuanya memiliki penyakit yang sama, maka kita tahu pasti ia memiliki penyakit tersebut.

Privasi Data dan Anonimisasi di Python

Ayo berlatih!

Privasi Data dan Anonimisasi di Python

Preparing Video For Download...