何时在 SVM 上使用随机森林,反之亦然?

数据挖掘 机器学习 分类 随机森林 支持向量机
2021-09-24 21:18:43

一个人什么时候会Random Forest用完SVM,反之亦然?

我知道cross-validation模型比较是选择模型的一个重要方面,但在这里我想了解更多关于两种方法的经验法则和启发式方法。

有人可以解释分类器的细微之处、优点和缺点以及最适合它们的问题吗?

4个回答

我想说,选择很大程度上取决于您拥有什么数据以及您的目的是什么。一些“经验法则”。

随机森林本质上适用于多类问题,而 SVM 本质上是两类问题。对于多类问题,您需要将其简化为多个二元分类问题。

随机森林适用于数字和分类特征的混合。当特征在不同的尺度上时,它也很好。粗略地说,使用随机森林,您可以按原样使用数据。SVM 最大化“边距”,因此依赖于不同点之间的“距离”概念。由您决定“距离”是否有意义。因此,必须对分类特征进行一次性编码。此外,强烈建议在预处理步骤中使用 min-max 或其他缩放。

如果你有数据 n 点和 特征,SVM 的中间步骤是构建一个 n×n 矩阵(考虑存储的内存需求)通过计算 n2点积(计算复杂度)。因此,根据经验,SVM 很难扩展超过 10^5 个点。大量特征(具有有意义距离的同质特征,图像的像素就是一个完美的例子)通常不是问题。

对于分类问题,随机森林为您提供属于类别的概率。SVM 为您提供到边界的距离,如果您需要概率,您仍然需要以某种方式将其转换为概率。

对于应用 SVM 的那些问题,它通常比随机森林表现更好。

SVM 为您提供“支持向量”,即每个类中最靠近类之间边界的点。他们自己可能对解释感兴趣。

与一般树相比,SVM 模型在稀疏数据上的表现更好。例如,在文档分类中,您可能有数千个甚至数万个特征,而在任何给定的文档向量中,这些特征中只有一小部分的值可能大于零。它们之间可能还有其他差异,但这是我发现的问题。

这真的取决于你想要实现什么,你的数据是什么样的等等。SVM 通常在线性依赖上表现更好,否则你需要非线性内核,内核的选择可能会改变结果。此外,SVM 的可解释性较差——例如,如果你想解释为什么分类会如此——这将是不平凡的。决策树具有更好的可解释性,它们工作得更快,如果你有分类/数值变量,它很好,此外:非线性依赖关系处理得很好(给定 N 足够大)。他们通常比 SVM 训练得更快,但他们有过度拟合的倾向......

我也会尝试 Logistic Regression - 很好的可解释分类器)

总结一下 - 经验法则是尝试任何事情并比较什么给你最好的结果/解释。

为了补充已经说明的优点:

我们需要数百个分类器来解决现实世界的分类问题吗?随机森林比 SVM 更有可能获得更好的性能。

此外,算法的实现方式(以及出于理论原因)随机森林通常比(非线性)SVM 快得多。事实上,就像@Ianenok 一样,SVM 往往无法使用超过 10 000 个数据点。

然而,众所周知,SVM 在某些特定数据集(图像、微阵列数据......)上表现更好。

所以,再一次,交叉验证确实是了解哪种方法性能最好的最好方法。

资料来源:随机森林与 SVM