04 янв. 2026 г.·7 мин

Анонимизация и маскирование данных: для обучения и логов

Анонимизация и маскирование данных: как найти чувствительные поля, выбрать метод скрытия, проверить обратимость и безопасно готовить датасеты и логи.

Анонимизация и маскирование данных: для обучения и логов

Какая проблема возникает при обучении и логировании

Когда вы обучаете модель или включаете подробные логи, данные часто копируются туда, где их не планировали хранить долго: в экспериментальные датасеты, тестовые среды, архивы логов, выгрузки для аналитики. Поэтому анонимизацию и маскирование лучше делать до обучения и до записи логов, а не «потом, если понадобится».

Опасность в том, что «лишние» поля живут дольше и расходятся шире, чем исходная база. Появляются дополнительные доступы (разработчики, подрядчики, аналитики), копии на ноутбуках и в песочницах, бэкапы. Любая утечка в таком месте бьет сильнее, потому что данные уже размножены, а отследить и удалить их сложнее.

В логи персональные и чувствительные данные чаще всего попадают случайно. Обычно это происходит, когда:

  • пишут тело запроса или ответ целиком (особенно при отладке)
  • логируют заголовки авторизации, токены сессии, cookies
  • сохраняют параметры URL и форм (телефон, ИИН, email)
  • в тексты ошибок и трейсы стека «приклеивается» ввод пользователя
  • делают дампы объектов, например печатают профиль клиента

С обучением похожая история: модель может «запомнить» редкие строки (например, номер документа) и потом воспроизвести их в ответах или при анализе. Даже без внешней утечки хранение исходных идентификаторов в обучающих наборах чаще всего не нужно.

На практике «достаточно скрыто» значит: по сохраненным данным нельзя разумно восстановить личность без отдельного закрытого ключа или таблицы соответствий, и эти секреты не лежат рядом с логами и датасетами. Хороший ориентир: можно ли, имея только логи или обучающий набор, снова собрать ФИО, ИИН, телефон или точный адрес. Если да, маскирование сделано недостаточно.

Термины без путаницы: что вы делаете на самом деле

Слова часто смешивают, а потом получается странная политика: данные вроде бы «защищены», но в логах все равно лежит лишнее. Чтобы нормально выстроить анонимизацию и маскирование, сначала стоит назвать вещи своими именами.

Анонимизация - это когда нельзя вернуть человека назад ни вам, ни кому-то еще, даже если очень захотеть. Обычно это цель для открытых отчетов, тестовых выгрузок «на сторону» или датасетов, которые будут жить долго.

Псевдонимизация - это замена идентификаторов на псевдонимы с возможностью вернуть исходное значение по ключу или через отдельную таблицу соответствий. Подходит, когда иногда нужно восстановить детали: расследование инцидента, разбор спорной операции, запрос пользователя.

Маскирование - это «сделать менее читаемым» без обязательной криптографии: скрыть часть номера, заменить символы, округлить дату, обрезать строку. Его часто используют в логах и интерфейсах, где людям не нужны полные значения.

Выбор подхода проще всего делать от задачи:

  • нужна ли обратимость и кто имеет право на восстановление
  • сколько и как долго вы храните данные
  • сколько людей и систем увидят результат
  • что важнее: точность для аналитики или максимальная приватность

Почему вариант «зашифровали и забыли» не всегда помогает? Шифрование сохраняет данные целиком, просто в другом виде. Если ключ доступен слишком широко, утечка ключа возвращает все. Плюс зашифрованные поля плохо подходят для обучения и анализа без отдельной подготовки.

Простой пример: в логах сервиса есть email и номер договора. Для ежедневной отладки достаточно маски (user***@domain.kz, договор 12****89). Для редких расследований можно использовать псевдонимы и хранить ключи отдельно, с жестким доступом и коротким сроком хранения.

Как выявить чувствительные поля и «скрытые идентификаторы»

Чтобы анонимизация и маскирование работали, сначала нужно понять, какие поля реально могут идентифицировать человека или устройство. Ошибка обычно не в том, что забыли «ФИО», а в том, что пропустили поле, которое выглядит безобидно.

Начните с карты данных

