论文部分内容阅读
随着互联网技术的飞速发展,互联网上的各种数据正在急剧增加。这些数据在为人们提供便利的同时,也会带来“信息超载”的问题。如今,以基于内容和协同过滤为代表的个性化推荐算法已成为解决此问题的重要手段,使人们能够从大量信息中高效地获取他们所需的信息。然而,随着大数据时代的到来,协同过滤推荐技术的发展也面临许多挑战,其主要原因有两点:1.矩阵数据稀疏问题。在一个推荐系统中,例如以Netfix为代表的电影推荐系统,用户已评分电影在所有电影中所占比例较小,这就导致了用户电影评分矩阵的数据极端稀疏,并且随着系统中用户和电影数量的不断增长,用户电影评分矩阵的稀疏性还在不断扩大,这就导致了在计算用户或电影的最近邻时准确率就会比较低,从而使得推荐系统的推荐质量急剧下降。矩阵虽然庞大但是信息却很稀疏,这种情况就是所谓的数据稀疏性问题。2.系统可扩展性问题。在协同过滤推荐中,最耗时的部分是相似度计算的过程。在大型推荐网站中,用户和项目的数量通常可以超过百万。当用户的各种属性和行为数据以及物品的各种内容和属性数据不断增多,在进行推荐时每次都需要扫描全部的用户项目评分矩阵,会消耗大量的内存和时间,从而降低推荐的效率。因为数据不断增多使得系统推荐的效率降低,这就是推荐系统的可扩展性问题。这些问题都是基于协同过滤的推荐系统面临的关键问题。为了解决这些问题,本文提出了一种基于时间偏置的潜在因子模型(Latent Factor Model,LFM)和局部敏感哈希算法(Local Sensitive Hashing,LSH)混合的方法来改善矩阵数据稀疏以及可扩展性的问题。本文的主要工作如下:1.为了改善数据稀疏所引起的预测准确率的问题,本文在基于潜在因子模型算法的基础上加入了用户和电影的时间偏置项,改进了潜在因子模型的损失函数。潜在因子模型算法的基本思想是将原始的评分矩阵拆解成更小阶的近似矩阵,这些近似矩阵通常被认为能够挖掘用户一些潜在的偏好倾向,所以可以通过训练这些分解的矩阵来预测用户对电影的评分。虽然原始的用户电影评分矩阵可以通过矩阵分解的方法来表达用户的潜在偏好以及电影的类型,但是由于电影的评分有很大一部分因素是和用户对电影的喜好无关而只取决于用户或电影本身特性的。本文引入了基于时间的用户和物品的偏置项来优化这些预测的误差。对于乐观的用户来说他们比较倾向给电影一个较高的评分,而悲观的用户评分普遍较低。对于电影来说,受大众欢迎的电影普遍评分较高,而一些小众电影则相反。这些因素都是独立于用户或项目本身的因素,和用户对电影的的偏好无关。已有研究表明,加入这些独立的用户和项目的偏置因素对提高预测的准确率有着积极作用。所以本文基于电影推荐的现实情况,为了改善传统矩阵分解算法在预测评分时的误差,提出了加入用户和电影的时间偏置因素来改善潜在因子模型损失函数的方法。改进损失函数的方法是在原本的基础上加入了用户自身观影兴趣随时间变化对于电影评分的影响和电影流行度对于电影评分的影响。基于用户自身观影兴趣随时间变化对于电影评分的影响主要是根据艾宾浩斯记忆曲线模拟了一定时间内用户的观影兴趣变化,而基于电影流行度对于电影评分的影响指的是根据当前电影的热度来修正对于电影评分的影响。在这一部分,本文基于用户以及电影自身的时间偏置因素,对潜因子模型的损失率函数进行了改进,期望在解决矩阵稀疏性问题的同时提升评分预测的准确率。2.为了改善推荐系统的可扩展性,提升推荐的效率,本文采用局部敏感哈希的算法,通过矩阵的降维来减少数据的查找范围。局部敏感哈希的算法的基本思想是将高维空间的数据映射为低维数据,并保证数据间的相似性,也就是原向量空间中的距离相近的两点经过映射后的距离依然很近。在推荐系统中通过局部敏感哈希的算法可以将相似的用户以较高的碰撞概率哈希到同一个哈希桶内作为候选用户,此方法可以过滤掉大量不相似的用户来避免不必要的相似度计算,从而快速获取近邻的相似用户。在传统的哈希方法中,往往只通过一个哈希函数映射到一个哈希表的方式对数据进行处理,这样往往会产生很多误判率,即相似的用户被映射到不同的哈希桶,不相似的用户被映射到相同的哈希桶。为了减少这种误判率,局部敏感哈希算法通过改造符合要求的哈希函数以及引入多个哈希表的方式来进行处理。改造哈希函数的方式是将多个局部敏感哈希的哈希函数合成一个哈希函数,输入两个用户的评分向量,两个用户相似当且仅当这两个用户向量在多个哈希函数的映射后,哈希值相同。引入多个哈希表则是将哈希映射的次数扩大,一个新合成的哈希函数对应一个哈希表,如果至少在一个哈希表中两个用户落在了同一哈希桶中,那么这两个用户也是相似的。构造新哈希函数的做法可以有效地降低不相似的用户哈希到同一个哈希桶的概率,而引入多个哈希表的做法可以提高相似用户落入同一个哈希桶中的概率。基于这种局部敏感哈希算法的思想,本文构造了一个相似用户的索引结构,通过将用户的评分向量作为输入,相似用户会被哈希到哈希表的同一个哈希桶中。通过这种索引结构,查找相似用户集合的时间接近常数时间,即通过构造用户索引的方式提高推荐的效率,从而改善推荐系统的可扩展性。3.本文所做的实验均使用MovieLens数据集进行验证。通过对传统的矩阵分解方法奇异值分解(Singular Value Decomposition,SVD)以及Funk SVD算法的对比,分别对各算法实验结果平均绝对误差(Mean Absolute Error,MAE)和均方根误差(Root Mean Squard Error,RMSE)进行分析,可以证明在考虑了时间因素的情况下,潜在因子模型比其余两个矩阵分解的算法预测评分的误差更小,并且确定了在潜在因子值应大于60的情况下,使用潜在因子模型可以很好地减少预测评分的误差值。通过对LSH算法中哈希函数以及哈希表数量的控制,可以看出哈希函数数量越多,近邻相似用户的计算就越严格,准确率更低。而哈希表的数量越多,搜索近邻相似用户的条件就越宽松,更多的相似用户会有更大的概率落入同一个哈希桶中。通过对比在基于用户的协同过滤是否加入LSH算法,观察到当加入LSH算法查找近邻用户的时间降低至接近至常数时间,远低于传统的基于用户的协同过滤算法,并且预测评分的误差相差不大。实验结果证明,对于传统的矩阵分解算法,在损失函数中加入用户和物品的偏置项可以较好的提升评分预测的效果。同时通过对用户电影矩阵构造索引结构的方法,降低了查找相似用户的消耗时间,从而改善推荐系统的可扩展性。