机器学习算法:K近邻(k-nearest neighbors)初探

KNN的介绍和应用

KNN(K-Nearest Neighbor)算法是一种基于实例的学习算法,也是一种常见的分类算法。
如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
在这里插入图片描述
示例 :如上图,绿色圆要被决定赋予哪个类,是红色三角形还是蓝色四方形?如果K=3,由于红色三角形所占比例为2/3,绿色圆将被赋予红色三角形那个类,如果K=5,由于蓝色四方形比例为3/5,因此绿色圆被赋予蓝色四方形类。

KNN建立过程

KNN算法的工作流程如下:

  • 准备训练集:我们需要有一个已标记的训练集,其中包含多个已标记的数据样本,即每个样本都有对应的类别。

  • 计算相似度:对于一个未知样本,在训练集中找到与之距离最近的K个样本,通常使用欧几里得距离或曼哈顿距离等方法来计算不同样本之间的距离或相似度。一般来说,距离越近的样本在特征上是越相似的,因此被归为同一类别的概率更大。

  • 进行投票:根据这K个最邻近的样本,我们可以使用多数表决的方式来预测未知样本的类别。即在这K个样本中出现次数最多的类别,就是当前未知样本所属的类别。

类别的判定

①投票决定,少数服从多数。取类别最多的为测试样本类别。

②加权投票法,依据计算得出距离的远近,对近邻的投票进行加权,距离越近则权重越大,设定权重为距离平方的倒数。

KNN算法优缺点

优点:

  1. 算法简单:KNN算法思路简单、实现容易,而且对于数据的分布形态没有假设条件。

  2. 适用于多分类问题:KNN算法可以处理多分类问题。

  3. 可以自适应地学习新的样本:KNN算法可以通过不断添加新的样本来自适应地学习,从而不断提高分类准确性。

缺点:

  1. 对数据量比较敏感:KNN算法需要计算测试样本与所有训练样本的距离,这个过程比较耗时,尤其是处理大规模的数据集时,算法效率会比较低。

  2. 对异常值比较敏感:KNN算法容易受到数据集中的异常值的影响,而且对异常值缺乏处理的能力。

  3. 需要选择好的K值:KNN算法的分类效果与K值的选择有很大关系,K值太小会导致对噪声敏感,K值太大会忽略样本之间的局部特征。因此,需要根据具体情况选择好的K值才能获得最优的分类效果。

KNN原理介绍

k近邻方法是一种惰性学习算法,可以用于回归和分类,它的主要思想是投票机制,对于一个测试实例x, 我们在有标签的训练数据集上找到和最相近的k个数据,用他们的label进行投票,分类问题则进行表决投票,回归问题使用加权平均或者直接平均的方法。knn算法中我们最需要关注两个问题:k值的选择和距离的计算。 kNN中的k是一个超参数,需要我们进行指定,一般情况下这个k和数据有很大关系,都是交叉验证进行选择,但是建议使用交叉验证的时候,k∈[2,20],使用交叉验证得到一个很好的k值。

k值还可以表示我们的模型复杂度,当k值越小意味着模型复杂度变大,更容易过拟合,(用极少数的样例来绝对这个预测的结果,很容易产生偏见,这就是过拟合)。我们有这样一句话,k值越多学习的估计误差越小,但是学习的近似误差就会增大。

KNN的应用

KNN虽然很简单,但是人们常说"大道至简",一句"物以类聚,人以群分"就能揭开其面纱,看似简单的KNN即能做分类又能做回归, 还能用来做数据预处理的缺失值填充。由于KNN模型具有很好的解释性,一般情况下对于简单的机器学习问题,我们可以使用KNN作为 Baseline,对于每一个预测结果,我们可以很好的进行解释。推荐系统的中,也有着KNN的影子。例如文章推荐系统中, 对于一个用户A,我们可以把和A最相近的k个用户,浏览过的文章推送给A。

机器学习领域中,数据往往很重要,有句话叫做:“数据决定任务的上限, 模型的目标是无限接近这个上限”。 可以看到好的数据非常重要,但是由于各种原因,我们得到的数据是有缺失的,如果我们能够很好的填充这些缺失值, 就能够得到更好的数据,以至于训练出来更鲁棒的模型。接下来我们就来看看KNN如果做分类,怎么做回归以及怎么填充空值。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python 3 基本数据类型,包含示例演示(初学友好)

嗨害大家好鸭~ 我是芝士❤ 有好好学习python吗? Python学习资料电子书 点击此处跳转文末名片获取 Python3 基本数据类型 Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。 在 Python 中,变量就是变量…

MATLAB 求解定积分和不定积分

本文主要介绍如何通过matlab 去求解常见的定积分和不定积分的结果,使用matlab 内置函数 int。 语法: Fint(表达式,变量,变量上下限) 目录 例子1 单变量不定积分 例子2 多变量不定积分 例子3 单变量定积分 例子4 定积分近似求…

软件测试高频出现面试题-2(实用)

每日面试1、自我介绍2、简单介绍最近项目你是如何开展测试工作的呢?3、描述在这个项目里面你主要负责哪些模块的测试?选中一个业务复杂的讲述你是如何测试的呢?1、自我介绍 主要可以从三个方面准备:我的基础信息,我的…

OBCP第八章 OB运维、监控与异常处理-常见异常处理

问题排查概述:数据库连接问题排查 在遇到连接问题时,需要清楚整个系统的架构,对整个连接链路进行排查。通常情况下应用连接到数据库的完整链路是从应用服务器到 OBProxy 再到 OB 集群,此外还可能涉及负载均衡、DNS 解析、网络等。…

