# Time series classification with convolutional neural network

I have to classify a time series signal with a CNN (not a LSTM or some kind of RNN). The input signal is a window with a width of 90 samples (currently, but can be changed) and 59 sensor values. So my signal can be represented by a 90x59 matrix for a single class. I have 28 classes.

Now I´m looking for a good solution to classify this. My first try ends in a very poor result of 24% accuracy and I´m thinking of multi channel models for all 59 channels in my model.

Is there any good way to start for some kind of good prediction results?

• What is the physical process you're measuring? Sep 13, 2018 at 13:13
• I try to predict the state of a machine with the data. I have training data which describe the machine state during the given sensor data. Sep 13, 2018 at 14:01
• Is part of your data vibration data? If so, I'd recommend frequency domain analysis via FFT. Sep 13, 2018 at 14:10
• No. Just voltage and current data. But an FFT may be a good point. Sep 13, 2018 at 14:13
• Rule-of-thumb: never blindly apply an ML algorithm to anything. First understand your data. Dig around in it. Otherwise, you could spend a lot of time (and money!) spinning your wheels and accomplishing nothing. Sep 13, 2018 at 14:24

I'm not convinced 24% accuracy is very poor, depending on what your dataset looks like. Your baseline accuracy is in the realm of 3.5% with 28 classes. But let's assume you want to do better.

CNNs for images use 2-d convolution filters, because there is an expectation that pixels that are close together should be processed together. I guess you could use a 2-d convolution on the 90x59 matrix, but it isn't clear to me that we should be looking for information across "close" sensors. Perhaps you can use some sort of "tall" 2-d convolution, so that you capture information across all sensors in the same time span.

You may want to try training a model on each channel and ensembling them instead, as you mention. If you do this, I guess you could use a 1-d convolution to process each channel, but I don't really see why you would. Is there a reason you feel the need to use CNNs? There are very likely more appropriate models specific to processing time-series data.

• Thanks for the comment. This is part of my final work on my master grade and the task is to use a CNN. A 2D convolution was another idea which I want to test. I just have seen the multi-channel CNN here machinelearningmastery.com/…. So I thought it is usefully to test it. Sep 13, 2018 at 14:06
• It will be great if you can explain which methods you mean when you say at end that "There are very likely more appropriate models specific to processing time-series data."
– rnso
Oct 7, 2018 at 8:23

I am not quite sure if it suits your problem, but I think you can look into our recent work on deep learning for time series classification.

You could start with residual connections since they seem to improve the performance while allowing the network to be deeper without suffering from the vanishing gradient problem.

Another thing would be to try transfer learning for time series classification so basically using pre-trained models.