读书笔记《集体智慧编程》Chapter 2 : Make Recommendations

本章概要
本章主要介绍了两种协同过滤(Collaborative Filtering)算法,用于个性化推荐:
  • 基于用户的协同过滤(User-Based Collaborative Filtering,又称 K-Nearest Neighbor Collaborative Filtering)
  • 基于条目的协同过滤(Item-Based Collaborative Filtering)
本章还介绍两种向量相似性算法:
  • 欧氏距离(Euclidean Distance)
  • 皮尔斯稀疏(Pearson Coefficient)
 
协同过滤
协同过滤是在一大群用户中寻找一些与你的用户相似的用户,然后将这些找到的用户使用过但是你没有使用过的物品(如电影,书籍,商品)推荐给你的用户,因为你与这些用户具有类似的爱好。
相似度算法
欧氏距离是平面几何距离的n维扩展,值越大,越不相似,为了使得当距离越大时,越相似,需要对其欧氏距离转换,转换方式如下:
euc-dist(x,y)  ===>    1/(1+euc-dist(x,y))
皮尔斯系数可以描述两个向量的相关性,表示的两个向量在二维坐标上分布为一条直线的程度,值在-1~1之间,越大,越相关。皮尔斯稀疏可以修复分数通胀(grade inflation)问题,举个例子,A,B两个用户具有集齐相似的兴趣,只是A打分相对较严格,一般比平均分低一分,但是A与B的pearson系数却可以完美的为1.这种特性根据你的应用而定,可能会需要,至少在电影推荐的例子上是需要的,但是其他例子里面可能不需要.
User-Based Collaborative Filtering (or the K-Nearest Neighbor Collaborative Filtering)
计算你其他人所有人相似度,取前k个。
在k个人中,取出我没有看过的电影,然后根据相似度与对应用户对电影的打分成绩,作加权平均值,分值越大,代表我可能越有兴趣额。
这是一个通用算法,可以讲商品,替换电影打分,那么就可以推断我可能感兴趣的商品。返回来也可以,可以根据商品推断潜在购买者。抽象为下面的关系:
  • 用户:影评 --> 推荐电影
  • 影评:用户 --> 预测其他用户影评(没多大意义)
  • 用户:商品 --> 推荐商品
  • 商品:用户 --> 潜在购买用户    商品之间的关系相对stable,相比于人之间的关系
Item-Based Collaborative Filtering(基于条目的系统过滤)
基于用户的协同过滤最大的问题在于性能,计算量太大,当用户陡增时无法做到实时推荐。因为每次推荐都要计算k个最近的用户,开销很大。
基本条目过滤的思路:计算出条目之间的相似性(相对稳定,可以在空闲时间计算),然后将根据用户用过的条目和该条目对应用户没有用过的条目,计算加权平均值,推荐给用户。
最大的好处是条目之间的关系相对稳定,可以提前计算。而且条目计算的结果可以优化,只计算每个条目最相似的k个条目,k << n(总体条目数)。
相比于基于用户的协同顾虑,它更适合于稀疏矩阵。
基于条目的协同过滤,可以参见论文《Item-Based Collaborative Filtering Recommendation Algorithms》
更具此问题,基于条目的协同过滤比基于用户的系统过滤更准确。
声明:如有转载本博文章,请注明出处。您的支持是我的动力!文章部分内容来自互联网,本人不负任何法律责任。
本文转自bourneli博客园博客,原文链接:http://www.cnblogs.com/bourneli/archive/2012/11/11/2765325.html,如需转载请自行联系原作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/540505.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[转载] python中的for循环对象和循环退出

参考链接&#xff1a; Python中循环 流程控制-if条件 判断条件&#xff0c;1位true&#xff0c;0是flesh&#xff0c;成立时true&#xff0c;不成立flesh&#xff0c;not取反 if 1; print hello python print true not取反&#xff0c;匹配取反&#xff0c;表示取非1…

设计一个应用程序,以在C#中的按钮单击事件上在MessageBox中显示TextBox中的文本...

Here, we took two controls on windows form that are TextBox and Button, named txtInput and btnShow respectively. We have to write C# code to display TextBox’s text in the MessageBox on Button Click. 在这里&#xff0c;我们在Windows窗体上使用了两个控件&…

Oracle优化器:星型转换(Star Query Transformation )

Oracle优化器&#xff1a;星型转换&#xff08;Star Query Transformation &#xff09;Star query是一个事实表&#xff08;fact table&#xff09;和一些维度表&#xff08;dimension&#xff09;的join。每个维度表都跟事实表通过主外键join&#xff0c;且每个维度表之间不j…

[转载] python循环中break、continue 、exit() 、pass的区别

参考链接&#xff1a; Python中的循环和控制语句(continue, break and pass) 1、break&#xff1a;跳出循环&#xff0c;不再执行 用在while和for循环中 用来终止循环语句&#xff0c;即循环条件没有False条件或者序列还没被完全递归完&#xff0c;也会停止执行循环语句 如果…

JavaScript | 声明数组并使用数组索引分配元素的代码

Declare an array, assign elements by indexes and print all elements in JavaScript. 声明一个数组&#xff0c;通过索引分配元素&#xff0c;并打印JavaScript中的所有元素。 Code: 码&#xff1a; <html><head><script>var fruits [];fruits[0]"…

