KNN算法总结

概述

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

KNN是一个基本的分类和回归的算法,它是属于监督学习中分类方法的一种。

KNN算法流程

  1. 给定训练集和测试集,根据训练集来进行模型的构建
  2. 在测试集中依次选取每一个元素,选取距离最近的K个元素
  3. 统计K个元素中每个类别的数量,将此元素归类为数量最多的类别

KNN算法核心思想

KNN算法是一个分类算法,一般常用于分类或回归问题。当预测一个样本应该归为哪个类时,根据它距离最近的 K 个样本点是什么类别来判断该新样本属于哪个类别(多数投票)。

绿色的点是新加入的点,当K=3时,选择距离最近的3个点,其中有2个蓝色,1个红色,则会被分类为蓝色,

当K=5时,选择距离最近的5个点,其中有3个红色,2个蓝色,则会被分类为红色

其中,主要考虑的两个问题分别是K值选取和距离计算

KNN中需要考虑的三个问题

K值选取

显然,K值并不是越小越好也不是越大越好,而是差不多才好,
如果K值太小,分类的错误率会比较高,
如果K值太大,那么分类就会一直向其中某一类靠,
所以,K值取一个合适的值是最重要的,这个值怎么选取是我们需要思考的,

使用交叉验证来确定K值选取

交叉验证:在给定的建模样本中,拿出大部分样本进行建模型,留小部分样本用刚建立的模型进行预报,并求这小部分样本的预报误差,记录它们的平方加和。
也就是说,在给定的数据集中,拿出大部分比例的数据进行模型的构建,保留小部分的数据进行模型的验证,来对错误率进行记录。

距离计算

KNN中,一般采用欧式距离或者曼哈顿距离来进行计算

欧氏距离算法

d ( x , y ) : = ( x 1 − y 1 ) 2 + ( x 2 − y 2 ) 2 + ⋯ + ( x n − y n ) 2 = ∑ i = 1 n ( x i − y i ) 2 d(x,y):=\sqrt{\left(x_1-y_1\right)^2+\left(x_2-y_2\right)^2+\cdots+\left(x_n-y_n\right)^2}=\sqrt{\sum_{i=1}^n\left(x_i-y_i\right)^2} d(x,y):=(x1y1)2+(x2y2)2++(xnyn)2 =i=1n(xiyi)2

曼哈顿距离算法

d ( x , y ) : = ∣ x 1 − x 2 ∣ + ⋯ + ∣ y n − y n ∣ d(x,y):=\mid x_{1}-x_{2}\mid+\cdots+\mid y_{n}-y_{n}| d(x,y):=∣x1x2++ynyn

欧式距离和曼哈顿距离都是闵可夫斯基距离,

闵可夫斯基距离

ρ ( A , B ) = ( ∑ i = 1 n ∣ a i − b i ∣ p ) 1 p \rho(A,B)=(\sum_{i=1}^n|a_i-b_i|^p)^{\frac1p} ρ(A,B)=(i=1naibip)p1

当p=1时,变成曼哈顿距离;

当p=2时,变成欧式距离;

当p趋于无穷时,变成切比雪夫距离;

决策规则

确定如何将新的未分类数据点分配到已知的类别中。这通常是通过投票机制实现的,一般为将新点的预测标签设置为最多数量的类别的标签。

KNN优缺点

优点:

  1. 算法逻辑简单。
  2. 很少的训练,或者说不需要训练。
  3. 无特定数据分布假设。不对数据分布作出假设,完全基于距离度量对样本特征进行提取
  4. 预测效果较好,容错能力强。对于异常值的处理能力较强,不易受异常值的影响
  5. 适用于多类别问题。既可以用于分类,也可以用于回归问题,且可以进行非线性分类;

缺点:

  1. 内存要求高。在进行预测时,需要存储所有的训练数据在内存中
  2. 计算成本高。当特征数较多时,计算的成本会很大
  3. K值选取重要。对于上文所说的K值选取如果不当,会出现很大的误差
  4. 样本不平衡问题。当某些类别的样本数量极不均匀时,KNN算法可能无法正确分类

KNN应用场景

图像分类:识别人脸、车牌等。

文本分类:垃圾邮件过滤、情感分析等。

推荐系统:根据用户的历史行为推荐商品、音乐等。

数据挖掘:寻找异常值、聚类等。

生物信息学:基因分类、蛋白质分类等。

财务分析:预测股票价格、评估信用风险等。

参考:
https://blog.csdn.net/m0_74405427/article/details/133714384
https://cloud.tencent.com/developer/techpedia/1686/11502
https://cloud.tencent.com/developer/article/1719993

  • 22
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Geek-Banana

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

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

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

打赏作者

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

抵扣说明:

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

余额充值