Книга Роман с Data Science. Как монетизировать большие данные, страница 39. Автор книги Роман Зыков

Разделитель для чтения книг в онлайн библиотеке

Онлайн книга «Роман с Data Science. Как монетизировать большие данные»

Cтраница 39

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

• Тестовая ошибка существенно больше обучающей. При этом обучающая ошибка вас устраивает. Налицо переобучение – модель получилась слишком сложной для данных.

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

Более сложная версия валидации – k-fold cross validation (k-кратная перекрестная проверка). Ее активно применяют в серьезной работе, научных исследованиях и соревнованиях. Она заключается в случайном разделении датасета на k равных частей, например на 8 частей. Затем извлекаем первую часть из датасета, тренируем модель на оставшихся, считаем ошибки на обучающих данных и извлеченных данных (тестовая ошибка). Эту последовательность повторяем для всех частей. На выходе получаем k ошибок, которые можно усреднить. И делаем аналогичные сравнения, как описано выше.

Как бороться с переобучением

Для борьбы с переобучением есть несколько простых рецептов, которые применяются на практике. Во-первых, можно попытаться найти больше данных – привет, Капитан Очевидность! Это очень наивный совет, ведь обычно работают уже с максимально полным датасетом.

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

Третий вариант – удалить часть фич (независимых переменных). Это работает особенно хорошо для линейных методов, которые очень чувствительны к мультиколлинеарности фич. Мультиколлинеарность означает, что часть фич зависимы друг от друга. Природа этой зависимости может быть натуральной и искусственной. Естественная зависимость – число покупок и количество потраченных денег. Искусственная зависимость – когда аналитик добавил в датасет новые фичи как функцию от уже существующих. Например, возвел значение одной из них в квадрат, при этом старая фича осталась в датасете. В реальной работе эти ситуации встречаются сплошь и рядом.

Одним из негативных эффектов этого явления в линейных методах является резкое изменение коэффициентов, когда в модель добавляется новая, зависимая от уже включенных в нее фич. Например, аналитик использует линейную регрессию, чтобы понять, сделает ли покупатель еще одну покупку или нет. В модели у него уже была фича – число сделанных покупок, допустим, ее коэффициент равен 0.6. Следующим шагом он добавляет в модель объем средств, потраченных на совершенные покупки. Коэффициент этой фичи будет 0.5, при этом коэффициент числа покупок становится отрицательным: –0.1. Очень странная ситуация – понятно, что чем больше покупок клиент совершил в прошлом, тем больше вероятность, что он продолжит покупать. А тут мы видим, что число покупок влияет негативно. Это произошло из-за того, что корреляция (зависимость) между числом покупок и потраченными деньгами очень высокая и деньги оттянули на себя этот эффект. Сами коэффициенты могут быть важными, если вы пытаетесь понять причины какой-либо ситуации. С мультиколлинеарностью можно прийти к неверным выводам. Интересно, что у статистического анализа и машинного обучения разные цели. Для статистического анализа коэффициенты модели важны – они объясняют природу явления. Для машинного обучения важны не так, главное – достичь хорошей метрики, а как – не имеет значения.

Бороться с мультиколлинеарностью можно несколькими способами: удаление зависимых фич, сжатие пространства с помощью анализа главных компонент (Principal Component Analysis), гребневая регрессия (Ridge Regression). Для первого способа – используется пошаговое включение или пошаговое исключение фич. При пошаговом включении первым шагом выбирается фича, которая имеет наименьшую ошибку, если построить регрессию только на ней. Для этого нужно перебрать все фичи и выбрать только одну, вторым шагом выбрать следующую фичу и так далее. Остановиться нужно тогда, когда ошибка модели на тестовом датасете не уменьшается на приемлемую для вас величину. Аналогично работает пошаговое исключение.

Метод главных компонент (PCA) – это линейный метод сжатия пространства, один из методов машинного обучения без учителя (unsupervised learning), работает только для линейных зависимостей. Сам метод звучит сложно: уменьшение числа фич с минимальной потерей информации путем проекции в ортогональное пространство меньшей размерности. Понять его нам поможет геометрическая интерпретация. Изобразим зависимость числа заказов от потраченных средств в виде диаграммы рассеяния. На графике видно вытянутое облако (рис. 8.9). Теперь изобразим на нем другую систему координат с осями X1 и X2:


Роман с Data Science. Как монетизировать большие данные

Рис. 8.9. Метод главных компонент (PCA)


X1 проведем вдоль облака, X2 перпендикулярно ему. Теперь значение каждой точки мы можем взять в этой новой системе координат, и скажу больше – мы можем оставить только значение по оси X1 и получить только одну фичу X1 вместо двух коррелирующих между собой. X2 мы можем выбросить, так как разброс (вариативность) значений по этой оси намного меньше, чем по X2. Таким образом, мы нашли совершенно новую фичу X1, которая несет информацию о прошлых покупках пользователя и хорошо заменяет две старые фичи. Примерно так и работает PCA, этому методу передается нужное число фич (размерность пространства), метод производит все необходимые операции и сообщает, сколько информации мы потеряли из-за этого преобразования (доля объясненной дисперсии). Подобрать размерность пространства можно по этому показателю.

Четвертый способ борьбы с переобучением – остановить обучение раньше (рис. 8.10).


Роман с Data Science. Как монетизировать большие данные

Рис. 8.10. Досрочная остановка обучения


Для этого на каждом шаге итерации нужно считать ошибки на обучающем и тестовом датасете. Остановку сделать в момент «перелома» тестовой ошибки в сторону увеличения.

Пятый вариант – регуляризация. Регуляризация представляет собой сумму коэффициентов модели, умноженную на коэффициент регуляризации. Регуляризация добавляется к функции ошибки, которую оптимизирует ML-модель. Есть несколько типов регуляризаций: L1 – сумма модулей коэффициентов, L2 – сумма квадратов коэффициентов, Elastic Net – сумма L1 и L2 регуляризаций с отдельными коэффициентами. Задачей регуляризации является пессимизация коэффициентов с большими значениями, чтобы какая-то одна фича не перетянула одеяло на себя. Коэффициенты регуляризации являются так называемыми гиперпараметрами модели, их тоже нужно подбирать таким образом, чтобы получить меньшую ошибку. На практике регуляризация L2 используется чаще.

Вход
Поиск по сайту
Ищем:
Календарь
Навигация