[转载] Python入门(输入/输出、数据类型、条件/循环语句)

参考链接&#xff1a; Python中的循环技术 在介绍之前我们先来看看计算机的三个根本性基础&#xff1a; 1.计算机是执行输入、运算、输出的机器 2.程序是指令和数据的集合 3.计算机的处理方式有时与人们的思维习惯不同 &#xff08;以上是引自《计算机是怎样跑起来的》…

第5章 函数与函数式编程

第5章 函数与函数式编程 凡此变数中函彼变数者&#xff0c;则此为彼之函数。 ( 李善兰《代数学》) 函数式编程语言最重要的基础是λ演算&#xff08;lambda calculus&#xff09;&#xff0c;而且λ演算的函数可以传入函数参数&#xff0c;也可以返回一个函数。函数式编程 (简称…

mcq 队列_人工智能能力问答中的人工智能概率推理(MCQ)

mcq 队列1) Which of the following correctly defines the use of probabilistic reasoning in AI systems? In situations of uncertainty, probabilistic theory can help us give an estimate of how much an event is likely to occur or happen.It helps to find the pr…

[转载] Python中的xrange和range的区别

参考链接&#xff1a; Python中的range()和xrange() 在python2 中 range(start,end,step)返回一个列表&#xff0c;返回的结果是可迭代对象&#xff0c;但不是迭代器。iter()转化为列表迭代器。xrange()返回的是一个序列&#xff0c;他也是可迭代对象&#xff0c;但不是迭代…

Kubernetes基础组件概述

本文讲的是Kubernetes基础组件概述【编者的话】最近总有同学问Kubernetes中的各个组件的相关问题&#xff0c;其实这些概念内容在官方文档中都有&#xff0c;奈何我们有些同学可能英文不好&#xff0c;又或者懒得去看&#xff0c;又或者没有找到&#xff0c;今天有时间就专门写…

c语言将链表写入二进制文件_通过逐级遍历将二进制树转换为单链表的C程序

c语言将链表写入二进制文件Problem statement: Write a C program to convert a binary tree into a single linked list by traversing level-wise. 问题陈述&#xff1a;编写一个C程序&#xff0c;通过逐级遍历将二进制树转换为单个链表 。 Example: 例&#xff1a; The ab…

[转载] C Primer Plus 第6章 C控制语句 6.16 编程练习及答案

参考链接&#xff1a; 用Python打印金字塔图案的程序 2019独角兽企业重金招聘Python工程师标准>>> 1、编写一个程序&#xff0c;创建一个具有26个元素的数组&#xff0c;并在其中存储26个小写字母。并让该程序显示该数组的内容。 #include int main (void) { …

C# String和string的区别

C#中同时存在String与string MSDN中对string的说明&#xff1a; string is an alias for String in the .NET Framework。string是String的别名而已&#xff0c;string是c#中的类&#xff0c;String是Framework的类&#xff0c;C# string 映射为 Framework的 String。如果用str…

要求用户在Python中输入整数| 限制用户仅输入整数值

input() function can be used for the input, but it reads the value as a string, then we can use the int() function to convert string value to an integer. input()函数可用于输入&#xff0c;但它将值读取为字符串&#xff0c;然后可以使用int()函数将字符串值转换为…

[转载] python——if语句、逻辑运算符号

参考链接&#xff1a; 用Python链接比较运算符 1.if条件判断语句&#xff1a; if 要判断的条件(True): 条件成立的时候&#xff0c;要做的事情 elif 要判断的条件(True): .... elif 要判断的条件(True): .... else: 条件不成立的时候要做的事情 示例&#xff1a; 判断学生…

洛谷 P2689 东南西北【模拟/搜索】

题目描述 给出起点和终点的坐标及接下来T个时刻的风向(东南西北)&#xff0c;每次可以选择顺风偏移1个单位或者停在原地。求到达终点的最少时间。 如果无法偏移至终点&#xff0c;输出“-1”。 输入输出格式 输入格式&#xff1a; 第一行两个正整数x1,y1&#xff0c;表示小明所…

单链表遍历_单链表及其遍历实现的基本操作

单链表遍历单链表 (Single linked list) Single linked list contains a number of nodes where each node has a data field and a pointer to next node. The link of the last node is to NULL, indicates end of list. 单个链表包含许多节点&#xff0c;其中每个节点都有一…

[转载] python中for语句用法_详解Python中for循环的使用_python

参考链接&#xff1a; 在Python中将else条件语句与for循环一起使用 这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 “探索 Python&#xff0c;第 5 部分&#xff1a;用 Python 编程” 一文讨论了 if 语句和…

windows 软链接的建立及删除

在windows服务器上有时有这样的需求&#xff0c;你的文件在f:\test中&#xff0c;但由于其它原因用户访问的是e:\test&#xff0c;如果又希望e:\test 中的文件与f:\test的保持同步&#xff0c;除了用同步软件来做外&#xff0c;可以用windows 的文件夹映射来做 cmd: mklink /J …

8086简单的指令流水线_在8086微处理器中执行流水线的指令和概念的步骤

8086简单的指令流水线Any computer or machine works according to some instructions. These instructions are responsible for all the work that the machine does. But how does a machine work to understand and execute that instruction? 任何计算机或机器都按照某些…