集体智慧编程——协同过滤
目录
1. 基于用户的协同过滤
1.1 相似度评价值
1.1.1 欧几里得距离:
1.1.2 皮尔逊相关度:
1.1.3 曼哈顿距离算法
1.1.4 Jaccard系数
1.1.5 余弦相似度
1.2 推荐物品
2. 基于物品的协同过滤
3. 两种协同过滤比较
1. 基于用户的协同过滤
协同过滤算法通常是对一大群人进行搜索,并从中找出与我们品味想近的一小群人。算法会对这些人所偏爱对其他内容进行考查,并将他们组合起来构造出一个经过排名的推荐列表。
1.1 相似度评价值
既然要找到品味方面的相似度,就需要将个体与其他人进行比较,并计算他们的相似度评价值;
1.1.1 欧几里得距离:
这个比较简单,采用欧几里得度量方法即可:
1.1.2 皮尔逊相关度:
该相关系统是判断两组数据与某一直线的拟合程度的一种度量。公式较复杂,皮尔逊相关度修正了夸大分值,它在数据不是很规范的情况下会倾向于给出更好的结果,如:影评者对影评的评价总是相对于平均水平偏离很大。
皮尔逊相关度评价算法首先会找出两位评论者都曾评价过的物品,然后计算两者的评分总和与平方和,并求得评分的成绩和。最后算法利用这些计算结果计算出皮尔逊相关系数。
皮尔逊的相关性系数可以看为协方差与标准差的商。
1.1.3 曼哈顿距离算法
就是用曼哈顿距离(出租车距离)来度量两者的相似性。
1.1.4 Jaccard系数
用于比较有限样本集之间的相似性与差异性。Jaccard系数值越大,样本相似度越高。
还可以用于文本相似性、序列相似性,非常适合数据集只有0、1两组取值的数据集。另外可以了解下Tanimoto系数,又称谷本系数。
1.1.5 余弦相似度
通过测量两个向量的夹角的余弦值来度量它们之间的相似性。余弦相似度通常用于正空间,因此给出的值为0到1之间,值越大相似性越大。
1.2 推荐物品
只单单通过相似度最高的人来推荐太随意了,有时可能会出问题,所以我们采用加权的方法进行打分,比如下表中的(S.影片名)则表示加权后的评分。同时为了防止个别影片评论人数过多导致加权评价值综合过高,我们采用总值除以Sim.Sum(与被推荐人的相似度和)来修正这个问题。即通过加权取平均的方式进行打分:
评论者 | 相似度 | 肖生克 | S.肖生克 | 复联3 | S.复联3 | 头号玩家 | S.头号玩家 |
---|---|---|---|---|---|---|---|
小白 | 0.90 | 8.70 | 7.83 | 9.10 | 8.19 | 9.20 | 8.28 |
小兰 | 0.50 | 6.70 | 3.35 | 8.00 | 4.00 | 7.40 | 4.20 |
小绿 | 0.60 | 7.20 | 4.32 | 9.20 | 5.52 | ||
小黑 | 0.30 | 8.30 | 2.49 | 6.10 | 1.83 | ||
总计 | 17.99 | 14.02 | 18 | ||||
Sim.Sum | 2.3 | 1.7 | 2.0 | ||||
总计/Sim.Sum | 7.82 | 8.24 | 9 |
2. 基于物品的协同过滤
在拥有大规模数据的情况下,基于物品的协同过滤能够更好得到结论,而且它允许我们将大量计算任务预先执行,从而使需要给予推荐的用户能够更快地得到他们所要的结果。
总体思路:
- 为每件物品预先计算好最为相近的其他物品
- 查看用户的历史评分物品,并从中选出排名靠前者(综合各方面进行排名)
- 构造加权列表,包含与选中物品最为相近的其他物品
物品间的比较不会想用户间的比较那么频繁变化。
3. 两种协同过滤比较
- 基于物品进行过滤速度更快;
- 基于用户进行过滤更容易实现;
- 对于稀疏数据集,基于物品通常优于基于用户的过滤方法;
- 对于密集型,两者效果几乎一样。
集体智慧编程——协同过滤相关推荐
- 《集体智慧编程》读书笔记2
最近重读<集体智慧编程>,这本当年出版的介绍推荐系统的书,在当时看来很引领潮流,放眼现在已经成了各互联网公司必备的技术. 这次边阅读边尝试将书中的一些Python语言例子用C#来实现,利于 ...
- 《集体智慧编程》数学公式
这篇博客的目的主要是为了记录这些公式,取自原书附录B. 1.欧几里得距离(Euclidean Distance) 用途:计算距离,衡量相似度 公式: 代码实现: def euclidean(p, q) ...
- 《集体智慧编程》——第一章导读
为什么80%的码农都做不了架构师?>>> 什么是集体智慧 其含义是指:为了长早新的想法,而将一群人的行为.偏好或思想组合在一起. 完成这项工作的一种最为基础的方法,便是使用调查 ...
- 《集体智慧编程》读书笔记10
最近重读<集体智慧编程>,这本当年出版的介绍推荐系统的书,在当时看来很引领潮流,放眼现在已经成了各互联网公司必备的技术. 这次边阅读边尝试将书中的一些Python语言例子用C#来实现,利于 ...
- 《集体智慧编程》读书笔记4
最近重读<集体智慧编程>,这本当年出版的介绍推荐系统的书,在当时看来很引领潮流,放眼现在已经成了各互联网公司必备的技术. 这次边阅读边尝试将书中的一些Python语言例子用C#来实现,利于 ...
- 《集体智慧编程》笔记(1 / 12):集体智慧导言
文章目录 什么是集体智慧 什么是机器学习 机器学习的局限性 真实生活中的例子 学习型算法的其他用途 小结 Netflix, Google都适用了先进算法,将来自不同人群的数据加以组合,进而得出新的结论 ...
- 读书笔记《集体智慧编程》Chapter 2 : Make Recommendations
本章概要 本章主要介绍了两种协同过滤(Collaborative Filtering)算法,用于个性化推荐: 基于用户的协同过滤(User-Based Collaborative Filtering, ...
- 《集体智慧编程》笔记(2 / 12):提供推荐
Making Recommendations 文章目录 协作型过滤 搜集偏好 寻找相近的用户 欧几里得距离评价 皮尔逊相关度评价 应该选用哪一种相似性度量方法 为评分者打分 推荐物品 匹配相似商品 构 ...
- 提供推荐--集体智慧编程
背景:购物平台商品推荐算法介绍 数据:影评者对几部影片的打分情况,寻找人们在品味上的相似程度.通过相似度评价值进行推荐.评价值体系:欧几米德距离和皮尔逊相关度 critics = {'Lisa Ros ...
- 【集体智慧编程】第二章、提供推荐
一.前言 本章即将告诉大家,如何根据群体偏好来为人们提供推荐.有许多针对于此的应用,如:在线购物中的商品推荐.热门网站的推荐,以及帮助人们寻找音乐和影片的应用.本章将告诉你如何构筑一个系统,用以寻找具 ...
最新文章
- mysql 1061原因_MySQL死锁问题分析及解决方法实例详解(转)
- 2016职业技能大赛信息安全管理与评估赛项任务书
- vue 动态添加class_前端开发:Vue项目实战-Music
- [LeetCode] Reverse Linked List I II - 链表翻转问题
- Django(part20)--数据库和模型
- 两平面平行方向向量关系_一文读懂 GDT 中的平面度
- 离散数学计算机科学丛书答案,计算机《离散数学》期中试卷答案.docx
- 【手册】jc-cookies 中文文档
- GEE(Google Earth Engine)批量导入谷歌云盘
- 电脑桌面文件删除了怎么找回?
- vue + element 与 vue element admin 中 tab标签视图 页拖拽(拖动) sortablejs 插件案例
- 如何快速制作证件照并压缩到100K?
- 【团体天梯赛/PTA】7-34 福到了 (15 分)
- leetcode 121. 买卖股票的最佳时机 (贪心 + 动规 + 双指针
- PostgreSQL 15 新特性解读 | 墨天轮优质文章合集
- 用python写一个自动注册脚本_js自己写脚本自动操作注册插件基于chrome浏览器
- 百兆以太网口通信速率_以太网发送速率(传输速率)和传播速率
- Ubuntu KVM安装过程
- 企业微信获取客户群里用户的unionid;企业微信获取客户详情
- template文件夹可以删_请问templates是什么 文件 能删除吗?
热门文章
- 抖音代码舞Python制作
- 阿里云OS和Android之争100问
- Oracle 11g RAC 环境下单实例非缺省监听及端口配置
- zmap扫描mysql_45分钟扫遍全网:最快的互联网扫描工具ZMap
- 编写一个应用程序,给出汉字‘你’、‘我’、‘他’在Unicode表中的位置。
- arcmap发布三维地图_如何使用高程DEM建立三维地图模型(Arcgis ArcScene)
- UE4官方文档UI学习:6. UMG 使用菜单锚显示弹出菜单
- 精品软件介绍 Wireless Network Watcher 中文版 - 防蹭网监视软件
- SSH学习之四 OpenSSH安全
- 传智播客张孝祥 JavaScript视频教程