算法图解第十章笔记与习题(KNN算法)
算法图解第十章笔记与习题(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算法)相关推荐
- 算法图解第二章笔记与习题(选择排序)
算法图解第二章笔记与习题(选择排序) 文章目录 算法图解第二章笔记与习题(选择排序) 2.2 数组和链表 2.2.1 链表 2.2.2 数组 2.2.3 数组和链表的读取.插入和删除操作的时间复杂度 ...
- 《算法图解》学习笔记(七):狄克斯特拉算法(附代码)
欢迎关注WX公众号:[程序员管小亮] python学习之路 - 从入门到精通到大师 文章目录 欢迎关注WX公众号:[程序员管小亮] [python学习之路 - 从入门到精通到大师](https://b ...
- 学习笔记——Kaggle_Digit Recognizer (KNN算法 Python实现)
本文是个人学习笔记,该篇主要学习KNN算法理论和应用范围,并应用KNN算法解决Kaggle入门级Digit Recognizer,也是个人入坑ML和Kaggle的开端,希望能够有始有终. KNN算法 ...
- 《算法图解》学习笔记(十一):十种经典的算法与数据结构
python学习之路 - 从入门到精通到大师 文章目录 [python学习之路 - 从入门到精通到大师](https://blog.csdn.net/TeFuirnever/article/detai ...
- 《算法图解》学习笔记(六):图和广度优先搜索(附代码)
欢迎关注WX公众号:[程序员管小亮] python学习之路 - 从入门到精通到大师 文章目录 欢迎关注WX公众号:[程序员管小亮] [python学习之路 - 从入门到精通到大师](https://b ...
- 《算法图解》学习笔记(八):贪婪算法和NP完全问题(附代码)
欢迎关注WX公众号:[程序员管小亮] python学习之路 - 从入门到精通到大师 文章目录 欢迎关注WX公众号:[程序员管小亮] [python学习之路 - 从入门到精通到大师](https://b ...
- 《算法图解》学习笔记(四):分而治之和快速排序(附代码)
欢迎关注WX公众号:[程序员管小亮] python学习之路 - 从入门到精通到大师 文章目录 欢迎关注WX公众号:[程序员管小亮] [python学习之路 - 从入门到精通到大师](https://b ...
- 《算法图解》读书笔记—像小说一样有趣的算法入门书
前言 学习算法课程的时候,老师推荐了两本算法和数据结构入门书,一本是<算法图解>.一本是<大话数据结构>,<算法图解>这本书最近读完了,读完的最大感受就是对算法不再 ...
- 《算法图解》读书笔记
这是一本很入门的算法书,介绍的东西还算简单明了,大体补充了一些自己没理解的东西. 粗略地看了一下,感觉还是"纸上得来终觉浅,绝知此事要躬行!" <<算法图解>&g ...
最新文章
- 机器学习笔记(九)聚类
- springboot 启动分析【难点】——如何自动扫描 @SpringBootApplication||如何加载自动配置类 @EnableAutoConfiguration||如何加载前端控制器
- AWS EC2服务器连接登录与创建多账号供多人同时并发使用
- 通过MySQL存储原理来分析排序和锁
- 一个封装了的选项卡效果js
- 十分钟上手 ES 2020 新特性
- java知识点_JAVA面试必会知识点「mysql部分」
- C++函数重载解析细节
- JDBC数据库通用DAO
- 写得好 git 提交信息
- 基于考研的C语言与数据结构指北
- 怎么用计算机里的坦克大战,FC经典90坦克大战电脑版
- 粒子群算法(7)------粒子群算法局部版本的实现
- Zoned-Storage - 对ZNS块设备进行基准测试
- java 过滤script_Java过滤任意(script,html,style)标签符,返回纯文本--封装类
- 用python制作相册影集_影集制作APP哪个好?就用这些APP把照片做成相册!
- uniapp实现版本更新
- 最简单的Go Dockerfile编写姿势
- 如何用python写游戏脚本?
- 数梦工场7.5亿元都干点啥?