机器学习与模式识别2:KNN(k近邻)

news2024/11/17 11:48:20

一、简介

首先,随机选择K个对象,而且所选择的每个对象都代表一个组的初始均值或初始的组中心值,对剩余的每个对象,根据其与各个组初始均值的距离,将他们分配各最近的(最相似)小组,然后重新计算每个小组新的均值,这个过程不断重复,直到所有的对象在K组分布中都找到离自己最近的组。

 

算法流程:

    计算已知类别数据集中的点与当前点之间的距离
    按照距离值进行排序
    选取最小的k个距离,并统计这k个点所在类别出现的概率
    返回前k个点出现频率最高的类别作为当前点的预测分类

求解方法:距离公式

 

二、距离度量选择

 欧式距离:

d = ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 d = \sqrt{(x_1 - x_2)^2 + (y_1 - y_2)^2} d=(x1​−x2​)2+(y1​−y2​)2

 

标准化欧氏距离,余弦距离,汉明距离,杰卡德距离:

杰卡德相似系数:两个集合A和B的交集元素在A、B的并集中所占的比例
杰卡德距离:与杰卡德相似系数相反,用两个集合中不同元素占所有元素的比例来衡量两个集合的

马氏距离:

用来表示数据的协方差距离(或两个分布的距离),是一种有效的计算两个位置样本集的相似度的方法,考虑到各种特性之间的联系,独立于测量尺度。

三、K值的选择

如果选择较小的K值,就相当于用较小的邻域中的训练实例进行预测,“学习”的近似误差会减小,只有输入实例较近的训练实例才会对预测结果起作用。但缺点是“学习”的估计误差会增大,预测结果会对近邻实例点非常敏感。如果邻近的实例点恰巧是噪声,预测就会出错。换句话说,K值得减小就意味着整体模型非常复杂,容易发生过拟合。

如果选择较大的K值,就相当于用较大邻域中的训练实例进行预测,其实优点是减少学习的估计误差,但缺点是学习的近似误差会增大。这时与输入实例较远的训练实例也会起预测作用,使预测发生错误,k值的增大就意味着整体的模型变得简单,容易发生欠拟合。可以假定极端条件K=N,那么无论输入实例是什么,都将简单的预测它属于训练实例中最多的类。这时,模型过于简单,完全忽略训练中的大量有用信息,是不可取的。

在应用中,通常采用交叉验证法来选择最优K值。从上面的分析也可以知道,一般K值取得比较小。我们会选取K值在较小的范围,同时在验证集上准确率最高的那一个确定为最终的算法超参数K。

四、knn优缺点

优点:

1)算法简单,理论成熟,既可以用来做分类也可以用来做回归。

2)可用于非线性分类。

3)没有明显的训练过程,而是在程序开始运行时,把数据集加载到内存后,不需要进行训练,直接进行预测,所以训练时间复杂度为0。

4)由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属的类别,因此对于类域的交叉或重叠较多的待分类样本集来说,KNN方法较其他方法更为适合。

5)该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量比较小的类域采用这种算法比较容易产生误分类情况。

缺点:

1)需要算每个测试点与训练集的距离,当训练集较大时,计算量相当大,时间复杂度高,特别是特征数量比较大的时候。

2)需要大量的内存,空间复杂度高。

3)样本不平衡问题(即有些类别的样本数量很多,而其它样本的数量很少),对稀有类别的预测准确度低。

4)是lazy learning方法,基本上不学习,导致预测时速度比起逻辑回归之类的算法慢。

五、总结

KNN是一个特别容易理解的模型,因此,当需要一个特别容易解释的模型的时候,比如需要向用户解释原因的推荐算法,我们可以使用KNN。例如,我们可以使用knn算法做到比较通用的现有用户产品推荐,基于用户的最近邻(长得最像的用户)买了什么产品来推荐,是一种基于电子商务和sns的精确营销,只需要定期维护更新最近邻表就可以,基于最近邻表做搜索可以很实时。

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

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

相关文章

Redis原理剖析

一、Redis简介 Redis是一个开源的,基于网络的,高性能的key-value数据库,弥补了memcached这类key-value存储的不足,在部分场合可以对关系数据库起到很好的补充作用,满足实时的高并发需求。 Redis跟memcached类似&#…

会声会影和Pr哪个好?

会声会影是加拿大Corel公司制作的一款功能强大的视频编辑软件,正版英文名:Corel VideoStudio,具有图像抓取和编修功能,可以抓取,转换MV、DV、V8、TV和实时记录抓取画面文件,并提供有超过100 多种的编制功能…

小研究 - Android 字节码动态分析分布式框架(四)

安卓平台是个多进程同时运行的系统,它还缺少合适的动态分析接口。因此,在安卓平台上进行全面的动态分析具有高难度和挑战性。已有的研究大多是针对一些安全问题的分析方法或者框架,无法为实现更加灵活、通用的动态分析工具的开发提供支持。此…

水电站防雷工程综合解决方案

水电站防雷工程是指为了保护水电站的建筑物、设备和人员免受雷电危害而采取的一系列技术措施。水电站防雷工程的主要内容包括接地装置、引下线、接闪器、等电位连接、屏蔽、综合布线和电涌保护器等分项工程。水电站防雷工程的施工和质量验收应遵循国家标准《建筑物防雷工程施工…

