[西门子] HALCON高级篇:k-NN理论

[复制链接]
查看28063 | 回复0 | 2024-2-3 11:11:24 | 显示全部楼层 |阅读模式
(点击上方的公众号名,可快速关注哦)






K最近邻(k-NN)

K最近邻(k-NN)是一个简单但是有力的方法,其存储着所有给定训练数据的特征和类别,在训练数据中基于k最近邻分类每一个新的样本。

下面的例子阐述了k-NN分类的基本原理。这里,一个2维的特征空间被使用,如每一个训练样本由两个特征值和一个类标签组成。两个类A和B,每一类用3个训练样本所表示,如下图所示。现在我们可以用训练数据去分类一个新的样本N,N的k最近邻在训练数据中被决定。



k-NN分类示例。类A被3个样本A1, A2和A3所表示;类B被3个样本B1, B2和B3所表示。新样本N的类别由k-NN分类所决定。

如果我们用k=1, 仅仅N的最近邻被决定,我们可以直接将其类标签分配给新样本。这里,训练样本A2离N是最近的,因此,新样本N被分类为类A。

假设k被设置为大于1的值,新样本N的类别必须从其训练数据中的k最近邻样本类别所决定。这里有两种被常用来的方法,分别是简单的多数投票和考虑到到k近邻距离的加权多数投票。

例如,如果我们用k=3, 我们需要决定N的3个最近邻。在上面的例子中,从N到训练样本的距离是:



这样,N的最近邻为A2,B1和B3。

简单的多数投票将分配类B到新样本N,由于N的3个最近邻的2个是属于类别B的。

加权的多数投票将考虑从N到k最近邻的距离。在这个例子中,N就被归属到类A,因为N和A2挨的很近,但是距离B1和B3是非常远的。

尽管这种方法的简易性,k-NN典型的不能取得很好的分类效果。K-NN的一个大的优势就是它直接作用在训练数据上,这就导致了很快的训练步骤。由于此,其很适合去测试训练数据的各种结构。还有,新的可行的训练数据在任何时间都可以加入到分类器中。然而,分类本身要比如MLP分类要慢,同时k-NN分类器要消耗大量的内存,因为它包含了完整的训练数据。



觉得有帮助?请转载分享给你们的朋友吧。



△长按图片识别二维码关注哦~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则