影响knn算法效果的主要因素包括

影响knn算法效果的主要因素包括,第1张

影响knn算法效果的主要因素包括:K的值、距离度量方式、决策规则

KNN算法是一种监督学习算法,可以用于分类和回归问题。它的基本思想是根据待分类样本在特征空间中与其他样本的距离,选取K个最相似的样本,然后根据这K个样本的类别进行投票,将待分类样本归为票数最多的类别。

KNN算法是最简单、最常用的分类算法之一,同时也可以应用到回归问题中。相对于其他算法,KNN算法在预测结果的可解读性、准确率和鲁棒性方面表现相对均衡优异。

用官方的话来说,所谓K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例(也就是上面所说的K个邻居), 这K个实例的多数属于某个类,就把该输入实例分类到这个类中。

简单地说,K-近邻算法采用测量不同特征值之间的距离方法进行分类。

欧氏距离是最常见的距离度量,衡量的是多维空间中各个点之间的绝对距离。公式如下:

身高、体重、鞋子尺码数据对应性别

导包,机器学习的算法KNN、数据鸢尾花

获取训练样本 datasetsload_iris()

画图研究前两个特征和分类之间的关系(二维散点图只能展示两个维度)

第二步预测数据:所预测的数据,自己创造,就是上面所显示的背景点

生成预测数据

对数据进行预测

ocr 光学字符识别(Optical Character Recognition) 我们先做一个基础班:识别数字

        K-means 算法属于聚类算法的一种。聚类算法就是把相似的对象通过静态分类方法分成不同的组别或者更多的子集(subset),这样让在同一个子集中的成员对象都有相似的一些属性。聚类算法的任务是将数据集划分为多个集群。在相同集群中的数据彼此会比不同集群的数据相似。通常来说,聚类算法的目标就是通过相似特征将数据分组并分配进不同的集群中。

K-means 聚类算法是一种非监督学习算法,被用于非标签数据(data without defined categories or groups)。该算法使用迭代细化来产生最终结果。算法输入的是集群的数量 K 和数据集。数据集是每个数据点的一组功能。  算法从 Κ 质心的初始估计开始,其可以随机生成或从数据集中随机选择 。然后算法在下面两个步骤之间迭代:

每个质心定义一个集群。在此步骤中,基于平方欧氏距离将每个数据点分配到其最近的质心。更正式一点, ci  属于质心集合  C  ,然后每个数据点  x  基于下面的公式被分配到一个集群中。

在此步骤中,重新计算质心。这是通过获取分配给该质心集群的所有数据点的平均值来完成的。公式如下:

K-means 算法在步骤 1 和步骤 2 之间迭代,直到满足停止条件(即,没有数据点改变集群,距离的总和最小化,或者达到一些最大迭代次数)。

上述算法找到特定预选 K 值和数据集标签。为了找到数据中的集群数,用户需要针对一系列 K 值运行 K-means 聚类算法并比较结果。通常,没有用于确定 K 的精确值的方法,但是可以使用以下技术获得准确的估计。

Elbow point 拐点方法

通常用于比较不同 K 值的结果的度量之一是数据点与其聚类质心之间的平均距离。由于增加集群的数量将总是减少到数据点的距离,因此当 K 与数据点的数量相同时,增加 K 将总是减小该度量,达到零的极值。因此,该指标不能用作唯一目标。相反,绘制了作为 K 到质心的平均距离的函数,并且可以使用减小率急剧变化的“拐点”来粗略地确定 K 。

DBI(Davies-Bouldin Index)

DBI 是一种评估度量的聚类算法的指标,通常用于评估 K-means 算法中 k 的取值。简单的理解就是:DBI 是聚类内的距离与聚类外的距离的比值。所以,DBI 的数值越小,表示分散程度越低,聚类效果越好。

还存在许多用于验证 K 的其他技术,包括交叉验证,信息标准,信息理论跳跃方法,轮廓方法和 G 均值算法等等。

需要提前确定 K 的选值或者需尝试很多 K 的取值

数据必须是数字的,可以通过欧氏距离比较

对特殊数据敏感,很容易受特殊数据影响

对初始选择的质心/中心(centers)敏感

之前介绍了  KNN (K 邻近)算法 ,感觉这两个算法的名字很接近,下面做一个简略对比。

K-means  :

聚类算法

用于非监督学习

使用无标签数据

需要训练过程

K-NN :

分类算法

用于监督学习

使用标签数据

没有明显的训练过程

 邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。Cover和Hart在1968年提出了最初的邻近算法。KNN是一种分类(classification)算法,它输入基于实例的学习(instance-based learning),属于懒惰学习(lazy learning)即KNN没有显式的学习过程,也就是说没有训练阶段,数据集事先已有了分类和特征值,待收到新样本后直接进行处理。与急切学习(eager learning)相对应。

 KNN是通过测量不同特征值之间的距离进行分类。 

 思路是:如果一个样本在特征空间中的k个最邻近的样本中的大多数属于某一个类别,则该样本也划分为这个类别。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。

 提到KNN,网上最常见的就是下面这个图,可以帮助大家理解。

 我们要确定绿点属于哪个颜色(红色或者蓝色),要做的就是选出距离目标点距离最近的k个点,看这k个点的大多数颜色是什么颜色。当k取3的时候,我们可以看出距离最近的三个,分别是红色、红色、蓝色,因此得到目标点为红色。

 算法的描述:

 1)计算测试数据与各个训练数据之间的距离;

 2)按照距离的递增关系进行排序;

 3)选取距离最小的K个点;

 4)确定前K个点所在类别的出现频率;

 5)返回前K个点中出现频率最高的类别作为测试数据的预测分类

