k Nearest Neighbors 简介

Pdf 来源Western University

最近邻居法KNN算法,又译K-近邻算法)是ML最简单分类的方法之一。需要分类的样本依据k个最邻近的样本分类。

K的选择:

理论上说如果样本无限多,那么k越大越好。但是这些邻居必须相近。而且,样本怎么可能无限多呢。所以,一般来说

k< sqrt(n)

k=1计算效率高,但是超级会被noise影响

理论上最佳error会是Bayes rate E* (• Bayes error rate 是分类算法最佳最小的error rate),但是要无限样本,所以还是会高于E*。随着k变大,error减小,error = cE*, k越大c越小。就算k =1, 如果样本无限大error rate 也会小于2E*
knn 在样本大的时候效果好。

Euclidian Distance to find the nearest neighbor:

这个算法把每个feature认为一样重要,但是其实有些feature是更有区分力的

极端个例:

feature 1 就是答案: 1 or 2
feature 2 毫不相关的数字100 to 200(scale大)
• dataset: 
[1 150] 
[2 110]
• classify 
[1 100] 会被分到2去。

如果样本密集度高就不容易出现,但是样本往往太过稀疏。

解决方法:normalize features to be on the same scale

1)

2)



但是如果是高dimension空间,而且大部分features是噪声,那normalization也没救。如果好feature没有废物feature多,那么欧几里得距离会是噪声的天下。所以要考虑feature加权。要么就看背景条件知道哪个feature更重要,要么就cross validation来看。


计算复杂度

基本kNN算法存储全部的examples。假设dimensiond有n个example:
O(d) 计算1个example 的距离
O(nd) 寻找一个nearest neighbor
O(knd) 寻找k个最近examples 

所以总的复杂度O(knd) ,如果大样本就很费电脑,但是矛盾的是kNN又需要大样本才能做得好。


两种降低复杂度的办法:

1)删减掉不对边缘做出贡献的那种中心的点点,减少样本量,不改变决策边界


2)部分距离

如果已经有了k个接近的样本,那么算到一半距离就已经比第k个还大,就不用接着算了(这不是废话吗)

好处就是肯定还是能拿到最接近的k个,坏处就是到底能降低多少复杂度全看运气了。

3) 其他

降低数据的dimensionality

使用其他 data structures, 例如kd trees


小结

Advantages
• 可以用于任何分布的数据: 不需要线性可分割
• 简单直观
• 如果样本够大是很好的分类法
Disadvantages
k值选择可能不容易
测试阶段很费电脑

没有训练阶段,全部都在test完成,这样不好是因为我们可以花得起training时间,但是test需要快

• 需要大样本才好

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值