KNN算法 | K邻近:基础概念

目录

  • 一. KNN算法原理
  • 二. KNN算法三要素
    • 1. K值的选择
    • 2. 距离
      • 2.1 欧氏距离
      • 2.2 曼哈顿距离(城市街区距离)
      • 2.3 切比雪夫距离(棋盘距离)
      • 2.4 闵可夫斯基距离
      • 2.5 标准化欧式距离
      • 2.6 余弦距离
        • 欧氏距离与余弦距离对比
    • 3. 决策规则
      • 3.1 KNN分类任务
        • 多数表决法
        • 加权多数表决法
      • 3.2 KNN回归任务
        • 平均值法
        • 加权平均值法

本篇博客,我们开启新的算法讲解:KNN算法
首先通过一张直观的图片来解释KNN的概念
在这里插入图片描述

一. KNN算法原理

K近邻(K-nearest neighbors, KNN),既可以应用于分类应用中,也可以应用在回归应用中

	一种基本的机器学习算法k近邻:k个最近的邻居的意思,即每个样本都可以用它最接近的 k个邻居来代表比如:近朱者赤,近墨者黑

KNN在做回归和分类的主要区别在于最后预测的决策方式:

  • KNN在分类预测时:一般采用多数表决法
  • KNN在回归预测时,一般采用平均值法

一句话简单说,KNN的原理就是相似的人聚在一起

	KNN算法分类的具体操作:从训练集合中获取K个离待测样本距离最近的样本数据根据获取到的K个样本数据来预测当前待预测样本的目标属性值

在这里插入图片描述
很显然,根据上图可以得到,K=3时,绿色圆的预测值为红色三角(多数投票)

将上述分类操作抽象为数学公式,就会得到:
y i ^ = argmax ⁡ C j ∑ x i ∈ N k ( x ) I ( y i = C j ) ( i = 1 , 2 , … , N , j = 1 , 2 , … , C ) \hat{y_{i}}=\underset{C_{j}}{\operatorname{argmax}} \sum_{x_{i} \in N_{k}(x)} I\left(y_{i}=C_{j}\right) \quad(i=1,2, \ldots, N, j=1,2, \ldots, C) yi^=CjargmaxxiNk(x)I(yi=Cj)(i=1,2,,N,j=1,2,,C)
参数说明:

  • N \mathrm{N} N 是训练集中的样本数量
  • C是类别数量
  • C j C_{j} Cj 是第 j \mathrm{j} j 个类别
  • x i \mathrm{x}_{\mathrm{i}} xi 是第 i \mathrm{i} i 个样本的特征向量
  • y i \mathrm{y}_{\mathrm{i}} yi 是第 i \mathrm{i} i 个样本的标签
  • k k k 是KNN模型的 k k k
  • N k ( x ) \mathrm{N}_{\mathrm{k}}(\mathrm{x}) Nk(x) 样本 x \mathrm{x} x k \mathrm{k} k 个最近邻组成的集合
  • y ^ i \hat{y}_{i} y^i 是第 i \mathrm{i} i 个样本的预测类别

公式解释:
  当送入一个样本 x i x_{i} xi时,取给定的K个邻居
  统计样本 x i x_{i} xi的K个近邻等于 C j C_{j} Cj类别的情况, I I I函数返回1
  此时我们可以得到样本K个邻居中不同类别的个数
  求K个邻居中出现个数最多的 C C C即为样本 x i x_{i} xi的预测值 y i ^ \hat{y_{i}} yi^

二. KNN算法三要素

对于上面给出的示例图,我们做进一步的分析
在这里插入图片描述
这里我们可以看到,预测值的结果与K邻居的个数有密切关联

  • 如果K=3,绿色圆的预测结果为红色三角形
  • 如果K=5,绿色圆的预测结果为蓝色正方形

