随机森林VS神经网络:哪个更好?

点击上方关注,All in AI中国

随机森林VS神经网络:哪个更好?

随机森林和神经网络是两种广泛使用的机器学习算法。这两种方法有什么区别?什么时候应该使用神经网络,什么时候应该使用随机森林? 
您看待数据变化的方式改变了您看待业务战略的方式。

哪个更好:随机森林或神经网络?这是一个常见问题,答案非常简单:视情况而定。我将尝试向您展示何时使用随机森林好以及何时使用神经网络好。

首先,随机森林(RF)和神经网络(NN)是不同类型的算法。 RF是决策树的集合,在集合中,每个决策树处理样本并预测输出标签(在分类的情况下)。集合中的决策树是独立的,每个人都可以预测最终的反应。神经网络是连接神经元的网络。没有其他神经元,神经元就无法运作 - 它们是相互连接的。通常,它们按层分组并处理每层中的数据并传递给下一层,最后一层神经元负责做决定。

随机森林只能使用表格数据。(什么是表格数据?它是表格格式的数据)。另一方面,神经网络可以使用许多不同的数据类型:

  • 表格数据
  • 图像
  • 音频数据
  • 文本数据 - 可以在预处理后由NN处理,例如使用词袋。理论上,RF也可以处理这些数据,但在实际应用中,经过这样的预处理后,数据将变得稀疏,RF将被卡住。

所以现在你有一些直觉,当你处理图像、音频或文本数据时,你应该选择NN。

那么表格数据呢?

对于表格数据,您应该检查两种算法并选择更好的一种。但是,相对于神经网络我更喜欢随机森林,因为它们更容易使用。我会告诉你原因。

随机森林与神经网络 - 数据预处理

理论上,随机森林应该使用缺失和分类数据。但是,sklearn实现不处理此问题(link1,link2)。要为Random Forest(在python和sklearn包中)准备数据,您需要确保:

  • 您的数据中没有缺失值
  • 将分类数据转换为数值

神经网络的数据预处理需要填充缺失值并将分类数据转换为数字。更重要的是,需要进行特征缩放。在具有不同范围的特征的情况下,模型训练将存在问题。如果不将特征缩放到相同的范围,那么具有较大值的特征将在训练中被视为更重要,这是不需要的。更重要的是,梯度值可能会爆炸,神经元可能会饱和,这将使得无法训练NN。总之,对于神经网络训练,您需要执行以下预处理:

  • 填写缺失值
  • 将分类数据转换为数字
  • 将特征缩放到相同(或至少相似)的范围内

请记住,用于准备训练数据的所有预处理都应该用于生产。对于NN,您有更多的预处理步骤,因此在生产系统中实施更多步骤!

随机森林与神经网络 - 模型训练

数据准备就绪,我们可以训练模型。

对于随机森林,您可以设置集合中的树木数量(这很容易,因为RF中的树越多越好),您可以使用默认的超参数,它应该可以工作。

你需要一些神奇的技能来训练神经网络

  • 您需要定义NN体系结构。通常2或3层就足够了。每层使用多少个神经元?使用什么激活功能?使用什么权重初始化?
  • 架构准备好了之后,你需要选择一个训练算法。你可以从简单的随机梯度下降开始,但还有很多其他的(RMSprop,Adagrad,Adam,Adadelta ......看看Keras的优化器)。让我们选择'简单'SGD:你需要设置学习率、动量、衰减。没有足够的超参数?您还需要设置批量大小(批次 - 每次权重更新显示的样本数)。

你知道什么是有趣的。上面提到的每个NN超参数都很关键。例如,您在第二个隐藏层中设置了太大的学习率或没有足够的神经元,那么您的NN训练将陷入局部极小值。

实证例子

别说了,告诉我结果!好吧,让我们开始训练模型。

我将从OpenML.org数据存储库中的9个数据集上训练随机森林和神经网络。

数据集描述:

随机森林VS神经网络:哪个更好?

如您所见,我使用的数据集相当小,最多可达几千行和几列。我希望有一些小数据用于快速示例,尽管如此,它们涵盖了一些可能的用例范围。您可以通过openml.org中的id访问每个数据集。我将使用70%的数据进行训练,其余的则使用随机分割进行测试。

对于随机森林和神经网络训练,我使用了我的开源AutoML软件包mljar-supervised。我更喜欢在这里使用AutoML方法,因为它为我进行数据预处理并调优超参数。

随机森林VS神经网络:哪个更好?

最后,我将简单集成计算为随机森林和神经网络预测的平均值。

值得一提的是使用AutoML训练NN的细节。以下是在AutoML中选择的NN超参数:

随机森林VS神经网络:哪个更好?

AutoML正在创建具有1、2或3层的神经网络,并绘制神经元的数量。对于训练,使用批量大小等于256的SGD。

与5次重复比较的实证结果(logloss越低越好):

随机森林VS神经网络:哪个更好?

随机森林与神经网络的logloss度量

也许有可能通过神经网络可以获得更好的结果,但需要专家进行大量的手动调整。

下一个令人惊讶的事情是简单集成平均值的结果,它仅在3个案例(id为31,44,179的数据集)中略微改善了最终预测。

结论

当您左右为难时,不知道选择随机森林还是神经网络。您应该根据您拥有的数据类型来决定。您应该使用神经网络:

  • 图片
  • 音频
  • 文本

如果您要使用表格数据,则首先检查随机森林是值得的,因为它更容易。随机森林需要较少的预处理,训练过程更简单。因此,在生产系统中使用RF更简单。如果您对模型性能不满意,您应该尝试调整和训练神经网络。有很多超参数可以在NN中调整,如果您有足够的知识和经验,您可以用NN获得非常好的结果。

相关推荐