大数据十大经典算法kNN讲解
K-近邻算法(KNN)

K-近邻算法(KNN) ⽂本分类算法、简单的机器学习算法、基本要素、距离度量、类别判定、k取值、改进策略 kNN算法是著名的模式识别统计学⽅法,是最好的⽂本分类算法之⼀,在机器学习分类算法中占有相当⼤的地位,是最简单的机器学习算法之⼀。
外⽂名:k-Nearest Neighbor(简称kNN) 中⽂名:k最邻近分类算法 应⽤:⽂本分类、模式识别、图像及空间分类 典型:懒惰学习 训练时间开销:0 提出时间:1968年 作者:Cover和Hart提出 关键字:kNN算法、k近邻算法、机器学习、⽂本分类思想: 官⽅:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本,然后基于这k个"邻居"的信息来进⾏预测。
通俗点说:就是计算⼀个点与样本空间所有点之间的距离,取出与该点最近的k个点,然后统计这k个点⾥⾯所属分类⽐例最⼤的(“回归”⾥⾯使⽤平均法),则点A属于该分类。
k邻近法实际上利⽤训练数据集对特征向量空间进⾏划分,并作为其分类的“模型”。
三个基本要素:k值的选择、距离度量、分类决策规则图例说明:上图中,绿⾊圆要被决定赋予哪个类,是红⾊三⾓形还是蓝⾊四⽅形?如果K=3,由于红⾊三⾓形所占⽐例为2/3,绿⾊圆将被赋予红⾊三⾓形那个类,如果K=5,由于蓝⾊四⽅形⽐例为3/5,因此绿⾊圆被赋予蓝⾊四⽅形类。
算法计算步骤 1、算距离:给定测试对象,计算它与训练集中的每个对象的距离; 2、找邻居:圈定距离最近的k个训练对象,作为测试对象的近邻; 3、做分类:根据这k个近邻归属的主要类别,来对测试对象分类;距离的计算⽅式(相似性度量): 欧式距离: 曼哈顿距离:类别的判定: 投票法:少数服从多数,近邻中哪个类别的点最多就分为该类。
加权投票法:根据距离的远近,对邻近的投票进⾏加权,距离越近则权重越⼤(权重为距离平⽅的倒数)。
优点: 1、简单,易于理解,易于实现,⽆需估计参数,⽆需训练; 2、适合对稀有事件进⾏分类; 3、特别适合于多分类问题(multi-modal,对象具有多个类别标签), kNN⽐SVM的表现要好。
knn概念

K最近邻算法(K-Nearest Neighbors)1. 概念定义K最近邻算法(K-Nearest Neighbors,简称KNN)是一种基本的监督学习算法,用于分类和回归问题。
它的基本思想是通过找到与待分类样本最相似的K个训练样本,利用这些样本的标签进行预测。
KNN算法没有显式的训练过程,而是在预测时直接利用训练数据。
在KNN中,每个样本由一个特征向量表示,特征向量中的每个维度代表一个特征。
通过计算不同样本之间的距离来衡量它们之间的相似性。
常用的距离度量方法包括欧氏距离、曼哈顿距离和闵可夫斯基距离等。
2. 算法步骤KNN算法的步骤如下:1.计算待分类样本与训练集中所有样本之间的距离;2.根据距离找出与待分类样本最相似的K个训练样本;3.统计这K个训练样本中各类别出现的次数;4.将待分类样本归为出现次数最多的类别。
3. 关键概念3.1 K值选择KNN算法中的K值是一个重要的参数,它决定了用于预测的邻居样本数量。
K值的选择会对算法的性能产生影响。
较小的K值可能会导致模型过拟合,而较大的K值可能会导致模型欠拟合。
通常,K值需要通过交叉验证等方法进行选择。
3.2 距离度量在KNN算法中,距离度量是衡量样本之间相似性的重要指标。
常用的距离度量方法包括欧氏距离、曼哈顿距离和闵可夫斯基距离等。
不同的距离度量方法适用于不同类型的数据。
3.3 分类决策规则分类决策规则决定了如何根据邻居样本的标签进行分类预测。
常见的分类决策规则有多数表决法和加权多数表决法。
多数表决法将待分类样本归为出现次数最多的类别,而加权多数表决法考虑了邻居样本与待分类样本之间的距离,在投票过程中给距离较近的样本更大的权重。
4. 重要性和应用4.1 重要性•简单有效:KNN算法简单易懂,没有复杂的训练过程,适用于小规模数据集;•非参数化学习:KNN是一种非参数化学习算法,不需要对数据的分布做出任何假设,具有较强的灵活性;•可解释性强:KNN算法对于分类决策过程具有较强的可解释性,可以通过查看邻居样本的标签来理解预测结果;•泛化能力强:KNN算法在处理多类别、非线性问题时表现良好。
最邻近算法knn 置信度

