【发布时间】:2014-08-11 00:31:54
【问题描述】:
我有一个包含 1000 个示例的数据集,其中 500 个正例和 500 个负例。我用 0.7 的分割比验证它们,然后将它们放在具有默认参数的 rapidminers MP 上,但有两层 25 个节点。
但是,当我验证它时,我的所有预测都是负面的,我不知道为什么?即使优化不佳的 MP(就像在这个例子中一样),我也应该至少得到一个正面预测。
嗯,这是我第一次在 rapidminer 上这样做,可能这是一个非常基本的错误,但我找不到。
XML 代码:
<?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>
【问题讨论】:
-
你是如何拆分数据的?正如您所提到的,您使用了 0.7 的拆分比率,因此训练集应该同时具有正实例和负实例(从验证来看,它似乎拆分得很好)。它们的顺序是否可能会影响 MP 学习?
-
抱歉,您能否详细说明“我是如何拆分数据的”,因为正如我和您提到的那样,我进行了 0.7 拆分。你说的顺序是什么意思?它们是如何插入的顺序?如果是这样,我使用了随机抽样选项。
-
您似乎没有使用随机抽样 (
<parameter key="shuffle" value="false"/>),尽管您使用的版本中可能存在错误。我尝试使用带有 shuffle、1000 次迭代、0.05 动量和误差 epsilon 5e-6 的 Ripley 数据集,并使用 RapidMiner 5.3.15 对这两个类进行了预测。您可以使用更新版本的 RM 检查您的数据。 -
嗯,我的意思是验证部分的随机抽样,在 NN 本身我没有使用它,我忘记了那里有一个参数。
标签: algorithm neural-network data-mining rapidminer perceptron