Как стать автором
Обновить

Как получить полезную информацию из своих категориальных признаков?

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров6.3K
Всего голосов 10: ↑10 и ↓0+10
Комментарии5

Комментарии 5

Некоторые вещи гораздо проще и, мне кажется, понятнее делаются:

[1 if i == 'Married' else 0 for i in df['Family_status']]

Можно заменить на:

(df['Family_status'] == 'Married').astype(int)

Спасибо за хороший пример!

Включение в данные для обучения ФИО пассажиров (Name) приводит к тому что ML-модель просто "заучивает" выживаемость и показывает непозволительно высокий ROC AUC 0,8. Это переобучение, которое даст страшные ошибки при запросе несуществующих пассажиров. Мы ~все там были~ и смотрели фильм, и точно знаем что быть женщиной/ребенком на Титанике было полезно и сильно повышало шансы выжить. Но это само себе обусловливает меньшие ROC AUC, чем в статье (условно скажем, на уровне 0,65). Все-таки влияли и другие факторы - номер палубы (близость к верхней со шлюпками), наличие родни, которая могла вытащить из-за стола и убедить срочно сваливать итд. Ну и наличие мужа делало пассажирку более опытной в жизненных ситуациях, тут в статье сделано правильно.

Так вот, чистка ФИО от мусора с выносом замужем/незамужем/разведена/вдова в отдельный признак улучшило модель, но не лишило ее переобучения.

ВЫВОД: Персональные признаки: ФИО пассажиров, номера их билетов итп включать в обучение нельзя, поскольку модель "зазубрит" данные, а это будет не ML, а простая аналитика (Excel c включенным Автофильтром). Современные ML-либы, платформы и фреймворки обязаны предупреждать аналитиков об исключении таких признаков.

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

Не согласен. Кросс-валидация сработает на "Титанике" (CV покажет низкую ценность фичи Name). Но не сработает на нормальных данных, например, в бухучете за большой период. Там персональные признаки многократно повторяются и должны быть по-любому исключены аналитиком из данных вручную, до запуска обучения, как и target-колонка. CV не покажет низкой ценности Name на таких данных и будет велик шанс проморгать переобучение.

По сути де-персонализованная ML-модель должна обучаться на данных без ПД (ФИО, ИНН, точный адрес, СНИЛС, никнейм, логин итд.) Если же ML-модель должна наоборот угадывать персоналии - то ПД исключать нельзя.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий