Answers:
k-NN在非常严格的意义上进行了概括。它仅使用平滑先验(或连续性假设)。该假设意味着在特征空间中接近的模式最有可能属于同一类。k-NN无法恢复模式分布中的功能规则性。
因此,它需要代表性的训练样本,这可能会非常大,尤其是在高维特征空间的情况下。更糟糕的是,这些样本可能不可用。因此,它无法学习不变式。如果模式可以在不更改标签的情况下进行某些转换,并且训练样本中不包含以所有可接受的方式转换的模式,则k-NN将永远不会识别出训练期间未呈现的转换模式。如果在运行k-NN之前没有以某种不变的形式表示它们,例如对于平移或旋转的图像,这就是事实。k-NN甚至不能从不相关的特征中抽象出来。
接下来是另一个人为的例子。想象一下,属于不同类别的模式周期性地分布(例如,根据正弦值-如果它小于0,则模式属于一个类别,而如果大于0,则模式属于另一类别)。训练集是有限的。因此,它将位于有限区域中。在此区域之外,识别错误将为50%。可以想象具有周期性基函数的逻辑回归将在这种情况下表现更好。其他方法将能够学习模式分布的其他规律性并很好地进行推断。
因此,如果怀疑可用数据集不具有代表性,并且应该实现模式的某些变换的不变性,那么情况就是这样,在这种情况下,应该超越k-NN。
如果您会受到计算复杂性的限制,那么决策树(Quinal,1986)很难被击败(尤其是当框架将DT模型直接转换为一堆if
语句时,例如Accord.NET)。
对于高维数据,k-NN所基于的距离的概念变得毫无价值(Kriegel,Kröger,Zimek,2009)(另请参阅:Wikipedia article)。因此,其他分类器,例如SVM (Corter,Vapnik,1995)或Random Forests (Breiman,2001),可能会表现更好。
参考文献:
kNN对于大数据样本很有用
但是它的缺点是:
通常只有训练数据很大并且训练非常快时才有效。