49天精通Java,第24天,Java链表、散列表、HashSet、TreeSet

目录一、链表二、散列表三、HashSet四、TreeSet五、TreeSet常用方法大家好,我是哪吒。 一、链表 从数组中间删除一个元素开销很大,其原因是向数组中插入元素时,此元素之后的所有元素都要向后端移动,删除时也是,数组中…

大厂面试篇--2023软件测试八股文最全文档,有它直接大杀四方

前言 已经到了金三银四的黄金招聘季节了,还在准备面试跳槽涨薪的小伙伴们可以看看本篇文章哟,这里呢笔者就不多说废话了直接上干货!答案已整理好,文末拿去即可!非常好用! 一、字节跳动测试面经篇 1、在搜…

【KNN算法详解(用法,优缺点,适用场景)及应用】

KNN算法介绍 KNN(K Near Neighbor):k个最近的邻居,即每个样本都可以用它最接近的k个邻居来代表。KNN算法属于监督学习方式的分类算法,我的理解就是计算某给点到每个点的距离作为相似度的反馈。 简单来讲,…

【工具】Maven

文章目录0.Maven安装(不使用IDEA内置)1.Maven的作用2.Maven核心概念3.maven目录结构4.仓库5.pom文件5.1 坐标 gav5.2.packaging5.3.依赖5.4.配置属性5.5.build6.Maven生命周期7.junit 单元测试8.插件9.IDEA构建Maven10.创建javase项目11.web工程12.依赖的…

【Linux】初识动静态库/动静态链接

文章目录动静态库的基本原理认识动静态库动静态库的特性手动安装静态库动静态库的基本原理 首先,文件和头文件最终变成一个可执行程序需要经历以下四个步骤: 1)预处理:预处理所要完成的有,头文件展开、去注释、宏替换…

【HTML系列】第四章 · 列表和表格

写在前面 Hello大家好, 我是【麟-小白】,一位软件工程专业的学生,喜好计算机知识。希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正&#xff0…

【艾特淘】淘宝做爆款的目的是什么?怎么做?

其实在淘宝上面也有很多卖家都想要去打造属于自己店铺的爆款商品。 但是又不知道淘宝做爆款商品的目的是什么,也不知道爆款商品到底应该要怎么做,我马上就来给各位卖家介绍。 我们打造爆款是为了让我们通过爆款赚钱,通过爆款引来的流量带动其…

计算机| 关于CPU的12个知识点(图文详解)

CPU是什么? CPU与计算机的关系就相当于大脑和人的关系,它是一种小型的计算机芯片,通常嵌入在电脑的主板上。 CPU的构建是通过在单个计算机芯片上放置数十亿个微型晶体管来实现。 这些晶体管使它能够执行运行存储在系统内存中的程序所需的计…

JS手写浅拷贝与深拷贝

目录 1、引言 2、深拷贝与浅拷贝介绍 2.1、概念 2.2、实现方式 3、手写代码 1、引言 要了解浅拷贝与深拷贝,首先要知道 堆 和 栈 的概念 堆栈: 就是存放数据的地方(不管是定义的数字、字符串、对象还是数组、函数等等,都会在…

学习HM微博项目第10天

步骤:发微博12-表情键盘06-点击表情 -> 发微博13-表情键盘07-插入表情和封装textView -> 发微博14-表情键盘08-长按表情 -> 发微博15-表情键盘09-最近表情 -> 发微博16-表情键盘10-最近表情完善 发微博12-表情键盘06-点击表情 APP的演示动画&#xff…

完全自学C(干货) —— 预处理详解

目录 一,预定义符号 二,#define #define定义的标识符 #define定义宏 # ## 带副作用的宏参数 宏和函数的对比 #undef 三,命令行定义 四,条件编译 五,文件包含 #include 六,其他预处理指令 一&…

搞的谁还不会爬福利美女跳舞视频一样,用我这个方法非常简单。

大家好啊!经常听别人说爬虫玩的好,*****!其实没有这么恐怖,爬虫你一般都是采集公开的信息,所以不会像网络传言那样,大家只要遵守协议,不会出问题的。 话说学编程语言的应该都是男孩子哈&#xf…

不解释

(1)业务线下 VS 线上大陆 VS 全球整合-国际规则合规企业 VS 产业极速联动-社会化资源调度(2)手段P:人工预测 VS 时序预测D:管理者人工指派任务 VS 运筹学最优求解C:人工检查监督审批工作流 VS …

第十五章 镜像架构和规划 - 示例镜像架构和网络配置

文章目录第十五章 镜像架构和规划 - 示例镜像架构和网络配置示例镜像架构和网络配置在单个数据中心、机房或校园内镜像配置简单故障转移对具有 DR 的故障转移配对和报告 Ayncs 同构连接第十五章 镜像架构和规划 - 示例镜像架构和网络配置 示例镜像架构和网络配置 本节描述并说…

Python用re模块使用正则表达式

Python正则表达式是一种强大的工具,用于在字符串中查找和匹配特定模式的文本。在Python中,可以使用re模块来使用正则表达式。正则表达式是一种模式匹配语言,可以在文本中寻找特定模式的字符串。正则表达式可以用于验证输入,搜索和…

MYSQL——美团面试题

MYSQL——美团面试题 2023/3/27 美团二面 题目描述 Create table If Not Exists courses (student varchar(255), class varchar(255));insert into courses (student, class) values (A, Math); insert into courses (student, class) values (B, English); insert into co…