周立寒 刘亮亮 张再跃 张晓如
(1.江苏科技大学计算机学院 镇江 212000)(2.上海对外经贸大学统计与信息学院 上海 201620)
随着互联网技术的不断进步,人们生产、传播信息的能力大大加强,单是视频行业的崛起已带来爆炸式增长的数据。而且根据我国实际情况,这一趋势还存在非常大的发展空间。海量的视频资源使得用户无法迅速、准确地从中获取自己想要的视频信息,这无形中降低了用户的满意度。为解决此类视频资源过载问题,越来越多的个性化视频推荐服务不断出现[1],各大视频服务平台引入推荐算法这一需求迫在眉睫。个性化推荐算法对用户历史的浏览与操作记录进行深入分析,可以为用户找出符合其预期的视频资源,给予用户一个舒适的网站操作体验[2]。如今许多视频服务平台均通过推荐算法来对平台改造,使其满足个性化需求。例如,国外知名的YouTube 视频网站主要采用基于用户和协同过滤相结合的混合推荐算法[3],且目前不断往深度学习领域发展。国内比较火的抖音主要采用基于社会网络和信息流的推荐[4]。
但是,在现实生活中,传统协同过滤算法由于仅考虑用户对视频的评分信息,而不考虑用户其他具体行为和视频资源特征,导致算法仍存在推荐质量低的问题。再者,由于评分矩阵的极度稀疏性,推荐结果存在较大偏差[5]。不仅如此,传统推荐算法还存在扩展性和冷启动等问题。在深入研究相关算法后,本文提出一种基于用户偏好和视频特殊标签的推荐算法,该算法从用户行为数据以及视频标签两方面来进行考量。接着将权重因子融入相似度计算公式,加权计算视频相似度。
协同过滤技术是个性化视频推荐算法中的核心算法[6],中国有句古话叫“物以类聚,人以群分”则可以很好地解释协同过滤[7~8]的算法思维。算法步骤并不复杂,最基本的是用户历史浏览与操作数据的收集和相似度计算。传统协同过滤主要包括两方面内容:基于用户的协同过滤和基于项目的协同过滤,如图1 所示为基于项目协同过滤的算法流程。
图1 基于物品的协同过滤算法流程
步骤1:构建一个基于用户项目评分的二维矩阵。首先对用户评分表进行遍历,有两种生成矩阵的方式,可以将用户是否有行为作为一种值的选取,其中,0 代表用户无操作行为,1 代表用户有操作行为。其次,可以直接将用户评分值填入矩阵。
步骤2:物品相似度计算。算法可以采用不同相似度度量公式来计算项目间相似性,主要包括Pearson 相关系数或者余弦相似度等。这里主要使用余弦相似度,计算公式如式(1)。
步骤3:经过步骤2得到项目相似度后,再依照式(2)计算用户对项目的偏好程度。其中,S(j,K)是经由算法得到的与项目j相似的长度为K 的项目列表。对用户历史操作记录进行遍历,找到每个历史行为记录中与之相近的K个项目作为候选集。
步骤4:按照用户偏好得分对步骤3 中候选集进行排序,最终得到用户对视频偏好最高的N个物品进行推荐。
当前,许多学者对协同过滤都提出一定的改进措施。文献[9]在余弦距离公式中引入一个平衡因子,对传统算法优化改造,借此提高产品推荐准确度。文献[10]等将用户兴趣的权重与物品属性进行融合,降低算法的平均绝对误差。文献[11]设计一种用户偏好模型,利用这个偏好模型来修正用户对项目的历史评分,然后再加权结合传统协同过滤,用于提高推荐召回率。文献[12]提出将超链和图结合的算法,首先对slope one 算法进行优化,接着搭建一个基于视频的二部图,最终提高了推荐的命中率。文献[13]提出基于图的推荐算法,结合电影属性和用户偏好关系,将电影信息进行图元素的映射,融合图结构特点来计算电影的相似性,一定程度缓解了数据稀疏性和推荐准确度问题。文献[14]提出构建新的初始张量,主要包含标签属性、项目及用户之间的关联关系。然后对该张量采用N 模型矩阵展开,形成对应的三个新矩阵。文献[15]对长尾视频进行研究,惩罚热门视频,对冷门视频进行权值优化,将最后得到的权值纳入相似性计算公式,算法最终可以缓解长尾视频“推荐不易”的问题。文献[16]在用户评分数据和项目属性特征上进行综合考虑,并且在评分较少时,利用项目属性相似度代替物品相似度,并最终通过两方加权的方式,以减少评分稀疏带来的偏差。然而,无法有效摆脱项目评分稀疏问题仍旧是这个算法的主要弊端之一。
传统的协同过滤以用户和视频作为分析对象,相似度计算仅依靠单一的评分行为,没有考虑当评分较少时所造成的数据稀疏性问题。而用户在视频平台进行一系列显隐操作时,并不是仅有评分行为,还有一些隐性行为。本文对用户行为过程产生的数据进行研究分析并建模,找到用户与视频之间的内在关联关系,以用户偏好代替评分数据,下面通过一个算法流程来简单解释用户对视频的兴趣。
1)考虑用户对视频的评分,当评分系统为5 分制时,将评分为3 设置临界值。当评分大于等于3时,将用户对该视频的喜好度置1,否则置为0,继续往下执行;
2)判断用户对视频的历史点击次数,设定阙值为2,当点击次数大于等于2时,喜好度基础上加1,否则不操作,程序继续往下执行;
3)判断用户对一则视频的观看时间比重,设定一个中间值s(0<s<1),s 代表用户观看时长占该视频总时长的比重,若用户观看视频时间占比大于等于s,则喜好度加1,否则不做操作。
该算法类似于if…else…语句执行过程。
视频是可以看成为非结构化信息数据,它们之间的相似性需要从多方面进行考虑。因此,考虑到视频标签数据,并将一些用户行为纳入考量。当用户选择为视频打上特殊标签,则该用户一定程度上对该视频存在偏好信息。另一方面,这个标签也可以作为视频隐含意义,可成为判断视频间相似度的条件。
假设视频标签集合为Tag={m1,m2,m3…,ma},其中a为标签总数,n 为视频项目数,那么视频标签属性可以用n×a的矩阵表示,矩阵元素的值设定为1 或0。1 代表该视频具有此标签,0 则代表不具有此标签,由此得出的视频属性相似度计算公式为如式(3)。其中,|Nj|代表视频j所具有的总标签属性。
为了从不同方面考量视频间的相似度,本文从用户兴趣和视频标签两个维度分别计算相似度,引入权重因子β,将两种优化算法进行融合,通过β对二者结果进行线性加权,得到加权后的相似度结果。公式如式(4),其中β为权重因子,在0到1中间进行取值,通过实验得到最优解。
输入:用户视频评分矩阵Rm×n,视频标签矩阵Tagn×a以及选定邻居数K。
输出:目标用户的可能选择点击的视频推荐列表。
步骤1:根据4.1中算法流程得到用户兴趣矩阵,用用户兴趣矩阵代替评分矩阵。
步骤2:使用余弦相似度度量公式计算视频间相似程度并归一化得到最终视频相似度。
步骤3:对视频标签进行相似度计算,并归一化得到T_sim(i,j)。
步骤4:遍历用户历史视频数据集,找到历史视频最相似的K 个候选视频,并根据式(4)计算用户对候选集中视频的预测得分,得到用户兴趣度。
步骤5:从候选集中选出N个分最高的视频对用户进行推荐。
本文采用推荐算法研究领域中比较经典的数据集MovieLens,采用的版本为ml-latest-small,其中包括用户,电影(包括标签信息)及评分数据,评分标准为1~5 之间,其中评分分值越大,则代表用户对该则电影就越偏爱。为评估算法性能,将数据集按照二八原则进行随机拆分,将80%的数据设为训练集,其余20%为测试集,用于准确度等评测指标的验证。
据表1可知,该数据的稀疏程度为98.3%。
表1 数据集具体参数
不同于评分预测,本文采用TopN 推荐,主要为用户提供可点击的视频推荐列表,更贴近算法实际需求。准确率和召回率是TopN 推荐中常见的评测指标。准确率用于表示训练集上获得的推荐列表占测试集的比重,式(5)为准确率定义式。召回率表示在样本正例中被正确预测的比例,式(6)为召回率定义。
其中,U为用户集合,Rec(u)是用户u在测试集上的推荐列表,Test(u)是用户u 在测试集上已存在的行为数据。
实验中时,设置输入的候选列表长度为10,并将邻居数输入设为15。通过比对不同β值下结果来测试权重因子对改进算法推荐精度的影响。从图2和3不难看出,在将β从0递增至1的过程中,准确率和召回率随着β的变大先增大后减小,当β取值为0.6时,准确率和召回率分别都达到最大值。
图2 准确率随β值的变化
图3 召回度随β值的变化
实验中,将传统协同过滤和本文中改进的算法进行分析比对,得到的实验结果如表2 所示。不难看出,改进后的算法在准确率和召回率和覆盖率分别提高了15%和32%。
表2 改进算法与传统协同过滤对比结果
推荐算法一直是数据挖掘领域的一大研究热点,且随着短视频的流行,视频服务平台对于推荐算法的呼声很高。本文对传统协同过滤进行改进,将用户历史行为信息纳入考量,对用户不同行为进行赋值。以最后结果代表用户兴趣,并将得到的用户兴趣矩阵取代传统推荐算法中的用户评分矩阵。
接着引入视频标签特性,对两个相似度进行线性加权,避免传统层次分析中用户自定义权值。最后实验结果表明,本文提出的改进协同过滤算法能够取得良好的推荐结果。