1
$\begingroup$

I have a multivariate dataset for binary classification. Each series in the dataset has 1000 rows with eight features. The following is a description of a sample series in the dataset. The values in the table below are random and do not represent the actual data.

|----------------|----------|----------|----------| ... |----------|
| Time (seconds) | Feature1 | Feature2 | Feature3 | ... | Feature8 |
|----------------|----------|----------|----------| ... |----------|
|        1       |    100   |   157    |    321   | ... |    452   |
|----------------|----------|----------|----------| ... |----------|
|        2       |    97    |   123    |    323   | ... |    497   |
|----------------|----------|----------|----------| ... |----------|
|       ...      |    ...   |   ...    |   ...    | ... |   ...    |
|----------------|----------|----------|----------| ... |----------| 
|       1000     |    234   |    391   |    46    | ... |   516    |
|----------------|----------|----------|----------| ... |----------|

We can consider each row to be logged every second. The training dataset is completely available offline.

At the time of deployment, the data will appear in real-time, i.e., after the first second, only one row will be available, two rows will be available after two seconds, and so on. Typically, time series models provide the classification output at the end of the entire sample time series. However, I want to generate classification outputs online and periodically. For example, a classification output at every n seconds.

I checked multiple relevant blogs, and it seems a sliding-window based LSTM model may fit the purpose. However, there are concerns about overfitting with such a model, as discussed here: Sliding window leads to overfitting in LSTM?

Since my training examples are also limited, I am looking for alternative solutions. For instance, currently, I have about 100 training examples with 1000 x 8 rows each, 50 in each class. What are some other approaches to solving the problem?

$\endgroup$

1 Answer 1

0
$\begingroup$

Time-series sequence classification is a set of problems where the model takes in a sequence and spits out a classification for that sequence. This is essentially your basic use case. Sequence classification is ideal for when the complete sequence is available.

In your case, you can do the training process on the complete sequences. Upon deployment, take the sequence up to that point and simply get the prediction for the shorter sequence. RNNs like LSTMs and GRUs can take sequences of any length.

Solely training on complete sequences might, for obvious reasons, not necessarily be optimal. Therefore, during training, you can also feed 'partial' sequences to train on and simply predict the shorter sequences. This mimics the behaviour that you will later get during deployment.

$\endgroup$
2
  • $\begingroup$ Thanks for the answer. I'll implement this approach and update my findings. $\endgroup$ Apr 21 at 18:38
  • $\begingroup$ If the answer sufficiently answers your question, make sure to upvote it and select it as the correct answer such that future visitors to the site can better find what they are looking for :) $\endgroup$ Apr 21 at 18:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.