The Altair Community is migrating to a new platform to provide a better experience for you. In preparation for the migration, the Altair Community is on read-only mode from October 28 - November 6, 2024. Technical support via cases will continue to work as is. For any urgent requests from Students/Faculty members, please submit the form linked here

Classification of Time Series Using a Neural Net

mrtzrhwldmrtzrhwld Member Posts: 4 Contributor I
edited November 2019 in Help

Hi everyone,

 

for an university project, I need to predict the class-value of different data sets that would be best bescribed as time series.

I have exactly one input value per each prediction task with an timestamp as the index. For my example, let's assume the time stamp is 0 - 100 seconds and the input value is the electric current of a machine.

I want to classify based on the change of the electrical current over time. For example, class 1 is just a regular process with the current around 50A, class 2 has a general higher current of about 60A, class 3 has peaks between the seconds 10-15 and so on.

I am using a Neural Net (MLP-BP). However when I load the data and train the model, my MLP has the same number of input neurons as I have unique values for each process (e.g. 100 input neurons - when I have 100 timestamps).

This doesn't seem right to me but on the other hand, it's sort of logical. In the future, I want to classify time series with much larger individual values for each process and I am afraid, that I will get problems when I suddenly have ~3000 input neurons.

 

Can anyone help me with this problem? 

Down below is my process  - i believe it's very simple and hope it's not full of mistakes.

Thanks in advance.

Moritz

<?xml version="1.0" encoding="UTF-8"?><process version="7.6.000">
<context>
<input/>
<output/>
<macros/>
</context>
<operator activated="true" class="process" compatibility="7.6.000" expanded="true" name="Process">
<process expanded="true">
<operator activated="true" class="retrieve" compatibility="7.6.000" expanded="true" height="68" name="Retrieve 5V_4D_Training (2)" width="90" x="45" y="34">
<parameter key="repository_entry" value="../5V_4D_Training"/>
</operator>
<operator activated="true" class="neural_net" compatibility="7.6.000" expanded="true" height="82" name="Neural Net" width="90" x="179" y="34">
<list key="hidden_layers"/>
</operator>
<operator activated="true" class="retrieve" compatibility="7.6.000" expanded="true" height="68" name="Retrieve 8V_1D_unbekannt" width="90" x="45" y="136">
<parameter key="repository_entry" value="../8V_1D_unbekannt"/>
</operator>
<operator activated="true" class="apply_model" compatibility="7.6.000" expanded="true" height="82" name="Apply Model" width="90" x="447" y="34">
<list key="application_parameters"/>
</operator>
<connect from_op="Retrieve 5V_4D_Training (2)" from_port="output" to_op="Neural Net" to_port="training set"/>
<connect from_op="Neural Net" from_port="model" to_op="Apply Model" to_port="model"/>
<connect from_op="Retrieve 8V_1D_unbekannt" from_port="output" to_op="Apply Model" to_port="unlabelled data"/>
<connect from_op="Apply Model" from_port="labelled data" to_port="result 1"/>
<connect from_op="Apply Model" from_port="model" to_port="result 2"/>
<portSpacing port="source_input 1" spacing="0"/>
<portSpacing port="sink_result 1" spacing="0"/>
<portSpacing port="sink_result 2" spacing="0"/>
<portSpacing port="sink_result 3" spacing="0"/>
</process>
</operator>
</process>

 

Best Answer

  • SGolbertSGolbert RapidMiner Certified Analyst, Member Posts: 344 Unicorn
    Solution Accepted

    From what I have seen you have one column per second. You could try to use the Generate Aggregation operator on the 100 attributes, to have min, max, average, variance, etc. You can then train a simple model using only the aggregates, i.e. decision tree.

     

    With only 20 samples I don't expect you to have good results with neural nets.

Answers

  • mrtzrhwldmrtzrhwld Member Posts: 4 Contributor I

    Hi again,

    perhaps my last post is a bit unclear, so I added a screenshot of my data.

    rapidminer.JPG

     

     

     

    As seen in the picture, I have one file that contains 20 rows of data, that's used as training data.

    Each row contains the machine data of one single process. Each process contains 100 single values from one sensor, but technically they are all the same attribute. I want to classify each single process. 

    When trying to change the data format to columns, I am not able to add the class label... 

     

     

    I would be really glad if anyone can help me. It feels stupid because it seems I am already failing with basic data structure tasks, but I am becoming kind of desperate with this topic, because I read tutorials all day long but can't seem to fix my problem. So really ... _any_ help is appreciated.

     

    (It's also a bit hard for me to describe my problem as I am not a native speaker.)

    Thanks.

  • mrtzrhwldmrtzrhwld Member Posts: 4 Contributor I

    @SGolbert Thanks, that was probably the right hint.

    I am working on getting more data and expanding my training data set. :)

  • surya_mpadsurya_mpad Member Posts: 3 Contributor I

    HI,

     

    I am also working on the similar task " time series classification".  And the structure of my dataset is also similar to the dataset you have used. That is, each row represents a time series and have 36 attributes which represent different time periods. The task is to classify the time series in to 7 different categories.  I've been working on this task and have issues with the feature extraction of time series with Rapidminer. So I would like to know what are the preprocessing steps ( feature extraction) you did on your data set for classification. And it would be really great if you can share the process that you have built. 

     

    Many thanks,

    Surya

Sign In or Register to comment.