Соберите перечень источников и отметьте, где данные появляются впервые и куда дальше расходятся по системам. Ищите не только в основной базе, но и в «хвостах», которые часто уходят в логи и аналитические выгрузки: реплики для отчетов, выгрузки (CSV/Excel), тестовые датасеты, сообщения очередей и интеграционные обмены, события приложений, файлы ошибок, дампы и трассировки.

Дальше пройдитесь по полям и пометьте прямые персональные данные. Удобно группировать их, чтобы не утонуть в деталях:

  • государственные и финансовые идентификаторы (ИИН, номер карты)
  • контактные данные (телефон, email)
  • данные личности и адреса (ФИО, адрес)
  • чувствительные категории (например, медицинские данные)
  • учетные данные и секреты (пароли, коды, ответы)

Как распознать «скрытый идентификатор»

Непрямые идентификаторы опасны в комбинации. По отдельности «дата рождения» или «должность» могут казаться безопасными, но вместе с городом и полом иногда дают уникальный набор. Простой тест: возьмите выгрузку и посмотрите, сколько строк становится уникальными при сочетании 2-4 полей. Если уникальности много, это кандидат на маскирование или укрупнение (например, год вместо даты).

Отдельная зона риска - технические идентификаторы: IP-адрес, device ID, cookies, рекламные идентификаторы, токены сессий и request-id, которые можно связать с пользователем. В логах такие поля часто прячутся внутри JSON, заголовков, параметров URL или текстов ошибок.

Небольшой пример: в логах обращения в поддержку «текст сообщения» может содержать ИИН или номер телефона, даже если отдельного поля для этого нет. Поэтому проверяйте не только колонки, но и свободный текст, а также регулярные шаблоны (телефон, email, ИИН) в сообщениях и исключениях.

Минимизация данных: что можно удалить до маскирования

Перед тем как начинать маскирование, стоит сделать более простой шаг: убрать все, без чего задача все равно решается. Чем меньше вы тащите в датасет и в логи, тем ниже риск утечки и тем проще контроль доступа.

Начните с быстрой классификации полей по уровню чувствительности. Важно, чтобы она была одинаковой для аналитики, ML и разработки, иначе «лишнее» будет возвращаться снова и снова:

  • открытые: то, что и так публично (например, тип продукта, общая категория запроса)
  • внутренние: служебные поля без прямого вреда при утечке (внутренние статусы, коды ошибок)
  • конфиденциальные: коммерческие детали (условия договоров, цены, конфигурации, серийные номера)
  • персональные: ФИО, телефон, email, ИИН, адрес, геолокация, биометрия

Дальше задайте простой вопрос по каждому полю: «оно реально влияет на качество модели или отчета?» Часто модели достаточно текста обращения, темы, времени, канала и результата обработки. А вот полное имя, телефон, точный адрес и номер документа почти никогда не нужны.

Полезный прием - разделить поля на три группы: нужно всегда, нужно иногда (и тогда хранить отдельно и ограниченно), не нужно. Для «не нужно» правильный ответ - удалять до того, как данные попадут в хранилище или очередь.

Отдельно проверьте поля, которые попадают в логи «по умолчанию»: полные тела запросов и ответов, заголовки авторизации и токены, идентификаторы устройств и сессий, а также «удобные» debug-структуры с профилем пользователя.

Пример: в тикете поддержки может быть номер телефона «для связи». Для аналитики по причинам обращений он не нужен, значит его лучше выкинуть сразу, а не маскировать и потом случайно сохранить в логах ошибок.

Методы маскирования: что выбрать для датасетов и логов

Серверы GSE для дата-центра
Выберите конфигурацию под ваши нагрузки и требования к изоляции сред.
Подобрать сервер

Выбор метода зависит от двух вещей: нужно ли потом восстановить исходное значение и нужно ли связывать записи между собой (например, собирать историю по одному клиенту). На практике это почти всегда смесь техник, а не один «волшебный» способ.

Нереверсивные методы (когда исходник не нужен)

Для логов и обучающих выборок чаще всего лучше не оставлять возможность восстановления. Тогда риск утечки ниже, а хранить секреты не требуется.

  • Удаление и подавление: выкинуть поле целиком или заменить на пустое/"[REDACTED]". Хорошо для паспортов, полных адресов, комментариев «в свободной форме».
  • Обобщение: заменить точное значение на диапазон или категорию (возраст 34 -> 30-39, гео -> город). Это сохраняет смысл для аналитики.
  • Хеширование с солью: подходит, когда нужен стабильный идентификатор без раскрытия значения. Важно помнить: для коротких значений (телефон, ИИН) даже хеш можно подобрать перебором, поэтому нужна соль и контроль доступа к ней.

