初谈推荐算法:协同过滤推荐(CF)算法
本章主要讲解协同过滤推荐(CF)算法的基础
协同过滤简单来说就是利用某兴趣相投,拥有共同经验之群体的喜好来推荐用户感兴趣的信息。个人通过合作机制基于信息相当程度的回应(如评分)并记录下来以达到过滤的母的进而帮助别人筛选信息,回应不一定局限于特别感兴趣,特别不感兴趣的记录也是相当重要的
下面我们讲解一下协同过滤的系统框架
1、系统通过收集和归纳用户的行为数据,抽象生成了User-Itemd矩阵,即UI矩阵;
2、 User-Item矩阵通过相似性计算根据不同的业务需求生成User-based或者Item-based,即UU矩阵和II矩阵。
3、UU和II矩阵的数据可以看成key-valule的形式,所以这些数据可以j建成UU索引和II索引,存入数据库,即相似性索引。
至此用户的索引库建立完毕。
当用户正在触发一个行为的时候,就可以通过用户的行为信息查询索引库,返回推荐序列。
User-Item矩阵是一个稀疏矩阵,其特点是:有值得单元特别少,节省存储空间,计算速度快
协同过滤的优缺点
优点:
1、利用了群体智慧;
2、推荐精度高于CB;
3、利用挖掘隐含的相关性。
之所以推荐,不是因为简简单单的user,item之间的对应关系,而是需要成千上万的数据积累,积累的数据越多推荐效果越好,推荐精度越高,而且有很多的推荐原因是只可以意会,不可言传的;
CF的推荐算法优于CB的推荐算法
缺点:
1、行为数据稀疏,推荐结果不准确;
2、推荐结果解释性差;
3、冷启动问题;
4、对时效性强的Item不适用。
CF推荐算法分为两个子类:
1、User-Based CF
2、Item-Based CF
接下来我们看一下这两类协同算法的差异
1、User-Based CF:
假设:
1)用户喜欢那些跟他有相似爱好的用户喜欢的东西
2)具有相似兴趣的用户未来也具有相似兴趣
方法:
1)给定用户u,找到一个用户的集合N(u),他们和u具有相似的兴趣
2)将N(u)喜欢的物品推荐给用户
如下图所示:
图中两个user都具有相同的爱好就是吃披萨和莎拉,那么这两个user之间的相似兴趣爱好,而右边的user还喜欢喝可乐,那么我们就可以根据这两个user之间的相似爱好,将右边user喜欢的可乐推荐给左边的user,左边的user大概率的也会喜欢可乐。
所以,这张图就很好的解释了User-Based CF的思想
下面我来看一个UI矩阵
A,B,C,D代表四个用户,即user
Matrix,Titanic,Die Hard,Forrest Gump,Wall-E代表四个电影,即四个物品item
矩阵值代表用户对物品打分,其中’?’代表该用户还没有对该物品打分
左边的UI矩阵通过计算获得到右边的UU矩阵
UU矩阵值代表用户之间的关系,其中分数值越小,代表两个用户之间的关系越远,分数值越大,代表两个用户之间的关系越近
有了这个UU矩阵,就可以解决评分预测的问题了
如:预测一下用户C对Titanic的评分,我们就可以结合周边好友的信息,来预测
直接套用图中的公式预测数用户C对Titanic的评分是:4.05分
2、Item-Based CF:
假设:
1)用户喜欢跟他过去喜欢的物品相似的物品
2)历史上相似的物品的未来也相似
方法:
1)给定用户u,找到他过去喜欢的物品的集合R(u)
2)把和R(u)相似的推荐给u
下面我们来看一个UI矩阵:
A,B,C,D代表四个用户,即user
Matrix,Titanic,Die Hard,Forrest Gump,Wall-E代表四个电影,即四个物品item
矩阵值代表用户对物品打分,其中’?’代表该用户还没有对该物品打分
左边的UI矩阵通过计算获得到右边的II矩
II矩阵值代表物品之间的关系,其中分数值越小,代表物两个品之间的关系越远,分数值越大,代表两个物品之间的关系越近。
同理,有了这个UU矩阵,就可以解决评分预测的问题了
如:预测一下用户C对Titanic的评分,我们就可以结合周边好友的信息,来预测
直接套用图中的公式预测数用户C对Titanic的评分是:3.72分
对这个预测评分这里要说明一点,其实这个分数在大概率范围内是不非常重要的,以为我们推荐问题一般解决的是一个TopN的问题,返回的一般都是一个有序的序列,所以获取的这个分数只要能够排序,就可以了。
换个角度在来看看User-Based CF 和Item-Based CF的区别
从水平角度来看是考察用户与用户之间的关系,即User-Based CF
从处置角度来看是考察用户自身行为之间的关系,即Item-Based CF
User-Based CF 和 Item-Based CF比较
最后讲一下冷启动问题解决方案:
冷启动分为三类:用户冷启动,物品冷启动,系统冷启动
1、用户冷启动解决方案:
1)提供热门排行榜,等用户数据收集到一定程度在切换到个性化推荐
2)利用用户注册时的年龄,性别等数据做粗粒度的个性化推荐
3)利用用户社交网络账户,导入用户社交网络上的好友信息,然后给用户推荐其好友喜欢物品
4)在用户新登录时要求其对一些物品进行反馈,收集这些兴趣信息,然后给用户推荐相似的物品
2、物品冷启动解决方案:
1)给新物品推荐给对它感兴趣的用户,利用内容信息,将他们推荐个喜欢过他们相似的物品的用户
2)物品必须能够在第一时间展现给用户,否则经过一段时间后,物品的价值及大大降低了
3)User和Item CF都行不通,只能利用CB解决该问题,频繁更新相关性数据
3、系统冷启动
引入专家知识,通过一定高效方式迅速建立物品的相关性矩阵