Более сложная версия валидации – k-fold cross validation (k-кратная перекрестная проверка). Ее активно применяют в серьезной работе, научных исследованиях и соревнованиях. Она заключается в случайном разделении датасета на
Как бороться с переобучением
Для борьбы с переобучением есть несколько простых рецептов, которые применяются на практике. Во-первых, можно попытаться найти больше данных – привет, Капитан Очевидность! Это очень наивный совет, ведь обычно работают уже с максимально полным датасетом.
Второй способ – удалить выбросы в данных. Это можно сделать через анализ распределений: описательные статистики, гистограммы, графики «ящики и усы», диаграммы рассеяния будут полезны.
Третий вариант – удалить часть фич (независимых переменных). Это работает особенно хорошо для линейных методов, которые очень чувствительны к мультиколлинеарности фич. Мультиколлинеарность означает, что часть фич зависимы друг от друга. Природа этой зависимости может быть натуральной и искусственной. Естественная зависимость – число покупок и количество потраченных денег. Искусственная зависимость – когда аналитик добавил в датасет новые фичи как функцию от уже существующих. Например, возвел значение одной из них в квадрат, при этом старая фича осталась в датасете. В реальной работе эти ситуации встречаются сплошь и рядом.
Одним из негативных эффектов этого явления в линейных методах является резкое изменение коэффициентов, когда в модель добавляется новая, зависимая от уже включенных в нее фич. Например, аналитик использует линейную регрессию, чтобы понять, сделает ли покупатель еще одну покупку или нет. В модели у него уже была фича – число сделанных покупок, допустим, ее коэффициент равен 0.6. Следующим шагом он добавляет в модель объем средств, потраченных на совершенные покупки. Коэффициент этой фичи будет 0.5, при этом коэффициент числа покупок становится отрицательным: –0.1. Очень странная ситуация – понятно, что чем больше покупок клиент совершил в прошлом, тем больше вероятность, что он продолжит покупать. А тут мы видим, что число покупок влияет негативно. Это произошло из-за того, что корреляция (зависимость) между числом покупок и потраченными деньгами очень высокая и деньги оттянули на себя этот эффект. Сами коэффициенты могут быть важными, если вы пытаетесь понять причины какой-либо ситуации. С мультиколлинеарностью можно прийти к неверным выводам. Интересно, что у статистического анализа и машинного обучения разные цели. Для статистического анализа коэффициенты модели важны – они объясняют природу явления. Для машинного обучения важны не так, главное – достичь хорошей метрики, а как – не имеет значения.
Бороться с мультиколлинеарностью можно несколькими способами: удаление зависимых фич, сжатие пространства с помощью анализа главных компонент (Principal Component Analysis), гребневая регрессия (Ridge Regression). Для первого способа – используется пошаговое включение или пошаговое исключение фич. При пошаговом включении первым шагом выбирается фича, которая имеет наименьшую ошибку, если построить регрессию только на ней. Для этого нужно перебрать все фичи и выбрать только одну, вторым шагом выбрать следующую фичу и так далее. Остановиться нужно тогда, когда ошибка модели на тестовом датасете не уменьшается на приемлемую для вас величину. Аналогично работает пошаговое исключение.
Метод главных компонент (PCA) – это линейный метод сжатия пространства, один из методов машинного обучения без учителя (unsupervised learning), работает только для линейных зависимостей. Сам метод звучит сложно: уменьшение числа фич с минимальной потерей информации путем проекции в ортогональное пространство меньшей размерности. Понять его нам поможет геометрическая интерпретация. Изобразим зависимость числа заказов от потраченных средств в виде диаграммы рассеяния. На графике видно вытянутое облако (рис. 8.9). Теперь изобразим на нем другую систему координат с осями X1 и X2:
Рис. 8.9. Метод главных компонент (PCA)