APP下载

几种推荐算法的学习

2019-12-12李科文张必武陈发燕唐莹

现代营销·经营版 2020年1期
关键词:矩阵物品算法

李科文 张必武 陈发燕 唐莹

基金项目:西北民族大学2019本科生科研创新项目《基于混合推荐算法的网络课程获取系统》;项目编号:XBMU-BYL19154

摘 要:每当我们打开淘宝时,你会发现,首页的推荐商品是你前几天搜索过或者浏览过的商品的同类商品。打开今日头条,每次他都能精准的为你推送你想看到的新闻。又例如你喜欢看关于猫的视频,在抖音、快手中看了很多条关于猫的视频,那么你会发现,你下面的视频中,关于猫的视频占比会非常之大。而这些,都是使用了各种种类的推荐算法,以此做到精准的个性化推荐。例如,微博的热搜榜,就是使用了基于热度的推荐算法。当然,不管是对于商品还是新闻(以下简称item)的推荐,不止是一种推荐算法在里面发挥作用。是多种推荐算法的融合、取权,再推荐组合。

关键词:推荐算法;热搜榜

一、基于热度的推荐算法

热度推荐算法,是计算该item在全站中的热度排名并将前几名推荐给用户的算法。

对于item的热度值的计算公式可以是:总热度=基础热度+用户交互热度-时间衰减热度。不同item基础热度的取值不应该是固定的、相同的。因为不同时期,用户对不同item的兴趣度不同。例如在网络课程类APP的推荐中,当英语四六级或计算机二级成绩出来后。相关类课程视频必定会受到没通过的考试的喜爱,對于其的搜索势必也会增加。因此,基础热度的取值应当不一样,可以使用热词匹配的方法,将不同种类的item的基础热度区分,以达到更精准的推荐。用户交互热度是指用户对于某个item的交互行为产生的热度,可以是点赞(fabulous)、分享(share)、收藏(favor)、评论(comment)等。当用户对一个item产生交互时,我们就可以根据交互种类分别乘以对应的热度分累加在之前的热度上。当然,不同种类的热度分是需要根据交互的重要程度设定的。例如对于收藏的热度分是要大于点赞的。并且不同种类的交互行为热度分也需要根据用户规模适当增加或减少,应当按热度分和用户规模的比例。

有些item具有时效性,当一段时间过去后,其重要性就会大大减少。因此需要一个时间衰减热度,与之前算出来的热度相减去来使过期item降低排名。而这个时间衰减热度不应该是线性的。参考牛顿冷却定律,这个衰减公式应该是一个指数函数:

T(Time)=e

其中T1为当前时间,T0为item发布时间。最终热度也需要随时间的发展而无限趋近为0。因此,最终的总热度公式修改为:

总热度=(基础热度+用户交互热度)/T(Time)

二、基于用户的协同过滤推荐算法(ItemCF)

(一)用户行为数据

对于用户行为数据的获取,最简单的一种形式应当是日志。用户对于单个item的点击、收藏、好评等称为显性反馈行为,对于单个item的浏览、频繁搜索等称为隐形反馈行为。

(二)算法实现

这个算法是给用户推荐和他品味差不多的其他用户喜欢的item,主要包括:

1.找到和目标用户兴趣相似的用户集合。

2.找到这个集合中的用户喜欢的,且目标用户没有浏览过的item推荐给目标用户。

对用户行为的相似度计算,我们是通过余弦公式或者jarccard进行计算的:设N(u)为用户U虚幻的物品集合,N(v)为用户v喜欢的物品集合。通过jarccard公式,计算u和v的相似度为:

Wuv=

利用余弦公式计算相似度:

Wuv=

下面计算用户两两之间的相似度矩阵

因为利用余弦公式,计算相似度的时间复杂度为O(N2),耗时巨大。因此需要建立一张item到用户之间的倒排表来排除没有任何联系的用户之间的相似度计算,再根据倒序表计算共同评分过的矩阵。设用户A评价过的item有abd,B评价过的有ac,C评价过的有b、c,D评价过的有cde。则有如下表:

其中每个数值都代表余弦相似度中的分子部分,通过分子除以分母以得到最终的用户兴趣。就是可以通过上图中的共同评分过的物品的矩阵转换为用户之间的相似度矩阵,且只用计算非零的部分。比如要计算A与B的用户相似度时。AB矩阵值为1,即他们共同交集的物品为1。A总共评分过的物品个数为3,B共同评分过的物品个数为2,可计算出相似度为

筛选出k个与用户目标最相似的用户

在计算出用户之间的相似度后,通过以下公式给用户推荐和他兴趣最相似的K个用户喜欢的物品。

S(u,K)是和用户u兴趣最相近的K个用户,N(i)是对物品i有过行为的用户集合,Wuv是用户u和v的兴趣相似度,rvi为1.例如,对目标用户A进行推荐。选取K=3,用户A对物品c,e没有过行为,因此可以把这三个物品推荐给A,通过计算得用户A对c的兴趣为p(A,c)=WAB+WAD=0.7416,对e的兴趣为p(A,c)=WAC+WAD=0.7416。

三、基于内容的推荐算法(CB)

CB算法是最早被应用到推荐算法中的,它是根据用户过去喜欢的item,为用户推荐与之类似的item。

它一般分为三个步骤:

1.物品表示:为每个item概括出一些特征(也就是item的content)来表示此item。

2.特征学习:利用一个用户过去喜欢和不喜欢的item的特征数据,以此学习出此用户的喜好特征(profile)。

3.生成推荐:通过比较上一步得到的用户profile与候选的item的特征,为此用户推荐一组相似度最大的item。

那么如何知道用户的喜好呢,可以在用户注册后就让用户选择感兴趣的分类,这也是较为常见的做法。我们也会获取用户的历史浏览的数据,对于用户历史浏览较高的分类关键词提取。对于item的特征获取,我们可以在入库时就为这个item添加分类标签。

结束语:

当然,推荐算法不止这几种,并且,对于以上推荐算法在项目中的使用,也需要反复的推敲,以达到精准的个性化推荐。

作者简介:李科文(1998-),男,汉族,西北民族大学,学士。研究方向:推荐算法。

猜你喜欢

矩阵物品算法
Travellng thg World Full—time for Rree
多项式理论在矩阵求逆中的应用
学习算法的“三种境界”
算法框图的补全
算法初步知识盘点
图画捉迷藏
矩阵
矩阵
矩阵
找物品