推荐系统之--CF算法

上一节我们已经讲了CB算法这一次我们就来介绍推荐系统下一个算法:

CF(Collaborative Filterin)基于协同过滤的推荐算法

CF算法包含如下两类:

User-Base CF 和 Item-Base CF 

CF算法和CB算法不同的是数据源是基于用户历史行为和物品的矩阵数据即UI(User—Iterm)矩阵数据,用户的行为通过一个表格来归纳起来。

协同过滤输入数据只需要三个维度:userid ,itemid, score :就是这个人对这个物品的打分,打分就是对一个物品的喜爱程度。

工作原理:

1.从用户的历史行为信息里抽取出了UI矩阵。UserA->item:score item:score

2.得到了UI矩阵,就可以生成UI的转置IU矩阵*UI矩阵 得到 II矩阵【行和列都是Item】就是我给你一个itemA->item1:score item2:score 和UI矩阵*IU矩阵得到UU矩阵【行和列都是User】,UserA->user1:score user2:score 

3.将得到的II矩阵放入II矩阵 NoSQL数据库中和UU矩阵放入UU矩阵 NoSQL数据库。

4.若此时用户点击《张学友的爱情片》,这时系统会拿到这个item将《张学友的爱情片》作为key 去查 II 矩阵 NoSQL数据库的其他的item1:score item2:score

5.若此时业务场景为QQ一个用户B,在用户的首页去推荐给其他好友,这时候就会去请求UU矩阵,因为这时候用户作为key,给你推荐相关的其他好友当然也是用户。

6.最终根据推荐返回相似度较高的再经过一些精排的过程,展示前5名在用户的推荐列表中。

优缺点:

优点 缺点
充分利用群体智慧【积累很多的用户量】 推荐结果解释性差【通过好友推荐,无法解释item为什么推荐给你】
推荐精度高于CB【UI矩阵积累的数据量越多,精度越高,CB只基于文本的分词内容,信息量少】 对实时性强的item不适用【新上架的物品,系统里的矩阵没有相关数据,即达不到推荐】
利于挖掘隐含的相关性【不能表达为什么你喜欢这个物品】 冷启动问题【UI矩阵没有数据,无法通过协同过滤进行推荐】

1.User-Base CF

原理:

  1. 用户喜欢那些跟他有相似爱好的用户喜欢的东西   【用户与用户之间做比较】

  2. 具有相似兴趣的用户在未来也具有相似的兴趣

方法:

  1. 给定用户u,找到一个用户的群体也就是集合N(U),他们具有相似的兴趣

  2. 将N(u)喜欢的物品推荐给该用户

通俗理解:

User Item
U1 足球,排球,篮球,高尔夫
U2 足球,排球,篮球

    例子一:以上表格U1喜欢足球,排球,篮球,高尔夫,U2也喜欢足球,排球,篮球,但是U1还喜欢高尔夫,由于U1和U2是好友,于是就将高尔夫推荐给U2用户。

    例子二:使用UI矩阵解释:假设有四个用户,他们分别喜欢如下电影,那么我们要对c用户来推荐Titanic,这个概率该怎么计算呢,首先我们知道四个用户的Ui矩阵,然后我们根据矩阵公式,转换成UU矩阵,这里要提出一点的是,在转换的过程中要求相似度,怎么求呢 ? 其实就是计算cosin的相似度:

我们通过以上计算能得到UU矩阵,然后开始对C用户做数据分析,跟c关系好的,看UU矩阵,我们用BD两个人来给C推荐Titanic,

那么途中是如何计算的? 首先看右边的UU矩阵,B和C的相似度为0.97 ,而B对Titanic打了5分,因此喜爱程度为0.97*5,同理

D和C的相似度为0.87 ,而D对Titanic打了3分,因此喜爱程度为0.87*3,二者相加除以相加然后除以各相似度之和,因此最终的相似度为右下角的公式。

2.Item-Base CF

原理:

  1. 用户喜欢跟他过去喜欢的物品相似的物品   【从用户的历史行为中进行比较】

  2. 历史上相似的物品在未来也相似

方法:

  1. 给定用户u,找到他过去喜欢的物品集合R(u)

  2. 把和R(u)相似的物品推荐给u

通俗理解:

User Item
U1 手机,手机膜
U1 手机耳机

    例子一:以上表格U1在淘宝上购买了手机,手机膜,基于用户的历史推荐和历史物品相似的物品如手机耳机等。

    例子二:同样用刚刚那个例子,用户c没有看过Titanic,我们怎么根据用户看过的电影来推荐Titanic,同样通过UI 矩阵我们得到II矩阵,这里计算相似度方法一样得到右边这个II矩阵

这里我们就要基于用户C的历史行为来给C推荐Titanic,那么途中是如何计算的? 首先看右边的UU矩阵,Matrix和Titanic的相似度为0.57 ,而C对Matrix打了2分,因此喜爱程度为0.57*2,同理DieHard和Titanic的相似度为0.80 ,而C对DieHard打了3分,因此喜爱程度为0.80*3,依次类推,将用户C所有观看的电影的喜爱程度相加除以相加然后除以各相似度之和,因此最终的相似度为右下角的公式。

通过两种方法,存在一定的差别,但是这个不重要,生活中我们一般是基于用户给用户推荐Top问题,而不是打分情况,即只要排好序就可以。

使用准则:

    一般我们有这么个准则,哪个维度小用哪个,电商网站物品的矩阵远大于用户矩阵,规模太大有时候造成一些慢,相反一样。

优缺点:

项目

UserCF

ItemCF

性能

适用于用户较少的场合,如果用户过多,计算用户相似度矩阵的代价交大

适用于物品数明显小于用户数的场合,如果物品很多,计算物品相似度矩阵的代价交大

领域

实效性要求高,用户个性化兴趣要求不高,注重实效性

长尾物品丰富,用户个性化需求强烈,注重个性化

实时性

用户有新行为,不一定需要推荐结果立即变化,矩阵计算很长时间,等计算出来结果已经不实时了,实时性差

用户有新行为,一定会导致推荐结果的实时变化

冷启动

在新用户对少的物品产生行为后,不能立即对他进行个性化推荐,因为用户相似度是离线计算的 

新物品上线后一段时间,一旦有用户对物品产生行为,就可以将新物品推荐给其他用户

新用户只要对一个物品产生行为,就能推荐相关物品给他,但无法在不离线更新物品相似度表的情况下将新物品推荐给用户

推荐理由

很难提供

可以根据用户历史行为归纳推荐理由

冷启动:

    用户冷启动:在用户登录的时候要求其对一些物品反馈,收集这些信息,然后给用户推荐其他好友喜欢的物品。

    物品冷启动:将新物品推荐给可能对他感兴趣的用户,利用内容信息,将他们推荐给喜欢过和他们相似的物品的用户。

    系统冷启动:引入专家知识,通过一定的高效性建立起物品的相关性矩阵。

猜你喜欢

转载自blog.csdn.net/u013953226/article/details/81205355