随机森林和神经网络有什么区别?

随机森林和神经网络这两种广泛使用的机器学习算法有什么区别呢?我们什么时候应该使用神经网络,什么时候又应该使用随机森林?随机森林与神经网络哪个更好?这是一个常见问题,答案其实也非常简单:视情况而定。(调皮)一起来看看何时使用随机森林好以及何时使用神经网络好。

前言

首先,随机森林(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训练将陷入局部极小值。

学习人工智能

学习人工智能,我这有一份最全面的《人工智能自学视频》,足足有60G,分享给你!  

整理了很久,非常全面。包括一些人工智能基础入门视频+AI常用框架实战视频、图像识别、OpenCV、NLQ、YOLO、机器学习、Pytorch、Tensorflow、计算机视觉、深度学习与神经网络等视频、课件源码、国内外知名精华资源、AI热门论文、行业报告等。

这是 一个神奇的公众号:AI技术星球,回复关键词“289”即可获得一整份全套的AI学习路线。

小伙伴也可以私信我分享,希望可以帮助到有需要的人。

结论

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

  • 图片
  • 音频
  • 文本

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>