Присвоение большего веса более поздним наблюдениям регрессии


9

Как мне придать больший вес более поздним наблюдениям в R?

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

В моем примере у меня будет большой набор данных со временем. Я хочу сказать, применить некоторый экспоненциальный вес строк данных, которые являются более свежими. Таким образом, у меня была бы какая-то экспоненциальная функция, говорящая, что наблюдения в 2015 году ___ более важны для обучения модели, чем наблюдения в 2012 году.

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

Я хотел бы проверить / опробовать это, используя такие модели, как GBM / Random Forest, в идеале в пакете CARET.

обновление-вопрос

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

Однако, когда дело доходит до обучения этой модели в карете, как именно учитывается вес? Значение веса в каждом из тренировочных рядов - это расстояние между некоторой точкой в ​​будущем и историческим моментом, когда эта точка возникла.

Веса вступают в игру только во время предсказания? Потому что, если они вступят в игру во время тренировки, не вызовет ли это всевозможных проблем, поскольку различные перекрестные сгибы будут иметь различный вес, пытаясь предсказать что-то, что может действительно иметь место в определенный момент времени до этого?


3
Closevote, потому что спрашивающий должен уточнить статистические вопросы. Мне не понятно, что здесь уместны GBN или RF. Предлагаю перенести это на CV.com
DWin

Хорошо. Я скоро добавлю пример. Я просто вижу подобные вопросы по всему Интернету, но нет конкретных примеров того, как их применять / решать.
user3788557

Ответы:


5

Как мне придать больший вес более поздним наблюдениям в R?

Я думаю, у вас есть временная метка, связанная с каждым наблюдением. Вы можете вычислить переменную timeElapsed = modelingTime - observationTime. Теперь вы применить простую экспоненциальную функцию , как W=K*exp(-timeElapsed/T), где Kесть постоянное масштабирование и Tявляется постоянная время для функции распада. Wработает как case-weight.

Насколько мне известно, многие функции caretпозволяют использовать weightв качестве параметра, который является столбцом весовых коэффициентов, которые должны быть предоставлены соответствующему наблюдению (таким образом, имеют такую ​​же длину, что и #rows).


1
Функция в caret::trainтом weights.
Timcdlucas

Спасибо, Уджвал, но какова методология определения «К» в вашем уравнении? какие-либо руководящие принципы или лучшие практики? Кроме того, что вы подразумеваете под «периодом времени» для функции распада?
user3788557

K - это просто масштабная константа, и она не сильно повлияет на результаты модели. Вы можете установить какое-то значение, чтобы диапазон значений веса корпуса был близок к диапазону 0-1. Что касается «периода времени», его также называют постоянной времени для функции экспоненциального убывания 1-го порядка ИЛИ среднего времени жизни. Вы можете посмотреть это в Википедии.
Уджвал Кумар

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

Без весовых коэффициентов, ваша модель обучения будет придавать одинаковую важность как старым, так и новым данным, но с предлагаемыми весовыми коэффициентами будет уделять больше внимания новым данным, поэтому в этом смысле она смещена в сторону новых наблюдений, но это что ты хотел. Я не понимаю, почему «веса могут быть разрешены только для тестовых случаев» . Кроме того, как более высокие веса будут использоваться для более старых значений, когда тренировочный набор случайным образом перемешивается? при моделировании время остается одинаковым для всех обучающих случаев. Масса падежа PS не применяется при использовании только модели, она применима только для периода обучения.
Уджвал Кумар

0

Данные (а не предположения аналитика, делающие предположения) часто могут предложить форму схемы взвешивания. Это делается с помощью GLS, где соответствующие веса для модели взвешенных наименьших квадратов получены из статистически значимых различий, найденных в дисперсии ошибок. Посмотрите на Обнаружение изменений и выбросов с помощью ARIMA (процедура Цай) и здесь http://docplayer.net/12080848-Outliers-level-shifts-and-variance-changes-in-time-series.html . Если вы хотите опубликовать данные, сделайте это здесь, и я постараюсь помочь вам, поскольку у меня есть обычный доступ к программному обеспечению, которое может вас просветить.

Существует версия R программного обеспечения, которое я использую.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.