本内容 来自 微信公众平台:机器学习之窗
以及 http://www.cnblogs.com/kaituorensheng/p/3579347.html
在模式识别领域中,最近邻居法(KNN算法,又译K-近邻算法)是将在特征空间中最接近的训练样本进行分类的方法。最近邻居法采用向量空间模型来分类,概念为相同类别的案例,彼此的相似度高,而可以借由计算与已知类别案例之相似度,来评估未知类别案例可能的分类。
K-NN是一种基于实例的学习,或者是局部近似和将所有计算推迟到分类之后的惰性学习。
k-近邻算法是所有的机器学习算法中最简单的之一:被分配的对象被列为了其邻域对象较多的类别的K近邻算法是最常见的(k是一个正整数,通常很小)。如果k=1,那么对象被简单分配给其近邻的类。同样的方法可以用于回归,如:简单地将对象的属性值分配为其K近邻的属性值的平均值。它可以有效的衡量邻居的权重,使较近邻居的权重比较远邻居的权重大。(一种常见的加权方案是给每个邻居权重赋值为1/ d,其中d是到邻居的距离。这个方案是一个线性插值的推广。)邻居都取自一组已经正确分类(在回归的情况下,指属性值正确)的对象。虽然没要求明确的训练步骤,但这也可以当作作是一种训练样本集的算法。k-近邻算法对数据的局部结构是非常敏感的。近邻算法能用一种有效的方式准确地计算决策边界。
- Target :分类未知类别实例
- Input : 待分类未知类别实例项目, 已知类别实例集合,其中包含固定已知类别的实例
- Output : 实例可能的类别
具体分析如下:
k近邻法(k nearest neighbor algorithm,k-NN)是机器学习中最基本的分类算法,在训练数据集中找到k个最近邻的实例,类别由这k个近邻中占最多的实例的类别来决定,当k=1时,即类别为最近邻的实例的类别。
如上图所示(引自wiki),当k=3时,此时红色的个数为2,则绿色的输入实例的类别为红色的三角形,当k=5时,此时蓝色的个数为3,输入实例的类别为蓝色的四边形。
在分类过程中,k值通常是人为预先定义的常值,从上图可以看出,k值的选取对会对结果有很多的影响。大的k值可以减小噪声对分类的影响,但是和实例较远的实类会对判决起作用,通常采用交叉验证的方式来选取最优的k值。