机器学习——用KNN解决非线性回归问题

news2024/12/25 0:27:59

问:k最近邻分类模型是非线性模型。

答:正确。k最近邻分类模型是非线性模型,因为它的决策边界是由最近邻居点的类别决定的,而最近邻居点的分布通常是不规则的,因此决策边界也就不是线性的。因此,k最近邻分类模型是一种非参数化的方法,它能够适应各种复杂的数据集,并且不需要预先假设数据的分布形式。

最近有一批数据,通过4个特征来预测1个值,原来用线性回归和神经网络尝试过,准确率只能到40%左右。用KNN结合网格搜索和交叉验证,正确率达到了79%,没错,KNN解决回归问题也很赞。

 

问:已知五维空间中的两个点分别为(2,4,5,3,7)和(1,3,5,4,2),试计算这两个点的曼哈顿距离、欧几里得距离和切比雪夫距离。

答:

一、什么是KNN

KNN 算法,或者称 k-最近邻算法,是 有监督学习 中的 分类算法 。它可以用于分类或回归问题,但它通常用作分类算法。KNN就是K近邻算法(k-NearestNeighbor),所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。

二、KNN 核心思想

KNN 的原理就是:当预测一个新样本的类别时,根据它距离最近的 K 个样本点是什么类别来判断该新样本属于哪个类别(多数投票)。

分析:K 值的影响
如果k值比较小,相当于我们用较小的领域内的训练样本对实例进行预测。这时,算法的近似误差(Approximate Error)会比较小,因为只有与输入实例相近的训练样本才会对预测结果起作用。但是,它也有明显的缺点:算法的估计误差比较大,预测结果会对近邻点十分敏感,也就是说,如果近邻点是噪声点的话,预测就会出错。因此,k值过小容易导致KNN算法的过拟合

同理,如果k值选择较大的话,距离较远的训练样本也能够对实例预测结果产生影响。这时候,模型相对比较鲁棒,不会因为个别噪声点对最终预测结果产生影响。但是缺点也十分明显:算法的近邻误差会偏大,距离较远的点(与预测实例不相似)也会同样对预测结果产生影响,使得预测结果产生较大偏差,此时模型容易发生 欠拟合

因此,在实际工程实践中,我们一般采用交叉验证的方式选取 k 值。通过以上分析可知,一般 k 值选得比较小,我们会在较小范围内选取 k 值,同时把测试集上准确率最高的那个确定为最终的算法超参数 k 。

三、KNN 的关键


实际上,KNN 算法有两个关键点:1. 点之间距离的计算;2. K 值的选取。

1. 距离计算
样本空间内的两个点之间的距离量度表示两个样本点之间的相似程度:距离越短,表示相似程度越高;反之,相似程度越低。

常用的距离量度方式包括:

  1. 闵可夫斯基距离
  2. 曼哈顿距离
  3. 欧氏距离
  4. 切比雪夫距离
  5. 余弦距离

1. 闵可夫斯基距离

闵可夫斯基距离本身不是一种距离,而是一类距离的定义。

其中,p是一个可变参数:

  • 当p=1时,被称为曼哈顿距离;
  • 当p=2时,被称为欧氏距离;
  • 当p=∞时,被称为切比雪夫距离。

2. 曼哈顿距离

它测量两点之间的绝对值 

3. 欧氏距离

欧氏距离(L2范数)是最易于理解的一种距离计算方法,源自欧氏空间中两点间的距离公式,也是最常用的距离量度。它测量两点之间的直线距离。

通常 KNN 算法中使用的是欧式距离。

4. 切比雪夫距离

切比雪夫距离是将2个点之间的距离定义为其各坐标数值差的最大值。对应L∞范数:

5. 余弦距离

余弦相似度的取值范围是[-1,1],相同两个向量的之间的相似度为1。

 余弦相似度的定义公式为 :

余弦距离的取值范围是[0,2]:

总结

这样我们就明白了如何计算距离。KNN 算法最简单粗暴的就是将预测点与所有点距离进行计算,然后保存并排序,选出前面 K 个值看看哪些类别比较多。但其实也可以通过一些数据结构来辅助,比如最大堆、KDTree,能够减小计算量,从而快速找到 K 个最近邻。

 

 

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

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

相关文章

继续【Stable-Diffusion WEBUI】方方面面研究(内容索引)

文章目录 (零)前言(一)绘图(1.1)模型(1.1.1)基础模型(Stable-diffusion模型)(1.1.2)人物模型(LoRA模型) &…

我在公司彻夜撸码,老板天天开X6夜店蹦迪,到头来工资还拖欠

讲道理,我的学历远达不到BAT等名企大厂的要求,去不了好公司我认了,大专毕业的我在找工作的时候发现留给自己的机会并不多,最后去了一家不知名的小公司。入职后才发现这家公司其实就是个外包公司,里面的业务部门和制度相…

【RPA开发】Selenium 实现网页自动化

开发时有时会遇到网页爬取限制的情况,那么此时可以通过 Selenium 来解决这个问题,因为 Selenium 是模拟浏览器执行网页爬取,相比 Request/API 操作更安全,服务器会完全认为是用户在用浏览器进行操作,如此可以实现网页自…

centos7环境下:DolphinScheduler3.1.5简介和伪集群模式安装部署

centos7环境下:DolphinScheduler3.1.5简介和伪集群模式安装部署 DolphinScheduler简介 Apache DolphinScheduler是一个分布式、易扩展的可视化DAG工作流任务调度平台。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用…