KNN(K-Nearest Neighbors)算法的置信度通常取决于选择的K值和距离度量方式。
KNN算法是一种基于实例的学习,或称懒惰学习算法,因为它没有真正的训练阶段,只是简单地存储训练数据,等到收到测试样本后再进行处理。
其核心思想是对于一个新样本,找出在训练集中与其最邻近的K个样本,然后根据这K 个近邻的信息来预测新样本的类别。
以下是关于KNN算法的一些关键点:
1. K的选择:K值的选择对KNN算法的结果有很大影响。
通常情况下,如果K值较小,模型具有较强的鲁棒性;如果K值较大,则模型具有较强的稳健性,但容易受到噪声的影响。
一个合适的K值可以通过交叉验证等启发式技术来获取。
2. 距离度量:常用的距离度量包括欧氏距离、曼哈顿距离等。
选择合适的距离度量方式对于提高分类准确性至关重要。
3. 分类决策:在分类问题中,通常采用多数投票的方式来确定新样本的类别。
4. 回归问题:对于回归问题,则是通过计算K个近邻的平均或加权平均来预测连续值输出。
5. 性能考虑:由于KNN需要计算待分类样本与所有训练样本之间的距离,因此内存开销较大,尤其是在训练样本数量庞大时更为明显。
6. 优点和局限性:KNN算法的优点在于简单易懂,适用于多分类问题,对异常值不敏感。
但它的主要局限性在于计算量大,可解释性不强,且当样本不平衡时表现可能较差。
综上所述,KNN算法的置信度与所选K值大小、距离度量方式以及分类决策规则紧密相关。
在实际应用中,为了得到较高的分类准确度和置信度,通常需要对这些参数进行仔细的调整和优化。
大数据十大经典算法kNN讲解

可解释性差
KNN算法的分类结果只依赖于最近 邻的样本,缺乏可解释性。
无法处理高维数据
随着维度的增加,数据点之间的距离 计算变得复杂,KNN算法在高维空 间中的性能会受到影响。
对参数选择敏感
KNN算法中需要选择合适的K值,不 同的K值可能会影响分类结果。
04
KNN算法的改进与优化
基于距离度量的优化
与神经网络算法的比较
神经网络算法
神经网络算法是一种监督学习算法,通过训练神经元之间的权重来学习数据的内 在规律。神经网络算法在处理大数据集时需要大量的计算资源和时间,因为它的 训练过程涉及到复杂的迭代和优化。
KNN算法
KNN算法的训练过程相对简单,不需要进行复杂的迭代和优化。此外,KNN算 法对于数据的分布和规模不敏感,因此在处理不同规模和分布的数据集时具有较 好的鲁棒性。
对数据分布不敏感
KNN算法对数据的分布不敏感, 因此对于非线性问题也有较好 的分类效果。
简单直观
KNN算法原理简单,实现直观, 易于理解。
分类准确度高
基于实例的学习通常比基于规 则或判别式的学习更为准确。
对异常值不敏感
由于KNN基于实例的学习方式, 异常值对分类结果影响较小。
缺点
计算量大
KNN算法需要计算样本与所有数据 点之间的距离,因此在大规模数据集 上计算量较大。
欧氏距离
适用于数据特征呈正态分布的情况,但在非 线性可分数据上表现不佳。
余弦相似度
适用于高维稀疏数据,能够处理非线性可分 问题。
曼哈顿距离
适用于网格结构的数据,但在高维数据上计 算量大。
皮尔逊相关系数
适用于衡量两组数据之间的线性关系。
K值选择策略的优化
knn算法的分类规则

