大数据背景的变频兴趣变化推荐算法研究

2020-06-29 23:57:09 《科技创新与应用》 2020年20期

冀晓亮 翁玉玲

摘  要:现有的适应兴趣变化的协同过滤算法不能反应用户兴趣变化的频率,对即时热点也不足够敏感。同时,因为计算量大,不适应大数据场景。为此我们采用对时间分层的推荐模型结合热点权重函数,解决了传统算法存在问题,在生产环境中具备较高的应用价值。

关键词:个性化推荐;协同过滤;推荐算法;兴趣变化;大数据推荐系统;相似度计算

中图分类号:TP391        文献标志码:A         文章编号:2095-2945(2020)20-0014-03

Abstract: The existing collaborative filtering algorithms that adapt to the change of interest can not reflect the frequency of the change of user interest, and are not sensitive to real-time hot spots. At the same time, because of the large amount of calculation, it does not adapt to the big data scene. For this reason, we use the time hierarchical recommendation model combined with the hot spot weight function to solve the problems of the traditional algorithm and have high application value in the production environment.

Keywords: personalized recommendation; collaborative filtering; recommendation algorithm; interest change; big data recommendation system; similarity calculation

1 概述

隨着时代的发展和互联网的进步,电子商务平台的数据规模变得越来越大,用户行为也越来越复杂。这种情况下,传统的协同过滤算法因为效率问题,难以满足电子商务应用的需求。基于大数据的快速、精准的推荐系统逐渐成为科研领域内的一项重要研究内容。

协同过滤的个性化推荐技术通过研究不同用户的兴趣,主动为用户推荐最需要的个性化资源,是使用最广泛并被认为最成功的个性化推荐技术。这种推荐算法的基本思想是根据用户兴趣的相似度计算来推荐资源,把和当前用户相似的其他用户的相关资源推荐给当前用户。

这种推荐算法的优点是无需考虑资源的表示形式,并能为用户发现新的感兴趣的资源。现有的协同过滤算法存在一个弊端:不能及时反映用户的兴趣变化。

为了更好的解决这个问题,常见的方式是在推荐算法中引入基于用户访问时间的权重函数和基于资源相似度的权重函数。经过类似处理,算法能更好地反应用户兴趣变化,提高推荐的准确性。但首先这种算法在计算兴趣变化时,采用了线性函数模拟用户兴趣随同时间的变化,很难真正模拟出实际中用户兴趣的随机变化。这导致了推荐结果的不准确。同时,引入更复杂的函数使得计算性能进一步降低,不适用于大数据场景的生产环境。为此,我们引入新的基于时间分层的协同过滤推荐模型来解决以上问题。

2 经典的协同过滤推荐模型介绍

2.1 基本的协同过滤算法模型

经典的协同过滤算法针对用户访问过的资源进行筛选。假设M个用户访问了N个资源,则此用户和资源对应的访问记录描述为R=M×N。我们用矩阵R[i,j]表示第i个用户对第j个资源的访问情况。如果为1,表示已经访问。如果为0,表示未访问。

这种协同过滤算法基于用户行为的相似性,对当前用户的访问记录计算其访问行为最近邻的K个用户作为该用户的最近邻集合,统计通过最近邻用户访问的资源集合生成Top-N推荐资源集。

推荐算法A:基于用户-资源访问集的协同过滤推荐

输入项:用户x;用户已访问资源集Ix;资源的邻近集合M;

输出项:用户x的Top-N资源集P。

Step4.将Cx中的资源按加权推荐度大小排列,取资源的Top-N得到用户x的推荐资源集P。

在这种算法中,计算推荐度时所采用的相似度算法是影响整个算法性能的关键。常用的相似度算法有余弦相似度、条件概率、欧式距离、皮尔逊相关系数等,这里不做一一列举。

2.2 基于用户兴趣变化的算法模型

以上所描述的经典协同过滤推荐算法存在的不足之处在于,关注资源和用户之间的相似性,忽略了用户兴趣的动态变化。为此,为了突出用户近期访问资源的重要性,出现了基于时间加权的动态协同过滤推荐算法。

首先考虑用户的兴趣随时间不断变化。多数情况下,时间越久则访问的资源权重越低。因此,一个用户感兴趣的资源和用户近期的访问记录关系更大。为此可以考虑需要引入基于时间的数据权重函数来进行描述。

假设资源i对用户x的权重函数为:

其中,Dxi为用户x对资源i的访问时间与用户x最早访问某资源的时间间隔。Lx为用户x访问推荐系统的时间跨度或系统设置的可信时间间隔。α∈(0,1)成为权重增长指数。改变α的值,可以调整权重随访问时间的变化速度。观察可知,该函数随时间跨度增加而递减。

