- 定义
- K - 近邻(K - Nearest Neighbors,KNN)模型是一种基于实例的监督学习算法。它的基本思想是给定一个训练数据集,对于一个新的输入实例,在训练数据集中找到与它最相似(距离最近)的K个实例,然后根据这K个实例的类别(对于分类问题)或数值(对于回归问题)来预测新实例的类别或数值。
- 例如,在一个判断水果是苹果还是橙子的分类问题中,如果K = 3,新水果周围最近的3个水果中有2个是苹果,1个是橙子,那么这个新水果可能就被分类为苹果。
- 距离度量
- 欧几里得距离:这是最常用的距离度量方法。对于两个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\)时,它是曼哈顿距离。
- K值的选择
- K值的大小对模型的性能有很大影响。如果K值较小,模型容易受到噪声数据的影响,产生过拟合。例如,当K = 1时,新数据点的类别完全由最近的一个点决定,若这个最近的点是噪声点,就会导致错误分类。
- 如果K值较大,模型会变得简单,可能会忽略掉数据中的局部特性,产生欠拟合。例如,在一个数据分布不均匀的数据集里,若K值过大,可能会把新数据分类到错误的多数类中。
- 通常可以通过交叉验证等方法来选择合适的K值,即把数据集分成训练集和验证集,尝试不同的K值,观察在验证集上的准确率等性能指标,选择使性能最好的K值。
- 分类规则
- 多数表决法(用于分类问题):在找到的K个近邻中,统计每个类别出现的次数,将新数据点分类为出现次数最多的类别。例如,K = 5,近邻中有3个属于类别A,2个属于类别B,那么新数据点就被分类为类别A。
- 加权投票法:根据近邻点与新数据点的距离赋予不同的权重,距离越近权重越大。比如,距离为\(d_1\)的近邻点权重\(w_1=\frac{1}{d_1}\),然后按照权重统计类别出现的次数来进行分类。这样可以使距离更近的点对分类结果产生更大的影响。
- 回归规则(用于回归问题)
- 简单平均法:对于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}\)。
- 优点
- 简单直观:算法的原理易于理解,不需要复杂的训练过程,直接根据训练数据进行预测。
- 对数据分布没有假设:不像一些模型(如高斯分布假设的线性回归),KNN不需要对数据的分布进行假设,适用于各种类型的数据分布。
- 可以处理多分类问题:在分类任务中,很容易扩展到多个类别,通过多数表决或加权投票来确定类别。
- 缺点
- 计算复杂度高:当数据集很大时,计算新数据点与所有训练数据点的距离会非常耗时。特别是在高维数据情况下,计算量会急剧增加,这被称为“维度灾难”。
- 需要大量的内存:存储所有的训练数据点来进行距离计算,对于大规模数据集,内存需求较大。
- 对不平衡数据敏感:如果数据集中不同类别样本数量差异很大,少数类可能会被多数类淹没,导致分类性能下降。例如,在一个数据集里,90%是类别A,10%是类别B,KNN可能会倾向于把新数据分类为类别A。
- 应用场景
- 数据分类:如文本分类,将文档根据内容分类到不同的主题类别;图像识别,判断图像中的物体属于哪一类(如猫、狗等)。
- 数据预测(回归):例如预测房价,根据附近相似房屋的价格来预测目标房屋的价格;股票价格预测,根据历史上相似市场情况的股票价格来预测当前股票价格。
posted @
2024-12-24 17:02
软件职业规划
阅读(
25)
评论()
编辑
收藏
举报