Утечки данных в ML

Познакомился я с этим явлением во время реализации pet-проекта по классификации запросов в логах IDS. В одной из статей о нормализации числовых признаков наткнулся на понятие “утечка данных”. Сначала, конечно же, в голову лезет какой-нибудь инцидент, неконтролируемое распространение данных и т.д. и т.п., но при чем здесь “утечки данных” и эффективность ML-модели? Это не про ИБ

📈Если коротко, то проблема заключается в завышенных показателях эффективности модели, при этом с реальными данными модель будет работать совсем иначе. А причина этому кроется в этапе предобработки данных.

Типы утечек данных в ML:

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

В моем проекте был признак Intrusion (бинарный: 1 - вредоносный запрос, 0 - нормальный запрос). Целевой переменной была Scan_Type, классифицирующая запрос на Normal, BotAttack или PortScan. Признак Intrusion был напрямую связан с таргетом Scan_Type, так как он сразу отмечал вредоносные запросы, чего в реальности при эксплуатации модели не будет. Во избежание таргетной утечки, признак Intrusion был удален.

🫟Train-test утечка (train-test contamination) возникает, когда предобработка (замена пропусков, нормализация, кодирование категориальных признаков) применяется ко всему набору данных до его разделения на обучающую и тестовую выборки. Это плохо, потому что статистические значения (среднее, дисперсия и другие) для нормализации/кодирования рассчитываются с учетом тестовых данных. Таким образом, информация о тестовой выборке “просачивается” в обучающую выборку, что будет приводить к завышению значений метрик эффективности.

Когда я сидел на Kaggle и смотрел ноутбуки других участников по работе с датасетом логов IDS, моё внимание привлек ноутбук с громким заголовком “F1-score = 99%”. Я стал изучать этот ноутбук, параллельно гуглить и в какой-то момент набрел на вышесказанную статью с упоминанием утечек. Так я и понял в чем дело: датасет в ноутбуке был разделен на обучающую и тестовую выборки уже после всех преобразований признаков. Поэтому пользователь получил такое высокое значение метрики.