前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习入门 4-9 更多有关k近邻算法的思想

机器学习入门 4-9 更多有关k近邻算法的思想

作者头像
触摸壹缕阳光
发布2019-11-13 19:47:55
4230
发布2019-11-13 19:47:55
举报
文章被收录于专栏:AI机器学习与深度学习算法

本系列是《玩转机器学习教程》一个整理的视频笔记。本小节主要使用kNN算法解决回归问题的思路以及回顾总结前面学习到的知识。

01

K近邻算法解决回归问题

kNN算法是解决分类问题的算法,而且他天然的可以解决多分类的问题,在前面介绍算法的时候提到,有些机器学习算法是只能解决二分类问题的,而有些算法是可以天然的解决多分类的问题的。kNN算法的思想也是非常的简单,而且效果很强大,这么简单的一个算法,通常在实际使用中是可以得到好的效果。

不仅如此我们还可以使用kNN算法解决回归问题:

回归问题不同于分类问题,分类问题中,预测输出固定的输出类别,而回归问题我们具体要预测的是一个数值。

比如要预测一个房子房价是多少,要预测一个学生的考试分数是多少,或者预测下一个时刻股票的价格是多少,这些都属于回归问题。那如何使用kNN算法解决回归问题呢?

  1. 对于我们需要预测的绿色节点,找到离他最近的k个节点,由于是监督学习,相应的都会有真实的值,比如图中3近邻问题,对应绿色点最近的3个点的值为100、120以及150,,那我们就可以预测绿色的节点,大概是离他最近的三个点的平均值;
  2. 考虑距离三个节点最近的距离,这些距离可以代表权值,由于值为100的节点距离预测的绿色节点更近,因此值为100的节点的权重就应该越高。

总的来说,kNN回归问题类似kNN分类问题,有两种方案:

  1. 不考虑距离的话计算距离预测节点最近的k个点对应值的平均值;
  2. 考虑距离,通过距离确定权重,以加权的方式计算预测节点的最终值。

sklearn已经封装好了KNeighborsRegressor这个类,这个类就是应用kNN算法解决回归问题。

02

k近邻算法的缺点

对于一个新的预测数据来说,需要O(m * n):

当然针对kNN缺点,有很多优化,比如使用树结构:KD-Tree, Ball-Tree。这些优化可以使kNN算法效率变高,但是即便如此,kNN算法的效率依然很低。

  1. 前面介绍了kNN算法的第一个缺点:效率低下;
  2. kNN算法的第二个缺点:kNN算法得到的最终结果是高度的数据相关,当然对于我们的机器学习算法来说,就是使用喂给机器学习算法的数据来进行预测,所以理论上所有的机器学习算法都是高度的数据相关的,不过kNN算法对大的噪声数据(outlier)更加的敏感,比如说假设使用3近邻算法,如果我们预测样本周边一旦有2个错误的值的话,就足以让我们最终的预测结果错误,但是在整个空间中是有大量正确的样本的,这就是kNN算法的一个问题。
  3. kNN算法的另外一个缺点,预测的结果不具有可解释性。我们只是找到了和预测样本比较近的这些样本,因此就说预测的样本属于这个类别,但是我们预测的样本为什么属于这个类别,我们根本无从知晓。在很多研究上,仅仅知道预测的结果是远远不够的,我们希望对于预测的结果有一定的解释性,进而能够通过这些解释推广或者发现新的理论来进行改进,这是kNN算法所解决不了的。
  4. kNN算法的一个更大的缺点,维度灾难

kNN算法是高度依赖两个点之间的距离的,但是如果样本的维度过高,就会导致维度灾难。

实际上,使用机器学习算法来处理数据的时候,在实际生产环境中,在很多领域处理成千上万维的数据是很正常。当然维度过高,可以通过降维的方式来解决。

03

机器学习流程回顾

  1. 划分数据集为训练集和测试集;
  2. 对于kNN这种算法,需要数据在同一尺度下,因此要进行数据的归一化:
    1. 先将训练集进行归一化Scaler,然后将归一化后的数据进行训练,得到最终的模型;
    2. 测试集要使用训练集上的Scaler进行归一化,然后送进使用训练集训练的模型,来得到模型分类的准确度,这样我们就得到了这个模型具体的性能有多好。
  3. 当然训练模型中已经固定好了一组超参数,为了获得最好的模型,使用前面介绍的网格搜索的方式来寻找最好的超参数,进而得到一个最好的模型。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI机器学习与深度学习算法 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档