Hiyerarşilerle veriyi genelleştirme

Python ile Veri Gizliliği ve Anonimleştirme

Rebeca Gonzalez

Data engineer

Veri genelleştirme

Bir veri değerini daha az kesin bir değerle değiştirmenizi sağlar.

  • "Dancer" -> "Artist"
  • "Archaeologist" -> "Scientist"
  • "Allergist" -> "Doctor"
Python ile Veri Gizliliği ve Anonimleştirme

Hiyerarşilerle veri genelleştirme

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

Python ile Veri Gizliliği ve Anonimleştirme

Mülteci durumu veri seti

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

Veri setini keşfetme

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

Hiyerarşilerle veri genelleştirme

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

Hiyerarşilerle veri genelleştirme

# Create hierarchies for origin countries
hierarchies = {'Europe': ['ukranian','russian','belarusian'], 
               'America':['mexican','colombian','cuban'],
               'Asia': ['taiwanese','korean','chinese'],
               'Africa': ['ethiopian','liberian']}
Python ile Veri Gizliliği ve Anonimleştirme

Hiyerarşilerle veri genelleştirme

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

Hiyerarşilerle veri genelleştirme

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

Hiyerarşilerle veri genelleştirme

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

K-gizlilik hakkında daha fazlası

Türleri:

  • Kısıtlar yaklaşımı
  • Mondrian çok boyutlu yaklaşım
Python ile Veri Gizliliği ve Anonimleştirme

K-gizlilik ne kadar güvenli?

Duyarlı özniteliklerin çeşitlilik göstermediğinde olası bir gizlilik ihlalinin nasıl oluşabileceğini gösteren tablo. Bob tabloda, tüm özellikleri sağlıyor ve k kişilik grubun tamamı aynı hastalığa sahip olduğundan onun da belirli bir hastalığı olduğundan emin oluyoruz.

Python ile Veri Gizliliği ve Anonimleştirme

Hadi pratik yapalım!

Python ile Veri Gizliliği ve Anonimleştirme

Preparing Video For Download...