统计学习笔记:K近邻(KNN)原理及C源码实现

在学习李航的《统计学习方法》这本书时,遇到过不少困惑,在网上查文章向解决这些困惑,但有些东西比较模糊,或者是这里复制那里复制,而且千篇一律的是搜索最近邻,并且给的例子数据似乎都是相同的。至于搜索K个近邻,李航的《统计学习方法》也没有详细说明,网上也没看到的材料,所以决定写下这篇学习笔记,希望能给学习的人解惑,如果能解决你心中的困惑那说明这个笔记价值就有了,以下内容是对李航的《统计学习方法》中K近邻算法这一张的概括,同时也有一些自己的理解,及在实现算法过程中的问题,文末我GitHub的源码地址,你可以下载运行,算法实现K近邻,当K=1时为最近邻,结合李航的《统计学习方法》效果更好。

k-近邻法

k-近邻法(K-nearest neighbor,K-NN)是一种基本分类和回归方法,这里只介绍用于分类的k-最近邻法。k-近邻法的输入为实例的特征向量,输出为实例所属的类别,训练数据集可以包含多个类别的实例。k-近邻法假设给定一个训练数据集,其中的实例类别已定。分类时,对新的实例,根据其k个最近邻(距离最近)中属于同一类个数最多的类别,将新的实例归属到该类别当中。k-近邻法没有一个显示的训练过程。

一、k-近邻法三要素

当训练数据集、距离的计算方法、k值及分类决策规则确定后,对任何一个新的输入实例,模型输出该实例所属的类别是唯一的。
1. k值的选择k值的选择会对k近邻法的结果产生重大的影响,k表示选取最近的k个近邻。
1)k值较小
    ①近似误差小:只有与输入实例较近的训练实例才会对预测结果起作用。
    ②估计误差大:预测结果会对近邻的实例非常敏感,如果近邻的点恰巧是噪声 预测就会出错。
    ③模型复杂
    ④泛化能力差
(2)k值较大
    ①近似误差大
    ②估计误差小
    ③模型简单
    ④泛化能力较好
(3)k取样本容量N
    ①无论输入实例是什么,都将简单的将输入实例预测为训练实例中占最多的类 别的那一类。
    ②忽略了大量有用的信息。
    在应用中,k值一般选取一个较小的,通常采用交叉验证法来选取最优k值。

2. 距离的计算方法
特征空间中两个实例的距离是两个实例点相似程度的反映,k近邻模型的特征向量一般是n维的,使用欧式距离,但也可以是其他距离,如更一般的Lp距离或Minkowski距离。

(1)欧式距离

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值