逻辑回归模型在 Iris 数据集上比神经网络表现更好是否有意义?

人工智能 神经网络 逻辑回归 虹膜数据集
2021-11-02 02:46:11

根据一篇评论文章,基于Iris 数据集的简单逻辑回归模型在iris 数据集上的测试准确率约为 97%,而神经网络的测试准确率仅为 94%。Keras 中使用的神经网络模型是

model = tf.keras.Sequential([
    tf.keras.layers.Dense(500, input_dim=4, activation='relu'),
    tf.keras.layers.Dense(256, activation='relu'),
    tf.keras.layers.Dense(256, activation='relu'),
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dropout(0.2),
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dense(3, activation='softmax')
])
model.compile(loss='categorical_crossentropy',
              optimizer='adam',
              metrics=['accuracy'])

该模型适用于 30 个 epoch,批量大小为 20。

请注意,我确实尝试了更少的神经元和层,但它们都没有获得更好的性能。

这有意义吗?任何其他神经网络能否获得比逻辑回归模型更高的测试准确度?

2个回答

最可能的解释是提出的神经网络模型比逻辑回归模型具有更高的模型容量。

实际上,代码中使用的神经网络有 246,343 个可训练参数;完整的 Iris 数据集只有 150 个样本和四个特征——因此该模型比训练数据复杂得多具有更少神经元或层的神经网络模型可能会更好地泛化。逻辑回归模型要简单得多,参数也少得多,因此在某种意义上它被迫“学习”得更好。

由于模型的容量足够大,神经网络可能会简单地过度拟合训练数据;一个类似的想法是尝试将一条线拟合到数据中,然后尝试拟合 100 次多项式。虽然多项式可能更好地拟合训练数据,但它不太可能很好地泛化。

网络训练中使用的超参数也可能不是最优的;我没有实验过,但神经网络训练可能对训练期间做出的选择有点敏感。

是的,这绝对是有道理的,因为 Iris 数据集是线性可分的(从某种意义上说,线性决策边界接近最优)。这几乎可以在散点图中看到:

在此处输入图像描述

特别是看花瓣宽度与花瓣长度,这对变量的两个线性决策边界已经给出了非常低的错误率。这应该不足为奇,因为数据集是在 Fisher 的一篇论文中介绍的,该论文描述了他的线性判别方法(大约 1936 年?)。

正如@htl (+1) 正确指出的那样,大型神经网络对这个问题的处理能力太大,很可能会过拟合。但是,您可能会发现小型神经网络在此问题上的表现并不比线性分类器好。

在过去的几年里,深度神经网络令人兴奋,但它们并不比大多数现有分类器更好地用于此类基准数据集。对于非常大的数据集或卷积层有用的问题,它们是最好的(恕我直言)。

comp.ai.neural -nets(我们在 WWW 之前使用的旧 Usenet 新闻组 - 我在 1990 年训练了我的第一个神经网络)常见问题解答对于任何想要尝试神经网络的人来说非常值得一读。它包含了许多值得了解的民间智慧。第 3 部分开始:

主题:我应该使用多少隐藏层?

您可能根本不需要任何隐藏层。线性和广义线性模型在各种应用中都很有用(McCullagh 和 Nelder 1989)。即使您要学习的函数是轻度非线性的,如果数据太少或噪声太大而无法准确估计非线性,使用简单的线性模型可能会比使用复杂的非线性模型获得更好的泛化效果。

这是很好的建议。

顺便说一句,在这种情况下,您可能希望通过在问题的二维版本上训练您的神经网络来尝试诊断问题,以便您可以绘制模型的决策边界并查看它在做什么。Sepal Width -v- Sepal Length 可能是一个不错的选择。尝试可以直接可视化的低维问题通常会提供非常丰富的信息。我经常在我的工作中使用 Brian Ripley 的合成数据集,因为您可以轻松地生成尽可能多的数据。

在此处输入图像描述