随着科技的飞速发展,日常所产生的信息也呈指数型暴增,但我们的时间一直都是不变的。如何在有限的时间里找到我们需要的信息,就是一个需要解决的问题。随着大数据和云计算的发展,出现了个性化推荐系统,从大量的数据中发现规律,将用户需要的内容送到用户眼前,同时也帮商家增加目标用户的触达率。今天我们就来探秘个性化推荐系统背后的神奇原理。
经常逛淘宝的宝宝们会发现,当你在淘宝搜索了一个商品后,在下次你打开淘宝时,整个淘宝的各个角落都可以看到你的搜索项的推荐,首页的“店铺推荐”“爱逛街”“猜你喜欢”,购物车的下方的“购物车帮你挑”,“商品详情页”最下方的“邻家好货”。而当你打开了一个商品查看后,接下来你就会不断的看到这家店的其他商品出现在你的瀑布流中。当你收藏了一家店铺后,接下来你搜索商品时,会发现收藏店铺的商品会排在瀑布流的前端。淘宝织就了一个天罗地网让你“剁手”停不下来。现在,我们就来解密下千人千面的淘宝背后的个性化推荐原理。
1.协同过滤
协同过滤(Collaborative filtering, CF)算法是目前个性化推荐系统比较流行的算法之一。协同算法分为两个基本算法:基于用户的协同过滤(UserCF)和基于项目的协同过滤(ItemCF)。
1.1 UserCF
基于用户的协同过滤简单来说就是,找到与目标用户兴趣相似的用户,然后将相似用户兴趣集有的而目标用户没有的推荐给目标用户。
怎么来确定相似用户呢?通过用户的人口属性、社会属性、行为数据、物品属性等。以淘宝为例,通过收货地址可以知道你的地域特征、通过你在淘宝的行为数据和购物数据可以推断你的性别、年龄区间、购物风格喜好、白领还是学生等,假定你是北京、20~30岁之间、白领、女生、偏爱通勤风格,以此就会给你推荐这一用户群体的加购物车的购买过的、但你没买过\不知道的商品。
1.2 ItermCF
基于商品的协同过滤简单来说,就是基于用户之前的消费记录,来判断用户可能还需要什么。比较出名的啤酒与尿布的故事就是这个道理,沃尔玛通过大量的购物数据发现,一般买尿布的都是下班男士顺便买的,通常他们都会顺便买两瓶啤酒,尿布和啤酒的关联度非常高,所以他们就将啤酒和尿布摆在了一起。我们要做的就是通过大量的数据分析,去发现物品之间的相关联度,从而进行个性化推荐。
1.3 对比
2.基于属性的推荐算法
2.1 基于用户标签推荐
统计用户最常用的标签,对于每个标签,统计被打过这个标签次数最多的物品,然后将具有这些标签的最热门的物品推荐给这个用户。这个方法非常适合新用户或者数据很少的冷启动,目前许多的app都会在新用户最初进入时让用户添加喜好标签方便为用户推送内容。
2.2基于商品内容的推荐算法
利用商品的内容属性计算商品之间的相似度,是物推物的算法。这种算法不依赖用户行为,只要获取到item的内容信息就可以计算语义级别上的相似性,不存在iterm冷启动问题。缺点就是不是所有iterm都可以非常容易的抽取成有意义的特征,而且中文一词多义和一义多词的复杂性也是需要攻克的一个难题。
3.基于矩阵分解的推荐算法
原理:根据已有的评分矩阵(非常稀疏),分解为低维的用户特征矩阵(评分者对各个因子的喜好程度)以及商品特征矩阵(商品包含各个因子的程度),最后再反过来分析数据(用户特征矩阵与商品特征矩阵相乘得到新的评分矩阵)得出预测结果;
这是一个非常优雅的推荐算法,因为当涉及到矩阵分解时,我们通常不会太多地去思考哪些项目将停留在所得到矩阵的列和行中。但是使用这个推荐引擎,我们清楚地看到,u是第i个用户的兴趣向量,v是第j个电影的参数向量。
所以我们可以用u和v的点积来估算x(第i个用户对第j个电影的评分)。我们用已知的分数构建这些向量,并使用它们来预测未知的得分。
例如,在矩阵分解之后,Ted的向量是(1.4; .8),电影A的向量是(1.4; .9),现在,我们可以通过计算(1.4; .8)和(1.4; .9)的点积,来还原电影A-Ted的得分。结果,我们得到2.68分。
4.基于热门内容的推荐(流行度算法)
为用户推荐流行度高的物品,或者说新热物品。例如最近北方天气突然降温,一大堆用户开始在淘宝搜索购买大衣或者羽绒服,淘宝就会为北方用户推荐大衣。55度杯新出时,所有人都会搜索购买,然后用户的瀑布流中就会出现55度杯。流行度算法很好的解决冷启动问题,但推荐的物品有限,不能很好的命中用户的兴趣点;其推荐列表通常会作为候补列表推荐给用户;在微博、新闻等产品推荐时是常用的方法。基本流程就是:确定物品的流行周期,计算物品在流行周期内的流行度,流行度高的物品作为被推荐的物品。
5.深度学习
在过去的十年中,神经网络已经取得了巨大的飞跃。如今,神经网络已经得以广泛应用,并逐渐取代传统的机器学习方法。
接下来,我要介绍一下YouTube如何使用深度学习方法来做个性化推荐。
毫无疑问,由于体量庞大、动态库和各种观察不到的外部因素,为YouTube用户提供推荐内容是一项非常具有挑战性的任务。
根据《Deep Neural Networks for YouTube Recommendations》(https://static.googleusercontent.com/media/research.google.com/ru//pubs/archive/45530.pdf),YouTube的推荐系统算法由两个神经网络组成:一个用于候选生成,一个用于排序。如果你没时间仔细研究论文,可以看看我们下面给出的简短总结。
以用户的浏览历史为输入,候选生成网络可以显著减小可推荐的视频数量,从庞大的库中选出一组最相关的视频。这样生成的候选视频与用户的相关性最高,然后我们会对用户评分进行预测。
这个网络的目标,只是通过协同过滤提供更广泛的个性化。
进行到这一步,我们得到一组规模更小但相关性更高的内容。我们的目标是仔细分析这些候选内容,以便做出最佳的选择。
这个任务由排序网络完成。
所谓排序就是根据视频描述数据和用户行为信息,使用设计好的目标函数为每个视频打分,得分最高的视频会呈献给用户。
通过这两步,我们可以从非常庞大的视频库中选择视频,并面向用户进行有针对性的推荐。这个方法还能让我们把其他来源的内容也容纳进来。
推荐任务是一个极端的多类分类问题。这个预测问题的实质,是基于用户(U)和语境(C),在给定的时间t精确地从库(V)中上百万的视频类(i)中,对特定的视频观看(Wt)情况进行分类。
6.LR逻辑回归
基于用户偏好矩阵,发展出了很多机器学习算法,在这里再介绍一下LR的思想。具体的逻辑回归,又分为线性和非线性的。其他的机器学习算法还有:K均值聚类算法,Canopy聚类算法,等等。
LR逻辑回归分为三个步骤:提取特征值;通过用户偏好矩阵,不断拟合计算,得到每个特征值的权重;预测新用户对物品的喜好程度。
7.推荐系统结构
参考资料: