当前位置: 首页 > article >正文

机器学习---KNN算法核心原理和思路分析

文章目录

  • 1.算法介绍
  • 2.过拟合和欠拟合
  • 3.几种不同的距离
  • 4.特征的归一化处理

特此声明:该内容是学习耿直哥的相关机器学习理论,也是文章里面的部分图片素材的来源

1.算法介绍

KNN全称叫做K Nearset Neighbor,翻译之后就是K个最近的邻居;

其实这个KNN是一个思想,在我们的分类问题和回归问题里面都是有所体现的:

首先看一下这个分类的问题:分类问题使用这个思想主要是给我们的未知的个体贴上一个标签,中间的那个白色的圆圈周围:有灰色的,有红色的,那我们的这个未知的个体应该是灰色的还是红色的呢?

这个时候,通过选择不同的l值,我们就可以为这个未知的个体贴上标签:k=3的时候,就是虚线的小圆圈,这个时候,这个未知个体的属性就是红色的,如果k-5,也就是虚线的大圆圈,这个时候未知的个体的属性就是灰色的;

在这里插入图片描述

在我们的回归问题里面,和上面的分类问题贴标签不一样,回归问题主要是确定这个未知点的数值,也就是周围是不同的数据,我们需要根据这个k和不同的个体的权重,计算这个未知的个体的具体数值;

2.过拟合和欠拟合

K值的选取会出现这个过拟合和欠拟合的现象:

K值太小就是过拟合,英文叫做overfit,fit是合身,合适的意思,over就是过度的意思,如图所示,这个未知的个体周围基本上都是红色的,但是如果你的这个k=1的时候,他应该是灰色的,这种情况就是过拟合;

右下角的小人是为了从英语的层面去解释这个问题,就是这个小人的裤子太紧了,具体到我们的数据上面,就是这个数据集选择这个范围太小了,所以称为过拟合,这个时候i很容易受到噪声的影响;其实,如果从英语的角度,也就是overfit进行理解,这个时候就很容易明白;

因为初学者很难理解,为什么这个数据选择的很少,但是这个现象称之为过拟合呢,实际上这个就是从我们的英文翻译来的,如果追根溯源,我相信这个overfit并不难理解;

欠拟合,即underfit,使用小人理解,就是裤子太大了,具体到数据上面就是数据的选择范围太大了,其实有些的影响程度很小,基本上就可以忽略,但是我们也考虑进来了,这个就是欠拟合,这个时候的决策的效率很低,因为你受到每一个样本的影响;

3.几种不同的距离

在我们的这个KNN算法里面,因为是最近邻吗,所以这个距离的计算是我们绕不开的,因为这个距离决定了我们是否要选取这个点作为我们的参考点,下面介绍几种不同的距离:

首先是明氏距离,这个根据数学家明可夫斯基来进行命名的,通式如下所示,p=1的时候就是曼哈顿距离,p=2的时候就是欧氏距离,这个欧氏距离就是我们熟悉的距离,也就是我们传统意义上面的距离;

下面的这个上面还是用蓝色这个直线表示的我们的欧氏距离,使用红色的两个直线段表示我们的曼哈顿距离,但是实际上,我们常用的还是我们很熟悉的这个欧氏距离,其他的两个了解即可;

4.特征的归一化处理

为什么要进行特征值的归一化处理:主要是为了让不同的特征对于我们的模型具有一样的影响,这个时候模型同等的对待每一个特征,提高模型的准确性;

下面的这个变换的过程就可以解释这个现象:就是我们的x,y轴相同的距离代表的长度需要是一致的,也就是我们说的这个标度,否则就会对于我们的模型训练产生影响;


http://www.kler.cn/a/558789.html

相关文章:

  • Flutter: TextEditingValue的实现
  • 链表-基础训练(二)链表 day14
  • 第七期——环形链表2
  • MySQL 如何使用EXPLAIN工具优化SQL
  • devops-Jenkins一键部署多台实例
  • 2025年02月21日Github流行趋势
  • 把 vscode 伪装成 goland
  • MinIO对象存储在Windows中的部署方法
  • go 语言中的线程池
  • 项目8:信用违约预测-集成学习
  • Debian软件包重构
  • PAT甲级 1103 Integer Factorization
  • Android Loader机制解析
  • elf_loader:一个使用Rust编写的ELF加载器
  • RabbitMQ学习—day6—死信队列与延迟队列
  • 网络IP跳动问题解决详
  • flink operator v1.10部署flink v1.19.2
  • 前后端分离系统架构:基于Spring Boot的最佳实践
  • Python数据结构深度探索:树的构建与遍历
  • 跟据spring boot版本,查看对应的tomcat,并查看可支持的tomcat的版本范围