推荐系统常用来解决TopN问题和用户行为预测问题
• 优点• Item-Based CF
比如一个商品item(程序员看做商品的元数据),用户A只点击了1次打一分,用户B都没点击打0分,用户C不但点击了还加入了购物车打3分,由此得到正排表 item=userA:1 userB:0 userC:2,这是CF。而推荐算法CB,是通过中文分词对item的元数据得到的正排表 item=token1:score token2:score token:score,由此可见,CB和CF的区别并不是很大他们都能得到item-item矩阵和user-user矩阵,只不过是CB的基于内容到CF基于行为的变化而已。
CB可以更新user-item(CF)矩阵
比如user历史上看过itemA、itemB、itemC,我们可以通过item-item矩阵,给用户推荐新的商品itemM、itemN
– 将N(u)喜欢的物品推荐给用户.
通过UI矩阵做任一两个user的相似度计算得到UU矩阵(如图对两个向量先做归一化、去模,然后计算余弦相似度)
通过UU矩阵找到看过titannic且相似度最大的用户B、D,预测出用户C可能会对titannic打分4.05
Item-BasedCF– 把和R(u)相似的物品推荐给u.
user based和item based得到的分数不能直接相比较,没有可比性,因为得到分数的机制不同,所以不能因为谁高而选谁,只能根据上图的场景来具体选择合适的方式。
user based之所以令人难以解释,是因为用户不知道是通过哪个用户的相似度来推荐。
• 引入专家知识,通过一定高效方式迅速建立起物品的相关性矩阵
• 输入数据--user-item的稀疏矩阵 输出数据--user-item的密集矩阵
• 相似度计算公式
rui、ruj为用户U分别对物品i、j两个item的打分,是归一化后的分数向量,如上图A(5,1,2,2)->A(0.857,0.171,0.343,0.343)
• 详细Hadoop过程:– 在MR的map阶段将每个用户的评分item组合成pair
– 在reduce阶段,将map中过来的数据按照相似度计算公式扫一遍即可求得所有item的相似度。
为了得到UU矩阵->我们需要提前准备UI矩阵和IU矩阵
为了得到II矩阵->我们需要提前准备IU矩阵和UI矩阵
缺点:如果M的转置矩阵特别大,那么每个节点可能导致数据存不下