码迷,mamicode.com
首页 > 其他好文 > 详细

k近邻(KNN)复习总结

时间:2016-12-17 22:51:22      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:类别   k近邻   3.3   不同的   摘要   距离   tab   模型   ble   

摘要:

  1.算法概述

  2.算法推导

  3.算法特性及优缺点

  4.注意事项

  5.实现和具体例子

  6.适用场合
内容:

1.算法概述

  K近邻算法是一种基本分类和回归方法;分类时,根据其K个最近邻的训练实例的类别,通过多数表决等方式进行预测;k近邻法实际上利用训练数据集对特征向量空间进行划分,并作为其分类的"模型"。(Cover和Hart 在1968)--参考自《统计学习方法》

2.算法推导

2.1 kNN三要素

  k值的选择:当k值较小时,预测结果对近邻的实例点非常敏感,容易发生过拟合;如果k值过大模型会倾向大类,容易欠拟合;通常k是不大于20的整数(参考《机器学习实战》)

  距离度量:不同距离度量所确定的最近邻点是不同的

  分类决策规则:多数表决(majority voting)规则是在损失函数是0-1损失函数是的经验风险最小化

2.2 KD树:解决对k近邻进行快速搜索的一种二叉树,构造kd树相当于不断用垂直于坐标轴的超平面将K维空间划分,构成一系列的K维超矩阵区域;每一个节点对应于一个k维超矩形区域。一般情况下顺序选择坐标轴及坐标轴的中位数进行切分。kd树是平衡的但效率未必最优--参考自《统计学习方法》

3.算法特性及优缺点

  优点:精度高,对异常值不敏感

  缺点:k值敏感,空间复杂度高(需要保存全部数据),时间复杂度高(平均O(logM),M是训练集样本数)

4.注意事项

  归一化:基于距离的函数,要进行归一化;否则可能造成距离计算失效

5.实现和具体例子

  KD树进行最近邻搜索(《统计学习方法》算法3.3)

  机器学习实战中的提高约会网站配对指数和手写识别的例子(numpy实现,未使用KD树)

  scikit-learn中的实现和具体例子

6.适用场合

  是否支持大规模数据:单机下时间和空间消耗大,不过可以通过分布式解决(github上找到的一个spark knn实现,有时间研究下)

  特征维度

  是否有 Online 算法:应该是有的(待确定)

  特征处理:支持数值型数据,类别型类型需要进行0-1编码

  

k近邻(KNN)复习总结

标签:类别   k近邻   3.3   不同的   摘要   距离   tab   模型   ble   

原文地址:http://www.cnblogs.com/arachis/p/KNN.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!