机器学习系列(十)——更多关于knn的思考

作者: Ice_spring | 来源:发表于2019-07-06 16:40 被阅读4次

knn算法解决回归问题简介

在前面的系列中,knn算法主要用于解决分类问题,不只是二分类问题,knn算法可以天然地解决多分类问题。而且knn算法思想简单,但效果非常之好。
不过knn算法也可以用于解决回归问题,比如下面的问题:


knn_regress

离绿色点最近的三个点数值分别为:100,120,150。那么可以将三个点的平均值作为绿色点的值,当然也可以考虑权值进行加权平均。
sklearn中封装了KNeighborsRegressor类专门用于解决回归问题。(可以参考文档进行了解和自学。)
KNeighborsRegressor文档

knn算法的缺点

  • knn算法最大的缺点是它的效率及其低下,如果训练集有m个样本,n个特征,则预测每个新的数据都需要计算它与每个训练集样本的距离,时间复杂度是O(m*n),而且仅仅是一个新的数据。
    现在针对knn算法有很多优化,如KD-Tree,Ball-Tree,能更快地找到最近邻关于KD-Tree和Ball-Tree属于搜索算法,可以查阅资料书自学,这里给出一些简单参考:
    knn算法优化KD-Tree和Ball-Tree
    但是尽管有很多优化,knn仍然是一个效率比较低的算法。
  • knn算法缺点之二是高度数据相关,算法表现极度依赖数据好坏,当然理论上几乎所有机器学习算法都是数据相关的。
  • knn算法缺点之三是预测结果不具有可解释性,我们只是找到离他最近的样本点就作出分类的预测,但是更深层次的理论依据却无法证明。
  • knn算法缺点之四是维数灾难,随着维度的增加,看似很近的两个点其实距离是越来越大的。
维数 距离
1 0~1 1
2 (0,0)~(1,1) 1.414
3 (0,0,0)~(1,1,1) 1.732
... ... ...
10000 (0,0,...,0)~(1,1,...,1) 100

维数灾难有一个解决办法是降维,这在本系列后面会介绍。

机器学习流程再探讨

截至目前学到的知识,将机器学习流程概括如下:

  1. 将数据分为预测集和训练集
  2. 训练数据归一化(scaler)
  3. 归一化的数据训练得到模型
  4. 测试数据用同样的scaler进行归一化
  5. 送入训练得到的模型得到准确度
  6. 网格搜索调节超参数得到最好的模型

有些时候机器学习算法本身的学习并非那么重要,更重要的是对于机器学习流程的关注,这能让我们更好地理解机器学习和寻找到更好的算法。

相关文章

  • 机器学习系列(十)——更多关于knn的思考

    knn算法解决回归问题简介 在前面的系列中,knn算法主要用于解决分类问题,不只是二分类问题,knn算法可以天然地...

  • 2018文章集合

    2018年公众号文章集合,过年在家系统学习下。 机器学习实战 该系列讲解了经典机器学习算法的原理(KNN,决策树,...

  • 基于KNN的验证码识别算法

    写在前面 最近几天忙完考试看了一个关于机器学习的基础算法——k近邻算法,简称为KNN。KNN是数据挖掘领域的十大经...

  • 机器学习实战-knn

    机器学习实战笔记-knn算法实战 本文内容源于《机器学习实战》一书,主要介绍了knn(k-nearest neig...

  • KNN算法中关于数据分析和机器学习的应用

    KNN算法中关于数据分析和机器学习的应用 K-近邻法 KNN做为機器学习中最为简单的算法,其实用性还是很强的. K...

  • 第六节分类算法

    1knn算法 1.1knn的过程 1.2scilit-learn中的knn 1.3scikit-learn机器学习...

  • 01 KNN算法 - 概述

    KNN算法全称是K近邻算法 (K-nearst neighbors,KNN) KNN是一种基本的机器学习算法,所谓...

  • KNN算法以及欧式距离

    1.KNN算法介绍 KNN 是什么? KNN(K-Nearest Neighbor)是最简单的机器学习算法之一,可...

  • 机器学习-KNN

    sklearn中的train_test_split 4.4分类准确度accuracy 不需要求出预测值 只要求预测...

  • 机器学习-knn

    生成已标记的数据集并直观显示 训练 预测 把带预测的样本以及和其最近的5个点标记出来

网友评论

    本文标题:机器学习系列(十)——更多关于knn的思考

    本文链接:https://www.haomeiwen.com/subject/akwphctx.html