推荐系统初探

推荐算法

推荐算法通过利用用户的一些行为,通过一些数学算法,推测出用户可能喜欢的东西,筛选合适的数据集,推荐给用户。

推荐算法的分类

基于人口统计学的推荐

基于人口统计学的推荐(Demographic-based Recommendation)易于实现的推荐方法,它根据系统用户的基本信息发现用户的相似度,然后将相似用户喜爱的其他物品推荐给当前用户。
工作原理图:
image
系统对每个根据每个用户的基本信息,计算用户的相似度。比如系统通过计算发现用户A和C比较相似。就会把A喜欢的物品推荐给C。

基于内容的推荐

工作原理图:
image
如图给出的一个电影推荐系统,首先对电影的元数据建模,然后计算电影间的相似度。如 A 和 C 会被认为是相似的电影。最后实现推荐,我们可以给用户A推荐类似于电影A的电影C。

基于协同过滤的推荐  

基于用户的协同过滤推荐

基本假设:喜欢类似物品的用户,可能有相似的口味和偏好
主要步骤:
(1)找出和目标用户兴趣相似的用户集合
(2)找到用户集合中A的同类用户喜欢的,A没有接触的物品推荐给A
相似度计算:
(1)Jaccard公式
image
(2)余弦相似度
image
其中,N(u),N(v)分别代表用户u,v的兴趣集合。
用户行为记录表:
image
如图,用户A对物品{a, b, d}有过行为,用户B对物品{a, c}有过行为,利用余弦相似度公式计算用户A和用户B的兴趣相似度为:
image
用户相似度矩阵:

A B C D
A 1 1/√6 1/√6 1/3
B 1/√6 1 0 1/√6
C 1/√6 0 1 1/√6
D 1/3 1/√6 1/√6 1

改进型用户相似度计算
image
该方法通过 1/log2(1+|N(i)|) 惩罚了用户u,v共同兴趣列表中热门物品对他们相似度的影响。
用户对物品感兴趣程度公式:
image
其中,wuv是用户u、v的相似度,rvi代表用户对物品的兴趣(此处取1)。
推荐列表(假设推荐用户数取3):
与A相似的用户为B、C、D,筛选B、C、D感兴趣的物品并且A未关注的,那么A对物品c、e的兴趣为:
p(A,c)=wAB+wCD=0.7416
p(A,e)=wAC+wCD=0.7416

基于人口统计学的推荐和基于用户的协同过滤推荐都是计算用户的相似度,但二者在相似度的计算上有所不同,前者只考虑用户本身的特征,后者会在用户的历史偏好数据上计算用户相似度。

基于项目的协同过滤推荐

主要步骤:
(1)计算物品之间的相似度
(2)根据物品的相似度和用户的历史行为给用户生成推荐列表
相似度计算:
image
相似度矩阵:
image
推荐结果的算法类似于【基于用户的协同过滤推荐】,略之。

基于内容的推荐和基于项目的协同过滤推荐同样都是基于物品相似度进行推荐,只是相似度计算的方法不一样,前者是是基于物品本身的属性特征信息,而后者会从用户历史的偏好推断。

协同过滤总结

UserCF、ItemCF比较:
UserCF侧重于挖掘有共同兴趣的人喜欢的物品,反应用户兴趣相似的群体热点,更加社会化;
ItemCF侧重于挖掘用户曾经喜欢过的类似的物品,维系用户的历史兴趣,更加个性化;

UserCF ItemCF
性能 适用于用户较少的场合,如果用户很多,计算用户相似度矩阵代价很大 适用于物品数明显小于用户数的场合,如果物品 很多(网页),计算物品相似度矩阵代价很大
领域 时效性较强,用户个性化兴趣不太明显的领域 长尾物品丰富,用户个性化需求强烈的领域
实时性 用户有新行为,不一定造成推荐结果的立即变化 用户有新行为,一定会导致推荐结果的实时变化
冷启动 在新用户对很少的物品产生行为后,不能立即对他 进行个性化推荐,因为用户相似度表是每隔一段时间离线计算的;新物品上线后一段时间,一旦有用户对物品产生行为,就可以将新物品推荐给和对它产生行为的用户 兴趣相似的其他用户 新用户只要对一个物品产生行为,就可以给他推荐和该物品相关的其他物品;但没有办法在不离线更新物品相似度表的情况下将新物品推荐给用户
推荐理由 很难提供令用户信服的推荐解释 利用用户的历史行为给用户做推荐解释,可以令用户比较信服

