是否有任何分类器能够非常快速地做出决策?
Posted
技术标签:
【中文标题】是否有任何分类器能够非常快速地做出决策?【英文标题】:Is there any classifier which is able to make decisions very fast? 【发布时间】:2016-03-22 13:48:31 【问题描述】:大多数分类算法都是为了提高训练速度而开发的。但是,是否有任何侧重于决策速度的分类器或算法(计算复杂度低,结构简单可实现)?我可以得到足够的训练数据,并且可以忍受很长的训练时间。
【问题讨论】:
【参考方案1】:总的来说,分类速度应该不是问题。一些例外是具有时间复杂度的算法,具体取决于您用于训练的样本数量。一个例子是 k-Nearest-Neighbors,它没有训练时间,但对于分类,它需要检查所有点(如果以简单的方式实现)。其他示例都是使用内核的分类器,因为它们计算当前样本和所有训练样本之间的内核。
许多分类器使用特征的标量积和学习的系数向量。这些在几乎所有情况下都应该足够快。例如:逻辑回归、线性 SVM、感知器等等。请参阅 @lejlot 的答案以获得一个不错的列表。
如果这些仍然太慢,您可以先尝试降低特征空间的维度,然后再试一次(这也加快了训练时间)。
顺便说一句,这个问题可能不适合 ***,因为它非常广泛和推荐而不是面向问题。也许下次试试https://stats.stackexchange.com/。
【讨论】:
【参考方案2】:有很多方法可以快速分类,您可以通过以下方式或多或少按分类速度对模型进行排序(第一个 - 最快,最后一个 - 最慢)
-
决策树(尤其是深度有限的)
线性模型(线性回归、逻辑回归、线性 svm、lda 等)和朴素贝叶斯
基于显式数据转换(Nystroem 核近似、RVFL、RBFNN、EEM)、核方法(如核 SVM)和浅层神经网络的非线性模型
随机森林和其他委员会
大型神经网络(即 CNN)
任意距离的 KNN
显然这个列表并不详尽,它只是展示了一些一般性的想法。
获得这种模型的一种方法是构建一个复杂、缓慢的模型,然后将其用作黑盒标签生成器来训练一个更简单的模型(但在潜在的无限训练集上) - 从而获得一个快速分类器,代价是非常昂贵的培训。有许多工作表明可以做到这一点,例如通过在深度 nn 的输出上训练一个浅层神经网络。
【讨论】:
【参考方案3】:我有一个以压缩形式表示的决策树,它在对看不见的实例进行分类时至少比实际树快 4 倍。
【讨论】:
这与 OPs 查询不一致 我认为您必须分享更多详细信息才能有用。以上是关于是否有任何分类器能够非常快速地做出决策?的主要内容,如果未能解决你的问题,请参考以下文章
使用 RandomForestClassifier.decision_path,我如何判断分类器用于做出决策的样本?