机器学习入门(三):K近邻算法原理 | KNN算法原理

简介: 机器学习入门(三):K近邻算法原理 | KNN算法原理

🍔 前言

朋友们大家好,让我们一起踏入机器学习的奇妙世界,先来聊聊一位特别“邻近”的朋友——KNN算法。想象一下,当你在陌生的城市找餐馆,可能会问附近的朋友:“嘿,你们常去哪家吃?”KNN算法就像这样,它找“最邻近”的样本朋友来帮你做决定。简单直接,却能在分类和回归问题上展现不凡力量。

学习目标

理解KNN 算法原理

🍔 为什么学习KNN算法

KNN是监督学习分类算法,主要解决现实生活中分类问题。

根据目标的不同将监督学习任务分为了分类学习及回归预测问题。

监督学习任务的基本流程和架构:

(1)首先准备数据,可以是视频、音频、文本、图片等等

(2)抽取所需要的一些列特征,形成特征向量(Feature Vectors)

(3)将这些特征向量连同标记(Label)一并送入机器学习算法中,训练出一个预测模型(Predictive Model)。

(4)然后,采用同样的特征提取方法作用于新数据,得到用于测试的特征向量。

(5)最后,使用预测模型对这些待测的特征向量进行预测并得到结果(Expected Model)。

上述步骤示意如下:

KNN(K-Nearest Neihbor,KNN)K近邻是机器学习算法中理论最简单,最好理解的算法,是一个非常适合入门的算法,拥有如下特性:

  • 思想极度简单,应用数学知识少(近乎为零),对于很多不擅长数学的小伙伴十分友好
  • 虽然算法简单,但效果也不错

🍔 KNN 原理

2.1 案例剖析

上图中每一个数据点代表一个肿瘤病历:

  • 横轴表示肿瘤大小,纵轴表示发现时间
  • 恶性肿瘤用蓝色表示,良性肿瘤用红色表示

疑问:新来了一个病人(下图绿色的点),如何判断新来的病人(即绿色点)是良性肿瘤还是恶性肿瘤?

解决方法:k-近邻算法的做法如下:

(1)取一个值k=3(k值后面介绍,现在可以理解为算法的使用者根据经验取的最优值

 (2)在所有的点中找到距离绿色点最近的三个点

(3)让最近的点所属的类别进行投票

(4)最近的三个点都是蓝色的,所以该病人对应的应该也是蓝色,即恶性肿瘤。

总结:

K-近邻算法可以用来解决监督学习中的分类问题。

算法的思想:通过K个最近的已知分类的样本来判断未知样本的类别。

2.2 算法原理

KNN算法描述

输入:训练数据集

,xi为实例的特征向量,yi={C1,c2...Ck}为实例类别。

输出:实例x所属的类别y

步骤:

(1)选择参数K

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

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

(4)根据少数服从多数的原则进行投票,让未知实例归类为K个最近邻中最多数的类别。

总结:KNN算法没有明显的特征训练过程,它的训练阶段仅仅将样本保存起来,训练开销为0,等到收到测试样本后在进行处理(如K值取值和距离计算)。因此,对应于训练阶段的学习该算法是一种懒惰学习(lazy learning)。

KNN三要素:

  • 距离度量
  • K值选择
  • 分类决策准则

🍔 小结

让我们静下心来回忆一下本篇文章的内容:

🍬 KNN 算法原理简单,不需要训练,属于监督学习算法,常用来解决分类问题

🍬 KNN原理:先确定K值, 再计算距离,最后挑选K个最近的邻居进行投票

希望本篇文章对您有所帮助,感谢支持!

相关文章
|
2月前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
147 4
|
8天前
|
机器学习/深度学习 人工智能 算法
机器学习算法的优化与改进:提升模型性能的策略与方法
机器学习算法的优化与改进:提升模型性能的策略与方法
92 13
机器学习算法的优化与改进:提升模型性能的策略与方法
|
8天前
|
机器学习/深度学习 算法 PyTorch
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
软演员-评论家算法(Soft Actor-Critic, SAC)是深度强化学习领域的重要进展,基于最大熵框架优化策略,在探索与利用之间实现动态平衡。SAC通过双Q网络设计和自适应温度参数,提升了训练稳定性和样本效率。本文详细解析了SAC的数学原理、网络架构及PyTorch实现,涵盖演员网络的动作采样与对数概率计算、评论家网络的Q值估计及其损失函数,并介绍了完整的SAC智能体实现流程。SAC在连续动作空间中表现出色,具有高样本效率和稳定的训练过程,适合实际应用场景。
36 7
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
|
16天前
|
算法 Java 数据库
理解CAS算法原理
CAS(Compare and Swap,比较并交换)是一种无锁算法,用于实现多线程环境下的原子操作。它通过比较内存中的值与预期值是否相同来决定是否进行更新。JDK 5引入了基于CAS的乐观锁机制,替代了传统的synchronized独占锁,提升了并发性能。然而,CAS存在ABA问题、循环时间长开销大和只能保证单个共享变量原子性等缺点。为解决这些问题,可以使用版本号机制、合并多个变量或引入pause指令优化CPU执行效率。CAS广泛应用于JDK的原子类中,如AtomicInteger.incrementAndGet(),利用底层Unsafe库实现高效的无锁自增操作。
理解CAS算法原理
|
1月前
|
存储 人工智能 缓存
【AI系统】布局转换原理与算法
数据布局转换技术通过优化内存中数据的排布,提升程序执行效率,特别是对于缓存性能的影响显著。本文介绍了数据在内存中的排布方式,包括内存对齐、大小端存储等概念,并详细探讨了张量数据在内存中的排布,如行优先与列优先排布,以及在深度学习中常见的NCHW与NHWC两种数据布局方式。这些布局方式的选择直接影响到程序的性能,尤其是在GPU和CPU上的表现。此外,还讨论了连续与非连续张量的概念及其对性能的影响。
57 3
|
2月前
|
机器学习/深度学习 人工智能 算法
探索人工智能中的强化学习:原理、算法与应用
探索人工智能中的强化学习:原理、算法与应用
|
2月前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
56 1
|
2月前
|
机器学习/深度学习 自然语言处理 算法
深入理解机器学习算法:从线性回归到神经网络
深入理解机器学习算法:从线性回归到神经网络
|
2月前
|
机器学习/深度学习 人工智能 算法
探索人工智能中的强化学习:原理、算法及应用
探索人工智能中的强化学习:原理、算法及应用
|
2月前
|
机器学习/深度学习 算法
深入探索机器学习中的决策树算法
深入探索机器学习中的决策树算法
46 0