Реверсивные методы (когда восстановление оправдано)

Если есть законная причина восстановить данные (например, обработка инцидентов по обращению), выбирают токенизацию или шифрование. Токенизация удобна тем, что исходные данные хранятся отдельно, а в датасете и логах живет только токен. Формат-сохраняющее маскирование помогает, когда поле должно проходить валидацию по формату (например, номер карты выглядит как номер карты, но не является им).

Частичное маскирование полезно для поддержки: показать последние 4 цифры договора, домен email вместо полного адреса, усеченный адрес до улицы или района.

Чтобы данные оставались полезными, заранее решите, что именно вы сохраняете: тип, длину, диапазон и распределение. Например, для обучения важен город и тип устройства, а точный адрес и полное ФИО можно не хранить.

Если нужен джойн, замена должна быть стабильной: одно и то же значение всегда дает один и тот же токен или псевдоним в рамках выбранного набора данных.

Пошаговый процесс: как внедрить маскирование в поток данных

Начните не с инструментов, а с правил. Пока не ясно, какие поля вы защищаете и зачем, маскирование будет случайным, а значит ненадежным.

Шаги, которые работают в реальном потоке данных

Соберите короткий, но официальный набор правил и внедрите его туда, где данные впервые попадают в систему.

  1. Сделайте каталог полей: откуда они приходят, как используются, какой у них риск. Для каждого поля зафиксируйте действие (удалить, замаскировать, токенизировать, оставить) и причину.

  2. Поставьте маскирование как можно ближе ко входу: в процессе подготовки данных для обучения и в логировании. Хорошее правило: в датасет и в логи «по умолчанию» попадает только уже обработанная версия.

  3. Разделите доступы и среды. Нужен понятный ответ на вопрос «кто и где может видеть исходники». Обычно достаточно двух уровней: ограниченный круг с доступом к сырым данным и все остальные, кто работает только с маской и агрегатами.

  4. Версионируйте правила маскирования как код. Если вы поменяли способ маскировать телефон или email, вы должны уметь воспроизвести старый эксперимент и понять, почему метрики модели изменились.

  5. Добавьте контроль на новые поля и события. Самая частая утечка происходит не из старых таблиц, а из новых параметров, которые разработчик добавил «на минуту» в лог.

Как это выглядит на примере

Допустим, у вас есть обращения клиентов и логи сервиса. В тексте обращения встречаются имя, телефон и номер договора. Для обучения модели вы оставляете смысл сообщения, но заменяете телефон на стабильный токен, а номер договора удаляете. В логах запросов запрещаете писать тело обращения целиком, оставляя только код ошибки, время, обезличенный идентификатор сессии и агрегаты (например, длину текста).

Итоговый критерий простой: даже если датасет или логи окажутся «на столе», по ним нельзя восстановить личность, и вам не нужно хранить лишнее.

Проверка обратимости и качества после маскирования

После внедрения маскирования важно не «поверить на слово», а проверить два вопроса: можно ли восстановить исходные значения и не испортили ли вы данные для обучения и аналитики.

Как понять, что восстановление невозможно (или строго ограничено)

Сначала зафиксируйте, что именно вы обещаете.

  • Для хеша с солью: без соли исходное значение не получить.
  • Для токенизации: восстановление возможно только через защищенное хранилище токенов и по строгим правилам доступа.
  • Для шифрования: ключи живут отдельно от данных и недоступны разработчикам «по умолчанию».

Практический тест: попробуйте восстановить несколько значений «как злоумышленник». Не имея ключа, соли или таблицы токенов, вы должны упереться в невозможность. Если восстановление допускается (например, для работы поддержки), покажите, что оно ограничено процессом: кто может, когда может, как это логируется и кто проверяет.

Проверки на утечки и пригодность данных

После маскирования обязательно сделайте автоматические проверки на следы персональных данных в логах и датасетах. Это не разовая акция: такие проверки должны быть частью релизов и процесса подготовки данных.

  • поиск по шаблонам: ИИН (12 цифр), телефоны, email, номера документов, номера карт
  • поиск «скрытых идентификаторов»: поля вроде comment, error_message, address, user_agent
  • контроль «остатков»: куски строк до или после маски, дубли в исключениях и трассировках
  • проверка токенов: стабильность (одинаковое входное -> одинаковый токен, если так задумано) и отсутствие коллизий
  • проверка доступа: где лежит таблица токенов или соль, у кого есть права, есть ли аудит

