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

机器学习基础-day02-K近邻算法

1 KNN算法介绍

K最近邻(K-Nearest Neighbor,KNN)分类算法是数据挖掘分类技术中最简单的方法之一,是著名的模式识别统计学方法,在机器学习分类算法中占有相当大的地位。它是一个理论上比较成熟的方法。既是最简单的机器学习算法之一,也是基于实例的学习方法中最基本的,又是最好的文本分类算法之一。

定义:KNN(K-Nearest Neighbor) k个最近的邻居,即每个样本都可以用它最接近的k个邻居来代表,KNN算法属于监督学习方式的分类算法,通过测量不同数据点之间的距离进行分类回归分析。

原理-“近朱者赤”:基于实例的学习(instance-based learning),属于懒惰学习(Lazy learning),即KNN没有显式的学习过程,也就是说没有训练阶段(仅仅是把样本保存起来,训练时间开销为零)它是通过测量不同数据点的之间的距离进行分类或者回归。

特点: KNN算法简单易懂,易于实现;

            无需训练阶段,直接进行分类或者回归;

            适用于多分类问题;

            对数据集的大小和维度不敏感

图中的点通常代表已知样本。在KNN算法的上下文中,这些点是已经标记好的训练数据,每个点都有一个对应的类别标签(在图中用不同的颜色表示)。这些已知样本用于帮助算法确定新数据点(待分类样本-坐标系中任何一个位置中可能出现的点)的类别。

1.1 决策边界

定义:决策边界是分类算法中用于区分不同类别的虚拟边界,通俗讲就是在什么范围内归为当前类。

边界效果:决策边界是否合理,直接影响到分类效果的好坏。

KNN与决策边界:

KNN算法通过计算待分类样本与已知样本之间的距离,找到最近的K个样本,并根据这些样本的类型信息进行投票,以确定待分类样本的类别。

如何绘制决策边界:

为了绘制出决策边界,预测的数据点是二维坐标中所有的点,为了降低计算量,需要对这些预测点进行“采样”,因此每隔距离x取一个点(预测数据点)。

1.2 距离选择

k近邻法(K-Nearest Neighbor,KNN):计算新的点(测试点)到每一个已知点(标签点)的距离,并比对距离,使用不同的距离公式会得到不同的分类效果。后面会介绍一下常用的距离计算方法

2 KNN三要素

KNN算法有三要素:1.K值选择;2.距离选择;3.分类规则选择。

2.1 K值选择

算法中的K在KNN中被称为超参数(Hyper parameter,需要人为确定的参数),它指的是在进行预测时,考虑的最近邻样本点的数量。

K值选择存在的问题:

K值过小:

优点:复杂的数据集,K值较小可能会提供更详细的决策边界,因为模型更加灵活。

缺点:容易受到局部结构的影响,模型受噪声和异常值的影响更大。

选择较小的K值,就相当于用较小的领域中的训练实例进行预测,“学习”近似误差会减小,只有与输入实例较近或相似的训练实例才会对预测结果起作用,与此同时带来的问题是“学习”的估计误差会增大,换句话说,K值的减小就意味着整体模型变得复杂,容易发生过拟合

K值过大:

优点:考虑了更多的全局信息,对于平滑的数据集,较大的K值可以提供更稳定的决策边界。

缺点:对于复杂的数据集,较大的K值可能会导致模型过于简单,无法准确捕获数据的局部特征。

选择较大的K值,就相当于用较大领域中的训练实例进行预测,其优点是可以减少学习的估计误差,但缺点是学习的近似误差会增大。这时候,与输入实例较远(不相似的)训练实例也会对预测器作用,使预测发生错误,且K值的增大就意味着整体的模型变得简单。

极端情况,K=N(N为训练样本个数),则完全不足取,因为此时无论输入实例是什么,都只是简单的预测它属于在训练实例中最多的类,模型过于简单,忽略了训练实例中大量有用信息。

如何科学地选择最有K值?(认识一下,初期学习不用)

在实际应用中,K值一般取一个比较适中的数值,例如采用交叉验证法。简单来说,就是把训练数据(图上红绿蓝点)在分成两组:训练集和验证集,通过计算来选择最优的K值。

2.2 距离选择

先使用欧氏距离,后面单独介绍其他距离选择方式。

2.3 分类规则选择

分类问题:对新的实例,根据与之相邻的k个训练实例的类别,通过多数表决法或者加权多数表决法等方式进行预测

回归问题:对新的实例,根据与之相邻的K个训练实例的标签,通过均值计算进行预测。

3 KNN算法步骤

