为什么我使用单个隐藏节点获得IRIS数据集的准确度?

时间:2016-05-01 13:18:35

标签: machine-learning neural-network backpropagation azure-machine-learning-studio

我有一个带有反向传播训练器的神经网络的最小示例,在IRIS数据集上进行测试。我开始使用7个隐藏节点,效果很好。

我将隐藏层中的节点数量减少到1(期望它失败),但惊讶地发现准确度上升了。

我在azure ml中设置了实验,只是为了验证它不是我的代码。同样的事情,单个隐藏节点的准确率为98.3333%。

任何人都可以向我解释这里发生了什么吗?

2 个答案:

答案 0 :(得分:4)

首先,已经确定各种分类模型在Iris上产生令人难以置信的良好结果(Iris是非常可预测的);例如,请参阅here

其次,我们可以观察到Iris数据集中的特征相对较少。此外,如果您查看dataset description,您会发现其中两个特征与课程结果高度相关。

这些相关值是线性的单特征相关性,这表明人们很可能应用线性模型并观察到良好的结果。神经网络是高度非线性的;随着隐藏节点和隐藏层数量的增加,它们变得越来越复杂并捕获越来越多的非线性特征组合。

考虑到这些事实,(a)开始时很少有特征,(b)与类有很高的线性相关性,都会指出一个不太复杂的线性函数作为适当的预测模型 - - 通过使用单个隐藏节点,您几乎使用线性模型。

还可以注意到,在没有任何隐藏层(即只是输入和输出节点)的情况下,以及当使用逻辑传递函数时,这相当于逻辑回归。

答案 1 :(得分:0)

只需添加到DMlash的非常好的答案:通过仅对一个属性使用三个简单规则,甚至可以以非常高的准确度(96%)预测Iris数据集:

If Petal.Width = (0.0976,0.791] then Species = setosa
If Petal.Width = (0.791,1.63]   then Species = versicolor
If Petal.Width = (1.63,2.5]     then Species = virginica

一般来说,神经网络是黑盒子,你从来不知道他们在学什么,但在这种情况下,后工程应该很容易。可以想象它学到了如上所述的东西。