KNN三要素:

	K值的选择K值的选择:一般根据样本分布选择一个较小的值,然后通过交叉验证来选择一个比较合适的最终值;当选择比较小的K值的时候, 表示使用较小领域中的样本进行预测,训练误差会减小,但是会导致模型变得复杂,容易过拟合;当选择较大的K值的时候,表示使用较大领域中的样本进行预测,训练误差会增大,同时会使模型变得简单,容易导致欠拟合; 距离的度量:一般使用欧氏距离决策规则:在分类模型中,主要使用多数表决法或者加权多数表决法;在回归模型中,主要使用平均值法或者加权平均值法

1. K值的选择

  • k值的减小就意味着整体模型变得复杂,容易发生过拟合
  • k值的增大就意味着整体的模型变得简单,容易发生欠拟合

在应用中,k值一般取一个比较小的数值,通常采用交叉验证法来选取最优的k值

对于K值得选择,我们可以通过定义KNN的损失函数得到:

	注意:该损失函数是用来选择 k 值的,而不用于训练

对于分类问题,KNN模型的损失函数是
L = 1 N ∑ x i ∈ N k ( x ) I ( y i = C j ) ( i = 1 , 2 , … , N , j = 1 , 2 , … , C ) L=\frac{1}{N} \sum_{x_{i} \in N_{k}(x)} I\left(y_{i}=C_{j}\right) \quad(i=1,2, \ldots, N, j=1,2, \ldots, C) L=N1xiNk(x)I(yi=Cj)(i=1,2,,N,j=1,2,,C)

本质:计算准确率

2. 距离

2.1 欧氏距离

∑ i = 1 n ( x i − y i ) 2 \sqrt{\sum_{i=1}^{n}\left(x_{i}-y_{i}\right)^{2}} i=1n(xiyi)2

2.2 曼哈顿距离(城市街区距离)

∑ k = 1 n ∣ x 1 k − x 2 k ∣ \sum_{k=1}^{n}\left|x_{1 k}-x_{2 k}\right| k=1nx1kx2k

2.3 切比雪夫距离(棋盘距离)

max ⁡ ( ∣ x 1 i − x 2 i ∣ ) \max \left(\left|x_{1 i}-x_{2 i}\right|\right) max(x1ix2i)
在这里插入图片描述

2.4 闵可夫斯基距离

∑ k = 1 n ∣ x 1 k − x 2 k ∣ p p \sqrt[p]{\sum_{k=1}^{n}\left|x_{1 k}-x_{2 k}\right|^{p}} pk=1nx1kx2kp

  • 当 p=1 的时候,是曼哈顿距离;
  • 当 p=2 的时候,是欧式距离;
  • 当 p=∞ 的时候,是切比雪夫距离

2.5 标准化欧式距离

∑ i = 1 n ( u i − v i ) 2 V [ x i ] \sqrt{\sum_{i=1}^{n} \frac{\left(u_{i}-v_{i}\right)^{2}}{V\left[x_{i}\right]}} i=1nV[xi](uivi)2

	本质做法为:先对数据进行标准化,再计算欧氏距离计算本质:计算一个特征的方差,方差开根号为标准差

2.6 余弦距离

1 − [ x , y ] ∥ x ∥ ⋅ ∥ y ∥ 1-\frac{[x, y]}{\|x\| \cdot\|y\|} 1xy[x,y]

其中,余弦相似度(即 cot ⁡ θ \cot \theta cotθ)为: k ( x , y ) = [ x , y ] ∥ x ∥ ⋅ ∥ y ∥ \quad k(x, y)=\frac{[x, y]}{\|x\| \cdot\|y\|} k(x,y)=xy[x,y]

余弦相似度的取值范围是 [ − 1 , 1 ] [-1,1] [1,1]
余弦距离的取值范围是 [ 0 , 2 ] [0,2] [0,2]

	如果两个向量方向相同,则余弦距离为0  如果两个向量的方向相反,则余弦距离为2

