Анонимизация производственных данных для анализа данных с помощью Mimesis
Узнайте, как использовать библиотеку Mimesis в Python для анонимизации конфиденциальных производственных данных, на примере, который вы можете попробовать сами.

# Введение
Производственные данные, как правило, подлежат существенным ограничениям в отношении конфиденциальности и соответствия нормативным требованиям. По этой причине анонимизация таких данных становится критически важной практически в каждом реальном проекте в области анализа данных, связанном с запуском продукта, услуги или решения, основанного на данных.
Mimesis — это библиотека Python с открытым исходным кодом, которая выделяется своей способностью генерировать реалистичные «поддельные» данные с высокой производительностью. Mimesis работает локально и предоставляет бесплатное и надежное решение для обработки данных. В этой статье мы покажем, как использовать эту библиотеку для анонимизации конфиденциальных производственных данных, на пошаговом примере, который вы легко можете попробовать в своей IDE или среде блокнота.
# Пошаговая процедура
Если вы новичок в Mimesis, вам может потребоваться установить его в среду Python с помощью команды, подобной следующей:
pip install mimesis
Не забудьте добавить восклицательный знак (!) в начало команды pip, если вы работаете в среде блокнотов Google Colab или аналогичной.
Итак, мы готовы начать! Рассмотрим сценарий, основанный на многоуровневой системе подписки в программном продукте. Для простоты мы синтетически сгенерируем тестовый набор данных, содержащий информацию о клиентах и типах их подписки. В некоторых переменных набора данных содержится крайне конфиденциальная информация, как вы можете видеть ниже:
import pandas as pd # Создание фиктивного набора данных о клиентах «production» 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(«— Исходные конфиденциальные данные —«) print(df.head())
Хотя в нашем примере уровни подписки не обязательно являются конфиденциальными данными, имена пользователей, адреса электронной почты и номера телефонов — являются. С помощью Mimesis мы можем инициализировать поставщика : своего рода шаблон анонимизации данных, адаптированный к типу имеющихся у нас данных. Поскольку наши данные связаны с людьми, мы можем импортировать и использовать класс Person — поставщика, который, при наличии определенного языка, например английского, и с помощью случайного начального значения, может использоваться для генерации поддельных заменителей реальных, конфиденциальных персональных данных:
from mimesis import Person from mimesis.locales import Locale # Инициализация поставщика Person для английской локали person = Person(locale=Locale.EN, seed=42)
С этого момента процесс анонимизации персональных данных становится довольно простым. Все, что требуется, — это замена указанных нами конфиденциальных столбцов на новые данные, сгенерированные генератором локалей Mimesis. Это делается путем итерации по объекту DataFrame, содержащему весь набор данных, и вызова соответствующих функций Mimesis для реалистичного создания заменителей данных в зависимости от каждого заданного атрибута:
# 1. Замена реальных имен на вымышленные, реалистичные имена df['real_name'] = [person.full_name() for _ in range(len(df))] # 2. Замена реальных адресов электронной почты на вымышленные df['email'] = [person.email() for _ in range(len(df))] # 3. Замена реальных номеров телефонов df['phone'] = [person.telephone() for _ in range(len(df))] # 4. Переименование столбца, чтобы отразить, что это больше не настоящее имя df.rename(columns={'real_name': 'anon_name'}, inplace=True)
Обратите внимание, что класс Person в Mimesis предоставляет специальные функции для генерации полных имен, адресов электронной почты и номеров телефонов, а также других данных. Кроме того, столбец с именем переименован, чтобы отразить тот факт, что имя, включенное в обновленный набор данных, больше не является реальным, а анонимизировано.
Теперь проверим результаты , изучив преобразованный DataFrame. Поля, содержащие конфиденциальную информацию, полностью изменились: теперь они перезаписаны синтетическими данными, выглядящими вполне легитимно, что сохраняет общую структуру набора данных и важную информацию для последующего анализа, такую как subscription_tier, в целости и сохранности.
print(«n— Анонимизированные данные для анализа данных —«) print(df.head())
Выход:
— Анонимизированные данные для анализа данных — 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
Замечательно! Мы только что применили несколько простых шагов для анонимизации ряда конфиденциальных полей данных, обычно встречающихся в реальных проектах и анализах данных в сфере производственной науки о данных — и все это бесплатно, благодаря тому, что Mimesis является проектом с открытым исходным кодом.
В заключение, вот несколько рекомендаций и наблюдений по проведению процесса анонимизации, который мы только что рассмотрели:
- Мы заменили столбцы непосредственно в DataFrame. В зависимости от вашей ситуации, подумайте, является ли это правильным подходом, или же вам, возможно, следует хранить новую информацию в отдельном DataFrame, если существует риск потери исходных данных.
- Mimesis работает в режиме согласованности данных, поэтому сгенерированные данные соответствуют ожидаемым типам данных.
- Инициализация генератора случайных чисел помогает поддерживать согласованность генерируемой информации в разных запусках и обеспечивает воспроизводимость результатов.
# Завершение
В этой статье мы показали, как использовать Mimesis — мощную библиотеку Python для генерации анонимизированных и фиктивных данных — для преобразования конфиденциального производственного набора данных в версию, которую можно безопасно использовать для дальнейшего анализа, не ставя под угрозу личную информацию, такую как персональные данные реальных людей.
Иван Паломарес Карраскоса — лидер, писатель, спикер и консультант в области искусственного интеллекта, машинного обучения, глубокого обучения и магистратуры. Он обучает и направляет других в применении ИИ в реальном мире.
Источник: www.kdnuggets.com

Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.