Я пытался решить эту проблему больше года без особого прогресса. Это часть исследовательского проекта, которым я занимаюсь, но я проиллюстрирую его на примере истории, которую я составил, потому что реальная область проблемы немного сбивает с толку (отслеживание глаз).
Вы - самолет, следящий за вражеским кораблем, который путешествует через океан, поэтому вы собрали серию (x, y, время) координат корабля. Вы знаете, что скрытая подводная лодка путешествует вместе с кораблем, чтобы защитить его, но, хотя между их позициями существует корреляция, подводная лодка часто отклоняется от корабля, поэтому, хотя она часто находится рядом с ней, она также может находиться на другой стороне мир изредка. Вы хотите предсказать путь подводной лодки, но, к сожалению, она скрыта от вас.
Но один месяц в апреле вы замечаете, что подводная лодка забывает прятаться, поэтому у вас есть серия координат для подводной лодки и корабля на протяжении 1000 рейсов. Используя эти данные, вы хотели бы построить модель, чтобы предсказать путь скрытой подводной лодки, учитывая только движения корабля. Наивной базовой линией было бы сказать «предположение о положении подводной лодки = текущее положение судна», но из апрельских данных, где была видна подводная лодка, вы заметили, что есть тенденция к тому, что подводная лодка немного опережает корабль, поэтому «положение подводной лодки» «Угадай = положение судна за 1 минуту» - еще лучшая оценка. Кроме того, апрельские данные показывают, что, когда корабль останавливается в воде в течение длительного периода, подводная лодка, вероятно, будет далеко патрулировать прибрежные воды. Существуют и другие модели конечно.
Как бы вы построили эту модель, учитывая апрельские данные в качестве учебных данных, чтобы предсказать путь подводной лодки? Мое текущее решение - это специальная линейная регрессия, в которой используются такие факторы, как «время в пути», «координата судна x», «время простоя судна в течение 1 дня» и т. Д., А затем R вычисляет вес и выполняет перекрестную проверку. , Но мне бы очень хотелось, чтобы эти факторы автоматически генерировались из апрельских данных. Кроме того, модель, которая использует последовательность или время, была бы хороша, так как линейная регрессия нет, и я думаю, что это актуально.
Спасибо, что прочитали все это, и я был бы рад уточнить что-нибудь.
источник
Ответы:
Вот подход, который не использует никакой «контекстной» информации, то есть он не учитывает тот факт, что «подводная лодка следует за кораблем». С другой стороны, легко начать с:
Обозначить через
Я предлагаю вам прогнозировать каждый из них в отдельности (вы можете связать их позже).
потом
Другая стратегия, которую используют люди (которая, я думаю, сработает для вас), состоит в том, что они разбивают свои серии на
В случае с подводной лодкой и кораблем полиномиальная часть, вероятно, будет постоянной, а циклическая - суммой синусов и косинусов (от волн океана ...). Это может быть не так для отслеживания глаз.
Есть инструменты, которые могут понять это для вас. Вот два, которые я знаю:
Вот скриншот из инструмента SQL Server (пунктирная часть является прогнозом):
Один алгоритм, который они используют, называется ARIMA. Желая узнать, как это работает, я немного погуглил и нашел эту книгу: Первый курс по временным рядам (и не волнуйтесь, вам не нужен SAS, чтобы следовать за ним. Я не знаю). Это очень читабельно.
Вам не нужно знать, как работает ARIMA, чтобы использовать эти инструменты, но я думаю, что всегда легче, если у вас есть контекст, так как есть «параметры модели», которые нужно установить и т. Д.
источник