下面我们举一个例子:
假如新闻X和新闻Y对应向量分别是 x 1 , x 2 , … , x 6400 x_{1}, x_{2}, \ldots, x_{6400} x1,x2,,x6400
y 1 , y 2 , … , y 6400 \mathrm{y}_{1}, \mathrm{y}_{2}, \ldots, \mathrm{y}_{6400} y1,y2,,y6400 ,则它们的余弦相似度为:

cos ⁡ θ = x 1 y 1 + x 2 y 2 + ⋯ + x 6400 y 6400 x 1 2 + x 2 2 + ⋯ + x 6400 2 ⋅ y 1 2 + y 2 2 + ⋯ + y 6400 2 \cos \theta=\frac{x_{1} y_{1}+x_{2} y_{2}+\cdots+x_{6400} y_{6400}}{\sqrt{x_{1}^{2}+x_{2}^{2}+\cdots+x_{6400}^{2}} \cdot \sqrt{y_{1}^{2}+y_{2}^{2}+\cdots+y_{6400}^{2}}} cosθ=x12+x22++x64002 y12+y22++y64002 x1y1+x2y2++x6400y6400

	当两条新闻向量夹角余弦等于1时,这两条新闻完全重复(用这个办法可以删除爬虫所收集网页中的重复网页)当夹角的余弦值接近于1时,两条新闻相似(可以用作文本分类)夹角的余弦越小,两条新闻越不相关
欧氏距离与余弦距离对比

在这里插入图片描述

这里我们用一个例子说明两种距离的关注点:

示例1 ,对于某两部电视剧:
用户A的观看向量为 ( 0 , 1 ) (0,1) (0,1),用户B的观看向量为 ( 1 , 0 ) (1,0) (1,0)

	在分析两个用户对于不同电视剧的偏好时,更关注相对差异,显然应当使用余弦距离且欧氏距离很小

示例2 ,对于某个游戏平台:
以登陆次数(单位:次)和平均游戏时长(单:分钟)作为特征时
用户A的向量为 ( 1 , 10 ) (1,10) (1,10)、用户B的向量为 ( 10 , 100 ) (10,100) (10,100)

	在分析两个用户活跃度时,更关注数值绝对差异,应当使用欧氏距离且余弦距离会认为两个用户距离很近

总结:

  • 余弦距离注重两个向量的空间夹角,与方向上的差异直接相关

  • 欧氏距离注重两个向量的绝对距离,与位置坐标直接相关

     注意:余弦距离在形容两个特征向量之间的关系方面有很大用处比如:人脸识别,推荐系统等
    

3. 决策规则

3.1 KNN分类任务

在这里插入图片描述

多数表决法
	每个邻近样本的权重是一样

红色: 3 5 \frac{3}{5} 53

黄色: 2 5 \frac{2}{5} 52

预测结果为:红色

加权多数表决法
	每个邻近样本的权重是不一样的一般情况下采用权重和距离成反比的方式来计算,也就是说最终预 测结果是出现权重最大的那个类别

这里假设红色到预测目标的距离为2,黄色到预测目标的距离为1

红色:权重 1 2 \frac{1}{2} 21,归一化后单个权重为 1 7 \frac{1}{7} 71

黄色:权重 1 1 \frac{1}{1} 11,归一化后单个权重为 2 7 \frac{2}{7} 72

预测结果为:黄色

3.2 KNN回归任务

在这里插入图片描述

平均值法
	每个邻近样本的权重是一样

预测结果为: 13 5 = 2.6 \frac{13}{5}=2.6 513=2.6

加权平均值法
	每个邻近样本的权重是不一样的一般情况下采用权重和距离成反比的方式来计算在计算均值的时候进行加权操作

这里假设圆3到预测目标的距离为2,圆2到预测目标的距离为1

圆3:权重 1 2 \frac{1}{2} 21,归一化后单个权重为 1 7 \frac{1}{7} 71

