"Multi Label Regression with neuronal network"

Julian
Julian New Altair Community Member
edited November 5 in Community Q&A

Hi,

I am trying (for quite some time now, so please help;) to build a neuronal network with
several input layers (attributes) and several outputlayers (labels) for a regression. All variables are numerical.

I want just one NN giving me all numerical labels, not just one label in several models.

As obvious as this problem seems to me, I couldn find anything suitable so far here.
My principal Idea, at first, was to build one model per label and then stack them together in one model.

Below the code of a model that loops through the labels and creates seperate models.

Is what Im proposing here even possible with RM?
I really would appreciate your help.

Cheers
      Julian

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<process version="5.1.008">
  <context>
    <input/>
    <output/>
    <macros/>
  </context>
  <operator activated="true" class="process" compatibility="5.1.008" expanded="true" name="Root">
    <process expanded="true" height="546" width="547">
      <operator activated="true" class="generate_multi_label_data" compatibility="5.1.008" expanded="true" height="60" name="Generate Multi-Label Data" width="90" x="45" y="120">
        <parameter key="regression" value="true"/>
      </operator>
      <operator activated="true" class="set_role" compatibility="5.1.008" expanded="true" height="76" name="Set Role" width="90" x="45" y="210">
        <parameter key="name" value="label1"/>
        <parameter key="target_role" value="label"/>
        <list key="set_additional_roles"/>
      </operator>
      <operator activated="true" class="multiply" compatibility="5.1.008" expanded="true" height="76" name="Multiply" width="90" x="179" y="210"/>
      <operator activated="true" class="loop_labels" compatibility="5.1.008" expanded="true" height="94" name="Loop Labels" width="90" x="313" y="210">
        <process expanded="true" height="502" width="614">
          <operator activated="true" class="multiply" compatibility="5.1.008" expanded="true" height="94" name="Multiply (2)" width="90" x="78" y="30"/>
          <operator activated="true" class="stacking" compatibility="5.1.008" expanded="true" height="60" name="Stacking" width="90" x="246" y="30">
            <process expanded="true" height="502" width="291">
              <operator activated="true" class="neural_net" compatibility="5.1.008" expanded="true" height="76" name="Neural Net" width="90" x="112" y="30">
                <list key="hidden_layers"/>
              </operator>
              <operator activated="true" class="neural_net" compatibility="5.1.008" expanded="true" height="76" name="Neural Net (2)" width="90" x="112" y="120">
                <list key="hidden_layers"/>
              </operator>
              <connect from_port="training set 1" to_op="Neural Net" to_port="training set"/>
              <connect from_port="training set 2" to_op="Neural Net (2)" to_port="training set"/>
              <connect from_op="Neural Net" from_port="model" to_port="base model 1"/>
              <connect from_op="Neural Net (2)" from_port="model" to_port="base model 2"/>
              <portSpacing port="source_training set 1" spacing="0"/>
              <portSpacing port="source_training set 2" spacing="0"/>
              <portSpacing port="source_training set 3" spacing="0"/>
              <portSpacing port="sink_base model 1" spacing="0"/>
              <portSpacing port="sink_base model 2" spacing="0"/>
              <portSpacing port="sink_base model 3" spacing="0"/>
            </process>
            <process expanded="true" height="502" width="291">
              <operator activated="true" class="neural_net" compatibility="5.1.008" expanded="true" height="76" name="Neural Net (4)" width="90" x="96" y="95">
                <list key="hidden_layers"/>
              </operator>
              <connect from_port="stacking examples" to_op="Neural Net (4)" to_port="training set"/>
              <connect from_op="Neural Net (4)" from_port="model" to_port="stacking model"/>
              <portSpacing port="source_stacking examples" spacing="0"/>
              <portSpacing port="sink_stacking model" spacing="0"/>
            </process>
          </operator>
          <operator activated="true" class="bagging" compatibility="5.1.008" expanded="true" height="76" name="Bagging" width="90" x="246" y="120">
            <process expanded="true" height="502" width="632">
              <operator activated="true" class="neural_net" compatibility="5.1.008" expanded="true" height="76" name="Neural Net (3)" width="90" x="271" y="30">
                <list key="hidden_layers"/>
              </operator>
              <connect from_port="training set" to_op="Neural Net (3)" to_port="training set"/>
              <connect from_op="Neural Net (3)" from_port="model" to_port="model"/>
              <portSpacing port="source_training set" spacing="0"/>
              <portSpacing port="sink_model" spacing="0"/>
            </process>
          </operator>
          <connect from_port="example set" to_op="Multiply (2)" to_port="input"/>
          <connect from_op="Multiply (2)" from_port="output 1" to_op="Stacking" to_port="training set"/>
          <connect from_op="Multiply (2)" from_port="output 2" to_op="Bagging" to_port="training set"/>
          <connect from_op="Stacking" from_port="model" to_port="out 1"/>
          <connect from_op="Bagging" from_port="model" to_port="out 2"/>
          <portSpacing port="source_example set" spacing="0"/>
          <portSpacing port="sink_out 1" spacing="0"/>
          <portSpacing port="sink_out 2" spacing="0"/>
          <portSpacing port="sink_out 3" spacing="0"/>
        </process>
      </operator>
      <connect from_op="Generate Multi-Label Data" from_port="output" to_op="Set Role" to_port="example set input"/>
      <connect from_op="Set Role" from_port="example set output" to_op="Multiply" to_port="input"/>
      <connect from_op="Multiply" from_port="output 1" to_op="Loop Labels" to_port="example set"/>
      <connect from_op="Loop Labels" from_port="out 1" to_port="result 1"/>
      <connect from_op="Loop Labels" from_port="out 2" 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>

Answers

  • Julian
    Julian New Altair Community Member


    Has anyone suceeded in building a Neuronal Net with multiple numerical labels so far?
    Cant be that Iam the only one trying this. Please, just tell me if i dont get it or if it is just not possible.

    Julian
  • wessel
    wessel New Altair Community Member
    Hey,

    You can do Vector Linear Regression. But this is more like a perceptron.

    To what purpose you need a neural network with multiple outputs?
    Are you capable of coding a neural network yourself? It may turn out to be surprisingly easy.

    Best regards,

    Wessel