首页 > 其他分享 >K - 近邻模型知识点全览:构建智能预测的基石

K - 近邻模型知识点全览:构建智能预测的基石

时间:2024-12-24 17:13:08浏览次数:3  
标签:知识点 近邻 分类 cdots 距离 全览 类别 数据

  1. 定义
    • K - 近邻(K - Nearest Neighbors,KNN)模型是一种基于实例的监督学习算法。它的基本思想是给定一个训练数据集,对于一个新的输入实例,在训练数据集中找到与它最相似(距离最近)的K个实例,然后根据这K个实例的类别(对于分类问题)或数值(对于回归问题)来预测新实例的类别或数值。
    • 例如,在一个判断水果是苹果还是橙子的分类问题中,如果K = 3,新水果周围最近的3个水果中有2个是苹果,1个是橙子,那么这个新水果可能就被分类为苹果。
  2. 距离度量
    • 欧几里得距离:这是最常用的距离度量方法。对于两个n维向量\(x=(x_1,x_2,\cdots,x_n)\)和\(y=(y_1,y_2,\cdots,y_n)\),欧几里得距离\(d(x,y)=\sqrt{\sum_{i = 1}^{n}(x_i - y_i)^2}\)。例如,在二维平面上,点\((1,2)\)和\((4,6)\)之间的欧几里得距离为\(\sqrt{(1 - 4)^2+(2 - 6)^2}=\sqrt{9 + 16}=\sqrt{25}=5\)。
    • 曼哈顿距离:也称为城市街区距离。对于两个n维向量\(x=(x_1,x_2,\cdots,x_n)\)和\(y=(y_1,y_2,\cdots,y_n)\),曼哈顿距离\(d(x,y)=\sum_{i = 1}^{n}\vert x_i - y_i\vert\)。在二维平面中,就像是在街道网格中行走的距离,比如从\((1,1)\)到\((3,3)\)的曼哈顿距离是\(\vert1 - 3\vert+\vert1 - 3\vert=4\)。
    • 闵可夫斯基距离:它是欧几里得距离和曼哈顿距离的推广。对于两个n维向量\(x=(x_1,x_2,\cdots,x_n)\)和\(y=(y_1,y_2,\cdots,y_n)\),闵可夫斯基距离\(d(x,y)=(\sum_{i = 1}^{n}\vert x_i - y_i\vert^p)^{\frac{1}{p}}\),其中\(p\geq1\)。当\(p = 2\)时,它就是欧几里得距离;当\(p = 1\)时,它是曼哈顿距离。
  3. K值的选择
    • K值的大小对模型的性能有很大影响。如果K值较小,模型容易受到噪声数据的影响,产生过拟合。例如,当K = 1时,新数据点的类别完全由最近的一个点决定,若这个最近的点是噪声点,就会导致错误分类。
    • 如果K值较大,模型会变得简单,可能会忽略掉数据中的局部特性,产生欠拟合。例如,在一个数据分布不均匀的数据集里,若K值过大,可能会把新数据分类到错误的多数类中。
    • 通常可以通过交叉验证等方法来选择合适的K值,即把数据集分成训练集和验证集,尝试不同的K值,观察在验证集上的准确率等性能指标,选择使性能最好的K值。
  4. 分类规则
    • 多数表决法(用于分类问题):在找到的K个近邻中,统计每个类别出现的次数,将新数据点分类为出现次数最多的类别。例如,K = 5,近邻中有3个属于类别A,2个属于类别B,那么新数据点就被分类为类别A。
    • 加权投票法:根据近邻点与新数据点的距离赋予不同的权重,距离越近权重越大。比如,距离为\(d_1\)的近邻点权重\(w_1=\frac{1}{d_1}\),然后按照权重统计类别出现的次数来进行分类。这样可以使距离更近的点对分类结果产生更大的影响。
  5. 回归规则(用于回归问题)
    • 简单平均法:对于K个近邻的数值型输出,计算它们的平均值作为新数据点的预测值。例如,K = 4,四个近邻的数值分别是10、12、9、11,那么新数据点的预测值为\((10 + 12+9 + 11)/4 = 10.5\)。
    • 加权平均法:类似于加权投票法,根据距离赋予权重,然后计算加权平均值作为预测值。例如,K = 3,近邻的数值分别是8、10、12,距离新数据点的距离分别是1、2、3,权重分别是\(1/1\)、\(1/2\)、\(1/3\),预测值为\(\frac{(8\times1/1)+(10\times1/2)+(12\times1/3)}{1/1 + 1/2+1/3}\)。
  6. 优点
    • 简单直观:算法的原理易于理解,不需要复杂的训练过程,直接根据训练数据进行预测。
    • 对数据分布没有假设:不像一些模型(如高斯分布假设的线性回归),KNN不需要对数据的分布进行假设,适用于各种类型的数据分布。
    • 可以处理多分类问题:在分类任务中,很容易扩展到多个类别,通过多数表决或加权投票来确定类别。
  7. 缺点
    • 计算复杂度高:当数据集很大时,计算新数据点与所有训练数据点的距离会非常耗时。特别是在高维数据情况下,计算量会急剧增加,这被称为“维度灾难”。
    • 需要大量的内存:存储所有的训练数据点来进行距离计算,对于大规模数据集,内存需求较大。
    • 对不平衡数据敏感:如果数据集中不同类别样本数量差异很大,少数类可能会被多数类淹没,导致分类性能下降。例如,在一个数据集里,90%是类别A,10%是类别B,KNN可能会倾向于把新数据分类为类别A。
  8. 应用场景
    • 数据分类:如文本分类,将文档根据内容分类到不同的主题类别;图像识别,判断图像中的物体属于哪一类(如猫、狗等)。
    • 数据预测(回归):例如预测房价,根据附近相似房屋的价格来预测目标房屋的价格;股票价格预测,根据历史上相似市场情况的股票价格来预测当前股票价格。

