Найти тему
Властелин машин

Обработка цикличных признаков

Отдельные числовые признаки, несмотря на обработку моделями машинного обучения, зачастую все же нуждаются в преобразованиях. Одним из примеров являются номера месяцев, часов, минут и т.д, никак не отражающие цикличный характер признаков. Чтобы это исправить, обычно используют функции синуса и косинуса, имеющие период в 2пи. Для преобразования понадобится отобразить числовые значения как-то так:

Для примера сгенерируем датасет с примерными средними температурами по месяцам:

-2

Разобьем датасет на тренировочную и валидационную части:

-3

Теперь попытаемся предсказать температуру по месяцу:

-4

Можно заметить, что модель с такой интерпретацией месяца практически не улавливает сезонный характер температуры (абсолютная ошибка в 11 градусов!):

-5

Теперь отобразим номер месяц в синус и косинус аналогично правилу выше:

-6

Посчитаем регрессию по двум новым признакам:

-7

Как можно заметить, новая модель гораздо лучше справляется с предсказаниями:

-8