第十章    K最近邻算法

1  K最近邻(k-nearest neighbours,KNN)——水果分类


2  创建推荐系统

利用相似的用户相距较近,但如何确定两位用户的相似程度呢?

①特征抽取

对水果分类来说:个头和颜色就是特征

再根据这些特征绘图,然后根据毕达哥拉斯公式(欧氏距离呗)计算距离

对于推荐系统而言,同样是如此。

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

归一化(normalization)

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

权重问题。

②回归

KNN中回归就是预测结果。

如果要使用KNN的话,一定要研究余弦相似度(cosine similarity),余弦相似度不计算两个矢量的距离,而比较它们的角度。

③挑选合适的特征

特征的标准:与要推荐的电影紧密相关的特征;

不偏不倚的特征(例如,如果只让用户给喜剧片打分,就无法判断他们是否喜欢动作片)。

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

太少了。如果考虑的邻居太少,结果很可能存在偏差。一个不错的经验规则是:如果有N位用户,应考虑sqrt(N)个邻居。


3  机器学习简介

一个

最新文章

  1. C++ 使用ifstream读取数据,多读最后一行问题解决方法
  2. 动态链接库(DLL)总结
  3. Java学习-017-EXCEL 文件读取实例源代码
  4. JAVA线程基础
  5. 用腻了bootstrap的可以试试semantic-ui
  6. java事务管理
  7. hdu 1526(最大匹配)
  8. js获取url参数值的两种方式
  9. 单光纤udp通信
  10. 依赖注入及AOP简述(六)——字符串请求模式 .
  11. UITableView Cell 弹簧动画效果
  12. android 焦点问题
  13. space 管理
  14. Go语言学习笔记(六)net
  15. MySQL学习笔记_5_SQL语言的设计与编写(上)
  16. bzoj2457 双端队列
  17. python数据结构之quick_sort
  18. flask_json数据入库Mongo
  19. redis安装和命令使用
  20. Node.js学习笔记(2) - Node.js安装及入门hello world

热门文章

  1. Linux---关闭Elasticsearch进程,并重新启动
  2. 【腾讯敏捷转型No.5】需求没做完可以发布嘛
  3. Java并发编程(二)创建线程的三种方法
  4. python散记
  5. easyui图标
  6. php以数组做为配置文件的读取和写入操作
  7. CAP通俗解释
  8. 树莓派3B+学习笔记:11、查看硬件信息
  9. Leecode刷题之旅-C语言/python-389 找不同
  10. MFC 中的 Value 和 Control