当然,根据生产环境中的工程需要,我们也可以设计别的算法对权重函数进行调整。

基于以上的权重函数,我们提出改进后的基于用户兴趣变化的协同过滤推荐模型。

推荐算法B:改进后适应用户兴趣变化的协同过滤推荐模型

输入项:用户x;用户已访问资源集Ix;资源的邻近集合M;

输出项:用户x的Top-N资源集P。

算法步骤:

Step1. 读取M,得到M的K近邻数据集Ni={i1,i2,…,in},合并后获得数据集C;

Step2. 从C中删除Ix中已有的资源,得到候选的推荐数据集合Cx;

Step3. 利用公式1,计算权重函数W(x,i);

Step4. 对于资源j∈Cx,推荐度:

Step5.将Cx中的资源按照加权推荐度大小排列,取资源的Top-N得到用户x的推荐资源集P。

这种算法能比较有效解决动态兴趣变化情况下的推荐准确性,但同时也带来了新的问题。

首先,用户的兴趣变化和时间的对应时间函数很难模拟。不论是用户访问资源的频率,还是用户兴趣的变化频率,在某个较长时间周期内,都具有很大的不确定性。

其次,资源本身随时间的热度变化对用户的访问习惯造成的影响,干扰了推荐准确性。

第三,算法模型进一步复杂,计算过程耗费系统资源,大数据背景下很多场景不适用或性能表现不佳。

第四,用户的兴趣变化并没有规律性,访问资源的习惯也和个人习惯有很大关联。较冷门的、或用户习惯无关但又可能是用户需要的资源得不到有效推荐。

以上这几种缺点,都导致类似算法在生产环境中的使用受到限制。

2.3 改进的基于时间的变频协同过滤模型

基于对算法B的分析,我们考虑对以往的算法进行改进。

首先,我们考虑系统内资源的自关联关系,即资源本身与其它资源的关联度或推荐度。考虑到各種相似度算法计算的复杂性,我们在计算这些关联度的时候,不使用任何的资源相似性推荐算法。仅根据资源的“绑定程度”来进行统计。

例如,某个用户访问资源i的同时访问了一次资源j,或者某个用户购买了一次商品i的同时,购买了商品j,则我们认为i和j的关联度为1。这种关联关系在生产环境中极其容易获取,往往格式化存储于用户访问记录或者购物表单中。统计在某个特定的时间段T内,这些资源的关联关系,可以得到所有用户在访问系统资源i的时候,i对应的资源集合Ct。

考虑到在电子商务推荐的环境下,每个用户的访问资源往往多个。假设平台用户集合为Ix,考察因此我们可以统计在有限时长T内,资源被不同用户i访问的集合Ci。则平台在有限时长T内,其用户集合I(x,t)访问的资源集合Ct=∑i∈I(x,t)Ci。汇总该集合,则产生以下的推荐算法。

推荐算法C:自适应时间-兴趣变化的协同过滤模型

输入项:用户x ;有限时间T内用户已访问资源集Ix;有限时间T内用户集合I(x,t)访问资源的集合Ct;

输出项:用户x的Top-N资源集P。

算法步骤:

Step1. 读取Ct,遍历Ix,得到Ct基于用户x的K近邻数据集Ni={i1,i2,…,in},合并后获得数据集C;

Step2. 遍历Ix,去除C中重复元素;

Step3. 统计C中资源访问频次,选取Top-N1,形成候选资源集Cx;

Step4. 对于资源 j∈Cx,按照公式1计算推荐度:

Step5.将Cx中的资源按加权推荐度大小排列,取资源的Top-N得到用户x的推荐资源集P。其中N1远大于N。

与以往的算法相比,这种算法具备如下优点:

考虑了时间对资源访问的影响的不确定性,同时兼顾了计算性能,特别适用于大数据场景下的电子商务推荐系统,同时也能应用于个性化推荐。

需要说明的是,这里的用户x也可以替换为特定的群体,例如群组成员、商品的特定分类等。所以算法具有更广的适配性。以上算法而前两种算法因为整体计算的数据量,在这点上会受限制。

在生产实践中,某些场景的泛推荐还可以直接删除步骤4,采用步骤3获得的结果进行推荐。

2.4 采用双时间过滤的时间-兴趣变化协同过滤推荐模型

算法C对算法A和B有了大幅度的改进,能满足多数情况下的要求。但同时依然存在一些问题没有解决。