Дальше проверьте качество: сравните распределения ключевых признаков до и после, долю пропусков и метрики модели на валидации. Если вы, например, обобщили возраст до «18-65», модель по рискам может резко просесть, потому что потеряла важный сигнал.

Граница простая: если обобщение делает признаки одинаковыми для слишком многих людей, данные становятся безопаснее, но бесполезнее. Лучше заранее выбрать минимально достаточную точность, а не «резать до нуля».

Частые ошибки и ловушки при обезличивании

Разобрать ваш поток данных
Обсудим, где маскирование лучше поставить в вашем пайплайне и логировании.
Получить консультацию

Неприятная особенность обезличивания в том, что ошибки обычно находят не тестировщики, а аудит, утечка или «случайный» поиск по логам. Даже если вы сделали маску в датасете, исходные значения часто остаются в соседних местах: debug-логи, сообщения об ошибках, трассировки исключений, дампы запросов.

Частая ловушка - «маска», которую легко снять. Например, хеш без соли или одна общая соль на все системы и окружения. В таком виде маскирование превращается в задачу на сопоставление: повторяющиеся значения быстро связываются, а при утечке соли обратимость становится практической.

Еще одна проблема - смешивание продуктивных и обучающих данных без четкого разграничения доступов. Когда один и тот же сотрудник или одна и та же роль видят и «сырье», и «обезличенную» копию, контроль теряет смысл. Отдельно опасно хранить таблицу соответствия токен-значение рядом с датасетом или в том же хранилище: формально данные «замаскированы», но на деле все восстанавливается за минуту.

Часто забывают про «хвосты» данных: бэкапы, кеши, выгрузки в CSV, временные файлы, пересылку по почте или в мессенджерах. Именно там оказываются исходные поля, потому что эти каналы живут по своим правилам хранения.

Быстрая проверка перед выпуском изменений:

  • поймать 5-10 реальных исключений и убедиться, что в тексте ошибки нет исходных значений
  • проверить, что соль и ключи разные для окружений и хранятся отдельно от данных
  • убедиться, что доступ к «сырью» и к обезличенной копии разделен по ролям
  • найти, где лежит соответствие токенов, и оценить, кто к нему имеет доступ
  • пройтись по бэкапам и экспортам и проверить, что там тоже применены правила маскирования

Простой пример: вы обезличили обращения в поддержку для обучения модели, но сервис при таймауте пишет в лог весь JSON запроса, включая телефон и ИИН. В итоге датасет «чистый», а утечка случается через логи.

Чеклист перед запуском и после изменений

Маскирование чаще ломается не из-за выбранного метода, а из-за мелочей: лишнего поля в выгрузке, нового события в логах или забытого заголовка. Этот чеклист помогает поймать такие вещи до того, как они попадут в датасет или систему логирования.

Перед запуском (выгрузка, обучение, логи)

  • Сформулирована цель выгрузки и утвержден список полей: что нужно для задачи, а что просто «на всякий случай».
  • Убраны прямые идентификаторы (ФИО, телефон, email, ИИН, номера документов), а также поля-заменители (ID клиента из CRM, номер договора, внутренние токены сессии).
  • Пройден быстрый тест по шаблонам: email, телефоны, 12-значные номера, UUID, банковские карты, адреса. Важно проверять и свободный текст (комментарии, обращения).
  • Для логов исключены тела запросов и ответы целиком, а также заголовки, где часто живут секреты и персональные данные (например, Authorization, Cookie, X-Client-*).
  • Если используется обратимость (токенизация или псевдонимизация), ключи и таблицы соответствий хранятся отдельно, доступ ограничен, а срок хранения определен заранее.

Ориентир: если в поддержке сохраняется «тема обращения» и «текст», то именно текст чаще всего содержит лишнее. Люди пишут туда телефоны, адреса и номера документов.

