Simple Multivariate Time-Series Forecasting

This tutorial was supposed to be published last week. Except I couldn’t get a working (and decent) model ready in time to write an article about it. In fact, I’ve had to spend 2 days on the code to wrangle some semblance of useful and legible output from it.

But I’m not mad at it (now). This is the aim of my challenge here and truthfully I was getting rather tired of solving all the previous classification tasks in a row. And the good news is I’ve learned how to model the data in a suitable format for processing, conducting exploratory data analysis on time-series data and building a good (the best I could come up with, like, after 2 days) model.

So I’ve also made a meme to commemorate my journey. I promise the tutorial is right on the other side of it.

Yes, I made a meme of my own code.

_About the Dataset: __The Gas Sensor Array Dataset, download from here**, _**consists of 8 sensor readings all set to detect concentration levels of a mixture of Ethylene gas with either Methane or Carbon Monoxide. The concentration levels are constantly changing with time and the sensors record this information.

Regression is one other possible type of solution that can be implemented for this dataset, but I deliberately chose to build a multivariate time-series model to familiarize myself with time-series forecasting problems and also to set more of a challenge to myself.

Time-Series data continuosuly varies with time. There may be one variable that does so (univariate), or multiple variables that vary with time (multivariate) in a given dataset.

Here, there are 11 feature variables in total; 8 sensor readings (time-dependent), Temperature, Relative Humidity and the Time (stamp) at which the recordings were observed.

As with most datasets in the UCI Machine Learning Repository, you will have to spend time cleaning up the flat files, converting them to a CSV format and insert the column headers at the top.

If this sounds exhausting to you, you can simply downloadone such file I’ve already prepped.


T

his is going to be a long tutorial with explanations liberally littered here and there, in order to explain concepts that most beginners might not be knowing. So in advance, thank you for your patience and I’ll keep the explanations to the point and as short as possible.

1) Exploratory Data Analysis -

Before heading into the data preprocessing part, it is important to visualize what variables are changing with time and how they are changing (trends) with time. Here’s how.

Time Series Data Plot

# Gas Sensing Array Forecast with VAR model

	# Importing libraries
	import numpy as np, pandas as pd
	import matplotlib.pyplot as plt, seaborn as sb

	# Importing Dataset
	df =  pd.read_csv("dataset.csv")
	ds = df.drop(['Time'], axis = 1)

	# Visualize the trends in data
	sb.set_style('darkgrid')
	ds.plot(kind = 'line', legend = 'reverse', title = 'Visualizing Sensor Array Time-Series')
	plt.legend(loc = 'upper right', shadow = True, bbox_to_anchor = (1.35, 0.8))
	plt.show()

	# Dropping Temperature & Relative Humidity as they do not change with Time
	ds.drop(['Temperature','Rel_Humidity'], axis = 1, inplace = True)

	# Again Visualizing the time-series data
	sb.set_style('darkgrid')
	ds.plot(kind = 'line', legend = 'reverse', title = 'Visualizing Sensor Array Time-Series')
	plt.legend(loc = 'upper right', shadow = True, bbox_to_anchor = (1.35, 0.8))
	plt.show()
view raw
gsr_data_prepocessing.py hosted with ❤ by GitHub

It is evident that the ‘Temperature’ and ‘Relative Humidity’ variables do not really change with time at all. Therefore I have dropped the columns; time, temperature and rel_humidity from the dataset, to ensure that it only contains pure, time-series data.

2) Checking for Stationarity:

Non-stationary data has trends that are present in the data. We will have to eliminate this property because the Vector Autoregression (VAR) model, requires the data to be stationary.

A Stationary series is one whose mean and variance do not change with time.

One of the ways to check for stationarity is the ADF test. The ADF test has to be implemented for all the 8 sensor readings column. We’ll also split the data into train & test subsets.

#multivariate-analysis #time-series-forecasting #data-science #machine-learning #time-series-analysis #data analysis

What is GEEK

Buddha Community

Simple Multivariate Time-Series Forecasting

Simple Multivariate Time-Series Forecasting

This tutorial was supposed to be published last week. Except I couldn’t get a working (and decent) model ready in time to write an article about it. In fact, I’ve had to spend 2 days on the code to wrangle some semblance of useful and legible output from it.

