算法图解第十章笔记与习题(KNN算法)

文章目录

  • 算法图解第十章笔记与习题(KNN算法)
    • 10.1 KNN算法
    • 10.2特征提取
    • 10.3 回归
    • 10.4 小结
    • 练习
      • 习题10.1:
      • 习题10.2:
      • 习题9.3:

算法图解pdf百度云链接,提取码:jttg

10.1 KNN算法

KNN(k-nearest neighbours)算法,意为:根据K个最近邻居的属性来认定该节点的属性。

KNN算法可以用于分类问题,也可以用于创建推荐系统。假定一个用户可以提取特征为一个节点,那么它的喜好一定与其周围最近的几个邻居相似,我们就可以通过其邻居的喜好来给他推荐事物。

10.2特征提取

由于KNN算法依赖距离的计算,所以必须将节点的属性特征提取为数字,并计算他们的距离。

计算距离的公式为欧氏距离:$ \sqrt{\sum_{i=1}n(x_i-y_i)2}$ 。其中n为特征维数,x,y为两个节点。

计算时,通过欧氏距离选取出离目标节点最近的节点,就可以根据最近的k个节点来为目标节点提供参考。

10.3 回归

KNN算法不仅能够根据邻居节点来给目标节点做出推荐,也同样能够预测它将会做出怎样的选择。如可以预测一个用户对于某电影的评分,以其近邻对这部电影的平均分作为其可能的打分。这被称为回归(regression)。

KNN的两个基本功能:分类和回归。

  • 分类就是编组。
  • 回归就是预测结果(如一个数字)。

这两项也是机器学习中十分重要的两个类别。

余弦相似度:在实际工作中,计算距离的方式不仅仅有欧式距离,还会使用余弦相似度(cosine similarity)。余弦相似度不计算两个矢量的距离,而比较它们的角度,对于属性相似,但数值不同的节点而言,他们也是相似的,但若以欧氏距离计算,他们将不是邻居。

另外,对于一项任务而言,选择合适的特征作为依据十分重要。例如一项电影推荐任务,如果使用的是用户对汽车的喜好作为特征,那么这项电影推荐任务将十分失败。

10.4 小结

  • KNN用于分类和回归,需要考虑最近的邻居。
  • 分类就是编组。
  • 回归就是预测结果(如数字)。
  • 特征抽取意味着将物品(如水果或用户)转换为一系列可比较的数字。
  • 能否挑选合适的特征事关KNN算法的成败。

练习

习题10.1:

  • 在Netflix示例中,你使用距离公式计算两位用户的距离,但给电影打分时,每位用户的标准并不都相同。假设你有两位用户——Yogi和Pinky,他们欣赏电影的品味相同,但Yogi给喜欢的电影都打5分,而Pinky更挑剔,只给特别好的电影打5分。他们的品味一致,但根据距离算法,他们并非邻居。如何将这种评分方式的差异考虑进来呢。

可以使用归一化(normalization)。通过归一化将平均值回调到同一水平线,如3分后,就能基于同样的标准来比较他们间的距离了。这也是机器学习中数据预处理的一部分。

习题10.2:

  • 假设Netflix指定了一组意见领袖。例如,Quentin Tarantino和Wes Anderson就是Netflix的意见领袖,因此他们的评分比普通用户更重要。请问你该如何修改推荐系统,使其偏重于意见领袖的评分呢?

可以给意见领袖分配权重,使其在统计k个邻居时获得更高的权重。如以5个邻居的喜好来统计目标节点的喜好,那么使意见领袖的喜好乘以3,再与其它4个邻居进行平均值计算。就可以使其更偏向于意见领袖的评分了。

习题9.3:

  • Netflix的用户数以百万计,前面创建推荐系统时只考虑了5个最近的邻居,这是太多还是太少了呢?

太少了。这样的情况下,十分容易出现偏差。一个经验之谈是,如果有N个节点,那么考虑 N \sqrt{N} N ​个邻居。