圆2:权重 1 1 \frac{1}{1} 11,归一化后单个权重为 2 7 \frac{2}{7} 72

预测结果为: 1 7 ∗ 3 ∗ 3 + 2 7 ∗ 2 ∗ 2 = 17 7 = 2.43 \frac{1}{7}*3*3+\frac{2}{7}*2*2=\frac{17}{7}=2.43 7133+7222=717=2.43


感谢阅读🌼
如果喜欢这篇文章,记得点赞👍和转发🔄哦!
有任何想法或问题,欢迎留言交流💬,我们下次见!
本文相关代码存放位置
    【手写KNN算法 代码实现

祝愉快🌟!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/787201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

26番外1 对PE启动U盘的思考:制作启动盘,真的不用格式化!!!

番外1 对PE启动U盘的思考 我们在使用官方软件工具(如微PE工具箱)制作任何一个启动U盘的时候,他们总会提示我们:U盘需要格式化!!请备份好自己的数据!! 我一直在思考:为什么一定要格式化呢?需要格式化吗? 为了解决这个问题,我开始思考启动盘的本质. 启动盘的本质是什么?它怎么…

Android 自定义View 测量控件宽高、自定义viewgroup测量

1、View生命周期以及View层级 1.1、View生命周期 View的主要生命周期如下所示, 包括创建、测量(onMeasure)、布局(onLayout)、绘制(onDraw)以及销毁等流程。 自定义View主要涉及到onMeasure、…

风险与收益

风险与收益 影响资产需求的主要因素财富总量预期收益率资产的流动性影响流动性的主要因素 风险 如何降低风险系统风险和非系统风险机会集合与有效集合资产组合理论 影响资产需求的主要因素 影响资产需求的主要因素包括:财富总量、预期收益率、资产的流动性和风险。…

bashplotlib,一个有趣的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - bashplotlib。 Github地址:https://github.com/glamp/bashplotlib 在 Python 中,绘制图形通常需要使用专门的绘图库&#xff0…

【Redis】redis集群模式

概述 Redis集群,即Redis Cluster,是Redis 3.0开始引入的分布式存储方案。实际使用中集群一般由多个节点(Node)组成,Redis的数据分布在这些节点中。集群中的节点分为主节点和从节点:只有主节点负责读写请求和集群信息的维护&#…

整数删除,蓝桥杯训练题

题目描述: 给定一个长度为 N 的整数数列:A1,A2,…,AN。 你要重复以下操作 K 次: 每次选择数列中最小的整数(如果最小值不止一个,选择最靠前的),将其删除,并把与它相邻的整数加上被删除的数值。 …

【4月2日更新】低至50元/年 京东云 阿里云 腾讯云服务器价格对比表 幻兽帕鲁 雾锁王国 我的世界 饥荒 通用

更新日期:4月2日 本文纯原创,侵权必究 【云服务器推荐】价格对比!阿里云 京东云 腾讯云 选购指南视频截图 《最新对比表》已更新在文章头部—腾讯云文档,文章具有时效性,请以腾讯文档为准! 【腾讯文档实…

Anaconda中利用conda创建、激活、删除、添加新环境

一、利用conda创建新环境 学多了,发现学习一些命令就跟学英语语法一样,比如利用conda 创建新环境,语法如下: conda create -n 新环境的名字 -n为--name的简写。利用我需要创建一个新的环境,取名为pycaret&#xff0c…

基于springboot的房屋租赁系统平台

功能描述 流程:房主登陆系统录入房屋信息》发布租赁信息(选择房屋)》租客登陆系统浏览租赁信息》和房主联系、看房(根据租赁信息单的电话线下沟通)》房主发起签约(生成邀请码)》租客登陆系统根…

【洛谷 P8700】[蓝桥杯 2019 国 B] 解谜游戏 题解(字符串+映射+周期性)