But I’m not mad at it (now). This is the aim of my challenge here and truthfully I was getting rather tired of solving all the previous classification tasks in a row. And the good news is I’ve learned how to model the data in a suitable format for processing, conducting exploratory data analysis on time-series data and building a good (the best I could come up with, like, after 2 days) model.

So I’ve also made a meme to commemorate my journey. I promise the tutorial is right on the other side of it.

Yes, I made a meme of my own code.

_About the Dataset: __The Gas Sensor Array Dataset, download from here**, _**consists of 8 sensor readings all set to detect concentration levels of a mixture of Ethylene gas with either Methane or Carbon Monoxide. The concentration levels are constantly changing with time and the sensors record this information.

Regression is one other possible type of solution that can be implemented for this dataset, but I deliberately chose to build a multivariate time-series model to familiarize myself with time-series forecasting problems and also to set more of a challenge to myself.

Time-Series data continuosuly varies with time. There may be one variable that does so (univariate), or multiple variables that vary with time (multivariate) in a given dataset.

Here, there are 11 feature variables in total; 8 sensor readings (time-dependent), Temperature, Relative Humidity and the Time (stamp) at which the recordings were observed.

As with most datasets in the UCI Machine Learning Repository, you will have to spend time cleaning up the flat files, converting them to a CSV format and insert the column headers at the top.

If this sounds exhausting to you, you can simply downloadone such file I’ve already prepped.


T

his is going to be a long tutorial with explanations liberally littered here and there, in order to explain concepts that most beginners might not be knowing. So in advance, thank you for your patience and I’ll keep the explanations to the point and as short as possible.

1) Exploratory Data Analysis -

Before heading into the data preprocessing part, it is important to visualize what variables are changing with time and how they are changing (trends) with time. Here’s how.

Time Series Data Plot

# Gas Sensing Array Forecast with VAR model

	# Importing libraries
	import numpy as np, pandas as pd
	import matplotlib.pyplot as plt, seaborn as sb

	# Importing Dataset
	df =  pd.read_csv("dataset.csv")
	ds = df.drop(['Time'], axis = 1)

	# Visualize the trends in data
	sb.set_style('darkgrid')
	ds.plot(kind = 'line', legend = 'reverse', title = 'Visualizing Sensor Array Time-Series')
	plt.legend(loc = 'upper right', shadow = True, bbox_to_anchor = (1.35, 0.8))
	plt.show()

	# Dropping Temperature & Relative Humidity as they do not change with Time
	ds.drop(['Temperature','Rel_Humidity'], axis = 1, inplace = True)

	# Again Visualizing the time-series data
	sb.set_style('darkgrid')
	ds.plot(kind = 'line', legend = 'reverse', title = 'Visualizing Sensor Array Time-Series')
	plt.legend(loc = 'upper right', shadow = True, bbox_to_anchor = (1.35, 0.8))
	plt.show()
view raw
gsr_data_prepocessing.py hosted with ❤ by GitHub

It is evident that the ‘Temperature’ and ‘Relative Humidity’ variables do not really change with time at all. Therefore I have dropped the columns; time, temperature and rel_humidity from the dataset, to ensure that it only contains pure, time-series data.

2) Checking for Stationarity:

Non-stationary data has trends that are present in the data. We will have to eliminate this property because the Vector Autoregression (VAR) model, requires the data to be stationary.

A Stationary series is one whose mean and variance do not change with time.

One of the ways to check for stationarity is the ADF test. The ADF test has to be implemented for all the 8 sensor readings column. We’ll also split the data into train & test subsets.

#multivariate-analysis #time-series-forecasting #data-science #machine-learning #time-series-analysis #data analysis

What is Time Series Forecasting?

In this article, we will be discussing an algorithm that helps us analyze past trends and lets us focus on what is to unfold next so this algorithm is time series forecasting.

What is Time Series Analysis?

In this analysis, you have one variable -TIME. A time series is a set of observations taken at a specified time usually equal in intervals. It is used to predict future value based on previously observed data points.

Here some examples where time series is used.

  1. Business forecasting
  2. Understand the past behavior
  3. Plan future
  4. Evaluate current accomplishments.