После релиза и любых изменений

  • Регулярно сканируйте новые события и версии схемы (поля в логах, новые параметры, новые таблицы в выгрузках).
  • Делайте выборочный аудит датасетов и логов: несколько свежих записей вручную плюс автоматический поиск по шаблонам.
  • Отслеживайте исключения: любые ошибки парсинга или пропуски маскирования должны быть видны в мониторинге.
  • Пересматривайте роли доступа: кто может видеть исходные данные и кто может восстановить токены.
  • Фиксируйте изменения правил маскирования как часть релизного процесса, а не как разовую задачу.

Пример из практики: датасет из обращений и логи сервиса

Построить надежный дата-центр
Спроектируем масштабируемую платформу для данных, аналитики и обучения моделей.
Оставить заявку

В одной компании поддержка расследовала сбои в сервисе, а команда аналитики готовила датасет из заявок для обучения модели классификации причин инцидентов. Источник один и тот же: тикеты, комментарии операторов, вложения и технические логи API. Проблема вскрылась быстро: то, что помогает инженеру прямо сейчас, не обязано попадать в обучающий набор и тем более храниться в логах месяцами.

Сначала составили карту полей и нашли лишнее там, где никто не ожидал. В форме обращения были ФИО, телефон, email и адрес, в комментариях часто встречались номера договоров и скриншоты, а в логах API - заголовки с идентификаторами и тела запросов, куда иногда попадали те же контакты. Отдельно проверили вложения: распознавание текста в PDF и изображениях показало, что часть персональных данных живет именно там.

Дальше договорились о правилах, которые не ломают аналитику:

  • идентификаторы пользователя и заявки заменили на токены с устойчивым соответствием (чтобы сессии и повторные обращения совпадали)
  • адреса обобщили до города и района, а точные улицы и квартиры удалили
  • телефоны оставили частично (например, первые 2-3 цифры кода и последние 2), остальное замаскировали
  • email превратили в нормализованный маркер (например, домен отдельно, имя скрыто), чтобы отличать корпоративные и публичные домены

Проверяли двумя способами: автоматикой и процессом. Автопроверка искала шаблоны (телефоны, email, ИИН, номера документов) в датасете и в свежих логах. Процессом добавили контроль доступа к исходникам и тесты на стабильность токенов: один и тот же входной ID всегда дает один и тот же токен, а разные ID дают разные.

Главное изменение на будущее: перестали логировать тела запросов по умолчанию, вложения стали проходить фильтр до сохранения, а поля формы разделили на «для ответа клиенту» и «для аналитики», чтобы лишнее не попадало в хранилища вообще.

Следующие шаги: как закрепить подход в компании

Чтобы маскирование не оставалось разовой акцией, начните с инвентаризации. Составьте список источников (БД, файлы, очереди), всех мест, где данные попадают в логи, и всех датасетов для аналитики и обучения.

Первые быстрые проверки можно делать по простым шаблонам: ФИО, телефон, email, ИИН, номер документа, адрес, а также «тихие» идентификаторы вроде device_id, cookie, internal_user_id и связки «дата рождения + город». Часто именно они позволяют восстановить личность.

Дальше подход стоит закрепить как обычную инженерную практику:

  • назначить владельца данных для каждого источника и датасета
  • описать правила: что удаляем, что маскируем, что допускаем в логах
  • добавить тесты в процессы подготовки данных и релизы (например, блокировать сборку, если в выгрузке найден email или ИИН)
  • хранить «словарь токенов» и ключи отдельно, с ограниченным доступом
  • пересматривать правила после изменений в формах, событиях и логировании

Если вы делаете обезличивание для обучения моделей, заранее зафиксируйте, какие поля нужны для качества, а какие попали «на всякий случай». В датасете обращений в поддержку часто достаточно темы, текста, категории и времени, а телефон и точный адрес лучше убрать или заменить на грубые признаки (город, канал обращения).

Интеграторов имеет смысл подключать, когда контур сложный: много систем и команд, разные уровни доступа, требования к аудиту, или маскирование должно работать и онлайн, и в архиве. В таких проектах обычно нужна отдельная инфраструктура для хранения и обработки уже маскированных датасетов. Здесь могут пригодиться серверы и рабочие станции, а также услуги системной интеграции и поддержки, которые предоставляет GSE.kz (gse.kz).

FAQ

Когда правильнее всего начинать маскирование данных — до обучения или после?

