Прогнозирование будущих явлений с помощью Random Forest - PullRequest
1 голос
/ 11 декабря 2019

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

Count   Year    Month   Day Count-1 Count-2 Friday  Monday  Saturday Sunday Thursday Tuesday Wednesday
196.0   2017.0  7.0    10.0 196.0   196.0     0       1        0       0       0     0        0
264.0   2017.0  7.0    11.0 196.0   196.0     0       0        0       0       0     1        0
274.0   2017.0  7.0    12.0 264.0   196.0     0       0        0       0       0     0        1
286.0   2017.0  7.0    13.0 274.0   264.0     0       0        0       0       1     0        0
502.0   2017.0  7.0    14.0 286.0   274.0     1       0        0       0       0     0        0
... ... ... ... ... ... ... ... ... ... ... ... ... 

Затем я обучил случайный лес, в котором подсчет меток (что я пытаюсь предсказать) и все остальные функции. Я также сделал 70/30 разделение поезда / теста. Обучил его по данным поезда, а затем использовал набор тестов для оценки модели (код ниже):

rf = RandomForestRegressor(n_estimators = 1000, random_state = 42)
rf.fit(train_features, train_labels)

predictions = rf.predict(test_features)

Полученные результаты были довольно хорошими: MAE = 1,71 и точность 89,84%.

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

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

Если бы кто-то, кто немного лучше и опытнее меня в этом, мог помочь, я был быочень ценится! Спасибо

1 Ответ

1 голос
/ 11 декабря 2019

При рассмотрении вашего первого вопроса случайный лес может иметь тенденцию переопределяться, но это следует проверить при сравнении MAE, MSE, RMSE вашего тестового набора. Что вы имеете в виду с точностью? Ваш квадрат R? Тем не менее, способ работы с моделями, как правило, сначала состоит в том, чтобы сделать их более подходящими, так что вы имеете приличную точность / mse / rmse, а затем применяете методы регуляризации, чтобы справиться с этим набором, установив высокий min_child_weight или низкий max_depth,высокий n_estimators также хорош.

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

forecasting = rf.predict(dataset_to_be_forecasted)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...