二、关于 K 的取值

 K:临近数,即在预测目标点时取几个临近的点来预测。

 K值得选取非常重要,因为:

 如果当K的取值过小时,一旦有噪声得成分存在们将会对预测产生比较大影响,例如取K值为1时,一旦最近的一个点是噪声,那么就会出现偏差,K值的减小就意味着整体模型变得复杂,容易发生过拟合;

 如果K的值取的过大时,就相当于用较大邻域中的训练实例进行预测,学习的近似误差会增大。这时与输入目标点较远实例也会对预测起作用,使预测发生错误。K值的增大就意味着整体的模型变得简单;

 如果K==N的时候,那么就是取全部的实例,即为取实例中某分类下最多的点,就对预测没有什么实际的意义了;

 K的取值尽量要取奇数,以保证在计算结果最后会产生一个较多的类别,如果取偶数可能会产生相等的情况,不利于预测。

  K的取法:

   常用的方法是从k=1开始,使用检验集估计分类器的误差率。重复该过程,每次K增值1,允许增加一个近邻。选取产生最小误差率的K。

 一般k的取值不超过20,上限是n的开方,随着数据集的增大,K的值也要增大。

三、关于距离的选取

 距离就是平面上两个点的直线距离

 关于距离的度量方法,常用的有:欧几里得距离、余弦值(cos), 相关度 (correlation), 曼哈顿距离 (Manhattan distance)或其他。

 Euclidean Distance 定义:

 两个点或元组P1=(x1,y1)和P2=(x2,y2)的欧几里得距离是

 距离公式为:(多个维度的时候是多个维度各自求差)

四、总结

 KNN算法是最简单有效的分类算法,简单且容易实现。当训练数据集很大时,需要大量的存储空间,而且需要计算待测样本和训练数据集中所有样本的距离,所以非常耗时

KNN对于随机分布的数据集分类效果较差,对于类内间距小,类间间距大的数据集分类效果好,而且对于边界不规则的数据效果好于线性分类器。

 KNN对于样本不均衡的数据效果不好,需要进行改进。改进的方法时对k个近邻数据赋予权重,比如距离测试样本越近,权重越大。

 KNN很耗时,时间复杂度为O(n),一般适用于样本数较少的数据集,当数据量大时,可以将数据以树的形式呈现,能提高速度,常用的有kd-tree和ball-tree。

摘要:KNN分类算法,是理论上比较成熟的方法,也是最简单的机器学习算法之一。该算法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。

简单的描述该算法的思想其实就是某个样本在特征空间中与其距离最近的k个样本中同一类样本最多的样本类同属于同一个样本类别。

KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。

由下面的图可以更直观的分析knn邻近算法当k=3的时候,在最小的圆圈内可以看见与其距离最近的三个图形中有两个都是红色三角形类,所以样本的类别应该和红色三角形的类别属于同一类。

knn算法的分类原理有预处理训练数据,计算距离,确定k值等。

在使用knn算法进行分类之前,需要对数据集进行预处理。这包括数据清洗、数据归一化和特征选择等步骤。数据清洗可以去除数据集中的异常值和噪声,数据归一化可以将不同特征的数据统一到相同的尺度上,而特征选择可以去除不相关的特征,提高模型的分类准确性。

knn算法的分类原理是根据距离来确定测试样本的类别。因此,在进行分类之前,需要先计算测试样本与训练样本之间的距离。常用的距离计算方法有欧式距离、曼哈顿距离和闵可夫斯基距离等。

knn算法中的k值指的是在训练集中选择与测试样本距离最小的k个样本。一般来说,k值的选择需要根据具体的数据集和分类任务来确定。通常情况下,k值越小,模型的复杂度越高,容易出现过拟合;k值越大,模型的复杂度越低,容易出现欠拟合。

如何选择knn算法的k值及优化模型效果:

1、选择knn算法的k值可以通过网格搜索法,选择使模型评估指标最优的k值。交叉验证法,将数据集分为若干份,每次使用其中一份作为测试集,其余作为训练集,计算不同k值下的模型评估指标,选择使模型评估指标最优的k值。

2、选择knn算法的k值还可以根据数据集的大小和复杂度,选择适当的k值。一般来说,k值不应超过训练样本数的平方根。还可以通过加权knn,对k个最近邻样本进行加权,使距离较近的样本对分类结果的贡献更大,距离较远的样本对分类结果的贡献更小,以提高模型的效果。

3、优化knn算法的模型效果,可以采取对原始数据进行清洗、缺失值填充、异常值处理等预处理方法,以提高数据的质量和准确性。选择最具代表性的特征,排除无关和冗余的特征,以提高特征和模型的效果。常见的模型评估指标包括准确率、召回率、F1值、AUC值等。

欢迎分享,转载请注明来源:表白网

原文地址:https://h5.hunlipic.com/biaobai/4139165.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2024-04-18
下一篇2024-04-18

发表评论

登录后才能评论

评论列表(0条)

    保存