热门标签 | 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.需要大量的内存


推荐阅读
  • 本文探讨了数据挖掘技术的发展及其在大数据环境下的应用流程,重点介绍了统计学、在线分析处理、信息检索、机器学习、专家系统和模式识别等领域的最新进展。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 机器学习核心概念与技术
    本文系统梳理了机器学习的关键知识点,涵盖模型评估、正则化、线性模型、支持向量机、决策树及集成学习等内容,并深入探讨了各算法的原理和应用场景。 ... [详细]
  • Python中HOG图像特征提取与应用
    本文介绍如何在Python中使用HOG(Histogram of Oriented Gradients)算法进行图像特征提取,探讨其在目标检测中的应用,并详细解释实现步骤。 ... [详细]
  • 智慧城市建设现状及未来趋势
    随着新基建政策的推进及‘十四五’规划的实施,我国正步入以5G、人工智能等先进技术引领的智慧经济新时代。规划强调加速数字化转型,促进数字政府建设,新基建政策亦倡导城市基础设施的全面数字化。本文探讨了智慧城市的发展背景、全球及国内进展、市场规模、架构设计,以及百度、阿里、腾讯、华为等领军企业在该领域的布局策略。 ... [详细]
  • Python库在GIS与三维可视化中的应用
    Python库极大地扩展了GIS的能力,使其能够执行复杂的数据科学任务。本文探讨了几个关键的Python库,这些库不仅增强了GIS的核心功能,还推动了地理信息系统向更高层次的应用发展。 ... [详细]
  • 聚焦法是一种采用穷尽搜索策略的Filter型特征选择方法,其核心在于寻找能有效区分不同样本的最小特征集合。此方法的评估标准主要依赖于一致性测量。 ... [详细]
  • 本文深入探讨了数据挖掘领域内的十个经典算法,包括但不限于C4.5决策树、K-Means聚类、支持向量机等。这些算法不仅在理论上有深厚的数学基础,也在实践中展现出强大的应用价值。 ... [详细]
  • 解决getallheaders函数导致的500错误及8种服务器性能优化策略
    本文探讨了解决getallheaders函数引起的服务器500错误的方法,并介绍八种有效的服务器性能优化技术,包括内存数据库的应用、Spark RDD的使用、缓存策略的实施、SSD的引入、数据库优化、IO模型的选择、多核处理策略以及分布式部署方案。 ... [详细]
  • LambdaMART算法详解
    本文详细介绍了LambdaMART算法的背景、原理及其在信息检索中的应用。首先回顾了LambdaMART的发展历程,包括其前身RankNet和LambdaRank,然后深入探讨了LambdaMART如何结合梯度提升决策树(GBDT)和LambdaRank来优化排序问题。 ... [详细]
  • 随着技术的发展,黑客开始利用AI技术在暗网中创建用户的‘数字孪生’,这一现象引起了安全专家的高度关注。 ... [详细]
  • 本文旨在探讨机器学习与数据分析之间的差异,不仅在于它们处理的数据类型,还包括技术背景、业务应用场景以及参与者的不同。通过深入分析,希望能为读者提供清晰的理解。 ... [详细]
  • 随着iPhone 11系列的发布,苹果公司引入了先进的夜间模式,显著提升了夜间摄影的质量,解决了之前版本在低光环境下拍摄效果不佳的问题。 ... [详细]
  • 掌握Python岗位,你需要了解的关键技能
    最近,在社交平台脉脉上,一条关于Python岗位的消息引起了广泛关注。本文将探讨Python岗位的实际价值,并深入解析阿里巴巴等大公司在面试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社区 版权所有