监督学习_最近邻算法(KNN, k-近邻算法)

KNN算法是一种基于向量空间模型的监督学习方法,用于模式识别。通过计算测试样本与训练样本间的欧氏距离来确定相似度,找到最接近的K个邻居,依据邻居的类别进行投票决定测试样本的分类。该方法精度高,对异常值不敏感,但计算和空间复杂度较高,适用于数值型和标称型数据。
摘要由CSDN通过智能技术生成

在模式识别领域中,最近邻居法KNN算法,又译K-近邻算法)是将在特征空间中最接近的训练样本进行分类的方法。

最近邻居法采用向量空间模型来分类,概念为相同类别的案例,彼此的相似度高,而可以借由计算与已知类别案例之相似度,来评估未知类别案例可能的分类。

                                                                                                                                                                         摘自:维基百科

      

        举个例子,手写数字识别,假设0-9的数字可以用特征向量(a,b,c,...)表示,那么现在有一个数字X,它的特征向量可以表示为(x,y,z,...),那么可以用特征向量之间的距离(欧氏距离)来表示它们的相似度,即d=sqrt( (x-a)^2+(y-b)^2+(z-c)^2+... ),d越小则表示X与哪个数字的的距离越近,即X是该数字的可能性越大! 在这里(a,b,c,...)可以被看作是训练集(有很多个训练集,比如10000个,0-9分别各有1000个),(x,y,z,...)可以被看作是测试集,那么就拿(x,y,z,...)分别和10000个(a,b,c,...)计算相似度(欧氏距离),并记录与每个(a,b,c,...)的相似度欧氏距离,找出其中最小的d(最大的相似度),就表示(x,y,z,...)就是那个数字。

       那K是怎么回事呢???

       我们计算出了10000个相似度(欧氏距离),我们找出K个相似度欧氏距离)最高的d,然后统计K个d对应的数字,哪个数字出现的次数最多,就说(x,y,z,...)是谁;比如,令K=10, 统计出有5个d对应的数字为1,3个对应的数字为2,2个对应的数字为8,那我们就说(x,y,z,...)是1,类似于投票先村长,谁的票数多,谁就是村长。如果令K=1呢?那就是上述的例子了,就是只找一个相似度最高的即可。

      

       优点:精度高、对异常值不敏感、无数据输入假定

       缺点:计算复杂度高、空间复杂度高(确实是超高,每判断一个样本就需要遍历整个训练样本(10000次))

       适用数据范围:数值型和标称型(就是离散型数据,变量的结果只在有限目标集中取值)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值