KNN算法介绍

概念介绍
用官方的话来说,所谓K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例(也就是上面所说的K个邻居), 这K个实例的多数属于某个类,就把该输入实例分类到这个类中。

  • -

计算步骤

1、计算测试对象与训练集中所有对象的距离,可以是欧式距离、余弦距离等,比较常用的是较为简单的欧式距离;
2、找出上步计算的距离中最近的K个对象,作为测试对象的邻居;
3、找出K个对象中出现频率最高的对象,其所属的类别就是该测试对象所属的类别。

数学表达

输入:输入训练集这里写图片描述
上述训练集:
X是样本的特征向量,Y是样本的类别,T是一个特征空间,包含输入的样本

输出:X 所属的类别 y
(1)根据给定的距离度量,在训练集T中找出与x最邻近的k个点,包含这k个点的x的邻域记作N(k),这里不要纠结邻域是什么,简单来说,邻域就是x点组成的集合域
(2)在N(k)中根据分类决策规则(如多数表决)决定x的类别y,其公式如下:

这里写图片描述
注意,这里I为指示函数,简答一点说,就是当括号等式成立时I为1,否则为0

三要素:K值选择,距离度量,分类决策规则

  • -

K的选择

k的取值对结果会有很大的影响。
K值设置过小会降低分类精度;若设置过大,且测试样本属于训练集中包含数据较少的类,则会增加噪声,降低分类效果。
通常,K值的设定采用交叉检验的方式(以K=1为基准)
经验规则:K一般低于训练样本数的平方根。

  • -

距离度量

在KNN算法中,常用的距离有三种,分别为曼哈顿距离、欧式距离和闵可夫斯基距离。
距离通式
这里写图片描述

当p=1时,称为曼哈顿距离(Manhattan distance)

这里写图片描述
当p=2时,称为欧式距离(Euclidean distance)
这里写图片描述
当p=∞时,
这里写图片描述

  • -

分类决策规则

KNN做分类预测时,一般是选择多数表决法,即训练集里和预测的样本特征最近的K个样本,预测为里面有最多类别数的类别。而KNN做回归时,一般是选择平均法,即最近的K个样本的样本输出的平均值作为回归预测值。由于两者区别不大,虽然本文主要是讲解KNN的分类方法,但思想对KNN的回归方法也适用。由于scikit-learn里只使用了蛮力实现(brute-force),KD树实现(KDTree)和球树(BallTree)实现,本文只讨论这几种算法的实现原理。其余的实现方法比如BBF树,MVP树等,在这里不做讨论。

  • -

优化问题

压缩训练样本;
确定最终的类别时,不是简单的采用投票法,而是进行加权投票,距离越近权重越高。
这里写图片描述

  • -

优缺点

优点;精度高,对异常值不敏感,无数据输入假定。
缺点:计算复杂度高,空间复杂度高。
适用数据范围:数值型和标称型。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值