Лучше всего — до того, как данные попали в обучающий датасет и до того, как они начали писаться в логи. Если вы обезличиваете «после», то к этому моменту уже появляются копии в тестовых средах, выгрузках, бэкапах и у людей на рабочих станциях, и убрать следы становится намного сложнее.

Какие данные чаще всего «случайно» попадают в логи?

Чаще всего случайно: сервис начинает логировать тело запроса или ответ целиком, пишет заголовки авторизации, сохраняет параметры URL и формы, а в тексты ошибок попадает ввод пользователя. Еще один частый источник — дампы объектов при отладке, когда в лог уезжает целый профиль клиента.

Чем отличается анонимизация от псевдонимизации и маскирования?

Анонимизация означает, что вернуть человека к исходным данным нельзя в принципе, даже вам. Псевдонимизация оставляет возможность восстановления через ключ или отдельную таблицу соответствий, но эти секреты должны храниться отдельно и с жестким доступом. Маскирование обычно делает данные менее читаемыми для людей (например, скрывает часть строки) и подходит для логов и интерфейсов, где полное значение не нужно.

Почему «просто зашифровать» не всегда решает проблему?

Шифрование сохраняет данные полностью, просто в другом виде, поэтому безопасность сильно зависит от того, кто и где может получить ключ. Если ключ утечет или доступ к нему слишком широкий, вы фактически возвращаетесь к хранению исходников. Кроме того, зашифрованные поля обычно неудобны для обучения и аналитики без отдельной подготовки.

Как найти «скрытые идентификаторы», если в схеме нет явных персональных полей?

Сначала составьте карту данных: где поле появляется впервые и куда дальше расходится, включая логи, очереди, выгрузки, реплики и тестовые наборы. Затем ищите не только явные поля вроде ФИО или телефона, но и комбинации признаков, которые делают запись уникальной, а также технические идентификаторы вроде IP, device ID, cookies и токенов сессий. Отдельно проверяйте свободный текст и сообщения об ошибках: именно там часто прячутся номера документов, телефоны и ИИН.

Что лучше сделать в первую очередь — маскировать или удалять поля?

Спросите по каждому полю: влияет ли оно на метрику модели или на решение аналитической задачи. В большинстве кейсов обучения достаточно темы, текста, времени, канала и результата обработки, а полное имя, телефон, точный адрес и номера документов можно удалить сразу. Чем меньше вы переносите в датасет и логи, тем проще доступы и ниже риск утечки.

Как выбрать метод маскирования, если нужно связывать записи между собой?

Если вам нужно связывать события и строить историю по одному пользователю, делайте стабильную замену идентификатора на токен или псевдоним. Если связь не нужна, лучше удалять поле или обобщать его до диапазона или категории, чтобы не хранить лишнюю точность. Для коротких значений вроде телефона или ИИН осторожно используйте хеширование: без правильной соли такие значения часто подбираются перебором.

Где именно в пайплайне лучше ставить маскирование?

Хорошее правило — маскировать как можно ближе к входу: там, где данные впервые попадают в систему, и там, где формируются логи и обучающие выгрузки. Тогда «по умолчанию» в датасеты и логи попадает уже обработанная версия, а не исходник. Если делаете обратимое восстановление, держите таблицу токенов или ключи отдельно от логов и датасетов и ограничивайте доступ по ролям.

Как проверить, что маскирование не обратимо и не ломает аналитику?

Проверьте два направления: обратимость и качество. Для обратимости попробуйте восстановить значения так, как это сделал бы злоумышленник без ключей, соли или таблицы соответствий, и убедитесь, что это практически невозможно; если восстановление допускается, оно должно быть ограничено процессом и аудитом. Для качества сравните распределения признаков и метрики модели до и после, чтобы не «обнулить» полезные сигналы из-за слишком грубого обобщения.

Какие ошибки чаще всего допускают при обезличивании данных для ML и логов?

Самые частые ошибки — оставлять исходники в соседних местах: debug-логи, трассировки, дампы, бэкапы и выгрузки «на минуту». Еще одна ловушка — хранить секреты рядом с данными или давать одному и тому же кругу людей доступ и к сырью, и к обезличенной копии, из-за чего контроль теряет смысл. Стабильность правил тоже важна: изменения в маскировании должны быть версионированы, иначе вы не поймете, почему поменялись результаты обучения.

Анонимизация и маскирование данных: для обучения и логов | GSE