Неправильная стратегия разделения поезда / теста

Речь идет о неправильно выбранной стратегии разделения поезда / теста в модели RandomForest. Я знаю, что выбор тестового набора таким образом дает неправильный вывод, но я хотел бы знать, почему.

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

Я скопировал код разделения поезда / теста из другого примера, и он просто устанавливает случайные строки как train_set или test_set. (Попытался проиллюстрировать ниже) введите описание изображения здесь Необработанные данные - это дневные значения закрытия, например, EURUSD.

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

Точность в test_set очень высока, и она увеличивается с увеличением количества исторических предыдущих точек, на которые она смотрит, что, кажется, предлагает переоснащение.

Когда я меняю модель разделения поезда / теста, чтобы иметь, например, train_set: данные за январь-июнь и test_set: данные за август, то есть полностью отдельные наборы данных и отсутствие возможного смешивания, точность становится более реалистичной на 50%.

Опять же, я знаю, что разделение поезда / теста это не правильно, но может кто-нибудь помочь мне понять, почему..?

Каждый раз, когда я хочу проверить строку (т.е. один прогноз в test_set), я использую функции, которые смотрят на предыдущие данные, пытаясь предсказать данные завтрашнего дня? Как происходит переоснащение?

1 ответ

Переоснащение объясняется на примере тупого ребенка:

Если вы смешаете данные тренировок и тестов, у вас, скорее всего, будет перегрузка. Думайте о тесте как об экзамене, а данные о тренировках - как материале, доступном для изучения на экзамене. Тогда думайте об алгоритме машинного обучения как о ребенке, который не очень умен, но имеет много памяти. Если 10% вопросов на экзамене точно такие же, как те, которые он нашел в своем учебнике, очень вероятно, что он правильно их ответит, даже если он не понимал логику, которая связывает вопросы для ответа. Если бы он только правильно понял вопрос, который был точно таким же, как в учебнике, вы бы не подумали, что он что-то понял по этому поводу, просто вспомнили примеры из книги, хотя он получил хорошую оценку (потому что процент правильного ответа высоко). Вы не обучали алгоритм угадывания будущих данных на основе существующих данных, но словарь, который может запомнить пример из его обучающего набора. Это сработало бы, даже если данные были полностью случайными (на самом деле результат мог бы быть даже лучше).

Другие вопросы по тегам