分类速度最快的机器学习

机器算法验证 机器学习 支持向量机 模型选择 神经网络
2022-03-29 20:38:16

我有一个数据分类问题,我想知道针对我的问题的特定约束使用的最佳机器学习方法是什么。

我的约束如下: - 数据点不是线性可分的(在原始空间中) - 我可以生成尽可能多的正标签或负标签的训练样本 - 我想尽量减少误报的数量(即负样本是错误归类为阳性) - 分类速度需要非常快

我目前正在使用 SVM,但它没有给我结果,特别是在速度方面。我在这里发布了一个关于我的问题的相关问题: SVM model selection for datasets with sharp corners 我仍在等待答案,但我开始质疑我是否采取了正确的方法,这就是我发布的原因这是一个单独的问题。

如果相关,我的问题是使用分类器(或其他 ML 方法)作为快速近似碰撞检测方法(即比进行精确碰撞检测更快)

2个回答

支持向量机通过将新向量与支持向量集进行比较来对它们进行分类。根据您使用的参数和成本函数,这组支持向量可能很大。对于两个以上的类别,所需的 SVM 数量也会增加,从而进一步降低性能。为了获得更好的运行时性能,您需要预先完成所有训练的东西。

一种这样的分类器是神经网络它预先进行所有训练,将分类作为简单的计算。另一个是贝叶斯分类器,它需要您预期数据类别的 pdf。在分类过程中只计算概率,因此其性能不受训练集大小的影响。

如果您需要您的分类器进一步减少误报的数量,冒着增加误报数量的风险,那么请考虑实施损失函数有了它,您可以为每种类型的错误分配成本。在您的示例中,这意味着将较少的负数分类为正数,同时允许更多的正数作为负数。损失函数的一个明显例子是癌症测试,假设错误地诊断没有患癌症并且他们还活着的人比不诊断患有癌症并且他们死了的人更好。


编辑:澄清 SVM 和贝叶斯部分。SVM 的性能问题是可能有大量的 SV 来检查新向量。通常,使用更多的 SV 来增加对训练集的拟合(这没关系,但要避免过度拟合)。贝叶斯分类器只要求您知道数据的分布。

另外,忘记了 SVM 的构建仅用于区分 2 个类。为了支持更多类,使用one-vs-all方法的多个 SVM被合并。这也会影响运行时性能。

我建议尝试Random Ferns - 它们易于实现、训练速度快、预测速度更快,并且由于集成结构,您可以轻松控制它们的速度/质量平衡。哦,它们是微不足道的平行。
但是,它们可能在准确性和内存消耗方面存在问题;但这取决于问题和分裂的方式。