为什么神经网络在结构化数据上表现不佳?

数据挖掘 机器学习 神经网络 决策树 监督学习
2021-09-18 05:42:21

我最近正在研究一些分类问题,其中决策树的性能优于神经网络。我尝试了各种神经网络组合,改变神经元/隐藏层的数量,目的是在测试集上击败决策树分类器的准确性。但是我用神经网络可以达到的最佳精度是 0.42,决策树是 0.50。

我在这里问了一个问题,可能是什么情况,有人指出,与非结构化数据(例如表示图像中的每个像素)相比,神经网络在结构化数据(表格格式的数据)上的工作效果不佳. 在链接到相同答案的评论中,有人指出:

那么你可以看看 kaggle 比赛的获胜者。迄今为止,在包含结构化数据的比赛中,最流行的算法是 xgboost(以及其他类似的算法 lightgbm、catboost 等)。另一方面,神经网络很少在这些比赛中使用,因为它们对这些类型的数据并不那么强大。神经网络近 20 年的消失也证明了这一点,直到深度学习使它们再次相关。在这些年里,树和 SVM 居于首位。

这通常是正确的,但我不知道为什么神经网络不能很好地处理结构化数据?有人可以帮我推理吗?如果您能指出一些解释这一点的论文/帖子,那也很棒。

我的一种感觉是,这可能是因为数据量较少。与其他分类器(如决策树、支持向量机等)相比,神经网络在数据点较少的情况下可能无法很好地泛化。但我对此不太确定。

1个回答

...有人指出,与非结构化数据(例如表示图像中的每个像素)相比,神经网络在结构化数据(表格格式的数据)方面表现不佳。

很难提出一个普遍的类比,但也许一个容易理解的中等复杂的例子就足够了。

在您提供给用户 JkBk 的链接中,提到了“没有免费的午餐定理”,让我们添加“无限猴子定理”。事实上,您可以享用一份或多份免费午餐,只是没有您喜欢的那么多。同样,你不能拥有无限的猴子,但你可以拥有很多。每个都有限制。

世界卫生组织的这个数据为例,我们只看 5 到 19 岁男孩的年龄与身高。让我们看一下表格形式的数据子集,我想你理解“年龄别身高”的概念”。

用你的大脑处理这张图表,它告诉你什么。它准确地告诉您数据子集的所有平均值。你能从中得出什么推论吗,另外几张数据表呢?

神经网络必须处理所有表格中的数据,并想出一种方法来表示“这个年龄 = 这个身高”和“这个身高 = 这个年龄”作为平均值。

这是几个表之一:

世卫组织数据

现在让我们看一下图表中的整个数据集:

世界卫生组织图表

看看 13 岁是如何开始快速增长的,这种增长几乎一直持续到 15 岁时开始放缓。在 15 到 17 之间它开始趋于平稳,从 17 到 19 几乎没有增长。从 5 到 11,一个简单的算法可以很容易地在任一方向上求解方程,超过 11 的算法就不是那么简单了,但它仍然可以用多项式求解。

对于一个神经网络,一旦它走上正轨并认为它正在提出一个解决方案,一个活动扳手就会投入工作。看看“爱丽丝和鲍勃的例子”(来自“没有免费的午餐”),试图理性地解决问题需要知识智慧才能避免陷入困境。

或者,方程求解器可以智能地强制求解,提供一个相对简单的方程,可以有效地用于大量数据。

一旦你有了一个简单的方程,你就可以将它应用到一个巨大的数据集上,比如人口普查,以检查年龄与身高不匹配等错误。神经网络会更好地发现年龄与身高的差异与特定区域的平均值不同提供原因(与廉价优质食物的距离、收入与教育程度),而简单的多项式则不会隐藏在其中的额外知识进行演绎。

神经网络不理解(从字面上或比喻上)为什么后来起作用的解决方案会失败它需要继续下去,学会忽视它的成功,找到一个可行的解决方案。

非神经网络解决方案不关心(字面上或比喻上)它是否在轨道上,想出一些东西并学会应用它,它只知道最小化错误并消除变量。

这并不意味着每个人都无法转换角色并学习或被编程来完成对方的工作;但是随后神经网络将在整个过程中对精度(缓慢)迂腐,并且求解器将过度分析(以高精度计算左或右),而不是简单地权衡每个步骤具有足够精度的结果。