zoukankan      html  css  js  c++  java
  • KNN 算法,以及与Kmeans的简单对比

    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
  • 相关阅读:
    程序员版狂人日记二 .
    [骑行小记1]骑在上海
    启动/关闭xp_cmdshell
    脑力风暴之小毛驴历险记(3)低进高出的小鸡(上)
    如何查看SQL Server的实例名(转载)
    MSBuild 项目属性以及任务参考
    SQL update 语句中使用表别名&&查找占用数据库的进程
    [当算法遇上数学]元芳,你怎么能随即生成m个数,让其和等于n?(加强版)
    IIS error: Service Unavailable : HTTP Error 503. The service is unavailable
    SQL with(nolock)详解 [转]
  • 原文地址:https://www.cnblogs.com/earendil/p/8257053.html
Copyright © 2011-2022 走看看