Quartz定时任务

基本介绍 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个、百个、甚至是好几万个Jobs这样复杂的日程序表,Jobs可以做成标准的Java组件或EJBs Qua…

android framework-ActivityManagerService(AMS)下

一、ActivityThread \frameworks\base\core\java\android\app\ActivityThread.java 1.1、main public static void main(String[] args) {Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "ActivityThreadMain");// Install selective syscall interceptionAnd…

java native 方法编写

目录 前言 1、创建 java native 方法 2、创建洞态链接库项目 3、加载 dll 文件 前言 Java 提供了调用 C 或 C 函数的方法,这种方法就是 native 方法,全称 Java Native Interface (JNI) 1、创建 java native 方法 1)新建 java 类文件 …

【CMake】如何使用CMake构建一个工程

1.如何使用CMake构建一个工程 1. 使用 CMakelists.txt 构建工程 一个最简单 CMake 的项目是将某个源文件构建成为可执行文件,使用CMake 构建项目时,你需要创建一个 CMakeLists.txt 文件,通常情况下,下面三条命令在每个 CMakeLis…

四结4.20

这俩天实现了分离客服端和服务端, 先将对象序列化,通过socket从客户端发送到服务端,反序列化 进行数据库操作,最后向客户端返回结果,渲染javafx的画面 中途遇到俩种异常,因为一报错弹出一大段红色的英语…

力扣sql中等篇练习(九)

力扣sql中等篇练习(九) 1 电影评分 1.1 题目内容 1.1.1 基本题目信息1 1.1.2 基本题目信息2 1.1.3 示例输入输出 a 示例输入 b 示例输出 1.2 示例sql语句 # 只要一个 可以考虑order by加上 limit的组SELECT子句中子查询的结果 # 电影名称和姓名不可能重复,所以直接Union a…

【RecyclerView】同时刷新和滚动导致,滚动位置异常(一)

前置: 被选中item高度与非选中item高度不一致,且硬件有点卡,运行会有一定卡顿。 可视界面的item为三个,总数据为十个。 期望效果: 》 实际上效果: 代码: mListAdapter.setSelectedPosition(…

学成在线笔记+踩坑(6)——【媒资模块】视频处理。FFmpeg+XXL-JOB

导航: 【黑马Java笔记踩坑汇总】JavaSEJavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线牛客面试题 目录 1 视频转码需求 1.1 视频编码格式和文件格式 1.2 windows使用编码工具FFmpeg 1.3 视频处理工具类 1.3.1 拼装FFmpeg命令的各工具类 1…

复旦MOSS大模型开源了「中国版ChatGPT」,Github和Hugging Face同时上线

最近,ChatGPT非常火,从ChatGPT3到ChatGPT4,都非常火。无论是否为互联网行业的,多少都听到过关于ChatGPT的消息。虽然百度、阿里等互联网巨头都已经宣布将会推出相关的类ChatGPT产品。但目前还未有成型的产品上线。 而昨日&#x…

94. 二叉树的中序遍历【119】

难度等级:容易 上一篇算法: 102. 二叉树的层序遍历【206】 力扣此题地址: 94. 二叉树的中序遍历 - 力扣(Leetcode) 1.题目:94. 二叉树的中序遍历 给定一个二叉树的根节点 root ,返回 它的 中序…

AlgoC++第四课:逻辑回归

目录 逻辑回归前言1. 鸢尾花分类问题1.1 基于线性回归的思考1.2 损失函数 2. 伯努利分布3. 示例代码3.1 数据可视化3.2 日志信息打印3.3 数据读取和处理3.4 逻辑回归模型3.5 完整示例代码3.6 python实现 4. 思考总结 逻辑回归 前言 手写AI推出的全新面向AI算法的C课程 Algo C&…

InnoDB中必须要了解的几个关键特性

InnoDB引擎在设计中使用了很多技术思想。下面我们主要介绍一些InnoDB的关键特性,帮助你去更好了解 InnoDB。 关键特性 1.预读(1)预读的两种算法(2)在InnoDB中相关配置 2.插入缓冲2.1 Insert Buffer2.2 Change Buffer2…

跨域的五种最常见解决方案

这是一篇笔记 什么是跨域? 跨域不是问题,是一种安全机制。浏览器有一种策略名为同源策略,同源策略规定了部分请求不能被浏览器所接受。 值得一提的是:同源策略导致的跨域是浏览器单方面拒绝响应数据,服务器端是处理…

C#基于asp.net的企业人事管理系统的研究与实现

(一)任务 1.本课题的任务是对人事管理系统的管理过程进行分析,列出逻辑实现过程,对系统进行逻辑设计和数据库设计; 2.主要实现系统管理、档案管理、考勤管理、薪水管理等功能; 3.实现企业员工的相关信息&am…

一篇文章教你解决node-sass 4.12.0 安装失败,一劳永逸

已知: 使用mac电脑使用的node版本是v14.20.0 问题:在安装node-sass 4.12.0的时候报错如下 看到这一堆错误,千万不要立马复制粘贴到浏览器去搜,感觉像无头苍蝇乱撞,好歹稍微看一下什么意思。 显而易见是有一个文档40…

浅析低代码开发的典型应用构建场景v

在数字经济蓬勃发展的大势之下,企业软件开发人员供给不足、开发速度慢、开发成本高、数字化和智能化成效不明显等问题日益凸出,阻碍了企业的数字化转型。 而近年来,低代码的出现推动了经济社会的全面提效,也成为人才供求矛盾的润…