算法图解第十章笔记与习题(KNN算法)相关推荐

  1. 算法图解第二章笔记与习题(选择排序)

    算法图解第二章笔记与习题(选择排序) 文章目录 算法图解第二章笔记与习题(选择排序) 2.2 数组和链表 2.2.1 链表 2.2.2 数组 2.2.3 数组和链表的读取.插入和删除操作的时间复杂度 ...

  2. 《算法图解》学习笔记(七):狄克斯特拉算法(附代码)

    欢迎关注WX公众号:[程序员管小亮] python学习之路 - 从入门到精通到大师 文章目录 欢迎关注WX公众号:[程序员管小亮] [python学习之路 - 从入门到精通到大师](https://b ...

  3. 学习笔记——Kaggle_Digit Recognizer (KNN算法 Python实现)

    本文是个人学习笔记,该篇主要学习KNN算法理论和应用范围,并应用KNN算法解决Kaggle入门级Digit Recognizer,也是个人入坑ML和Kaggle的开端,希望能够有始有终. KNN算法 ...

  4. 《算法图解》学习笔记(十一):十种经典的算法与数据结构

    python学习之路 - 从入门到精通到大师 文章目录 [python学习之路 - 从入门到精通到大师](https://blog.csdn.net/TeFuirnever/article/detai ...

  5. 《算法图解》学习笔记(六):图和广度优先搜索(附代码)

    欢迎关注WX公众号:[程序员管小亮] python学习之路 - 从入门到精通到大师 文章目录 欢迎关注WX公众号:[程序员管小亮] [python学习之路 - 从入门到精通到大师](https://b ...

  6. 《算法图解》学习笔记(八):贪婪算法和NP完全问题(附代码)

    欢迎关注WX公众号:[程序员管小亮] python学习之路 - 从入门到精通到大师 文章目录 欢迎关注WX公众号:[程序员管小亮] [python学习之路 - 从入门到精通到大师](https://b ...

  7. 《算法图解》学习笔记(四):分而治之和快速排序(附代码)

    欢迎关注WX公众号:[程序员管小亮] python学习之路 - 从入门到精通到大师 文章目录 欢迎关注WX公众号:[程序员管小亮] [python学习之路 - 从入门到精通到大师](https://b ...

  8. 《算法图解》读书笔记—像小说一样有趣的算法入门书

    前言 学习算法课程的时候,老师推荐了两本算法和数据结构入门书,一本是<算法图解>.一本是<大话数据结构>,<算法图解>这本书最近读完了,读完的最大感受就是对算法不再 ...

  9. 《算法图解》读书笔记

    这是一本很入门的算法书,介绍的东西还算简单明了,大体补充了一些自己没理解的东西. 粗略地看了一下,感觉还是"纸上得来终觉浅,绝知此事要躬行!" <<算法图解>&g ...

最新文章

  1. 机器学习笔记(九)聚类
  2. springboot 启动分析【难点】——如何自动扫描 @SpringBootApplication||如何加载自动配置类 @EnableAutoConfiguration||如何加载前端控制器
  3. AWS EC2服务器连接登录与创建多账号供多人同时并发使用
  4. 通过MySQL存储原理来分析排序和锁
  5. 一个封装了的选项卡效果js
  6. 十分钟上手 ES 2020 新特性
  7. java知识点_JAVA面试必会知识点「mysql部分」
  8. C++函数重载解析细节
  9. JDBC数据库通用DAO
  10. 写得好 git 提交信息
  11. 基于考研的C语言与数据结构指北
  12. 怎么用计算机里的坦克大战,FC经典90坦克大战电脑版
  13. 粒子群算法(7)------粒子群算法局部版本的实现
  14. Zoned-Storage - 对ZNS块设备进行基准测试
  15. java 过滤script_Java过滤任意(script,html,style)标签符,返回纯文本--封装类
  16. 用python制作相册影集_影集制作APP哪个好?就用这些APP把照片做成相册!
  17. uniapp实现版本更新
  18. 最简单的Go Dockerfile编写姿势
  19. 如何用python写游戏脚本?
  20. 数梦工场7.5亿元都干点啥?

热门文章

  1. 【三】ElasticSearch 索引操作
  2. dwz 日期空间onchange事件
  3. “睡你妹闹钟”——你还真是让人又爱又恨啊
  4. 普鸥知识产权|开曼群岛商标注册流程
  5. JavaScript——优先级队列
  6. 获取js函数执行时间
  7. 【精选】圣诞素材合集,海报、背景、字体、icon、贺卡等资源素材,应景呀
  8. 多功能语音播报器使用手册!
  9. 三十年三十谈|探索城市设计的科学方法和实施路径
  10. Java面试题之:线程池原理