标签:知识点,近邻,分类,cdots,距离,全览,类别,数据
From: https://www.cnblogs.com/java-note/p/18628164

相关文章

  • 《Java核心技术 I》容易忽视和重要的知识点汇总
    本文对《Java核心技术I》中开发者容易忽视和重要的知识点进行总结,不包含一般开发者都知道内容。大标题后括号的数字代表书中对应的章节。一、Java的基本程序设计结构(3)1.整数表示可以为数字字面量加上下划线,这些下划线只是为了让人更易读。Java编译器会去除这些下划线。......
  • python web知识点梳理
    目录1、第1章Django概述(1)环境搭建:需要安装django,使用国内镜像(2)创建项目和应用2、第2章路由系统(1)路由工作原理:(2)内置路由转换器(3)路由分发:include函数(4)向视图传递额外参数(5)命名空间①URL命名和reverse解析函数②应用命名空间,app_name属性3、第3章模型(1)定义和使......
  • 【编译原理】编译原理知识点汇总·词法分析器(正则式到NFA、NFA到DFA、DFA最小化)
    ......
  • 大数据技术原理与应用期末复习-知识点(一)
    大数据概述大数据的发展历程大数据的4V特点数据量大(volume)数据类型繁多(variety)处理速度快(velocity)价值密度低(value)大数据对科学研究的影响4种范式:实验科学、理论科学、计算科学和数据密集型科学实验科学:在最初的科学研究阶段,人类采用实验来解决一些科学问题理论科学......
  • Java 小白入门必备知识点
    14.表达式:表达式是由运算符、操作数和方法调用按照语言的语法构造而成的符号序列15.条件运算符16.实现打印出x的值17.实现从键盘录入的功能18.这里的sc、a、b、str全部是变量名19.在java中键盘键入数据时需要导包20.if单分支选择结构21.双分支选择结构22.switch......
  • 2024/12/15 【字符串】卡码网55.右旋字符串 【√】 知识点:input函数的返回值类型是字
    55.右旋字符串(第八期模拟笔试)右旋字符串|代码随想录defrotateRight(s:str,k:int):t=s[-k:]s=t+s[:-k]returnsif__name__=="__main__":k=int(input())s=input()print(rotateRight(s,k))1.Python输入一个整数k的操作错......
  • 文件上传知识点汇总
        归纳总结一下文件上传(其实是懒得写wp)基于DreamZHO师傅的CTFshow文件上传篇(web151-170,看这一篇就够啦)-CSDN博客和dota_st 师傅的ctfshow-Web1000题系列修炼(一)|dota_st做一篇自己的总结目录一、什么是文件上传木马文件如何利用木马文件二、文件上传......
  • 使用Python进行量化交易,关键知识点有哪些?
    炒股自动化:申请官方API接口,散户也可以python炒股自动化(0),申请券商API接口python炒股自动化(1),量化交易接口区别Python炒股自动化(2):获取股票实时数据和历史数据Python炒股自动化(3):分析取回的实时数据和历史数据Python炒股自动化(4):通过接口向交易所发送订单Python炒股自动化(5):......
  • Java知识点——循环、条件语句与BigInteger类
    Java知识点一、循环结构1.for循环2.while循环3.for-each循环二、条件语句1.if-else2.switch-case三、break与continue关键字四、BigInteger类1.创建BigInteger对象2.运算一、循环结构Java提供了多种循环结构,用于多次执行某段代码,直到满足特定条件为止。循环结构......
  • java期末选择题 知识点随记
    Integer.parseInt(s);//字符整数转换器用于将字符转换为整数这个方法的功能是接收一个字符串输入,然后尝试将其转换为对应的整数值。如果字符串的内容无法被解析为整数(比如包含非数字字符或者格式不正确),那么这个方法会抛出一个 NumberFormatException 异常。this(1.0)//调......