2017-02-26 3 views
0

Rapidminerで単純なニューラルネットワークモデルを開発し、毎時高速道路を通過する車の数を予測しています。明日の朝(午前2時から午前6時まで)には、高速道路には数台の車があります。私のモデルでは、車の数がマイナス(-2や-3など)になることが予測されます。統計的には理解できるものの、あなたがどこかに報告したいときは涼しいわけではありません。Rapidminerでニューラルネットワークの出力に制約をかける

私は、正の数しか予測できないように、モデルに制約を加える方法を模索しています。どうやってやるの?

おかげ

答えて

1

これは常にデータと何をしたいかによって異なりますが、1つの方法は数値を多項式に変換することです。したがって、0は文字列 "0"になり、1は "1"になります。これはニューラルネットワークに利用可能な値だけを使用させる。

ここでは、ダミーデータを使用するプロセスの例を示します。

<?xml version="1.0" encoding="UTF-8"?><process version="7.3.001"> 
    <context> 
    <input/> 
    <output/> 
    <macros/> 
    </context> 
    <operator activated="true" class="process" compatibility="7.3.001" expanded="true" name="Process"> 
    <process expanded="true"> 
     <operator activated="true" class="subprocess" compatibility="7.3.001" expanded="true" height="82" name="Subprocess" width="90" x="246" y="34"> 
     <process expanded="true"> 
      <operator activated="true" class="generate_data" compatibility="7.3.001" expanded="true" height="68" name="Generate Data" width="90" x="45" y="34"> 
      <parameter key="target_function" value="polynomial"/> 
      <parameter key="attributes_lower_bound" value="0.0"/> 
      <parameter key="attributes_upper_bound" value="3.0"/> 
      </operator> 
      <operator activated="true" class="normalize" compatibility="7.3.001" expanded="true" height="103" name="Normalize" width="90" x="179" y="34"> 
      <parameter key="attribute_filter_type" value="single"/> 
      <parameter key="attribute" value="label"/> 
      <parameter key="include_special_attributes" value="true"/> 
      <parameter key="method" value="range transformation"/> 
      <parameter key="max" value="4.99"/> 
      </operator> 
      <operator activated="true" class="real_to_integer" compatibility="7.3.001" expanded="true" height="82" name="Real to Integer" width="90" x="313" y="34"> 
      <parameter key="attribute_filter_type" value="single"/> 
      <parameter key="attribute" value="label"/> 
      <parameter key="include_special_attributes" value="true"/> 
      </operator> 
      <connect from_op="Generate Data" from_port="output" to_op="Normalize" to_port="example set input"/> 
      <connect from_op="Normalize" from_port="example set output" to_op="Real to Integer" to_port="example set input"/> 
      <connect from_op="Real to Integer" from_port="example set output" to_port="out 1"/> 
      <portSpacing port="source_in 1" spacing="0"/> 
      <portSpacing port="sink_out 1" spacing="0"/> 
      <portSpacing port="sink_out 2" spacing="0"/> 
     </process> 
     </operator> 
     <operator activated="true" class="numerical_to_polynominal" compatibility="7.3.001" expanded="true" height="82" name="Numerical to Polynominal" width="90" x="380" y="34"> 
     <parameter key="attribute_filter_type" value="single"/> 
     <parameter key="attribute" value="label"/> 
     <parameter key="include_special_attributes" value="true"/> 
     </operator> 
     <operator activated="true" class="concurrency:cross_validation" compatibility="7.3.001" expanded="true" height="145" name="Validation" width="90" x="514" y="34"> 
     <parameter key="sampling_type" value="shuffled sampling"/> 
     <process expanded="true"> 
      <operator activated="true" class="neural_net" compatibility="7.3.001" expanded="true" height="82" name="Neural Net" width="90" x="323" y="34"> 
      <list key="hidden_layers"/> 
      </operator> 
      <connect from_port="training set" to_op="Neural Net" to_port="training set"/> 
      <connect from_op="Neural Net" from_port="model" to_port="model"/> 
      <portSpacing port="source_training set" spacing="0"/> 
      <portSpacing port="sink_model" spacing="0"/> 
      <portSpacing port="sink_through 1" spacing="0"/> 
     </process> 
     <process expanded="true"> 
      <operator activated="true" class="apply_model" compatibility="7.3.001" expanded="true" height="82" name="Apply Model" width="90" x="45" y="34"> 
      <list key="application_parameters"/> 
      </operator> 
      <operator activated="true" class="performance" compatibility="7.3.001" expanded="true" height="82" name="Performance" width="90" x="179" y="34"/> 
      <connect from_port="model" to_op="Apply Model" to_port="model"/> 
      <connect from_port="test set" to_op="Apply Model" to_port="unlabelled data"/> 
      <connect from_op="Apply Model" from_port="labelled data" to_op="Performance" to_port="labelled data"/> 
      <connect from_op="Performance" from_port="performance" to_port="performance 1"/> 
      <connect from_op="Performance" from_port="example set" to_port="test set results"/> 
      <portSpacing port="source_model" spacing="0"/> 
      <portSpacing port="source_test set" spacing="0"/> 
      <portSpacing port="source_through 1" spacing="0"/> 
      <portSpacing port="sink_test set results" spacing="0"/> 
      <portSpacing port="sink_performance 1" spacing="0"/> 
      <portSpacing port="sink_performance 2" spacing="0"/> 
     </process> 
     </operator> 
     <operator activated="true" class="nominal_to_numerical" compatibility="7.3.001" expanded="true" height="103" name="Nominal to Numerical (2)" width="90" x="715" y="136"> 
     <parameter key="attribute_filter_type" value="subset"/> 
     <parameter key="attribute" value="label"/> 
     <parameter key="attributes" value="prediction(label)|label"/> 
     <parameter key="include_special_attributes" value="true"/> 
     <parameter key="coding_type" value="unique integers"/> 
     <list key="comparison_groups"/> 
     </operator> 
     <connect from_op="Subprocess" from_port="out 1" to_op="Numerical to Polynominal" to_port="example set input"/> 
     <connect from_op="Numerical to Polynominal" from_port="example set output" to_op="Validation" to_port="example set"/> 
     <connect from_op="Validation" from_port="model" to_port="result 1"/> 
     <connect from_op="Validation" from_port="example set" to_port="result 2"/> 
     <connect from_op="Validation" from_port="test result set" to_op="Nominal to Numerical (2)" to_port="example set input"/> 
     <connect from_op="Validation" from_port="performance 1" to_port="result 4"/> 
     <connect from_op="Nominal to Numerical (2)" from_port="example set output" to_port="result 3"/> 
     <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"/> 
     <portSpacing port="sink_result 4" spacing="0"/> 
     <portSpacing port="sink_result 5" spacing="0"/> 
    </process> 
    </operator> 
</process> 

ダミーデータを作成し、数値を多項式に変換します。 Cross Validationの予測サンプルセットの出力には多項式が含まれており、これらは多項式に戻されます。

言うまでもなく、これはあなたが望むものには適切ではないかもしれませんが、それはスタートです。

アンドリュー

0

あなたは再調整しますニューラルネットワークのパラメータを持っている、そうでなければ、RapidMinerでのアルゴリズムの詳細にアクセスすることはできません。他のアイデアは、ニューラルネットワークモデルの後にThreshold演算子を使用することで、今までよりもネガを予測するように決定の境界を変更できるようにすることです。

関連する問題