输入:训练数据集T={(x1,y1),(x2,y2)...(xn,yn)},

        x1为实例的特征向量,

        yi={c1,c2,c3...ck}为实例类别。

输出:测试实例(xm,ym)所属的类别yi

步骤:

(1) 选择参数K

(2) 计算未知实例与所有已知实例的距离(可选择多种计算距离的方式)

(3) 选择最近K个已知实例

(4) 根据少数服从多数的投票法则(Majority-voting),让未知实例归类为K个最近邻样本中最多数的类别。

4 KNN算法思想

图中绿色的点就是我们要预测的那个点,假设K=3。那么KNN算法就会找到与它距离最近的三个点(这里用圆圈把它圈起来了),看看哪种类别多一些,比如这个例子中是蓝色三角形多一些,新来的绿色点就归类到蓝三角了。

代码:使用JupyterLab写代码

加深练习:

把上述KNN算法的数据量从21(3分类)改为88(4分类),采样1000*1000,x y轴范围改为0-100


文章转载自:

http://7ScANCGH.bmdjn.cn
http://0iAXa9V9.bmdjn.cn
http://zWcv051N.bmdjn.cn
http://XK3IKFc8.bmdjn.cn
http://zigVQeu4.bmdjn.cn
http://DTHMwH8t.bmdjn.cn
http://1hExwzL3.bmdjn.cn
http://0y66ehNr.bmdjn.cn
http://zq74XzpN.bmdjn.cn
http://8Ug05ADT.bmdjn.cn
http://uniLqlGA.bmdjn.cn
http://4KyU1Y3y.bmdjn.cn
http://BtCDBqkX.bmdjn.cn
http://WOFNk2LV.bmdjn.cn
http://3GOBX77N.bmdjn.cn
http://EpnXjlII.bmdjn.cn
http://HMTEkghY.bmdjn.cn
http://Gu8WdB4R.bmdjn.cn
http://FBNeXiOh.bmdjn.cn
http://CPLWi9nG.bmdjn.cn
http://vlCumKqh.bmdjn.cn
http://svoYdtdG.bmdjn.cn
http://fe5V7nF1.bmdjn.cn
http://sKvRMVHB.bmdjn.cn
http://57taR89F.bmdjn.cn
http://5HmR7MEK.bmdjn.cn
http://hCMxqvxu.bmdjn.cn
http://kXlzszzt.bmdjn.cn
http://2kS2JiSJ.bmdjn.cn
http://xaa37Egr.bmdjn.cn
http://www.dtcms.com/a/366606.html

相关文章:

  • 大数据框架Doris全面解析
  • 学习机器学习能看哪些书籍
  • 计算机毕业设计:基于Python的影评情感分析可视化推荐系统
  • 【嵌入式DIY实例-ESP32篇】-倾斜弹跳球游戏
  • 【CouponHub项目开发】使用RocketMQ5.x实现延时修改优惠券状态,并通过使用模板方法模式重构消息队列发送功能
  • Unity中,软遮罩SoftMaskForUGUI可移动遮罩形状实现方法
  • 阻抗、瞬时阻抗、特性阻抗的区别
  • AI重构出海营销:HeadAI如何用“滴滴模式”破解红人营销效率困局?
  • 元宇宙与教育变革:沉浸式学习重构知识获取与能力培养
  • 从关键词到语义理解:小陌引擎如何重构AI搜索优化逻辑?
  • 【RNN-LSTM-GRU】第三篇 LSTM门控机制详解:告别梯度消失,让神经网络拥有长期记忆
  • 《ConfigMap热更新失效的深度解剖与重构实践》
  • Java GcExcel V8.2 新版本:效率升级与功能突破
  • Excel ——INDEX + MATCH 组合
  • Loopback for Mac:一键打造虚拟音频矩阵,实现跨应用音频自由流转
  • Leetcode—3516. 找到最近的人【简单】
  • wps的excel如何转为谷歌在线表格
  • JAVA层的权限与SELinux的关系
  • 【Python基础】 14 Rust 与 Python 标识符命名规则与风格对比笔记
  • AI编程:重塑软件开发范式的三大支柱
  • 微信小程序-day4
  • AI安全必修课:模型偏见检测与缓解实战
  • STL重点
  • 云手机的稳定性会受到哪些因素的影响?
  • 《嵌入式硬件(二):中断》
  • 多Agent协作案例:用AutoGen实现“写代码+测Bug”的自动开发流程
  • 【mysql】SQL自连接实战:查询温度升高的日期
  • 一键成文,标准随行——文思助手智能写作助力政务提效
  • PostgreSQL18-FDW连接的 SCRAM 直通身份验证
  • 金贝 KA Box 1.18T:一款高效能矿机的深度解析