Курсовая работа

Курсовая по машинному обучению: как построить честный эксперимент и не получить красивую метрику из-за утечки данных

Как написать курсовую по машинному обучению: подготовить данные, выбрать baseline и модели, настроить валидацию, проверить метрики, переобучение и устойчивость.

К содержанию
Содержание +

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

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

Начните с задачи прогнозирования

Определите:

  • объект;
  • целевую переменную;
  • признаки;
  • момент прогнозирования.

Последний пункт особенно важен.

Если модель должна предсказывать событие заранее, нельзя использовать признаки, которые становятся известны только после события.

Тип задачи

Разделите классификацию, регрессию, ранжирование, кластеризацию, прогноз временного ряда и поиск аномалий.

Для каждой задачи нужны свои метрики и дизайн эксперимента.

Не используйте классификационные показатели для регрессии только потому, что они знакомы.

Данные до моделирования

Сделайте аудит.

Проверьте:

  • размер;
  • типы столбцов;
  • пропуски;
  • дубли;
  • выбросы;
  • баланс классов;
  • распределение целевой переменной.

До первой модели нужно понять, что именно лежит в таблице.

Дубли

Дубликаты могут сильно завышать качество.

Если одинаковая запись попала в train и test, модель фактически увидела ответ заранее.

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

Разделение должно учитывать структуру данных.

Групповое разделение

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

Тогда полезно разделять по клиентам.

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

Для документов - по источникам.

Иначе test перестаёт быть независимым.

Временное разделение

Для прогноза будущего случайное перемешивание часто недопустимо.

Обучайте на прошлом, проверяйте на более позднем периоде.

Такой split лучше имитирует реальное использование.

Не позволяйте будущей информации попадать в прошлое.

Baseline

Baseline должен быть простым и содержательным.

Например:

  • среднее;
  • последний известный уровень;
  • наиболее частый класс;
  • линейная модель.

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

Не прячьте его.

Предобработка

Соберите её в единый pipeline.

Туда могут входить заполнение пропусков, scaling, encoding и feature selection.

Главное правило: все параметры обучаются только на train.

Нельзя заранее нормализовать весь датасет, а потом делить.

Категориальные признаки

Варианты кодирования:

  • one-hot;
  • ordinal;
  • target encoding;
  • специальные алгоритмы.

Target encoding особенно чувствителен к утечке.

Если он используется, расчёт должен выполняться внутри корректной валидации.

Пропуски

Не заполняйте все пропуски нулём автоматически.

Ноль может быть реальным значением.

Выберите подход:

  • медиана;
  • отдельная категория;
  • модельное заполнение;
  • специальная обработка.

Иногда сам факт пропуска является информативным признаком.

Масштабирование

Оно важно для моделей, чувствительных к масштабу:

  • линейных моделей;
  • SVM;
  • kNN;
  • нейросетей.

Для дерева решений оно обычно не является центральным требованием.

Не применяйте preprocessing по привычке.

Выбор признаков

Не используйте test-набор для отбора.

Feature selection должен происходить внутри train и validation.

Иначе информация о test косвенно попадает в модель.

Модель

Сравните несколько разумных классов.

Например:

  • линейная модель;
  • дерево;
  • ансамбль;
  • boosting.

Не обязательно включать десять алгоритмов.

Лучше три модели с понятным сравнением.

Кросс-валидация

Она помогает оценить вариативность.

Но схема CV должна соответствовать данным.

Для временного ряда обычный KFold с перемешиванием может быть ошибкой.

Для группированных данных нужен group-based split.

Метод валидации важнее количества фолдов.

Гиперпараметры

Настраивайте на validation или внутри CV.

После выбора параметров test используется один раз для итоговой оценки.

Не возвращайтесь к test после каждой неудачной модели.

Это превращает test в дополнительный validation.

Метрика классификации

При дисбалансе смотрите не только accuracy.

Полезны precision, recall, F1, PR-AUC и ROC-AUC.

Выбор зависит от цены ошибки.

Не создавайте одну сводную метрику без объяснения.

Confusion matrix

Она показывает структуру ошибок.

Особенно полезна для многоклассовой задачи.

Можно увидеть, какие классы модель путает.

Это часто даёт больше пользы, чем одна итоговая цифра.

Регрессия

Для регрессии используйте показатели типа MAE, RMSE и R2.

MAE проще интерпретировать в единицах цели.

RMSE сильнее штрафует большие ошибки.

Покажите, почему выбран конкретный показатель.

Остатки

График ошибки по прогнозу помогает увидеть систематическую проблему.

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

Не ограничивайтесь средним RMSE.

Переобучение

Сравните train и validation.

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

Не лечите переобучение только добавлением ещё более сложной модели.

Обучающая кривая

Постройте качество в зависимости от объёма train.

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

Это содержательный вывод.

Интерпретация признаков

Для дерева или ансамбля можно смотреть важность.

Но простая impurity importance может быть смещённой.

Используйте подход осознанно.

Не называйте важность признаком причинности.

Порог классификации

0,5 не является универсальным.

Выберите порог по задаче.

Можно оптимизировать recall, precision или стоимость ошибок.

Но делайте это на validation, а не test.

Дисбаланс

Варианты:

  • веса классов;
  • oversampling;
  • undersampling;
  • другой порог.

Любой resampling должен применяться только к train.

Нельзя балансировать весь датасет до split.

Устойчивость

Проверьте модель на нескольких seed.

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

Покажите среднее и разброс.

Drift

Если данные во времени меняются, модель может деградировать.

Для курсовой достаточно проверить два периода.

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

Воспроизводимость

Сохраните pipeline, seed, параметры, версии библиотек, split и код.

Не полагайтесь на ручную последовательность действий в ноутбуке.

Защита

Покажите:

1. задачу;
2. split;
3. baseline;
4. модели;
5. метрику;
6. test;
7. анализ ошибок.

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

Ещё по теме