算法leetcode|72. 编辑距离(rust重拳出击)

文章目录 72. 编辑距离:样例 1:样例 2:提示: 分析:题解:rust:二维数组(易懂)滚动数组(更加优化的内存空间) go:c:python&a…

vue引入 import { decode } from ‘js-base64‘

vue引入 import { decode } from ‘js-base64’ package.json 里面加上 需要用的地方 加上 import { decode } from ‘js-base64’ let params decode(loook)最后 npm install

【数据分享】2006-2021年我国城市级别的节约用水相关指标(免费获取\20多项指标)

《中国城市建设统计年鉴》中细致地统计了我国城市市政公用设施建设与发展情况,在之前的文章中,我们分享过基于2006-2021年《中国城市建设统计年鉴》整理的2006—2021年我国城市级别的市政设施水平相关指标、2006-2021年我国城市级别的各类建设用地面积数…

@Accessors和@Builder区别

目录 Accessors和Builder Accessors(chaintrue)BuilderAccessors和Builder的区别Accessors和Builder使用的坑详细看看Accessors注解 Accessors的源码Accessors属性说明 fluent属性chain属性makeFinal属性prefix属性 Accessors和Builder Accessors(chaintrue) 就是new一个对象…

c语言每日一练(10)

前言:每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情…

计算机农业类重点SCIE征稿中

SciencePub学术 刊源推荐: 计算机农业类重点SCIE征稿中!信息如下,录满为止: 一、期刊概况: 计算机农业类重点SCIE 【期刊简介】IF:3.0-3.5,JCR2区,中科院4区; 【版面类型】正刊&a…

传统车间VS数字化车间,以MES为核心打造智能工厂!

传统车间的生产制造场景往往存在着信息沟通不顺畅,传达不到位的情况,导致生产效率受影响。 其次车间数据的“缓存期”偏短,无法进行长时间的复盘总结,从而难以发现企业管理问题,无法持续改善。 随着大数据、工业互联…

Gate相关记录

1 如何在virtual box里面创建共享文件夹 如果没有设置密码,密码就是默认的virtual 需要现在设置-共享文件夹-设置windows的共享路径,然后再执行下面的命令,Gateshare是我自己建的在windows里面的共享文件夹名字 sudo mount -t vboxsf GateS…

中期国际:外汇新手必读:常见的外汇交易误区与避免方法

对于外汇交易的新手来说,了解和避免常见的交易误区是非常重要的。在本文中,我们将带您一起探讨一些常见的误区,并提供一些实用的避免方法,帮助您在外汇市场上取得更好的交易结果。 误区一:盲目跟单 很多新手会犯一个错…

推特营销6大策略助您制霸国际市场

策略一:专业推文中的链接数量 推特群推王研究发现,无链接的推文策略更能激发粉丝互动。因此,并非每条推文都必须附带链接,要保证链接内容与推文实质相关。通过限制带链接推文的数量,能提升粉丝参与度。 策略二&#…

手机直播源码开发,协议讨论篇(三):RTMP实时消息传输协议

实时消息传输协议RTMP简介 RTMP又称实时消息传输协议,是一种实时通信协议。在当今数字化时代,手机直播源码平台为全球用户进行服务,如何才能增加用户,提升用户黏性?就需要让一对一直播平台能够为用户提供优质的体验。…

IntelliJ IDEA下基于Scala实现的Git检查工具

本文使用Scala实现自定义的Git检查工具,读者可以基于本文的示例进行扩展与实现,也可以进行其他应用方向的尝试。 01、Git检查工具 在实现Git检查工具之前需要知道程序究竟要做什么。我们知道,在管理Git分支时可以进行代码合并操作,这样可以将其他开发者提交的内容同步到当前分支…

cloud 问题

eureka 自我保护机制 eureka 是定时去拿 统计最近15分钟的eureka实例正常的心跳占比,如果低于85%,那么就会触发自我保护机制。 触发了自我保护机制,eureka 暂时会把失效的服务保护起来,不让其过期,但是这些服务也不是…

Amazon S3 对象存储Java API操作记录(Minio与S3 SDK两种实现)缘起

缘起 今年(2023年) 2月的时候做了个适配Amazon S3对象存储接口的需求,由于4月份自学考试临近,一直在备考就拖着没总结记录下,开发联调过程中也出现过一些奇葩的问题,最近人刚从考试缓过来顺手记录一下。 S3对象存储的基本概念 …

Git:本地仓库创建和远程绑定

创建远程仓库 登录git网站,创建一个远程仓库 创建时可以选择仓库属性,公共/私有。仓库命名之类。创建完毕后可以在网站上看到仓库所在网址。 创建本地仓库 打开一个文件夹,鼠标右键Git Bash Here,打开git的命令行 git init//…

什么是室温超导?室温超导意味着什么?

前言: 7月22日,韩国一个科学团队发布论文声称“实现了室温超导”,引发了全球关注,全球很多科学实验室都开始着手按照论文来进行实验,尝试验证论文的真实性,因为如果真的可以实现室温超导,那么影…