热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

浅谈knn(k近邻)算法

概述K近邻算法是一种懒惰算法,即没有对数据集进行训练的过程,其模型的三个要素:距离度量、k值的选择和分类决策规则决定。K近邻的思想很简单,即在一个数据集上,给定一个新样本,找到与新样本距

概述

K近邻算法是一种懒惰算法,即没有对数据集进行训练的过程,其模型的三个要素:距离度量、k值的选择和分类决策规则决定。

K近邻的思想很简单,即在一个数据集上,给定一个新样本,找到与新样本距离最近的k个实例,在这些实例中属于多数的类即为这个新样本的类。

李航老师《统计学习方法》中,定义的K近邻算法如下:
这里写图片描述

距离度量:

算法虽然简单,但在其中也要解决一些问题滴。比如,距离度量该怎么选择、k值该怎么选择、分类决策规定该怎么选择。

对于距离度量,一般使用欧式距离,也可以使用其它距离的度量方式,常见的距离度量如下:
这里写图片描述

K值的选择:

K值的选择是一个玄学问题,取小点,太草率;取多点,比如取到数据集的个数,又没什么意义。
因此,k值的选择很大程度上根据经验来选取。当然可以加些科学的手段,比如用交叉验证法、贝叶斯法等方法来确定k的取值。

分类决策规则:

分类决策规则是指在选取k个最近邻的样本时,我们该怎么判断这个新样本的类别呢?这里,我给出两个思路,欢迎大家留言补充。

1. 多数表决规则

少数服从多数,这k个样本中,谁的类别最多,听谁的。所以,多说一句,在二分类问题中,k的取值建议为奇数,这样不会造成票数持平的状态。
多数表决法等价于经验风险最小化,推导如下:
这里写图片描述

2. 加权法
加权法是我的一些思考..算是多数表决法的扩展,主要思想是为每个样本赋予权值,加权最大的类即为推荐的类。在多数表决法中,默认为每个样本的权值相等

小结:

knn算法思想成熟,可用于分类也可用于回归,其优势在于:
1.对数据没有假设,准确度高,对outlier不敏感;
2.KNN算法是懒惰学习方法,不需要训练,可以进行增量学习

缺点在于:
1.当样本不均衡时,选取的临近K个样本很可能造成取样不均,造成预测不精准
2.在数据量较大的情况,knn算法效率不高。kd树可以在一定程度上解决这个问题。
3.需要大量的内存


推荐阅读
  • Python与R语言在功能和应用场景上各有优势。尽管R语言在统计分析和数据可视化方面具有更强的专业性,但Python作为一种通用编程语言,适用于更广泛的领域,包括Web开发、自动化脚本和机器学习等。对于初学者而言,Python的学习曲线更为平缓,上手更加容易。此外,Python拥有庞大的社区支持和丰富的第三方库,使其在实际应用中更具灵活性和扩展性。 ... [详细]
  • 在机器学习领域,深入探讨了概率论与数理统计的基础知识,特别是这些理论在数据挖掘中的应用。文章重点分析了偏差(Bias)与方差(Variance)之间的平衡问题,强调了方差反映了不同训练模型之间的差异,例如在K折交叉验证中,不同模型之间的性能差异显著。此外,还讨论了如何通过优化模型选择和参数调整来有效控制这一平衡,以提高模型的泛化能力。 ... [详细]
  • 【转】强大的矩阵奇异值分解(SVD)及其应用
    在工程实践中,经常要对大矩阵进行计算,除了使用分布式处理方法以外,就是通过理论方法,对矩阵降维。一下文章,我在 ... [详细]
  • AI TIME联合2021世界人工智能大会,共探图神经网络与认知智能前沿话题
    AI TIME携手2021世界人工智能大会,共同探讨图神经网络与认知智能的最新进展。自2018年在上海首次举办以来,WAIC已成为全球AI领域的年度盛会,吸引了众多专家学者和行业领袖参与。本次大会将聚焦图神经网络在复杂系统建模、知识图谱构建及认知智能应用等方面的技术突破和未来趋势。 ... [详细]
  • Redis 是一个高性能的开源键值存储系统,支持多种数据结构。本文将详细介绍 Redis 中的六种底层数据结构及其在对象系统中的应用,包括字符串对象、列表对象、哈希对象、集合对象和有序集合对象。通过12张图解,帮助读者全面理解 Redis 的数据结构和对象系统。 ... [详细]
  • 本文探讨了SSD购买后是否需要进行4K对齐的问题,并详细解释了4K对齐的原理及其重要性。通过对比机械硬盘与固态硬盘的结构,文章深入分析了4K对齐对SSD性能的影响,并提供了具体的对齐方法。 ... [详细]
  • 本文详细介绍如何使用Netzob工具逆向未知通信协议,涵盖从基本安装到高级模糊测试的全过程。通过实例演示,帮助读者掌握Netzob的核心功能。 ... [详细]
  • 自然语言处理(NLP)——LDA模型:对电商购物评论进行情感分析
    目录一、2020数学建模美赛C题简介需求评价内容提供数据二、解题思路三、LDA简介四、代码实现1.数据预处理1.1剔除无用信息1.1.1剔除掉不需要的列1.1.2找出无效评论并剔除 ... [详细]
  • 无论是在迁移到云服务还是更换云服务商的过程中,数据迁移都是一个至关重要的环节。本文将探讨数据迁移中可能遇到的问题及解决方案,包括路径问题、速度问题和数据完整性等。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 机器学习算法:SVM(支持向量机)
    SVM算法(SupportVectorMachine,支持向量机)的核心思想有2点:1、如果数据线性可分,那么基于最大间隔的方式来确定超平面,以确保全局最优, ... [详细]
  • 美团优选推荐系统架构师 L7/L8:算法与工程深度融合 ... [详细]
  • 妻子指导我深入学习机器算法 ... [详细]
  • 如何高效进行仓库管理——DAMA第十一章:数据仓库与商务智能的应用与实践
    本文深入探讨了数据仓库、数据挖掘及数据库的相关知识,特别聚焦于《DAMA-第十一章:数据仓库与商务智能》中的应用与实践。对于希望提升仓库管理效率的专业人士,本文提供了宝贵的技术指导和实践经验,帮助读者更好地理解和应用这些技术,从而优化仓库管理流程。 ... [详细]
  • Matplotlib在数据科学中的可视化应用与技术解析
    Matplotlib和数据可视化 数据的处理、分析和可视化已经成为Python近年来最为重要的应用领域之一,其中数据的可视化指的是将数据呈现为漂亮的统计图表ÿ ... [详细]
author-avatar
mobiledu2502855777
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有