在哪种情况下最好使用决策树,而在其他情况下使用KNN?
为什么在某些情况下使用其中之一?还有其他情况不同吗?(通过查看其功能而不是算法)
有人对此有一些解释或参考吗?
在哪种情况下最好使用决策树,而在其他情况下使用KNN?
为什么在某些情况下使用其中之一?还有其他情况不同吗?(通过查看其功能而不是算法)
有人对此有一些解释或参考吗?
Answers:
它们有不同的用途。
KNN是不受监督的,决策树(DT)受监督。(KNN是有监督的学习,而K-means是无监督的,我认为这个答案会引起一些混乱。)KNN用于聚类,DT用于分类。(两者都用于分类。)
KNN确定邻域,因此必须有一个距离度量。这意味着所有功能都必须是数字的。距离度量可能会受到属性之间的比例变化以及高维空间的影响。
另一方面,DT会预测给定输入向量的类别。这些属性可以是数字的或名义的。
因此,如果要查找类似的示例,可以使用KNN。如果要分类示例,可以使用DT。
像分类决策树,贝叶斯,反向传播,支持向量机来的类别下的“渴望学习者”,因为他们首先建立在一个分类模型训练数据集能够实际进行分类的[看不见]从观察之前的测试数据集。现在,已学习的模型“渴望”(饥饿的人)可以对以前看不见的观察结果进行分类,因此得名。
但是,基于KNN的分类器不构建任何分类模型。它直接从训练实例(观察)中学习。仅在给出测试观察结果进行分类之后,它才开始处理数据。因此,KNN属于“懒惰学习者”方法的类别。
基于以上基本差异,我们可以得出以下结论:
由于KNN进行现场学习,因此需要频繁的数据库查找,因此在计算上可能会很昂贵。决策树分类器不需要任何查找,因为它已准备好内存中的分类模型。
由于KNN执行基于实例的学习,因此调整良好的K可以对具有任意复杂决策边界的复杂决策空间进行建模,而其他“渴望”学习者(如决策树)不容易对其进行建模。
“渴望”的学习者分批工作,一次建模一组训练观察结果。因此,它们不适合增量学习。但是KNN自然是支持增量学习(数据流)的,因为它是基于实例的学习器。
此外,KNN分类器提供的测试错误率更接近贝叶斯分类器(黄金标准)。如ISLR中所引用:
贝叶斯错误率类似于不可减少的错误
来自Sebastian Raschka的Python机器学习:
这种基于内存的方法[KNN]的主要优点是,分类器会在我们收集新的训练数据时立即进行调整。但是,不利的一面是,在最坏的情况下,用于对新样本进行分类的计算复杂度会随着训练数据集中的样本数量线性增加—除非数据集的维数(特征)很少,并且算法已使用有效数据来实现结构,例如KD树。JH Friedman,JL Bentley和RA Finkel。在对数期望时间中找到最佳匹配的算法。ACM Transactions on Mathematical Software(TOMS),3(3):209-226,1977年。此外,由于不涉及训练步骤,我们不能丢弃训练样本。因此,如果我们使用大型数据集,则存储空间可能会成为一个挑战。
但是,决策树可以快速对新示例进行分类。您只是在运行一系列布尔比较。
我要补充一点,决策树可用于分类和回归任务。另一方面,DT通过描述分类树来预测接受的答案中的某个类别将更加具体,该树在技术上是通用DT概念的子类型。一个参考(忽略讨论具体实现的底层):
从此处:http : //www.simafore.com/blog/bid/62482/2-main-differences-between-classification-and-regression-trees