KNN 算法,以及与Kmeans的简单对比
2018-01-10 09:53
169 查看
KNN与Kmeans感觉没啥联系,但是名字挺像的,就拿来一起总结一下吧。
初学者的总结。
KNN是监督学习,Kmeans是无监督学习。
KNN用于分类,Kmeans用于聚类。
先说KNN:
对于KNN,有一批已经标注好label的训练样本,将这批样本的数据转换为向量表示,然后选择度量向量距离的方式。例如 欧式距离,曼哈顿距离,夹脚余弦等。对于这批样本记为W。
然后来一个待分类的样本S,选取W中距离样本S距离最近的K个样本。这K个样本中哪种类别的样本多,则该样本S的分类就是哪种。
KNN的优缺点:
KNN的优点:
1、对输入数据无假定,比如不会假设输入数据是服从正太分布的。
2、算法简单,直观,易于实现
3、对异常值不敏感
4、可以用于数值型数据,也可以用于离散型数据
KNN的缺点:
1、有说是计算复杂度高,不过这个是可以改进的,例如KD数,或者ball tree
2、严重依赖训练样本集,这个感觉没啥改进方法,只能是尽量获取更好的训练样本集。
3、距离度量方法,K值的选取都有比较大的影响。 KNN算法必须指定K值,K值选择不当则分类精度不能保证
4、特征作用相同 与决策树归纳方法和神经网络方法相比,传统最近邻分类器认为每个属性的 作用都是相同的(赋予相同权重)。样本的距离是根据样本的所有特征(属性)计 算的。在这些特征中,有些特征与分类是强相关的,有些特征与分类是弱相关的, 还有一些特征(可能是大部分)与分类不相关。这样,如果在计算相似度的时候, 按所有特征作用相同来计算样本相似度就会误导分类过程。
KNN的改进方向:
对于KNN分类算法的改进方法主要可以分为加快分类速度、对训练样本库的 维护、相似度的距离公式优化和K值确定四种类型。
目前我了解的只有加快分类速度,通过KD树,ball tree等。
机器学习实战 书中说 K不超过20
初学者的总结。
KNN是监督学习,Kmeans是无监督学习。
KNN用于分类,Kmeans用于聚类。
先说KNN:
对于KNN,有一批已经标注好label的训练样本,将这批样本的数据转换为向量表示,然后选择度量向量距离的方式。例如 欧式距离,曼哈顿距离,夹脚余弦等。对于这批样本记为W。
然后来一个待分类的样本S,选取W中距离样本S距离最近的K个样本。这K个样本中哪种类别的样本多,则该样本S的分类就是哪种。
KNN的优缺点:
KNN的优点:
1、对输入数据无假定,比如不会假设输入数据是服从正太分布的。
2、算法简单,直观,易于实现
3、对异常值不敏感
4、可以用于数值型数据,也可以用于离散型数据
KNN的缺点:
1、有说是计算复杂度高,不过这个是可以改进的,例如KD数,或者ball tree
2、严重依赖训练样本集,这个感觉没啥改进方法,只能是尽量获取更好的训练样本集。
3、距离度量方法,K值的选取都有比较大的影响。 KNN算法必须指定K值,K值选择不当则分类精度不能保证
4、特征作用相同 与决策树归纳方法和神经网络方法相比,传统最近邻分类器认为每个属性的 作用都是相同的(赋予相同权重)。样本的距离是根据样本的所有特征(属性)计 算的。在这些特征中,有些特征与分类是强相关的,有些特征与分类是弱相关的, 还有一些特征(可能是大部分)与分类不相关。这样,如果在计算相似度的时候, 按所有特征作用相同来计算样本相似度就会误导分类过程。
KNN的改进方向:
对于KNN分类算法的改进方法主要可以分为加快分类速度、对训练样本库的 维护、相似度的距离公式优化和K值确定四种类型。
目前我了解的只有加快分类速度,通过KD树,ball tree等。
机器学习实战 书中说 K不超过20
相关文章推荐
- MySQL连接算法的问答辨析并与Oracle简单对比
- 手撸KNN算法-简单实现
- k-近邻算法(KNN)--1简单原理介绍与实践---by香蕉麦乐迪
- 采用KNN算法实现一个简单的推荐系统
- Kmeans、Kmeans++和KNN算法比较
- 一个简单抽奖算法的实现以及如何预防超中
- Python 实现的Binary Search 算法以及效率的对比
- 二分图匹配——定义,经典模型以及简单的匈牙利算法
- 算法数据结构 单链表的实现+操作 以及和顺序表的对比
- (java)签名算法的使用以及正则表达式的简单使用
- log4j的简单的例子~以及使用log4j和不使用log4j的对比
- KNN算法实现以及性能测试
- HashMap与Hashtable的区别是面试中经常遇到的一个问题。这个问题看似简单,但如果深究进去,也能了解到不少知识。本文对两者从来源、特性、算法等多个方面进行对比总结。力争多角度、全方位的展示二者的不同,做到此问题的终结版。
- 机器学习实战--最简单算法--KNN算法(k-近邻算法)
- CV最简单的分类算法——knn(k nearest neighbors)
- kNN算法python实现和简单数字识别的方法
- Kmeans和KNN算法的异同
- Kmeans、Kmeans++和KNN算法比较
- 《机器学习实战》第二章:k-近邻算法(1)简单KNN
- Kmeans、Kmeans++和KNN算法比较