Algorithm Rapidminer';s多层感知器奇怪的结果
我有一个1000个例子的数据集,500个是正面的,500个是负面的。我用0.7的分割率验证它们,然后用默认参数将它们放在RapidAdminers MP上,除了有两层25个节点 然而,当我验证它时,我所有的预测都是否定的,我不知道为什么?即使是糟糕的优化MP(就像在这个例子中),我至少应该得到一个积极的预测 嗯,这是我第一次在rapidminer上这样做,可能这是一个非常基本的错误,但我找不到它 XML代码:Algorithm Rapidminer';s多层感知器奇怪的结果,algorithm,neural-network,data-mining,rapidminer,perceptron,Algorithm,Neural Network,Data Mining,Rapidminer,Perceptron,我有一个1000个例子的数据集,500个是正面的,500个是负面的。我用0.7的分割率验证它们,然后用默认参数将它们放在RapidAdminers MP上,除了有两层25个节点 然而,当我验证它时,我所有的预测都是否定的,我不知道为什么?即使是糟糕的优化MP(就像在这个例子中),我至少应该得到一个积极的预测 嗯,这是我第一次在rapidminer上这样做,可能这是一个非常基本的错误,但我找不到它 XML代码: <?xml version="1.0" encoding="UTF-8" s
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<process version="5.3.008">
<context>
<input/>
<output/>
<macros/>
</context>
<operator activated="true" class="process" compatibility="5.3.008" expanded="true" name="Process">
<process expanded="true">
<operator activated="true" class="split_validation" compatibility="5.3.008" expanded="true" height="112" name="Validation (6)" width="90" x="112" y="255">
<process expanded="true">
<operator activated="true" class="neural_net" compatibility="5.3.008" expanded="true" height="76" name="Neural Net" width="90" x="69" y="30">
<list key="hidden_layers">
<parameter key="Layer" value="25"/>
<parameter key="Layer2" value="25"/>
</list>
<parameter key="training_cycles" value="100"/>
<parameter key="shuffle" value="false"/>
</operator>
<connect from_port="training" to_op="Neural Net" to_port="training set"/>
<connect from_op="Neural Net" from_port="model" to_port="model"/>
<portSpacing port="source_training" 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="5.3.008" expanded="true" height="76" name="Apply Model (6)" width="90" x="45" y="30">
<list key="application_parameters"/>
</operator>
<operator activated="true" class="performance" compatibility="5.3.008" expanded="true" height="76" name="Performance (6)" width="90" x="147" y="30"/>
<connect from_port="model" to_op="Apply Model (6)" to_port="model"/>
<connect from_port="test set" to_op="Apply Model (6)" to_port="unlabelled data"/>
<connect from_op="Apply Model (6)" from_port="labelled data" to_op="Performance (6)" to_port="labelled data"/>
<connect from_op="Performance (6)" from_port="performance" to_port="averagable 1"/>
<portSpacing port="source_model" spacing="0"/>
<portSpacing port="source_test set" spacing="0"/>
<portSpacing port="source_through 1" spacing="0"/>
<portSpacing port="sink_averagable 1" spacing="0"/>
<portSpacing port="sink_averagable 2" spacing="0"/>
</process>
</operator>
<portSpacing port="source_input 1" spacing="0"/>
<portSpacing port="sink_result 1" spacing="0"/>
</process>
</operator>
</process>
到目前为止,您的流程看起来相当不错。有趣的是:你的数据会发生什么变化?要研究这一点,您可以设置一些断点并检查示例。NN学习者之前的断点集将向您显示训练集的外观,模型应用程序之前的另一个断点集允许您检查测试集。
为确保正确的类别分布,您可以为验证运算符启用分层抽样。NN学习者的洗牌选项允许操作员在训练模型之前洗牌训练集。如果您的数据项已经排序,可能导致模型不正确,则此功能非常有用。您是如何分割数据的?正如您提到的,您使用了split ratio.7,因此训练集应该同时具有正实例和负实例(从验证来看,它似乎是非常好的分割)。它们的顺序可能会影响MP学习吗?对不起,请您详细说明一下“我是如何分割数据的”,因为正如我和您提到的,我进行了0.7的分割。顺序是什么意思?顺序是如何插入的?如果是这样的话,我使用了随机采样选项。看起来您没有使用随机采样(
),尽管您使用的版本中可能存在错误。我尝试了使用具有shuffle、1000迭代、.05动量和误差ε5e-6的Ripley数据集,并使用RapidMiner 5.3.15对这两个类进行了预测。你可以用更新版本的RM检查你的数据。嗯,我的意思是验证部分的随机采样,在NN本身我没有使用它,我忘记了那是一个参数。