knn算法的分类规则【原创实用版】目录1.KNN 算法的基本原理2.KNN 算法的分类规则3.KNN 算法的优缺点4.KNN 算法的应用实例正文1.KNN 算法的基本原理KNN(k-Nearest Neighbors,k-近邻)算法是一种基于距离度量的分类和回归方法。
它的基本原理是:在一个数据集中,距离目标点最近的 k 个邻居点的分类结果决定了目标点的分类结果。
2.KNN 算法的分类规则KNN 算法的分类规则可以分为以下几个步骤:(1)计算数据集中所有点之间的距离。
(2)对每个目标点,找到距离最近的 k 个邻居点。
(3)根据这 k 个邻居点的分类结果,计算目标点的分类结果。
通常采用多数投票法,即目标点的分类结果为这 k 个邻居点中出现次数最多的分类。
3.KNN 算法的优缺点优点:(1)KNN 算法简单易懂,易于实现。
(2)KNN 算法对数据集中的噪声不敏感,具有一定的鲁棒性。
(3)KNN 算法可以应用于各种类型的数据,包括数值型和类别型数据。
缺点:(1)KNN 算法的计算复杂度较高,尤其是当数据量较大时。
(2)KNN 算法对于离群点和边界数据较为敏感,容易受到这些数据的影响。
4.KNN 算法的应用实例KNN 算法在实际应用中具有广泛的应用,例如:(1)文本分类:将一篇文章根据其关键词和主题与其他文章进行分类。
(2)图像分类:根据图片的像素颜色和布局,将图片分类到不同的类别中。
(3)手写数字识别:根据手写数字的笔画和形状特征,将其识别为数字。
总之,KNN 算法是一种简单有效的分类方法,适用于各种类型的数据。
KNN(k近邻)机器学习算法详解

KNN(k近邻)机器学习算法详解KNN算法详解一、算法概述1、kNN算法又称为k近邻分类(k-nearest neighbor classification)算法。
最简单平凡的分类器也许是那种死记硬背式的分类器,记住所有的训练数据,对于新的数据则直接和训练数据匹配,如果存在相同属性的训练数据,则直接用它的分类来作为新数据的分类。
这种方式有一个明显的缺点,那就是很可能无法找到完全匹配的训练记录。
kNN算法则是从训练集中找到和新数据最接近的k条记录,然后根据他们的主要分类来决定新数据的类别。
该算法涉及3个主要因素:训练集、距离或相似的衡量、k的大小。
2、代表论文Discriminant Adaptive Nearest Neighbor ClassificationTrevor Hastie and Rolbert Tibshirani3、行业应用客户流失预测、欺诈侦测等(更适合于稀有事件的分类问题)二、算法要点1、指导思想kNN算法的指导思想是“近朱者赤,近墨者黑”,由你的邻居来推断出你的类别。
计算步骤如下:1)算距离:给定测试对象,计算它与训练集中的每个对象的距离?2)找邻居:圈定距离最近的k个训练对象,作为测试对象的近邻?3)做分类:根据这k个近邻归属的主要类别,来对测试对象分类2、距离或相似度的衡量什么是合适的距离衡量?距离越近应该意味着这两个点属于一个分类的可能性越大。
觉的距离衡量包括欧式距离、夹角余弦等。
对于文本分类来说,使用余弦(cosine)来计算相似度就比欧式(Euclidean)距离更合适。
3、类别的判定投票决定:少数服从多数,近邻中哪个类别的点最多就分为该类。
加权投票法:根据距离的远近,对近邻的投票进行加权,距离越近则权重越大(权重为距离平方的倒数)三、优缺点简单,易于理解,易于实现,无需估计参数,无需训练适合对稀有事件进行分类(例如当流失率很低时,比如低于0.5%,构造流失预测模型)特别适合于多分类问题(multi-modal,对象具有多个类别标签),例如根据基因特征来判断其功能分类,kNN比SVM的表现要好懒惰算法,对测试样本分类时的计算量大,内存开销大,评分慢可解释性较差,无法给出决策树那样的规则。
KNN讲解