Components of time series :

  1. Trend: Let’s understand by example, let’s say in a new construction area someone open hardware store now while construction is going on people will buy hardware. but after completing construction buyers of hardware will be reduced. So for some times selling goes high and then low its called uptrend and downtrend.
  2. **Seasonality: **Every year chocolate sell goes high during the end of the year due to Christmas. This same pattern happens every year while in the trend that is not the case. Seasonality is repeating same pattern at same intervals.
  3. Irregularity: It is also called noise. When something unusual happens that affects the regularity, for example, there is a natural disaster once in many years lets say it is flooded so people buying medicine more in that period. This what no one predicted and you don’t know how many numbers of sales going to happen.
  4. Cyclic: It is basically repeating up and down movements so this means it can go more than one year so it doesn’t have fix pattern and it can happen any time and it is much harder to predict.

Stationarity of a time series:

A series is said to be “strictly stationary” if the marginal distribution of Y at time t[p(Yt)] is the same as at any other point in time. This implies that the mean, variance, and covariance of the series Yt are time-invariant.

However, a series said to be “weakly stationary” or “covariance stationary” if mean and variance are constant and covariance of two-point Cov(Y1, Y1+k)=Cov(Y2, Y2+k)=const, which depends only on lag k but do not depend on time explicitly.

#machine-learning #time-series-model #machine-learning-ai #time-series-forecasting #time-series-analysis

Time Series Basics with Pandas

In my last post, I mentioned multiple selecting and filtering  in Pandas library. I will talk about time series basics with Pandas in this post. Time series data in different fields such as finance and economy is an important data structure. The measured or observed values over time are in a time series structure. Pandas is very useful for time series analysis. There are tools that we can easily analyze.

In this article, I will explain the following topics.

  • What is the time series?
  • What are time series data structures?
  • How to create a time series?
  • What are the important methods used in time series?

Before starting the topic, our Medium page includes posts on data science, artificial intelligence, machine learning, and deep learning. Please don’t forget to follow us on Medium 🌱 to see these posts and the latest posts.

Let’s get started.

#what-is-time-series #pandas #time-series-python #timeseries #time-series-data

Flow-Forecast: A time series forecasting library built in PyTorch

Flow Forecast is a recently created open-source framework that aims to make it easy to use state of the art machine learning models to forecast and/or classify complex temporal data. Additionally, flow-forecast natively integrates with Google Cloud Platform, Weights and Biases, Colaboratory, and other tools commonly used in industry.

Background

Image for post

In some of my previous articles I talked about the need for accurate time series forecasts and the promise of using deep learning. Flow-Forecast was originally, created to forecast stream and river flows using variations of the transformer and baseline models. However, in the process of training the transformers I encountered several issues related to finding the right hyper-parameters and the right architecture. Therefore, it became necessary to develop a platform for trying out many configurations. Flow forecast is designed to allow you to very easily try out a number of different hyper-parameters and training options for your models. Changing a model is as simple as swapping out the model’s name in the configuration file.

Another problem I faced was how to integrate additional static datasets into the forecasts. For river flow forecasting, there was a lot of meta-data such as latitude, longitude, soil depth, elevation, slope, etc. For this, we decided to look into unsupervised methods like autoencoders for forming an embedding. This spurred the idea of creating a generic way to synthesize embedding with the temporal forecast.

Using flow forecast

There are a couple easy resources to use to get started with flow-forecast. I recorded a brief introduction video back in May and there are also more detailed live-coding sessions you can follow. We also have a basic tutorial notebook that you can use to get a sense of how flow-forecast works on a basic problem. Additionally, there are also a lot more detailed notebooks that we use for our core COVID-19 predictions. Finally, we also have ReadTheDocs available for in depth documentation as well as our official wiki pages.

#machine-learning #pytorch #time-series-analysis #time-series-forecasting #deep-learning #deep learning

Important for Time Series in Pandas

In the last post, I talked about working with time series . In this post, I will talk about important methods in time series. Time series analysis is very frequently used in finance studies. Pandas is a very important library for time series analysis studies.

In summary, I will explain the following topics in this lesson,

  • Resampling
  • Shifting
  • Moving Window Functions
  • Time zone

Before starting the topic, our Medium page includes posts on data science, artificial intelligence, machine learning, and deep learning. Please don’t forget to follow us on Medium 🌱 to see these posts and the latest posts.

Let’s get started.

#pandas-time-series #timeseries #time-series-python #time-series-analysis