[蓝桥杯 2019 国 B] 解谜游戏 题目背景 题目描述 小明正在玩一款解谜游戏。谜题由 24 24 24 根塑料棒组成,其中黄色塑料棒 4 4 4 根,红色 8 8 8 根,绿色 12 12 12 根 (后面用 Y 表示黄色、R 表示红色、G 表示绿色)。初始时这些塑料棒排…

QML嵌套页面的实现学习记录

StackView是一个QML组件,用于管理和显示多个页面。它提供了向前和向后导航的功能,可以在堆栈中推入新页面,并在不需要时将页面弹出。 ApplicationWindow {id:rootvisible: truewidth: 340height: 480title: qsTr("Stack")// 抽屉:…

激光雷达的量产车方案

文章目录 现在的量产方案共同点与差异技术方案应用场景未来发展趋势 现在的量产方案 在量产车领域,半固态激光雷达技术的发展和应用是实现高级自动驾驶功能的关键技术之一。半固态激光雷达,与传统的固态激光雷达相比,其最大特点是在内部采用…

利用免费的开源AI引擎:打造企业级文档合规性智能审查平台

合同、法律文件、文档管理是企业和机构运营中不可或缺的一部分。随着文档数量的不断增加,传统的人工文档审查方式已经无法满足高效率和高质量的要求。文档合规性智能审查平台应运而生,它利用图像识别、自然语言处理等前沿技术,为文档审查工作…

WordPress外贸建站Astra免费版教程指南(2024)

在WordPress的外贸建站主题中,有许多备受欢迎的主题,如Avada、Astra、Hello、Kadence等最佳WordPress外贸主题,它们都能满足建站需求并在市场上广受认可。然而,今天我要介绍的是一个不断颠覆建站人员思维的黑马——Astra主题。 原…

YoloV8改进策略:BackBone改进|GCNet(独家原创)|附结构图

摘要 本文使用GCNet注意力改进YoloV8,在YoloV8的主干中加入GCNet实现涨点。改进方法简单易用,欢迎大家使用! 论文:《GCNet: Non-local Networks Meet Squeeze-Excitation Networks and Beyond》 非局部网络(NLNet)通过为每个查…

OpenHarmony实战开发-如何实现一个轻量级输入法应用。

​ 介绍 本示例使用inputMethodEngine实现一个轻量级输入法应用kikaInput,支持在运行OpenHarmony OS的智能终端上。 效果预览 使用说明 1.使用hdc shell aa start ability -a InputMethod -b cn.openharmony.inputmethodchoosedialog命令拉起切换输入法弹窗&…

14.Python网络通信

本章讲解如何通过Python访问互联网上的资源,这也是网络爬虫技 术的基础。 1 基本的网络知识 程序员在进行网络编程前,需要掌握基本的网络知识,本节会介绍 这些内容。 1.1 TCP/IP 在网络通信中会用到一些相关协议,其中&#xf…

代码+视频,手动绘制logistic回归预测模型校准曲线(Calibration curve)(1)

校准曲线图表示的是预测值和实际值的差距,作为预测模型的重要部分,目前很多函数能绘制校准曲线。 一般分为两种,一种是通过Hosmer-Lemeshow检验,把P值分为10等分,求出每等分的预测值和实际值的差距. 另外一种是calibra…

JAVA8 新特性StreamAPI使用(二)

一、使用StreamAPI,(基于数据模型——客户、订单和商品,实体关系图如下,客户可以有多个订单,是一对多的关系,而产品和订单的关系是多对多的)需求如下: 二、Stream API思维导图 三、需…

3款必知的AI写作软件,智能写文效率高

在当今信息爆炸的时代,写作已经成为人们生活和工作中不可或缺的一部分。然而,随着人们对高效率和高质量写作需求的不断增加,人工智能写作软件应运而生。这些AI写作软件凭借其强大的语言处理能力和智能算法,为写作者们提供了全新的…