Я использовал пакет caret в R для построения прогностических моделей для классификации и регрессии. Caret предоставляет унифицированный интерфейс для настройки гиперпараметров модели путем перекрестной проверки или привязки загрузки. Например, если вы строите простую модель «ближайших соседей» для классификации, сколько соседей вы должны использовать? 2? 10? 100? Caret помогает вам ответить на этот вопрос путем повторной выборки ваших данных, опробования различных параметров, а затем агрегирования результатов, чтобы решить, какие из них дают наилучшую точность прогнозирования.
Мне нравится этот подход, потому что он предоставляет надежную методологию для выбора гиперпараметров модели, а после выбора окончательных гиперпараметров он дает перекрестную проверку оценки «хорошей» модели с использованием точности для моделей классификации. и RMSE для регрессионных моделей.
Теперь у меня есть данные временных рядов, для которых я хочу построить регрессионную модель, возможно, с использованием случайного леса. Что является хорошим методом для оценки точности прогнозирования моей модели с учетом характера данных? Если случайные леса на самом деле не применяются к данным временных рядов, каков наилучший способ построения точной ансамблевой модели для анализа временных рядов?
Ответы:
«Классическая» методика перекрестной проверки в k раз основана на том факте, что каждая выборка в доступном наборе данных используется (k-1) раз для обучения модели и 1 раз для ее проверки. Поскольку очень важно проверять модели временных рядов на «будущих» данных, этот подход не будет способствовать стабильности модели.
Одним из важных свойств многих (наиболее?) Временных рядов является корреляция между соседними значениями. Как указывает IrishStat, если вы используете предыдущие показания в качестве независимых переменных вашего кандидата в модель, эта корреляция (или отсутствие независимости) играет важную роль и является еще одной причиной, по которой перекрестная проверка по k-разу не является хорошей идеей.
Одним из способов преодоления этой проблемы является «избыточная выборка» данных и их декоррелирование. Если процесс декорреляции успешен, то использование перекрестной проверки временных рядов становится менее проблематичным. Однако это не решит проблему проверки модели с использованием будущих данных.
Разъяснения
Под проверкой модели на будущих данных я подразумеваю построение модели, ожидание новых данных, которые не были доступны во время построения модели, тестирования, тонкой настройки и т. д., и проверку их на этих новых данных.
Под передискретизацией данных я подразумеваю сбор данных временных рядов с частотой, намного превышающей практически необходимую. Например: выборка цен на акции каждые 5 секунд, когда вы действительно заинтересованы в почасовых изменениях. Здесь, когда я говорю «выборка», я не имею в виду «интерполяцию», «оценку» и т. Д. Если данные не могут быть измерены с более высокой частотой, этот метод не имеет смысла
источник
http://robjhyndman.com/researchtips/crossvalidation/ содержит быстрый совет для перекрестной проверки временных рядов. Относительно использования случайного леса для данных временных рядов ... не уверен, хотя это кажется странным выбором, учитывая, что модель подбирается с использованием выборок начальной загрузки. Конечно, можно использовать классические методы временных рядов (например, ARIMA), а также методы ML, такие как Neural Nets ( пример в формате pdf ). Возможно, некоторые эксперты временного ряда могут прокомментировать, насколько хорошо работают методы ML по сравнению с алгоритмами, специфичными для временных рядов.
источник
Вот пример кода для перекрестной проверки моделей временных рядов. Я расширил этот код в своем блоге , включив пакет foreach, чтобы ускорить процесс, и учел возможный термин xreg в перекрестной проверке.
Вот копия кода из блога Роба Хиндмана:
источник
Если у вас есть данные временных рядов, то у вас может возникнуть «проблема степеней свободы». Например, если у вас есть 4 наблюдения с почасовыми интервалами, а затем вы решили использовать 241 наблюдение с интервалом в 1 минуту, у вас есть 241 наблюдение, но они не обязательно независимы. Когда вы отправляете эти 241 значения / измерения в аналитический пакет, пакет может ожидать, что это 241 независимое значение, поскольку он продолжает выполнять свою особую магию. Если у вас есть данные временных рядов, возможно, вам придется обновить аналитику. Я не знаю программу, на которую вы ссылаетесь, но с моей стороны вполне обоснованно (я могу ошибаться!), Что ее тесты (F-тесты / T-тесты ... и т. Д.), Вероятно, не относятся к вашему набору задач.
источник
Я могу порекомендовать вам 2 интересные статьи для чтения, которые доступны в Интернете. 1. Потоковое обучение: однопроходные SVM, Пиюш Рай, Hal Daum´e III, Суреш Венкатасубраманян. 2. Приближение потока k-средних, Нир Айлон.
Надеюсь, это немного прояснит ваши идеи
источник