2024/7/18
23
2024/7/18
24
2024/7/18
25
计算相似度
设两个特征向量分别为X=(x1,x2,...,xn)和Y=(y1,y2,...yn)
2024/7/18
26
将需要预测的学生的特征向量与训练集 中的所有特征向量,用上述公式计算出距离, 将各个距离值排序,将最距离小的排在前面, 最后取前k个样本,得出在这k个样本中,国 企、外企、私企所占比例,比例最大的就是 该预测样本所属于的类别。
2024/7/18
27
传统KNN算法实验结果
2024/7/18
28
2024/7/18
29
2024/7/18
30
改进
1、样本特征加权处理
传统的方法认为样本各个特征(属性)的作 用是相同的,即权重相同,无法体现各特征与分 类间的关系。如果有些特征与分类相关度很高, 有些很低,则其分类误差就会较大。
,而其他类样本容量很小时,有可能导致当输入 一个新样本时,该样本的K个邻居中大容量类的样 本占多数。该算法只计算“最近的”邻居样本, 如果某一类的样本数量很大,那么可能目标样本 并不接近这类样本,却会将目标样本分到该类下 ,影响分类准确率。
2024/7/18
14
(3)样本库容量依赖性较强; (4)K值不好确定;
(1)从降低计算复杂度的角度 当样本容量较大以及特征属性较多时,KNN算
法分类的效率就将大大降低。可以采用以下方法 进行改进。 ✓如果在使用KNN算法之前对样本的属性进行约简, 删除那些对分类结果影响较小(不重要)的属性, 则可以用KNN算法快速地得出待分类样本的类别, 从而可以得到更好的效果。
机器学习--K近邻(KNN)算法的原理及优缺点

