kNN(k近邻算法)

K近邻分析(KNN)

 

一、概述

KNN算法是一种有监督学习的分类算法。所谓有监督学习,就是在应用算法之前我们必须准备一组训练集,训练集中的每个实例都是由一些特征和一个分类标签组成;通常还会存在一个测试集,用来测试训练出来的分类模型的准确性。其实KNN算法并没有体现出有监督学习的所有特点,没有模型,只有算法。甚至可以说这就是一种暴力扫描法,运行效率上比较低效。

KNN的具体算法为:

二、KNN的实现:

注:最后的多数表决相当于0-1最小风险。

三、KNN的参数选择:

(1)  距离的选择:LP范数

(2)  K的选择:K值的选择会对k近邻法的结果产生重大影响。如果k较小,相当于用较小的邻域中的训练实例进行预测,“学习”的近似误差会减小,只有与输入实例较近的训练实例才会对预测产生作用,但是“学习”的估计误差会增大,预测的结果会对近邻的实例点非常敏感,如果近邻的实例点恰好是噪声,预测就会出错,换而言之,k的值偏小,意味着模型变复杂,冗余发生过拟合;如果选择较大的K值,就相当于在较大的邻域中的训练实例进行预测,其优点是可以减少学习的估计误差,缺点是学习的近似误差会增大,这是与输入实例较远的训练实例也会对预测起作用,使预测发生错误。在应用中,k一般取一个比较小的数值,通常采用交叉验证法来取选择最优的K值。

四、KNN的实现-kd树

实现k近邻法时,主要考虑的问题是:如何对训练数据进行快速k近邻搜索。最简单的实现方法是线性扫描,这种方法比较耗时,为了提高k近邻搜索的效率,可以考虑特殊结构存储数据,以减少计算距离的次数,具体方法有很多,kd树(kd tree)就是其中的一种。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值