Bỏ qua tới nội dung chính
Quay lại tin tức

Ẩn danh dữ liệu sản xuất cho khoa học dữ liệu bằng Mimesis

KDnuggets· Iván Palomares Carrascosa· 20/5/2026general

Tìm hiểu cách sử dụng thư viện Mimesis của Python để ẩn danh dữ liệu sản xuất nhạy cảm, dựa trên ví dụ từng bước để tự thực hành.

Ẩn danh dữ liệu sản xuất cho khoa học dữ liệu với Mimesis - KDnuggets # Giới thiệu Dữ liệu sản xuất thường phải tuân thủ các ràng buộc đáng kể về quyền riêng tư và tuân thủ. Vì lý do này, việc ẩn danh dữ liệu đó trở nên quan trọng trong hầu hết mọi dự án khoa học dữ liệu thực tế liên quan đến việc ra mắt một sản phẩm, dịch vụ hoặc giải pháp dựa trên dữ liệu. Mimesis là một thư viện Python mã nguồn mở nổi bật nhờ khả năng tạo dữ liệu "giả" thực tế một cách hiệu quả. Mimesis chạy cục bộ và cung cấp một giải pháp đường ống dữ liệu miễn phí, mạnh mẽ. Bài viết này sẽ chỉ cho bạn cách sử dụng thư viện này để ẩn danh dữ liệu sản xuất nhạy cảm, dựa trên một ví dụ từng bước mà bạn có thể dễ dàng thử trong IDE hoặc môi trường notebook của mình. # Quy trình từng bước Giả sử bạn là người mới sử dụng Mimesis, bạn có thể cần cài đặt nó trong môi trường Python của mình bằng một lệnh như: pip install mimesis Hãy nhớ thêm dấu chấm than (!) vào đầu lệnh pip nếu bạn đang làm việc trong môi trường Google Colab notebook hoặc tương tự. Bây giờ chúng ta đã sẵn sàng bắt đầu! Chúng ta sẽ xem xét một kịch bản xoay quanh hệ thống đăng ký theo cấp độ của một sản phẩm phần mềm. Để đơn giản, chúng ta sẽ tạo một tập dữ liệu thử nghiệm tổng hợp chứa dữ liệu về khách hàng và loại đăng ký của họ. Có dữ liệu rất nhạy cảm trong một số biến của tập dữ liệu, như bạn có thể quan sát dưới đây: import pandas as pd # Tạo một tập dữ liệu khách hàng "sản xuất" giả production_data = { 'user_id': [101, 102, 103, 104], 'real_name': ['Alice Smith', 'Bob Jones', 'Charlie Brown', 'Diana Prince'], 'email': ['alice.smith@corp.com', 'bjones@startup.io', 'cbrown@domain.org', 'diana@amazon.com'], 'phone': ['555-0100', '555-0101', '555-0102', '555-0103'], 'subscription_tier': ['Premium', 'Basic', 'Basic', 'Enterprise'] } df = pd.DataFrame(production_data) print("--- Dữ liệu nhạy cảm gốc ---") print(df.head()) Trong khi các cấp độ đăng ký không nhất thiết là dữ liệu nhạy cảm trong ví dụ của chúng ta, tên người dùng, email và số điện thoại thì có. Với sự hỗ trợ của Mimesis, chúng ta có thể khởi tạo một nhà cung cấp (provider): một loại mẫu ẩn danh dữ liệu được điều chỉnh phù hợp với loại dữ liệu chúng ta có. Vì các quan sát dữ liệu của chúng ta được liên kết với con người, chúng ta có thể nhập và sử dụng lớp Person — một nhà cung cấp mà, với một ngôn ngữ cụ thể như tiếng Anh và được hỗ trợ bởi một hạt giống ngẫu nhiên, có thể được sử dụng để tạo các bản thay thế giả cho dữ liệu cá nhân nhạy cảm thực tế: from mimesis import Person from mimesis.locales import Locale # Khởi tạo một nhà cung cấp Person cho các ngôn ngữ tiếng Anh person = Person(locale=Locale.EN, seed=42) Từ thời điểm này trở đi, quy trình ẩn danh thông tin nhận dạng cá nhân (PII) khá đơn giản. Tất cả những gì cần làm là thay thế các cột nhạy cảm — do chúng tôi chỉ định — bằng dữ liệu mới được tạo từ trình tạo vị trí người dùng Mimesis. Việc này được thực hiện bằng cách lặp qua đối tượng DataFrame chứa toàn bộ tập dữ liệu và gọi các hàm Mimesis phù hợp để tạo các giá trị thay thế một cách thực tế cho dữ liệu, tùy thuộc vào từng thuộc tính đã cho: # 1. Thay thế tên thật bằng tên giả, thực tế df['real_name'] = [person.full_name() for _ in range(len(df))] # 2. Thay thế email thật bằng email giả df['email'] = [person.email() for _ in range(len(df))] # 3. Thay thế số điện thoại thật df['phone'] = [person.telephone() for _ in range(len(df))] # 4. Đổi tên cột để phản ánh rằng đây không còn là tên thật df.rename(columns={'real_name': 'anon_name'}, inplace=True) Lưu ý ở trên cách lớp Person của Mimesis cung cấp các hàm chuyên dụng để tạo tên đầy đủ, email và số điện thoại, cùng với các thông tin khác. Ngoài ra, cột tên được đổi tên để phản ánh rằng tên có trong tập dữ liệu đã cập nhật không còn là tên thật mà đã được ẩn danh. Chúng tôi hiện xác minh kết quả bằng cách xem xét DataFrame đã được chuyển đổi. Các trường PII nhạy cảm đã thay đổi hoàn toàn: chúng hiện được ghi đè bằng dữ liệu tổng hợp trông hợp pháp, giữ cho cấu trúc tập dữ liệu tổng thể và thông tin quan trọng cho các phân tích tiếp theo như subscription_tier hoàn toàn nguyên vẹn. print("\n--- Dữ liệu đã ẩn danh cho các phân tích khoa học dữ liệu ---") print(df.head()) Đầu ra: --- Dữ liệu đã ẩn danh cho các phân tích khoa học dữ liệu --- user_id anon_name email phone 0 101 Anthony Reilly archived1911@duck.com +13312271333 1 102 Kai Day suspect2087@yahoo.com +1-205-759-3586 2 103 Cleveland Osborn urgent1912@yahoo.com +13691067988 3 104 Zack Holder johnson1881@example.com +1-574-481-3676 subscription_tier 0 Premium 1 Basic 2 Basic 3 Enterprise Tuyệt vời! Chúng tôi vừa áp dụng một vài bước đơn giản để ẩn danh một số trường dữ liệu nhạy cảm thường thấy trong các dự án và phân tích khoa học dữ liệu thực tế, sản xuất — tất cả đều miễn phí, nhờ Mimesis là mã nguồn mở. Để kết thúc, đây là một số phương pháp hay nhất và nhận xét để thực hiện quy trình ẩn danh mà chúng tôi vừa đề cập: Chúng tôi đã thay thế trực tiếp các cột trong DataFrame. Tùy thuộc vào ngữ cảnh của bạn, hãy xem xét liệu đây có phải là cách tiếp cận đúng đắn hay không, hoặc liệu bạn có thể muốn lưu trữ thông tin mới trong một DataFrame riêng biệt nếu có nguy cơ mất thông tin.

Nguồn tin: KDnuggets — Tác giả: Iván Palomares Carrascosa. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.