我什么时候应该移到k个最近的邻居


9

对于我们执行的许多机器学习项目,我们从k最近邻分类器开始。这是一个理想的起始分类器,因为我们通常有足够的时间来计算所有距离,并且参数的数量受到限制(k,距离度量和权重)

但是,这通常会导致我们坚持使用knn分类器,因为在项目的后期,没有空间可以切换到另一个分类器。尝试新分类器的充分理由是什么。明显的是记忆和时间限制,但是在某些情况下,另一个分类器实际上可以提高准确性吗?


这纯粹是学术性的,还是将其用于工业中?
罗伯·

1
我们的大多数应用程序都已部署在行业中(因此内存占用量和计算时间成为问题)

Answers:


3

k-NN在非常严格的意义上进行了概括。它仅使用平滑先验(或连续性假设)。该假设意味着在特征空间中接近的模式最有可能属于同一类。k-NN无法恢复模式分布中的功能规则性。

因此,它需要代表性的训练样本,这可能会非常大,尤其是在高维特征空间的情况下。更糟糕的是,这些样本可能不可用。因此,它无法学习不变式。如果模式可以在不更改标签的情况下进行某些转换,并且训练样本中不包含以所有可接受的方式转换的模式,则k-NN将永远不会识别出训练期间未呈现的转换模式。如果在运行k-NN之前没有以某种不变的形式表示它们,例如对于平移或旋转的图像,这就是事实。k-NN甚至不能从不相关的特征中抽象出来。

接下来是另一个人为的例子。想象一下,属于不同类别的模式周期性地分布(例如,根据正弦值-如果它小于0,则模式属于一个类别,而如果大于0,则模式属于另一类别)。训练集是有限的。因此,它将位于有限区域中。在此区域之外,识别错误将为50%。可以想象具有周期性基函数的逻辑回归将在这种情况下表现更好。其他方法将能够学习模式分布的其他规律性并很好地进行推断。

因此,如果怀疑可用数据集不具有代表性,并且应该实现模式的某些变换的不变性,那么情况就是这样,在这种情况下,应该超越k-NN。


感谢您的回答(并感谢BartoszKP尝试改进它)。确实,knn找不到需要变换的模式(除非您开始使用怪异的(和不正确的)距离度量标准)。这是尝试另一个分类器的一个很好的理由,我想svm是一个明显的选择。我对svm不太熟​​悉,但是不需要有关您正在定义内核的模式的特定知识吗?

是。内核的选择将取决于模式。高斯核将具有类似于k-NN方法的属性。其他标准内核似乎也不合适。但是,至少可以尝试使用它们。

如@ Necro0x0Der所暗示的,沿这些方向的任何改进都取决于参数化所固有的模式(在正弦示例中为周期性)。也就是说,参数化(内核选择)定义了表示空间的结构(有效地是度量)。如果您可以通过某种方法确定(也许是通过有根据的猜测)某种适当的结构,则尝试相应地对模式进行参数化。请注意,最后,这使您的分类器可以轻松找到某些类型的相关功能。

3

高尺寸当然不是固定的限制,在大多数情况下,我们的功能足以表达距离的作用。当然,这可能是重要的一点。也许我应该举例说明一下。假设我们有一个分类器,其准确度为93%,这是可以接受的,但是现在我们可以尝试改进分类器或找到新功能。这一切都取决于新的可能功能和数据,但是我一直在寻找有关此决定的指导。

@Rhand在我看来,这是项目管理级别的决定。如果当前的解决方案是可以接受的,为什么还要修改呢?浪费时间。如果不可接受,则更精确地定义您要改进的内容(速度,准确性等)。
BartoszKP 2014年

不仅是项目管理,问题是如何获得最大的准确性(这是我的问题),以及最好的方向是什么。您建议使用svm和random forest,因为维数可能太高,这是我可以尝试以查看准确性是否提高的一种可能性,而这正是我一直在寻找的答案。

好吧,另一方面,这是一个非常广泛的问题。没有通用的规则认为分类器X优于Y。您应该尝试一些分类器,然后对模型进行交叉验证
BartoszKP 2014年

3

kNN对于大数据样本很有用

但是它的缺点是:

  1. 由k的值偏置。
  2. 计算复杂度
  3. 内存限制
  4. 成为监督学习的懒惰算法
  5. 容易被不相关的属性所欺骗。
  6. 当属性数量增加时,预测准确性可能会迅速下降。

通常只有训练数据很大并且训练非常快时才有效。


我不是在看聚类,而是在看分类

@Rhand我们走了,谢谢你的注意iliasfl
Iancovici 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.