考虑到为了获取尽可能多的数据集Ct,实践中选取的时长T往往比较宽泛,通常为一个季度或者一个月、一周等;对于某些对及时性要求特别高的场景,比如某个新闻爆点的相关新闻,推荐效果并不好。为此,我们对推荐算法C进一步进行优化。

我们在一个宽松时间间隔T的基础上,再定义一个严格时间间隔t,这个时间间隔通常比较小,可以取值为1天、1个小时等。基于算法B中的公式2,可知加权函数:

这个函数在较长的时间间隔内,会误差较大,也让使用者比较迷茫。但对于响应短时间内的即时热点,则非常有效。基于这个公式,我们可以对算法C进行改进。改进的方式是,利用算法B中的加权函数或类似思路的加权公式,在计算推荐度时调整阿尔法的值,让最近的热点时间段t内的资源权重增大,从而达到基于用户兴趣的即时热点资源推荐。详细的计算步骤如下所示。

推荐算法D:采用双时间过滤的时间-兴趣变化协同过滤推荐模型

输入项:用户x;有限时间T内用户已访问资源集Ix;有限时间T内用户访问资源的集合Ct;

输出项:用户x的Top-N推荐资源集P。

算法步骤:

Step1. 读取Ct,遍历Ix,得到Ct基于用户x的K近邻数据集Ni={i1,i2,…,in},合并后获得数据集C;

Step2. 遍历Ix,去除C中重复元素;

Step3. 统计C中资源访问频次,选取Top-N1,形成候选资源集Cx;

Step4. 利用公式1,计算权重函数W(x,i);

Step5. 对于资源 j∈Cx , 按照公式3计算推荐度:

Step6. 将Cx中的资源按加权推荐度大小排列,取资源的Top-N得到用户x的推荐资源集P。其中,N1远大于N。

对比算法B,算法D虽然计算步骤进一步复杂,但生产环境下性能却会提高很多。这种性能的提升主要来源于各层的候选数据集的减少。所以算法尤其适用于各种大数据场景。

2.5 性能更高的简化双时间推荐模型

当推荐系统对推荐的精度要求稍低,但对系统性能要求更高时,我们可以对推荐算法D进行进一步的改进,实现思路如下。

推荐算法E:简化的双时间推荐模型

输入项:用户x;有限时间T内用户已访问资源集Ix;有限时间T内资源点击Top-N1的集合Ct;

输出项:用户x的Top-N资源集P。

算法步骤:

Step1. 读取Ct,遍历Ix,去除Ct中的重复元素后获得备选数据集C;

Step2. 利用公式1,计算权重函数W(x,i)

Step3. 对于资源j∈Cx,按照公式3计算推荐度:

Step4. 将Cx中的资源按加权推荐度大小排列,取资源的Top-N得到用户x的推荐资源集P。其中,N1远大于N。

在生产环境中,经过精简后的算法E,在推荐结果上和算法D区别不大,但更节省系统资源且运算速度更快。

3 结束语

在大数据场景中,推荐算法首要考虑的便是数据量的庞大以及随之带来的性能问题。为此,我们必须对原有的推荐算法进行改进。个性化推荐因为要考虑不同的时间和不同的用户具有的不同特征,算法尤为复杂。

传统推荐算法在时间上的模拟函数呈线性特征,因此推荐结果不能适应用户兴趣的不规则改变。本文采用在特定的宽泛时间内用户访问资源的频率对资源集进行过滤,并在此基础上,进行进一步的推荐度计算。而对于时间敏感的热点资源,再采取线性时间权重函数进行二次推荐。

实践证明,这种方法不但使推荐結果更准确,也大幅度提高了算法的性能,不失为一种有效的大数据推荐算法模型。

参考文献:

[1]赵亮,胡乃静,张守志.个性化推荐算法设计[J].计算机研究与发展,2002(08):986-991.

[2]余力,刘鲁,罗掌华.我国电子商务推荐策略的比较分析[J].系统工程理论与实践,2004(08):96-101.

[3]张锋,常会友.基于分布式数据的隐私保持协同过滤推荐研究[J].计算机学报,2006(08):1487-1495.

[4]徐义峰,陈春明,徐云青.一种基于分类的协同过滤算法[J].计算机系统应用,2007(01):47-50.

[5]印桂生,崔晓晖,马志强.遗忘曲线的协同过滤推荐模型[J].哈尔滨工程大学学报,2012(01):85-90.

[6]邢春晓,高凤荣,战思南,等.适应用户兴趣变化的协同过滤推荐算法[J].计算机研究与发展,2007(02):296-301.