Включите время как переменную в регрессионную модель.

Вопрос или проблема

В настоящее время я работаю над проблемой регрессии, которая требует предсказать стоимость основного средства. Я использовал несколько переменных для этого и вывел предсказанную стоимость. Однако мой руководитель захотел, чтобы я включил время в качестве переменной в модель регрессии, и я не знаю, как это сделать. Мой набор данных выглядит примерно так, что не похоже на набор данных временного ряда.

Имя    Вместимость   OEM     Страна   Дата оценки       МЕСЯЦ  ГОД   Стоимость
A1     220           JAPAN   JAPAN    1/1/2012          1       2012  300,000,000 
A2     220           JAPAN   JAPAN    1/1/2012          1       2012  300000000
B1     400           CHINA   CHINA    1/3/2013          3       2013  475000000
B2     400           CHINA   CHINA    1/3/2013          3       2013  475000000   
B3     400           CHINA   CHINA    1/3/2013          3       2013  475000000
B4     400           CHINA   CHINA    1/3/2013          3       2013  475000000
C1     750           INDIA   USA      1/5/2016          5       2016  268000000
C2     750           INDIA   USA      1/5/2016          5       2016  268000000  

Переменные, которые я использовал, это вместимость, OEM и страна. Любая помощь в том, как включить время в мою регрессионную задачу, приветствуется.

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

  1. создайте переменные для дня, месяца и года отдельно.
  2. обрабатывайте эти числа как циклические признаки (31 день так же близок к 1 дню, как к 30 дню, например. Если ничего не делать с этим и хранить дни от 1 до 31, нет места для учета циклической природы признака). Этот пост объясняет это подробно.

Надеюсь, это поможет.

ИЗМЕНЕНИЕ 1:
Также, об этом не спрашивали, но в зависимости от алгоритма, который вы используете, может понадобиться нормализовать имеющиеся численные признаки.

Ответ или решение

Для включения времени в регрессионную модель при прогнозировании стоимости фикcированных активов, можно воспользоваться следующим подходом:


1. Введение переменной времени в модель

Для начала, рекомендую создать отдельные переменные дня, месяца и года из столбца "Date of valuation". Таким образом, вы получите отдельные числовые параметры: день, месяц и год. Это позволит модели лучше учитывать временные аспекты вашего набора данных.

2. Преобразование циклических признаков

Важным моментом обработки временных данных является учет их цикличности. Например, декабрь (месяц 12) должен иметь такую же близость к январю (месяц 1), как и к ноябрю (месяц 11). Чтобы правильно обработать циклические признаки, можно использовать тригонометрические преобразования:

  • Преобразование для дня в синус и косинус:

    • sin_day = sin(2 * π * day / 31)
    • cos_day = cos(2 * π * day / 31)
  • Преобразование для месяца:

    • sin_month = sin(2 * π * month / 12)
    • cos_month = cos(2 * π * month / 12)

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


3. Оптимизация модели с учетом времени

После преобразования циклических признаков, необходимо проверить и, при необходимости, переработать вашу модель, учитывающую новые временные переменные. Это может включать переподбор гиперпараметров или даже изменение модели на более сложную (например, ensemble-модели), если это позволит добиться более высоких результатов.

4. Нормализация числовых признаков

Чтобы улучшить сходимость моделей и надежность ваших прогнозов, нормализуйте числовые признаки, такие как "capacity", "day", "month", и "year". Это особенно важно, если вы используете алгоритмы, чувствительные к масштабу данных, такие как градиентный спуск в линейной регрессии.


5. Точный контроль и оценка модели

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

Включив время в виде циклических и числовых компонентов и проведя необходимую нормализацию, вы сможете более точно предсказывать стоимость активов, учитывая все временные аспекты. Надеюсь, это поможет вам добиться более точных и надежных результатов.


Создание репрезентативной и адекватной модели — это не только точность, но и учет всех возможных факторов, включая временные переменные. Работая с временными рядами, важно адаптировать модель под их специфичную природу.

Оцените материал
Добавить комментарий

Капча загружается...