为啥 KNN 比决策树快得多?

Posted

技术标签:

【中文标题】为啥 KNN 比决策树快得多?【英文标题】:Why is KNN much faster than decision tree?为什么 KNN 比决策树快得多? 【发布时间】:2013-03-03 22:10:46 【问题描述】:

有一次在面试中,我遇到了雇主的一个问题。他问我为什么 KNN 分类器比决策树快得多,例如在字母识别或人脸识别中?

当时我完全不知道。所以我想知道我应该在哪些方面比较两种分类方法的速度性能?谢谢。

【问题讨论】:

网上比较多的 【参考方案1】:

考虑以下数据集:N 个样本,每个样本有 k 个属性。一般来说 : 1. naive KNN:O(1) [训练时间] + O(NK) [查询时间] = O (NK) 2. 朴素决策树:O(N^2 * K * log(N)) [training Time] + O(log(N)) [query Time] = O(N^2 * K) -- 也是查询时间,我们假设树是平衡的。 为了计算复杂性,我考虑了每个分类器的非常简单的实现。在实现 KNN 和决策树方面已经有了一些改进。

【讨论】:

非常感谢您的回答。你能解释一下每个分类器的训练时间吗?谢谢。 @Majid,您能否提供参考以供进一步阅读?

以上是关于为啥 KNN 比决策树快得多?的主要内容,如果未能解决你的问题,请参考以下文章

为啥字典比列表快得多?

为啥列表理解比附加到列表要快得多?

Python分类模型实战(KNN逻辑回归决策树SVM)调优调参,评估模型——综合项目

为啥 memcmp 比 for 循环检查快得多?

为啥 MySQL JOIN 比 WHERE IN (子查询) 快得多

为啥从大表中查询 COUNT() 比 SUM() 快得多