Люди могут построить что угодно в своем воображении с помощью технологий в современном мире. В древности к людям, способным делать прогнозы, относились как к одаренным людям, благословленным Богом. Но в современном контексте мы можем делать прогнозы со значительными доказательствами в поддержку прогноза.

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

В этой статье я постараюсь дать введение в прогнозирование временных рядов в глубоком обучении. Я все кодирую в Google Colab. Но вы можете использовать любую IDE по своему усмотрению. Но в Colab вы можете использовать GPU, TPU, что может пригодиться при создании моделей глубокого обучения.

Введение в временные ряды

Итак, давайте начнем с понимания проблемы временных рядов. Простая идея проблемы временных рядов состоит в том, что мы можем предсказать будущее поведение, анализируя и идентифицируя закономерности в прошлых данных. Это состоит из некоторой математической и статистической основы. Вы можете делать прогнозы с помощью модели, результаты которых могут быть подтверждены с помощью математических и статистических подходов. Благодаря этому результаты могут быть приняты.

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

Есть два основных типа проблем: одномерные и многомерные. Одномерный означает, что мы учитываем только время. Изменение температуры в помещении во времени рассматривается как одномерная задача. Потому что в этом случае мы учитываем только время с температурой. Мы не принимали во внимание какие-либо другие факторы для прогнозирования температуры. Многовариантность означает, что мы учитываем множество переменных, чтобы делать прогнозы. Когда мы даем прогноз погоды, мы учитываем скорость ветра, температуру, влажность и время. Итак, эти типы проблем называются многомерными проблемами. Потому что для предсказания погоды нам нужны данные по каждой переменной.

Подготовка набора данных

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

Но во временных рядах вы не можете использовать это. Потому что вам нужно отделить будущие данные от прошлых данных. В противном случае ваша модель будет получать будущие данные с прошлыми данными и в конечном итоге будет определять неправильные закономерности во временных рядах. Итак, прежде всего, вам нужно разделить данные обучения и тестирования, учитывая время. Это означает, что вам нужно выбрать данные обучения как данные до выбранной даты. Тестовые данные как данные после выбранных данных.

#craete train and test splits
split_size =int(0.8 *len(data))
#create train data splits
X_train,y_train =data[:split_size],price[:split_size]
#create test data splits
X_test,y_test =data[split_size:],price[split_size:]
len(X_train),len(X_test),len(y_train),len(y_test)

В качестве примера представим, что вы получаете набор данных, состоящий из данных за 7 лет. Затем вы можете выбрать данные первых 5 лет в качестве данных обучения, а данные последних 2 лет - в качестве данных тестирования. Это очень важная концепция в проблеме временных рядов. Потому что вы не можете случайным образом выбрать обучающие и тестовые данные, используя полный набор данных. Поэтому рекомендуется выявить эту проблему и попытаться следовать правильному пути в задачах временных рядов.

#plot the data
plt.figure(figsize=(10,7))
plt.scatter(X_train,y_train,s=5,label="Train Data")
plt.scatter(X_test,y_test,s=5,label="Test Data")
plt.xlabel("Date")
plt.ylabel("BTC Price")
plt.legend(fontsize=14)
plt.show()

Выбор размера окна и горизонта

Выбор размера окна и горизонта - еще один важный фактор, который необходимо учитывать. Размер окна в задаче временных рядов учитывает, сколько точек прошлых данных необходимо для прогнозов. Горизонт означает, сколько точек данных мы прогнозируем с помощью модели. Я поясню это на примере. Давайте предположим, что мы можем спрогнозировать курс акций компании на завтра, используя цены за последние семь дней. В этом случае размер окна считается равным 7, а горизонт считается равным 1. Таким образом, вам необходимо иметь опыт работы с проблемами временных рядов, чтобы выбрать подходящий размер окна и горизонта в соответствии с проблемой.

Предположим, вы можете предсказать погоду, посмотрев на небо на следующий час. Но глядя на небо, вы не можете предсказать погоду на следующую неделю с большой точностью. Таким образом, вам необходимо иметь четкое представление о выборе подходящего значения. Вам всегда нужно иметь большое значение для окна. Это означает, что вы не можете увеличивать окно, как хотите. Потому что, когда вы увеличиваете размер окна, это означает, что вы сталкиваетесь с проблемами требований к оборудованию, и требуется больше времени для прогнозирования из-за большего количества вычислений. Поэтому вам нужно выбрать значения в соответствии с вашей проблемой.

Создание модели

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

Заключение

Проблема временных рядов с глубоким обучением - это область, в которой есть много проблем. У вас должен быть значительный опыт работы с моделями, потому что некоторые проблемы уникальны. Помимо моделей временных рядов, я должен упомянуть, что вы не всегда можете принимать решения на основе моделей. Потому что, например, до 2019 года мы ничего не знали о Covid-19. Таким образом, модель может делать неверные прогнозы. Но в реальном мире Covid -19 изменил принцип работы всего мира. Так что решать всегда нужно самостоятельно. Вам может помочь прогноз модели. Но не стоит на них полагаться на все 100%. Метрики оценки могут отличаться в зависимости от проблемы. Поэтому мы не можем использовать предопределенный способ оценки модели.

В этой статье я не добавлял слишком много кода на этапах создания модели. Я попытался дать простые идеи, не вдаваясь в более глубокие концепции слоев модели, предварительной обработки данных и создания модели. Я думаю, что с практической практикой и усилиями вы сможете усвоить эти концепции. Я всегда верю, что если практиковать что-то в течение более длительного времени, вы станете мастером. Изучение чего-либо вначале может быть трудным. Но со временем и усилиями вы можете стать экспертом.

Я надеюсь, что в конце концов напишу полную подробную статью, в которой будут подробно рассмотрены концепции временных рядов. Если вы новичок, это поможет вам получить представление о создании моделей временных рядов. В настоящее время вы можете обратиться к Интернету за дальнейшими исследованиями. Я также узнаю об этом, читая статьи, просматривая видео на YouTube и следя за видео об Удеми (Дэниел Бурк / Андрей Нэгой).

В этой статье были изучены способы работы с проблемами временных рядов с помощью глубокого обучения. Надеюсь, это поможет вам более точно выполнить вашу работу. Я хотел бы поблагодарить вас за то, что прочитали мою статью, я надеюсь написать больше статей на новые актуальные темы в будущем, так что следите за моей учетной записью, если вам понравилось то, что вы читаете сегодня!

Ссылки:







Больше контента на plainenglish.io