CF的优势:
a 它不需要对物品或用户进行严格建模,不要求物品的描述是机器可理解的,所以这种方法也是领域无关的。
b 这种方法计算出来的推荐是开放的,可以共用他人的经验,很好的支持用户发现潜在的兴趣偏好。
CF的不足:
a 方法的核心是基于历史数据,所以对新物品和新用户都有“冷启动”的问题。
b 推荐的效果依赖于用户历史偏好数据的多少和准确性。
c 在大部分的实现中,用户历史偏好是用稀疏矩阵进行存储的,而稀疏矩阵上的计算有些明显的问题,包括可能少部分人的错误偏好会对推荐的准确度有很大的影响等等。
d 对于一些特殊品味的用户不能给予很好的推荐。
e 由于以历史数据为基础,抓取和建模用户的偏好后,很难修改或者根据用户的使用演变,从而导致这个方法不够灵活。

混合的推荐机制

在现行的 Web 站点上的推荐往往都不是单纯只采用了某一种推荐的机制和策略,他们往往是将多个方法混合在一起,从而达到更好的推荐效果。关于如何组合各个推荐机制,这里讲几种比较流行的组合方法。

  • 加权的混合(Weighted Hybridization): 用线性公式(linear formula)将几种不同的推荐按照一定权重组合起来,具体权重的值需要在测试数据集上反复实验,从而达到最好的推荐效果。
  • 切换的混合(Switching Hybridization):前面也讲到,其实对于不同的情况(数据量,系统运行状况,用户和物品的数目等),推荐策略可能有很大的不同,那么切换的混合方式,就是允许在不同的情况下,选择最为合适的推荐机制计算推荐。
  • 分区的混合(Mixed Hybridization):采用多种推荐机制,并将不同的推荐结果分不同的区显示给用户。其实,Amazon,当当网等很多电子商务网站都是采用这样的方式,用户可以得到很全面的推荐,也更容易找到他们想要的东西。
  • 分层的混合(Meta-Level Hybridization): 采用多种推荐机制,并将一个推荐机制的结果作为另一个的输入,从而综合各个推荐机制的优缺点,得到更加准确的推荐。

推荐引擎的应用

豆瓣猜

豆瓣是国内做的比较成功的社交网站,它以图书,电影,音乐和同城活动为中心,形成一个多元化的社交网络平台。
豆瓣图书推荐:
image
豆瓣电影推荐:
image

补充

补全用户缺失评分数据

SlopeOne 算法

采用均质化的思想来掩盖个体的打分差异。
计算方法:

rating 洗衣机 电冰箱
张三 5 10
李四 4 5
王五 4 ?

SlopeOne 算法采用均值化的思想,R王五 = 4-{ [ (5 - 10) + (4 - 5) ] / 2} = 7

对于多组数据:
rb = (n * (ra - R(A->B)) + m * (rc - R(C->B))) / (m+n)
其中,a,b,c 代表“商品”;ra 代表“商品的打分值”;R(A->B) 代表“A组到B组的平均差(均值化)”;m,n 代表人数。

rating 洗衣机 电冰箱 彩电 空调
张三 5 10 10 5
李四 4 5 4 10
王五 4 10 ? 5

R王五 = (2 * (4 - R(洗衣机->彩电)) + 2 * (10 - R(电冰箱->彩电))+ 2 * (5 - R(空调->彩电)))/(2+2+2)=6.8

系列文章:
推荐系统的常用算法概述
从算法到案例:推荐系统必读的10篇精选技术文章
机器学习相关——协同过滤
推荐引擎初探
推荐算法综述(一)
推荐算法综述(二)
推荐算法综述(三)
推荐算法综述(四)
推荐算法综述(五)
从item-base到svd再到rbm,多种Collaborative Filtering(协同过滤算法)从原理到实现
推荐算法之 Slope One 算法
SlopeOne 算法
推荐算法之 slope one 算法-CSDN
推荐算法之 Slope One 算法-博客园
经典算法题每日演练——第六题 协同推荐SlopeOne 算法
使用SVD++进行协同过滤(算法原理部分主要引用自他人)-布布扣-bubu—-
Slope One Predictors for Online Rating-Based Collaborative Filtering
知乎上的推荐算法相关问题


来源:http://leunggeorge.github.io/

0%