推荐系统的开发是具有挑战性的,多种多样的方法被提出来。方法被划分为以下三类:协同过滤[2],基于内容[3],以及融合前两者的混合模型。
基于内容推荐方法的优点是:1)不需要其它用户的数据,没有冷开始[4]问题和稀疏问题。2)能为具有特殊兴趣爱好的用户进行推荐。3)能推荐新的或不是很流行的项目,没有新项目问题。4)通过列出推荐项目的内容特征,可以解释为什么推荐那些项目。5)已有比较好的技术,如关于分类学习方面的技术已相当成熟。缺点是:要求内容能容易抽取成有意义的特征,要求特征内容有良好的结构性,并且用户的口味必须能够用内容特征形式来表达,不能显式地得到其它用户的判断情况。
协同过滤推荐技术是推荐系统中应用最早和最为成功的技术之一。它一般采用最近邻技术,利用用户的历史喜好信息计算用户之间的距离,然后利用目标用户的最近邻居用户对商品评价的加权评价值来预测目标用户对特定商品的喜好程度,系统从而根据这一喜好程度来对目标用户进行推荐。协同过滤最大优点是对推荐对象没有特殊的要求,能处理非结构化的复杂对象,如音乐、电影。
虽然协同过滤作为一种典型的推荐技术有其相当的应用,但协同过滤仍有许多的问题需要解决。最典型的问题有稀疏问题和可扩展问题。
混合模型考虑到了基于内容推荐以及协同过滤推荐两者的不足和缺点,将两者融合。根据具体的混合方式不同,混合模型的性能也有所区别。
国内外各个方向都有涉及推荐系统的研究,有些集中于探索混合算法从而得出更高效的混合模型。例如在论文”OSCAR:anOnlineSCalableAdaptiveRecommenderforImprovingtheRecommendationEffectivenessofEntertainmentVideoWebshop”[5]中,研究人员就提出了一种混合模型,根据用户的行为和数据的具体特征选择最合适的推荐算法给用户。
还有对于目前协同过滤进行改进的,比如在:”SlopeOnePredictorsforOnlineRating-BasedCollaborativeFiltering”[6]中,研究人员提出SlopeOne这种方法。它旨在利用其它用户用户对资源的评分来预测用户对资源的评分。还有些侧重于研究社交网络,从而更好地为协同过滤得出相似的用户,研究结果也表明,朋友之间的兴趣相似度较高,社交网络可以很大程度上帮助推荐系统提升性能。
3推荐方法的初步建立和效果评估
设想一下真实的推荐系统运行场景,我们就会发现这个计算量的巨大以及实施的困难性。
如果是基于协同过滤的算法进行推荐,首先,我们需要维持一张巨大的“用户-视频”评分矩阵,如图2-1所示。仅仅是维持这张表就会占用大量的内存空间。假设我们的评分数据占2字节,1000个用户以及1000个电影的这张表,将占用大约2G的内存空间,更何况目前的短视频网站的用户量以及电影量远远超过这一数目。
对于用户兴趣模型的表示,目前主要有基于关键词的向量空间模型表示法、概率主题模型表示法、基于本体论(Ontology)的概念表示法等。本文中采用的方法以空间向量为基础,之后根据存在问题进一步优化。
要完成分布式计算的功能,我们的用户兴趣模型必须要能支持分布式的工作模式。标签云模型可以很好的实现这一功能。用标签来去抽象出用户的特征值和视频的特征值。标签集是依附在网络内容上用来描述这些内容的关键字集合。近年来,标签集成为了阐释多媒体资源的一种广泛使用的方法。
对于特征项的抽取,常用的有文档频率法,开发法,信息增益法,互信息法以及文档频率等数十种,由于视频网站一般提供自由地标签编辑功能,所以特征项提取这一部分我们不再考虑。
对于标签权值的计算,常见的方法有布尔权重,词项频率权重,TF-IDF权重[8]。本文的权重计算基于TD-IDF权重。
布尔权重表示的优点是计算、查询速度快,但是布尔权重中忽略了可对文档意义起重要作用的词频,对于任意特征项,只统计出现与否,而不关心出现次数。此外,由于在布尔权值中,只有0/1两种权重,无法进行模糊匹配。
与布尔权值法相比,词频权值法精准度有所提升,但是无法体现出低频特征项的区分能力。有些低频词有很强的区分能力,而有些词尽管频率很高,但是几乎没有或者只有很少的区分能力。
因为考虑到词条数目,所以最终权值计算公式如(3-6)所示
我们所提出的模型基于上文所提到的分布式计算模型以及用户兴趣模型,但又对其进行了改进:
考虑到以上的特点,本文提出一种新的分布式计算的方案:客户端计算。把计算的任务交由客户端来进行处理,服务器只做简单的数据传输和操作。这种模式就好比ad-hoc网络对传统通信网络的革新一样,将集中的控制权分布开来。这种方案在更大程度上实现了分布式计算,也更充分地利用了空闲资源,也就把服务器从繁忙的计算中解脱出来。
3.2数据集
推荐算法实验所采用的数据集一般都是从实际业务系统中积累起来的,使得推荐技术学术研究尽量与行业实际情况接轨。目前已有不少实际的业务系统公开了自己采集的数据集供研究者们使用。下面简单介绍两个本文后续章节的实验中采用的数据集,它们在视频推荐技术研究中也最为常用。
(1)Netflix电影评分数据集
Netflix公司在2005年底开启NetflixPrize比赛的同时,公布了用于比赛和学术研究的Netflix电影评分数据集。该数据集包含了Netflix系统从1999开始的6年间记录的近50万用户对17000多部电影的评分数据。系统使用5分评分制,评分值可为:1、2、3、4和5。数字越大则代表用户对电影评价越高。Netflix电影评分数据集包含了一下几个文件:
2、TRAININGDATASET:作为提供给参赛者或者研究者进行推荐算法实验的训练集,包含了用户ID、电影ID和用户评分等关键信息。
3、QUALIFYINGDATASET:未包含评分的测试数据集合,提供给参赛者作其设计系统的评分预测对象。
4、PROBEDATASET:上个数据文件的包含用户真实评分的版本,以让学术研究者对评分预测结果进行准确度评测。
(2)MovieLens数据集
3.3短视频推荐方法
在确定好要使用的数据后,我们采用Matlab来进行模型验证。
为了在Matlab上完成上述,我们必须分步骤地进行,因为数据量实在巨大(视频数据条数10681条,浏览历史个数10000054条)分步骤可以很大程度上减轻计算复杂度。我们的实验分为以下四步骤进行:(1)pre预处理(2)step1完成用户的profile提取(3)step2对用户产生推荐结果。
1、pre预处理。首先,因为MovieLens数据格式是他们固有格式的,我们需要把这些数据导入到Matlab中,以便于后续数据处理。我们将MovieLens的原数据三个文件ratings.dat,movies.dat,tags.dat转换为ratings.mat.movies.mat,tags.mat;接着,我们将tags和movies两张表进行联合在一起,产生movies_tags表格,因为我们的标签是绑定在movie上的;再然后,我们要从电影数据里面抽取实验组所用的实验集,我们通过Matlab的随机数函数产生1000个视频id为实验组视频id。由于视频被划分为了实验组,那么用户的评分数据也就需要将对于对应电影的评分数据纳入实验组中。其余的视频以及评分数据均为训练集。
3、step2对用户产生推荐结果。在这一步中,我们需要将电影的标签向量和用户的标签向量进行余弦相似度计算,从而得出两者匹配分值。由于Matlab丰富的数学计算能力,这个模块很容易实现,之后我们使用简单的排序算法去计算出用户的推荐视频排名。