Я бы хотел провести перекрестную проверку данных на мелочах.
Я пытался использовать метод TimeSeriesSplit
в Scikit
learn.Но это создает сгибы на основе индекса.
Следовательно, что происходит, так это то, что складка поездов может содержать данные от '2017-01-01 00:00:00'
до '2019-01-01 10:00:00'
, а тестовая складка будет содержать данные от '2019-01-01 10:01:00'
до '2019-01-02 23:59:00'
.
.обратите внимание, что это не будет точным способом проведения перекрестной проверки, потому что 10-й час включен в состав поезда и контрольные сгибы, что приведет к вводящим в заблуждение результатам.
Чего я хотел бы добиться, так это выполнить TimeSeriesSplit
с группировкой
Например -
train_fold_1 - '2017-01-01 00:00:00' to '2019-01-01 23:59:00'
test_fold_1 - '2019-01-02 00:00:00' to '2019-01-02 23:59:00'
train_fold_2 - '2017-01-01 00:00:00' to '2019-01-02 23:59:00'
test_fold_2 - '2019-01-03 00:00:00' to '2019-01-03 23:59:00'
У меня есть мелкие данные, и в настоящее время я использую XGBoost
для прогнозирования каждогоминута завтрашнего дня.
PFA - снимок экрана с pandas Dataframe
В обоих нижеприведенных случаях для выполнения перекрестной проверки использовались последние 400 дней. Например - Если мы хотимПрогноз от 2019-01-01 00:00:00
до 2019-01-01 23:59:00
, мы будем использовать прошедшие 400
дней до 2018-12-31 23:59:00
для выполнения перекрестной проверки.
Первое значение на рисунке ниже - MSE, а второе - стандартное отклонение, рассчитанноес использованием TimeSeriesSplit от Scikit learn.
перекрестная проверка 1 января-2019 с использованием TimeSeriesSplit
перекрестная проверка 1 февраля 2019 использование TimeSeriesSplit
Как вы можете заметить, даже когда использовался тот же объем данных, мы все еще наблюдаем огромное изменение в MSE и стандартное отклонение при изменении диапазона дат.