机器学习--K近邻(KNN)算法的原理及优缺点⼀、KNN算法原理 K近邻法(k-nearst neighbors,KNN)是⼀种很基本的机器学习⽅法。
它的基本思想是:在训练集中数据和标签已知的情况下,输⼊测试数据,将测试数据的特征与训练集中对应的特征进⾏相互⽐较,找到训练集中与之最为相似的前K个数据,则该测试数据对应的类别就是K个数据中出现次数最多的那个分类。
由于KNN⽅法主要靠周围有限的邻近的样本,⽽不是靠判别类域的⽅法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN⽅法较其他⽅法更为适合。
KNN算法不仅可以⽤于分类,还可以⽤于回归。
通过找出⼀个样本的k个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。
更有⽤的⽅法是将不同距离的邻居对该样本产⽣的影响给予不同的权值(weight),如权值与距离成反⽐。
KNN算法的描述: (1)计算测试数据与各个训练数据之间的距离; (2)按照距离的递增关系进⾏排序; (3)选取距离最⼩的K个点; (4)确定前K个点所在类别的出现频率 (5)返回前K个点中出现频率最⾼的类别作为测试数据的预测分类。
算法流程: (1)准备数据,对数据进⾏预处理。
(2)选⽤合适的数据结构存储训练数据和测试元组。
(3)设定参数,如k。
(4)维护⼀个⼤⼩为k的的按距离由⼤到⼩的优先级队列,⽤于存储最近邻训练元组。
随机从训练元组中选取k个元组作为初始的最近邻元组,分别计算测试元组到这k个元组的距离,将训练元组标号和距离存⼊优先级队列。
(5)遍历训练元组集,计算当前训练元组与测试。
元组的距离,将所得距离L 与优先级队列中的最⼤距离Lmax。
(6)进⾏⽐较。
若L>=Lmax,则舍弃该元组,遍历下⼀个元组。
若L < Lmax,删除优先级队列中最⼤距离的元组,将当前训练元组存⼊优先级队列。
(7)遍历完毕,计算优先级队列中k 个元组的多数类,并将其作为测试元组的类别。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通过这种方式也能减少算法的计算量,但仍然无法减少 存储量。
KNN算法的改进:压缩近邻算法
利用现在的样本集,采取一定的算法产生一个新的样本 集,该样本集拥有比原样本集少的多的样本数量,但仍然保持 有对未知样本进行分类的能力。
基本思路:定义两个存储器,一个用来存放生成的样本 集,称为output样本集;另一个用来存放原来的样本集,称为 original样本集。
K-Nearest Neighbor Classification
KNN:K最近邻分类算法
KNN算法怎么来的?
KNN算法是怎么来的
猜猜看:最后一行未知电影属于什么类型的电影。
电影名称 California Man
打斗次数 3
He’s Not Really
into Dudes
2
Beautiful Woman 1 邻样本 step.5---重复步骤2、3、4,直到未知样本和所有训练样本的
距离都算完 step.6---统计K个最近邻样本中每个类别出现的次数 step.7---选择出现频率最大的类别作为未知样本的类别
KNN算法的缺陷
观察下面的例子,我们看到,对于位置样本 X,通过KNN算法,我们显然可以得到X应属于红点, 但对于位置样本Y,通过KNN算法我们似乎得到了Y 应属于蓝点的结论,而这个结论直观来看并没有说服 力。
KNN算法是怎么来的
问题:有一个未知形状X(图中绿色的圆 点),如何判断X是什么形状?
K-最近邻算法
显然,通过上面的例子我们可以明显发现 最近邻算法的缺陷——对噪声数据过于敏感,为 了解决这个问题,我们可以可以把位置样本周边 的多个最近样本计算在内,扩大参与决策的样本 量,以避免个别数据直接决定决策结果。由此, 我们引进K-最近邻算法。
KNN算法是用来干什么的
K-最近邻算法是最近邻算法的一个延伸。基本思路 是:选择未知样本一定范围内确定个数的K个样本,该K个 样本大多数属于某一类型,则未知样本判定为该类型。
下面借助图形解释一下。
KNN算法的实现步骤
算法步骤: step.1---初始化距离为最大值 step.2---计算未知样本和每个训练样本的距离dist step.3---得到目前K个最临近样本中的最大距离maxdist step.4---如果dist小于maxdist,则将该训练样本作为K-最近
1. 初 始 化 : output 样 本 集 为 空 集 , 原 样 本 集 存 入 original样本集,从original样本集中任意选择一个样本移动到 output样本集中;
2.在original样本集中选择第i个样本,并使用output 样本集中的样本对其进行最近邻算法分类,若分类错误,则将 该样本移动到output样本集中,若分类正确,不做任何处理;
Robo Slayer 3000 99
Amped II
98
未知
18
接吻次数 104
100
81 10
5 2 90
电影类型 Romance
Romance
Romance Action
Action Action Unknown
KNN算法是怎么来的
猜猜看:最后一行未知点属于什么类型的点。
点
X坐标
Y坐标
点类型
KNN算法的缺陷
从算法实现的过程大家可以发现,该算法存两个严重 的问题,第一个是需要存储全部的训练样本,第二个是需要 进行繁重的距离计算量。对此,提出以下应对策略。
KNN算法的改进:分组快速搜索近邻法
其基本思想是:将样本集按近邻关系分解成组,给 出每组质心的位置,以质心作为代表点,和未知样本计算距 离,选出距离最近的一个或若干个组,再在组的范围内应用 一般的knn算法。由于并不是将未知样本与所有样本计算距 离,故该改进算法可以减少计算量,但并不能减少存储量。
最近邻算法
提供一种思路,即:未知的豆离 哪种豆最近就认为未知豆和该豆是同一 种类。由此,我们引出最近邻算法的定 义:为了判定未知样本的类别,以全部 训练样本作为代表点,计算未知样本与 所有训练样本的距离,并以最近邻者的 类别作为决策未知样本类别的唯一依据。 但是,最近邻算法明显是存在缺陷的, 我们来看一个例子。
A点
3
104
Romance
B点
2
100
Romance
C点
1
81
D点
101
10
Romance Action
E点
99
5
Action
F点
98
2
Action
G点
18
90
Unknown
KNN算法是怎么来的 想一想:下面图片中只有三种豆,有三个豆是 未知的种类,如何判定他们的种类?
1968年,Cover和Hart提出了最初的近邻法。
KNN算法的具体实现
由上面的例子可见:该算法在分类时有个重要的 不足是,当样本不平衡时,即:一个类的样本容量很大, 而其他类样本数量很小时,很有可能导致当输入一个未 知样本时,该样本的K个邻居中大数量类的样本占多数。 但是这类样本并不接近目标样本,而数量小的这类样本 很靠近目标样本。这个时候,我们有理由认为该位置样 本属于数量小的样本所属的一类,但是,KNN却不关心 这个问题,它只关心哪类样本的数量最多,而不去把距 离远近考虑在内,因此,我们可以采用权值的方法来改 进。和该样本距离小的邻居权值大,和该样本距离大的 邻居权值则相对较小,由此,将距离远近的因素也考虑 在内,避免因一个样本过大导致误判的情况。