Ẩn danh bằng tổng quát hóa dữ liệu

Bảo mật dữ liệu và Ẩn danh trong Python

Rebeca Gonzalez

Data engineer

Tổng quát hóa dữ liệu

Kỹ thuật cho phép thay giá trị dữ liệu bằng giá trị kém chi tiết hơn.

Mục tiêu là loại bớt một số định danh nhưng vẫn giữ hữu ích phân tích.

Cho phép thay một giá trị bằng giá trị tổng quát hơn: "Dancer" -> "Artist"

     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
Bảo mật dữ liệu và Ẩn danh trong Python

Tổng quát hóa dữ liệu

# Dữ liệu gốc
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
# Dữ liệu đã tổng quát: Tuổi theo khoảng, SSN được che
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-**-****

Những người 34 tuổi sẽ vào khoảng 30–50. Cách này còn gọi là binning.

Bảo mật dữ liệu và Ẩn danh trong Python

Tổng hợp dữ liệu

Hình minh họa danh sách nghề nghiệp chi tiết bên trái và nhóm danh mục tổng quát bên phải.

Bảo mật dữ liệu và Ẩn danh trong Python

Tập dữ liệu y khoa

# Khám phá tập dữ liệu
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
Bảo mật dữ liệu và Ẩn danh trong Python

Tập dữ liệu y khoa

# Khám phá biểu đồ tần suất của biến tuổi
df_medical['age'].hist(bins=15)

Biểu đồ tần suất của thuộc tính tuổi từ tập dữ liệu, tạo bằng phương thức hist

Bảo mật dữ liệu và Ẩn danh trong Python

Tổng quát hóa

# Áp dụng tổng quát hóa bằng cách nhị phân hóa dữ liệu
df_medical['age'] = df_medical['age'].apply(lambda x:">=40" if x>=40 else "<40" )


# Xem kết quả 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
Bảo mật dữ liệu và Ẩn danh trong Python

Top/bottom coding

# Khám phá biểu đồ tần suất của biến tuổi
df_medical['age'].hist(bins=15)

Biểu đồ tần suất của thuộc tính tuổi từ tập dữ liệu, tạo bằng phương thức hist

  • Ít người dưới 25 và ít người trên 55
  • Áp dụng ngưỡng để giảm nguy cơ tái định danh cho các ngoại lệ này
  • Hiệu quả khi có rất ít quan sát trong một nhóm, nhất là ở đuôi phân phối
Bảo mật dữ liệu và Ẩn danh trong Python

Top coding

# Lọc để xem các hàng bị ảnh hưởng
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
Bảo mật dữ liệu và Ẩn danh trong Python

Top code

# Top code tuổi về 55
df_medical.loc[df_medical['age'] > 55, 'age'] = 55


# Lọc để xem các hàng bị ảnh hưởng 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
Bảo mật dữ liệu và Ẩn danh trong Python

Bottom coding

# Khám phá biểu đồ tần suất của biến tuổi
df_medical['age'].hist(bins=15)

Biểu đồ tần suất sau khi áp dụng top coding. Không còn ngoại lệ bên phải ứng với giá trị cao nhất

Bảo mật dữ liệu và Ẩn danh trong Python

Bottom code

# Bottom code tuổi về 25
df_medical.loc[df['age'] < 25, 'age'] = 25


# Khám phá biểu đồ tần suất của biến tuổi df_medical['age'].hist(bins=15)

Biểu đồ tần suất sau khi áp dụng cả top và bottom coding. Không còn ngoại lệ

Bảo mật dữ liệu và Ẩn danh trong Python

Tổng quát hóa dữ liệu và mô hình quyền riêng tư

Hiệu quả hơn khi kết hợp với Suppression và Masking theo mô hình quyền riêng tư như K-anonymity.

Chỉ định điều kiện mà tập dữ liệu phải thỏa để kiểm soát rủi ro lộ lọt.

Chúng ta sẽ học cách triển khai mô hình này ở chương sau!

Bảo mật dữ liệu và Ẩn danh trong Python

Đến lúc luyện tập!

Bảo mật dữ liệu và Ẩn danh trong Python

Preparing Video For Download...