k近邻(KNN)复习总结

Posted 混沌战神阿瑞斯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k近邻(KNN)复习总结相关的知识,希望对你有一定的参考价值。

摘要:

  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)复习总结的主要内容,如果未能解决你的问题,请参考以下文章

KNN算法常见问题总结

机器学习之Knn(K-近邻算法)

史诗级干货长文K-近邻算法

数据挖掘期末复习模拟题(暨考试题)

学习KNN算法体会和总结

k近邻算法api初步使用