zoukankan      html  css  js  c++  java
  • 机器学习-KNN算法

    原理

    KNN算法,又叫K近邻算法。就是在训练集中数据和标签已知的情况下,输入测试数据,将测试数据的特征与训练集中对应的特征进行相互比较,找到训练集中与之最为相似的前K个数据,则该测试数据对应的类别就是K个数据中出现次数最多的那个分类,其算法的描述为:

    • 1)计算测试数据与各个训练数据之间的距离;
    • 2)按照距离的递增关系进行排序;
    • 3)选取距离最小的K个点;
    • 4)确定前K个点所在类别的出现频率;
    • 5)返回前K个点中出现频率最高的类别作为测试数据的预测分类。

    三要素:

    1. k值的选择
    2. 距离的度量(常见的距离度量有欧式距离,曼哈顿距离等)
    3. 分类决策规则 (多数表决规则)

    k值的选择

    1. k值越小表明模型越复杂,更加容易过拟合
    2. 但是k值越大,模型越简单,如果k=N的时候就表明无论什么点都是训练集中类别最多的那个类

    所以一般k会取一个较小的值,然后用过交叉验证来确定
    这里所谓的交叉验证就是将样本划分一部分出来为预测样本,比如95%训练,5%预测,然后k分别取1,2,3,4,5之类的,进行预测,计算最后的分类误差,选择误差最小的k

    KNN的回归

    在找到最近的k个实例之后,可以计算这k个实例的平均值作为预测值。或者还可以给这k个实例添加一个权重再求平均值,这个权重与度量距离成反比(越近权重越大)。

    优缺点:

    KNN算法的优点:

    1. 思想简单,理论成熟,既可以用来做分类也可以用来做回归;
    2. 可用于非线性分类;
    3. 训练时间复杂度为O(n);
    4. 准确度高,对数据没有假设,对outlier不敏感;

    缺点:

      1. 计算量大;
      2. 样本不平衡问题(即有些类别的样本数量很多,而其它样本的数量很少);
      3. 需要大量的内存;

  • 相关阅读:
    BASH让标准输出和错误输出颜色不同
    为Linux的文件管理器创建“在此打开终端”菜单
    在Linux终端中快速生成、解码二维码
    让BASH用得更舒服:提示符颜色、时间、显示返回值、终端标题显示当前目录与正在执行的命令
    Linux关联文件扩展名和打开程序
    Linux发行版教你如何选 给入门者的选择通法
    B/S架构与C/S架构的比较
    一个PB12.5安装的问题
    介绍JavaEE平台
    类与对象小结
  • 原文地址:https://www.cnblogs.com/zongfa/p/9275787.html
Copyright © 2011-2022 走看看