转移
相对于搜索引擎的一种连接信息与人的方式。将推荐引擎看作黑盒,输入物品信息,输入用户信息,输出匹配关系。
如果你现在想看个电影,但你不知道具体看哪部,你会怎么做?大部分的人会问问周围的朋友,看看最近有什么好看的电影推荐,而我们一般更倾向于从口味比较类似的朋友那里得到推荐
推荐应该说分为两类:个性化推荐和非个性化推荐,“让全局优秀的内容被大家看到”应该算是非个性化推荐,基于人口统计信息的推荐,颗粒较为粗,热门榜单/最多观看这类方法可以简单解决这个问题;不同的人对于“好”的理解不一样,换句话说也就是偏好不同,所以推荐新加入的好内容我认为是个性化推荐问题。个性化推荐的两个主要思想八个字概括之:物以类聚、人以群分。
1、基于物品和用户的推荐模型。对物品(用户)建模,通常是标签或关键字,量化求解邻居进行推荐。基于用户的 CF(User CF)、基于物品的 CF(Item CF)。
(基于用户的邻居推荐方式)假设用户 A 喜欢物品 A,物品 C,用户 B 喜欢物品 B,用户 C 喜欢物品 A ,物品 C 和物品 D;从这些用户的历史喜好信息中,我们可以发现用户 A 和用户 C 的口味和偏好是比较类似的,同时用户 C 还喜欢物品 D,那么我们可以推断用户 A 可能也喜欢物品 D,因此可以将物品 D 推荐给用户 A。
(基于物品的邻居推荐方式)假设用户 A 喜欢物品 A 和物品 C,用户 B 喜欢物品 A,物品 B 和物品 C,用户 C 喜欢物品 A,从这些用户的历史喜好可以分析出物品 A 和物品 C 时比较类似的,喜欢物品 A 的人都喜欢物品 C,基于这个数据可以推断用户 C 很有可能也喜欢物品 C,所以系统会将物品 C 推荐给用户 C。
每首歌有超过 100 个元数据特征,包括歌曲的风格,年份,演唱者等等。
2、基于关联规则的推荐模型。发现用户与物品之间的关联关系。协同过滤推荐。
3、基于模型的推荐模型,机器学习的方式,训练用户喜好模型。
推荐模型与具体场景关系很大。物品数目与用户数目的关系也是其中的因素之一。
现行的推荐往往不是单纯用一种推荐模型,而是多种方式混合。1、加权的混合(Weighted Hybridization): 用线性公式(linear formula)将几种不同的推荐按照一定权重组合起来,具体权重的值需要在测试数据集上反复实验,从而达到最好的推荐效果。2、切换的混合(Switching Hybridization):前面也讲到,其实对于不同的情况(数据量,系统运行状况,用户和物品的数目等),推荐策略可能有很大的不同,那么切换的混合方式,就是允许在不同的情况下,选择最为合适的推荐机制计算推荐。3、分区的混合(Mixed Hybridization):采用多种推荐机制,并将不同的推荐结果分不同的区显示给用户。其实,Amazon,当当网等很多电子商务网站都是采用这样的方式,用户可以得到很全面的推荐,也更容易找到他们想要的东西。4、分层的混合(Meta-Level Hybridization): 采用多种推荐机制,并将一个推荐机制的结果作为另一个的输入,从而综合各个推荐机制的优缺点,得到更加准确的推荐。
亚马逊推荐机制:
( 在做推荐时,设计和用户体验也做得特别独到:1、基于社会化的推荐,Amazon 会给你事实的数据,让用户信服,例如:购买此物品的用户百分之多少也购买了那个物品;2、基于物品本身的推荐,Amazon 也会列出推荐的理由,例如:因为你的购物框中有 ***,或者因为你购买过 ***,所以给你推荐类似的 ***)
今日推荐 (Today's Recommendation For You): 通常是根据用户的近期的历史购买或者查看记录,并结合时下流行的物品给出一个折中的推荐。
新产品的推荐 (New For You): 采用了基于内容的推荐机制 (Content-based Recommendation),将一些新到物品推荐给用户。在方法选择上由于新物品没有大量的用户喜好信息,所以基于内容的推荐能很好的解决这个“冷启动”的问题。
捆绑销售 (Frequently Bought Together): 采用数据挖掘技术对用户的购买行为进行分析,找到经常被一起或同一个人购买的物品集,进行捆绑销售,这是一种典型的基于项目的协同过滤推荐机制。
别人购买 / 浏览的商品 (Customers Who Bought/See This Item Also Bought/See): 这也是一个典型的基于项目的协同过滤推荐的应用,通过社会化机制用户能更快更方便的找到自己感兴趣的物品。
相似度计算:欧几里得空间距离,欧几里得向量夹角,皮尔逊相关系数,Cosine 相似度(也被广泛应用于计算文档数据的相似度),Tanimoto 系数(也称为 Jaccard 系数,是 Cosine 相似度的扩展,也多用于计算文档数据的相似度)
邻居算法:固定数量的邻居,不论邻居的“远近”,只取最近的 K 个,作为其邻居;固定距离范围内的邻居,落在以当前点为中心,距离为 K 的区域中的所有点都作为当前点的邻居,这种方法计算得到的邻居个数不确定,但相似度不会出现较大的误差。
某种协同过滤算法:
潜在因子算法(Latent Factor)。
这种算法的思想是这样:每个用户(user)都有自己的偏好,比如A喜欢带有小清新的、吉他伴奏的、王菲等元素(latent factor),如果一首歌(item)带有这些元素,那么就将这首歌推荐给该用户,也就是用元素去连接用户和音乐。每个人对不同的元素偏好不同,而每首歌包含的元素也不一样。
对于用户,定义潜在因子矩阵Q:(0为不喜欢,1为喜欢)
张三:小清新0.6,重口味0.8,优雅0.1,伤感0.1,五月天0.7;
对于物品,定义潜在因子矩阵P:
歌曲A:小清新0.9,重口味0.5,优雅0.3,伤感0.6,五月天0.4;
那么张三对音乐A的偏好为0.6*0.9+0.8*0.5+....
每首歌都有自己的偏好值。偏好值为用户与音乐的关系。
如何得到潜在因子?根据用户的行为。单曲循环=5, 分享=4, 收藏=3, 主动播放=2 , 听完=1, 跳过=-2 , 拉黑=-5。
那么用户的行为建立矩阵表,用户A
音乐a:5;音乐b:空缺;音乐c:空缺;音乐d:3;音乐e:-2;音乐f:-5;音乐g:空缺;音乐h:-2;音乐i:空缺;音乐j:2;
通过给定的矩阵表反推用户矩阵。