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

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

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

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

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

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

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

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

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


person DBSE    schedule 30.08.2017    source источник
comment
Я предлагаю вам опубликовать это в Data Science (datascience.stackexchange.com) для получения более точных ответов ...   -  person Matteo Ragni    schedule 30.08.2017
comment
Хорошая мысль ... Я сделаю это!   -  person DBSE    schedule 30.08.2017


Ответы (1)


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

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

person pqnet    schedule 30.08.2017