当前课程知识点:互联网大规模数据分析技术 > 第八章 推荐系统 > 第22讲 推荐系统之协同过滤 > 第22讲 推荐系统之协同过滤
欢迎来到
互联网大规模数据分析技术
的课堂
我是今天的主讲教师李琳
来自武汉理工大学
今天我们开始第22讲
推荐系统之协同过滤
在这一讲当中呢
我们会给大家讲
基于用户的协同过滤
基于商品的协同过滤
并对这两种协同过滤方法
做一个小结
在前面的学习当中
我们了解了协同过滤是告诉我
我的朋友喜欢什么
那么请向我推荐
这种协同过滤方法
需要知道朋友的喜好
在这里朋友的喜好
我们该怎么来描述呢
也就是说
用户会给商品进行一个打分
这个打分就代表了
用户对这个商品的喜好程度
5分当然我们可以认为
他比较喜欢
四分还可以
那么打一分说明用户对这个产品
并不满意
所以我们用这样一个打分信息
来代表用户的喜好
同时我们有一个假设
Customers who had
similar tastes in the past
will have similar tastes
in the future
也就是说如果在过去
我们朋友之间有相同的爱好
相同的喜欢的物品
在将来
我们可能也会遵循同样的模式
基于这样一个假设
我们把这样一种基于朋友的喜好
来向个体进行推荐的方法
叫做协同过滤
协同过滤在1994年
有一个开放的这样一个架构
这样一个架构的提出的基本思想
也就是前面我们提到的
People who agreed in their
subjective evaluations
in the past are likely to agree
again in the future
也就是过去我们很相似
将来我们一定也会是朋友
也会有相似的喜好
接下来呢
我们就看一下
基于用户的协同过滤
是怎么来完成的
在这样一个方法当中
我们给大家举一个例子
大家在这里看到
我有一个用户叫做Alice
这个Alice
她对一些商品有过购买经历
并且进行了打分
推荐系统想知道Alice
对商品5的打分会是多少呢
如果高一点,我就向她推荐
如果不太高,那我就不向她推荐
所以这种情况下
我们该怎么来做呢
我们要了解
那么Alice她的伙伴是哪些呢
在这个里面我们就假设
其他用户都可能是Alice的伙伴
在这个里面就是User1到User4
这些用户
肯定对商品5已经产生过打分
所以我把这些用户的信息
拿来使用
User1打了3分
User2打了5分
User3打了4分
User4打了1分
那Alice究竟会给item5
打多少分呢
我们有一个简单的方法
就是把这些分子全部加起来
求一个平均
3加5加4加1
正好是5加8,13,6.5
这样方式合适么
马上有同学会说
嗯,那如果User1和Alice
是很好的朋友
她们关系非常密切
她们的品位非常相同
User1是不是会对Alice的影响
更大一些呢
是的
我们要很好的利用这个信息
也就是说我们要解决我们如何来
衡量两个用户之间的相似度
又是相似度
相似度怎么来算呢
另外,Alice究竟有几个朋友呢
How many neighbors
是一个、两个、三个、四个
还是所有的都是我的朋友呢
如果我把每一个朋友和我
Alice的相似度
都计算完成
我们怎么来预测打分
还是求平均么
在这里我们先解决第一个问题
如何求相似度
今天我们在这里给大家介绍一种
新的相似度计算指标
叫做Pearson correlation
有同学会问
老师,我能不能用Cosine呢
老师我能不能用欧氏距离呢
都可以,没有问题
针对不同的数据
你们可以采用不同的
相似度计算方法来完成
在这里的我只是给大家介绍一种
新的相似度计算指标
公式列在这个地方
a、b代表是user
我要计算他们俩的相似度
这是用户a对商品P的打分
这是用户b对商品P的
这样一个打分
那么大家可以看到
在Pearson correlation里面
我们不是直接用相似度的打分
我们还减去了
这个用户的平均打分
考虑到了不同用户的差值
这样一个相似度计算
它的取值范围在-1到1之间
-1到1代表一个什么意思呢
-1到-0.7代表强烈的不相关
0.7到1代表它是正向相关的
接下来
如果利用这样一个相似度计算
我们已经计算出
用户和用户之间的相似度了
接下来我们该怎么来做呢
比如说我们知道Alice和User1
根据刚才的相似度计算
我们得到了0.85
Alice和User2是0.7
Alice和User3是0
Alice和User4是-0.79
相似度算完了
我们看一下前面的幻灯片
我们要算什么呢
我们要知道那么这些用户当中
我取哪些用户的打分
来作为我最终的打分呢
这个时候呢我们这里给出了一个
供大家参考的计算公式
每个用户和用户之间相似度
我已经算出来了
下面的是这样一个求和的平均
但是大家注意一下
相似度算出来之后
我还乘了一个这样的系数
这个系数考虑的是
rating differences
也就是不同的用户他的打分习惯
有的人习惯打高分
有的人习惯打低分
我要把这个平均值减去
来把这个偏差给去掉
所以同时还会加上
因为我要预测
a对这个商品的打分
我也加上a的平均打分值
所以实际上也是考虑到了
这样一个打分的偏差问题
当然你也可以直接用
加权平均的方法来完成
这个取决于具体的数据的应用
这个公式只是给大家一个建议
所以那我根据刚才的
这样一个公式
我们究竟怎么来算呢
我们可以User3和User4
一个是0,一个是负的
我没必要去考虑了
那么我们就考虑User1和User2
当然有同学会说
老师我就想考虑User3和User4
可不可以呀?也可以
但是在这里我的选择是
去掉0和负数
这里我就只剩下了
User1和User2
在User1和User2
作为Alice的邻居
我知道
User1和Alice的相似度是0.85
User2和Alice的相似度是
多少呢?0.7
每一个User
他对这个商品的打分
我还要减去
大家看到没有
我要减去我的平均打分
这样考虑我打分的偏差
同时User2
对这样一个商品的打分
也要减去User2的平均打分
考虑偏差
最后加上用户a
他自己的平均打分
整个的最终算的结果
作为用户a
对某个商品的预测打分
在这里面我们算出来是4.87
也就是说我们可以考虑
把Item5推荐给用户Alice
刚才我们已经讲解了
基于用户的这样一个推荐
基于用户的这样一个推荐
会带来一些什么问题呢
大家看我要算每个用户和
每个用户之间的相似度
在互联网上用户的个数
可能会远远超过商品的个数
特别像Amazon这样的
全球电商网站
用户的个数是非常多的
每一个都去算
显然这个时间复杂度太高了
所以在这里
2001年我们提出的这样一个
和基于User的协同过滤
比较类似的
叫基于Item的协同过滤
这个思想非常简单
我们同样也举
刚才那个Alice的例子
我还是想知道Alice
是对Item5的打分是多少
前面我们计算的是
Alice和User1的相似度
Alice和User2的相似度
Alice和User3的相似度
Alice和User4的相似度
现在我不这么来算了
我不算你也不算他
我算什么呢
我算和Item5相似的商品有哪些
是Item4和5相似吗
是Item3和5相似吗
是Item1和5相似吗
如果是Item1和Item5相似
Alice对Item1打了5分
那么对它(Item5)的打分
可以基于这个相似度来进行判断
所以我们把
基于用户的相似度的计算
变成了基于商品的相似度的计算
同样
我们可以按照刚才的计算方法
用我们的Pearson correlation
来计算
也可以我们前面所学的
基于什么夹角余弦的
这样一个点积的计算
也就是说我们把商品都看成向量
5,3,4,3,1
这两个向量之间的运算
我们可以用这样一种方式来实现
当然你也可以用欧氏距离
我们说了在这里
我们有很多相似度计算的指标
可供大家选择
最后当我算出相似度之后呢
我就可以对它的打分进行预测了
刚才我们简要地介绍了
基于Item的协同过滤
大家可以看到
无非是把用户的相似度计算
换成了基于商品的相似度计算
似乎可以用来解决
大数据分布计算的问题
但是实际上
我们说了
它并不能完整地解决这些问题
需要做很多预处理的工作
这是2003年
Amazon网站做的一些事情
它提前,大家注意这个单词
in advance
也就是提前计算
任何两个商品之间两两相似度
然后由于商品,在在线的时间
我们用的这个用户的邻居
也就是说商品的邻居数
相对要少一些
我们只考虑哪些用户打过分的
或者说打分比较高的
比如说打1分的
你完全没有必要去算
所以在这里面,通过一些预处理
来解决一些大数据的计算问题
这就是Amazon网上的
基于商品的这样一个
协同过滤的推荐
在本讲的前面
我也给大家演示了这样一个例子
在Amazon的网上
你可以告诉Amazon我喜欢什么
你也可以根据别人购买的商品
来给你进行推荐
今天我们给大家介绍了
基于用户的协同过滤
和基于商品的协同过滤
在这两种方法当中
我们都需要计算用户的相似度
和商品之间的相似度
特别是在计算用户的相似度当中
实际上我们是在寻找用户的朋友
也就是用户的community
随着现在社交网络的盛行
那么社交网络上的朋友
是不是也能够给我们
提供更多的信息
来帮助我们做商品的推荐
那么这一部分内容
大家去参考更多的资料
来获取相关的信息
本节课的内容到此结束
感谢大家的观看
-第1讲 大数据与数据挖掘概述
-第2讲 频繁项集和关联规则的基本概念
-第3讲 Apriori算法
-第4讲 Apriori算法的改进与兴趣度度量
-第5讲 分类的基本概念
-第6讲 决策树
--第6讲 决策树
-第7讲 简单贝叶斯分类
-第8讲 聚类的基本概念
-第9讲 K-Means & K-Medoids Clustering
--第9讲 K-Means & K-Medoids Clustering
-第四章 聚类算法--习题
-第10讲 大数据处理平台Hadoop
-第11讲 MapReduce编程
-第12讲 大数据处理平台Spark
-第13讲 NoSQL数据库
-第14讲 Web信息检索简介
-第15讲 信息检索之倒排索引
-第16讲 信息检索之TFIDF
--Video
-第17讲 信息检索之相似度排序
-第18讲 Web搜索之链接分析
-第19讲 Web搜索之PageRank
-第20讲 Lucene信息检索平台
-第七章 Web链接分析--习题
-第21讲 推荐系统简介
-第22讲 推荐系统之协同过滤
-第23讲 Mahout数据挖掘平台
-第24讲 信息过滤评价体系
-第八章 推荐系统--习题一
-第八章 推荐系统--习题二
-综合编程题