K-anonymity परिचय

Python में डेटा प्राइवेसी और अज्ञातिकरण

Rebeca Gonzalez

Data engineer

k-anonymity क्यों ज़रूरी है?

बाएँ मैसाचुसेट्स के गवर्नर, बीच में "Identifying the governor of Massachusetts" पाठ, और दाएँ हार्वर्ड प्रोफेसर Latanya Sweeney को दिखाती छवि

Python में डेटा प्राइवेसी और अज्ञातिकरण

यह क्यों महत्वपूर्ण है?

  • छह लोगों की जन्मतिथि वही थी
  • केवल तीन पुरुष थे
  • उसके ZIP code में वही अकेला था

दो डेटासेट का इंटरसेक्शन दिखाने वाला डायग्राम: मेडिकल डेटा और वोटर लिस्ट, जिनका साझा भाग zip code, जन्मतिथि, और जेंडर है

Python में डेटा प्राइवेसी और अज्ञातिकरण

इस हमले से कैसे बचें?

सिर्फ एक रिकॉर्ड में गवर्नर जैसे डेमोग्राफिक वैल्यू थे।

सारे डेमोग्राफिक हटाने से डेटा एनालिसिस के लायक नहीं बचेगा।

क्या कोई बीच का रास्ता है ताकि डेमोग्राफिक वैल्यूज़ डेटासेट में यूनिक न रहें?

Python में डेटा प्राइवेसी और अज्ञातिकरण

k-anonymity की परिभाषा

$$ $$ $$ $$ $$ $$ डेटासेट में कम से कम k व्यक्ति उन एट्रिब्यूट्स का वही सेट साझा करें जो प्रत्येक व्यक्ति के लिए पहचान बन सकते हैं।

Python में डेटा प्राइवेसी और अज्ञातिकरण

k-anonymity की परिभाषा

सड़क पार करते लोगों का बड़ा समूह

Python में डेटा प्राइवेसी और अज्ञातिकरण

K-anonymous डेटासेट

2-anonymous:

     ZIP code    Age
0    4217        34
1    4217        34
2    1742        77
3    1742        77

डेटासेट में पहचान योग्य कॉलम्स के हर वैल्यू-कॉम्बिनेशन कम से कम k अलग रिकॉर्ड्स में आते हैं।

Not 2-anonymous:

     ZIP code    Age
0    4217        34
1    4217        34
2    1742        77
3    1743        77
Python में डेटा प्राइवेसी और अज्ञातिकरण

K-anonymity: शब्दावली

डायरेक्ट आइडेंटिफ़ायर्स, क्वाज़ी-आइडेंटिफ़ायर्स और सेंसिटिव एट्रिब्यूट्स के टर्म्स दिखाने वाला डायग्राम

Python में डेटा प्राइवेसी और अज्ञातिकरण

मेडिकल डेटा डेटासेट

# Explore DataFrame 
medical_df.head()
    Age    Department   Condition
0    34    Marketing    Anxiety disorders
1    46    Finance      Flu
2    41    Finance      Flu
3    62    Marketing    Anxiety disorders
4    44    Marketing    Anxiety disorders
Python में डेटा प्राइवेसी और अज्ञातिकरण

प्राइवेसी एट्रिब्यूट्स

प्राइवेसी एट्रिब्यूट्स:

  • Identifying: SSN और ID numbers हो सकते हैं।
  • Quasi-identifying: हमारे डेटासेट में Age और Department
  • Sensitives: हमारे डेटासेट में Medical condition
Python में डेटा प्राइवेसी और अज्ञातिकरण

क्वाज़ी-आइडेंटिफ़ायर्स के यूनिक कॉम्बिनेशन जाँचना

# Calculate how many unique combinations are for Age and Department
medical_df.groupby(['Age','Department']).size().reset_index(name='Count')
    Age    Department    Count
0    30    Production    2
1    31    Marketing     1
2    32    Marketing     1
3    32    Production    1
4    33    Production    1
5    34    Finance       1
6    34    Marketing     1
7    34    Production    1
8    35    Marketing     1
9    36    Finance       2
10    38    Finance      1
11    38    Production   1
Python में डेटा प्राइवेसी और अज्ञातिकरण

पद्धति: जनरलाइज़ेशन

# Generalize Age by creating 4 groups of intervals
medical_df['Age_group'] = pd.cut(medical_df['Age'], bins=4)


# Explore the dataset with intervals medical_df.head()
    Age    Department    Condition            Age_group
0    34    Marketing     Anxiety disorders    (29.964, 39.0]
1    46    Finance       Flu                  (39.0, 48.0]
2    41    Finance       Flu                  (39.0, 48.0]
3    62    Marketing     Anxiety disorders    (57.0, 66.0]
4    44    Marketing     Anxiety disorders    (39.0, 48.0]
Python में डेटा प्राइवेसी और अज्ञातिकरण

पद्धति: जनरलाइज़ेशन

# Calculate how many unique combinations are for Age and Department
medical_df.groupby(['Age_group','Department']).size().reset_index(name='Count')
     Age_group         Department    Count
0    (29.964, 39.0]    Finance       4
1    (29.964, 39.0]    Marketing     4
2    (29.964, 39.0]    Production    6
3    (39.0, 48.0]      Finance       8
4    (39.0, 48.0]      Marketing     5
5    (39.0, 48.0]      Production    4
6    (48.0, 57.0]      Finance       3
7    (48.0, 57.0]      Marketing     2
8    (48.0, 57.0]      Production    4
Python में डेटा प्राइवेसी और अज्ञातिकरण

पद्धति: जनरलाइज़ेशन

# Set k to be 2, for a 2-anonymous dataset
k = 2


# Calculate how many unique combinations are for Age and Department df_count = medical_df.groupby(['Age_group','Department']).size().reset_index(name='Count')
# Filter the rows that have count less than k df_count[df_count['Count'] < k]
    Age_group    Department    Count
Python में डेटा प्राइवेसी और अज्ञातिकरण

आइए k-anonymize करें!

Python में डेटा प्राइवेसी और अज्ञातिकरण

Preparing Video For Download...