KNN算法概述

KNN算法概述

K-最近邻(KNN,K-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是K个最近的邻居的意思,说的是每个样本都可以用它最接近的K个邻近值来代表。近邻算法就是将数据集合中每一个记录进行分类的方法。

适用条件:离散型数值变量,需要将数据进行预处理(数值化和归一化)
原理:给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例,这K个实例的多数类,就作为该输入实例的类。
若K=1,我们就只找最近的一个点作为其分类,这种分类方法称为最近邻算法。

算法流程:给定一个新的输入实例,我们算出该实例与每一个训练点的距离(若为线性结构,复杂度为o(n)),然后找到距离最小的前k个数据,这k个哪个类别数最多,我们就认为新的输入实例就是哪类!

决定KNN算法的好坏最重要的三个条件是:K值的选取、距离函数的构造以及样本数据的存储方法和搜索方法。

K值的选取:K值的选取将会对算法的结果产生重大影响。
K值过小,那么只用较小的邻域进行预测,若邻域中的点噪声比较多,那么就会预测出错,也就是说近似(训练)误差减小,估计(测试)误差增大,容易产生过拟合。
K值过大,那么用较大的邻域进行预测,这会使得样本空间中大类数据占据优势,降低预测准确率,即近似误差增大,估计误差减小。
K值的选取一般取一个较小的值,并通过交叉验证法(调参)来选取最优的K值。

距离函数的构造
有如下方法:
在这里插入图片描述

一般我们采用欧氏距离,即:

在实际应用中,距离函数的设计视情况而定,比如欧式距离没有考虑各项特征的权重,若某项特征比较重要我们就可以对其赋予较高权重。权重的主观赋值方法有层次分析、模糊数学等。

样本数据的查找和搜索方法:
上文说到判断一个输入的类别,我们需要对所有训练数据逐一计算距离,常规方法是线性查找,如果数据量很大的话,非常耗时,因此此需要一个更为高效的数据存储方法以减少计算次数。比如kd树下文更新)和ball树

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NLP饶了我

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值