论文部分内容阅读
随着电子商务的发展,人们迈入了信息过载的时代。面对日趋严重的过载数据现象,推荐方法是一个很好的解决方案。它通过收集用户历史记录,挖掘用户喜好,生成相应的推荐信息。推荐系统不仅帮助用户从海量数据中发现他们感兴趣的新内容,如图书,音像,餐厅,音乐等。同时帮助运营商准确挖掘出符合用户兴趣的信息。比如京东、淘宝的商品推荐,美团的餐厅推荐,抖音、快手的短视频推荐等等。在推荐系统中,实现用户偏好的精准发现是实现个性化推荐的关键,决定着推荐质量的好坏。在推荐系统中,大多数通过用户-项目评分信息挖掘用户特征。评分信息反应了这些用户对产品的整体满意度,从评分中挖掘用户喜好便可以此为依据实现商品推荐。而评分在一定程度上并没有完全反应用户对产品某些特征方面的评判,这在一定程度上忽略了用户的潜在偏好。在如今互联网的环境下,海量用户会通过在线评论的方式对体验过的商品和服务进行文字评价,这些非正式的文本信息,全部是用户体验过产品或者服务后的真实主观感受的反馈,蕴含着大量的有价值信息。评论文本不仅可以反映出用户对产品细节特征的喜好,还可以发现用户的潜在偏好。明确用户的偏好侧重,获得更加精准的用户偏好,为推荐实现更大程度的精度。为了更好地捕捉文本数据与其蕴含的高层语义之间的关系,以往的解决方式主要有4种方案:第一,提取文本话题。从评论数据中提取话题,结合从评分数据中提取的特征进行评分预测。第二,基于特征词分析文本信息。从评论数据中提取词性并分类,生成偏好字典。将用户评论依据词频进行排序表示用户特征。第三,通过文本聚类进行推荐。基于用户类别和物品类别进行推荐。第四,分析句子结构。通过分析评论文本的本体结构来进行推荐。将上下文信息加入到推荐过程中。通过综合考虑用户的评分和评论信息来把握用户偏好,提高推荐的质量,也是本文研究的主要内容。推荐技术的性能好坏很大程度上由推荐算法决定。研究人员已经提出了许多构建推荐系统的方法。其中,协同过滤算法是目前推荐系统中运用最广泛的推荐算法。协同过滤方法的工作流程是:将用户对项目的评分或者评论近似表示为用户对某项目的兴趣,通过匹配与该用户相似品味的其他用户中该用户尚未参与过的项目进行推荐。其中,如何从用户的评论信息和评分信息中挖掘用户特点,如何计算相似性,并且为用户推荐更准确的推荐信息是研究重点。为了更好的实现推荐,本文使用协同过滤算法分别基于评分和用户评论,以更好地挖掘用户偏好,为用户做出更准确的推荐。在基于评分方面,我们综合比较了几种相似度算法,并通过改进分析,通过对预测结果的分析比较,发现推荐效果最好的一种相似度测量方法,并应用在我们的推荐系统中。在基于评论的协同过滤推荐方法中,我们利用用户评推荐论文本的语义特征发现用户之间的相似性,从而利用用户对商家的喜爱程度,做出更精准的推荐。最后,我们将几种不同的评分预测训练我们的回归模型,得到最后的预测模型。通过实验发现,我们的预测模型在推荐效果上有较高的准确度。在本研究中,我们将推荐系统的任务定义如下:假设存在一个商品集合,一个用户集合。其中,用户评分数据简单明确,体现了用户对物品的总体评价。评论数据信息丰富,体现了用户对物品特征的观点。由此,我们构造了四个元素组成的四元组(用户,项目,评分,评论)。我们的任务是,综合考虑用户的评论文本和评分两个维度信息,设计并实现一款推荐方法,通过合适精准匹配,提高系统的推荐性能。我们提出的推荐系统,主要有三部分组成:基于评分的协同过滤推荐模块的实现,基于评论的协同过滤推荐模块的实现,混合推荐模块的实现。基于评分的协同过滤推荐模块。评分较高的物品通常是用户对物品整体肯定,这表明物品达到了用户的期望值,获得了肯定,而评分较低的物品恰恰相反,表明用户认为物品没有达到他们的满意。我们考虑用户对已购买的物品的评分记录,对于每个用户和购买过的物品,构建记录对应的用户物品对。然后构建用户商品评分矩阵。我们通过计算用户评分之间的差异和偏好,并将二者综合起来引入用户评分相似度,找到用户评分的之间的相似性,并将建立用户之间的联系,我们使用最近邻选择合适的用户子集,并用其得分的加权和生成对目标用户推荐相似用户偏爱的物品,并且使用评分预测来生成推荐。选择合适的方法进行相似度计算是提高推荐系统性能的关键。我们认为,如果一个用户评分记录中存在大量商品记录,而另一个用户的评分记录较少,那么他们之间的相似性可能很小。因此,评分项目的数量可能会对重量产生一些影响。我们还尝试了一些不同的方法来计算相似度,以获得较为精准的推荐结果。在本文中,我们对多种求解相似度的方法进行实验比较,包括皮尔森相似度计算,斯皮尔曼相关度计算,改进的皮尔森相似度计算,同时,我们改进了用户相似度的求解方法,以更好地挖掘相似用户之间的关系,提升推荐算法的准确度。我们考虑每位用户对商品的评分以及平均评分和评分数量求得用户权重。综合用户权重,将所有邻居的评分加权计算预测商品的评分。权重越高,相似度越大,就对物品的偏爱相关程度越大。然后对权重进行排序,找到相似度最高的用户们推荐。我们通过实验发现,推荐质量会随着我们选择的N的数量的变化而变化,在一定范围内,当N增加时,预测的质量增加。最后通过实验效果,在我们的数据集中,我们选择前60名并且选择权重大于0的用户进行预测的实验效果最佳。基于评论的协同过滤推荐模块。大量用户积极地通过网络发表自己对商品的意见,这些文字描述不仅包含物品的特点,而且表达了它们对物品某些细节的感受。相比数值型评分,这些描述信息在表现用户特征方面更加丰富。我们可通过一个用户对项目的评论去推断用户的评论偏好,计算文本差异和偏好并将以此为基础计算用户评论相似性,进而预测所有用户对项目的评分,系统就可以通过选择评分高的项目为目标用户推荐新的项目。在我们的实验中,我们使用以下工具进行文本预处理:Google的Google collab平台处理数据,它提供免费GPU的计算服务;自然语言处理工具NLTK包,用于预处理用户评论文本;使用流行的开源自然语言处理(NLP)库Gen Sim来构建文档或单词向量,在实验中,我们尝试使用doc2vec、word2vec、WMD来计算文本相似度;Scikit learn用于数据集的拆分和训练模型的评估。我们使用两个用户评论数据集。一个是Amazon Electronic,它包括1689188篇评论。另一个是Amazon Instant Video,它包含37126个评论信息。首先我们提取文本特征,对评论文本进行预处理操作,同时解决真实数据中的空值,错误值以及各种不利于算法模型训练的噪音点,并通过一定方法将这类不合乎要求的数据转化为一类较为标准、干净,符合模型训练的数据。然后将英文评论文本统一转换成小写字母,通过空格分词并去除停止词和标点符号等特殊字符,将单词存入字符串组中,根据单词出现的次数统计词频,并去除低频词。预处理完成之后,每条评论都由一系列高频且有意义的单词构成,且每条评论的数据量都大大缩减,提高了后续计算的效率。之后,我们要解决的问题是将用户评论文本转化为机器能理解的形式。我们用到了两种方法。一种是基于doc2vec算法,一种基于WMD算法。在基于doc2vec的推荐算法中,我们将用户的所有评论叠加得到一个用户多条评论的总体特征。每个用户都有不同的评论文档,这些评论文档中隐含着用户偏好和物品特征。我们用doc2vec学习得到每个文档的特征表示。Doc2vec是一个仅包含一层隐藏层的三层的神经网络模型,使用窗口获取词的上下文信息,且对输入的文档长度没有特别限制,可以是单词,也可以是句子或者文章,无论输入训练的粒度是多少,在给定的条件下,我们都能够将文本表示成一个固定长度的向量表示作为输出对象。在训练doc2vec模型时,段落向量和单词向量被随机初始化。在学习每个文档的向量表示时,同时也会学习句子的语义表示。它们还可以用于查找文档之间的相似性等任务。而且这种方法在理论上能够更好地捕捉从文本数据本身到高层语义的复杂映射,从而保留文档的情感和语义特征。在训练阶段,我们使用亚马逊电子产品评论数据集和亚马逊即时视频评论数据集分别训练,将每个文档表示为100维向量。用余弦相似度度量方法求解两个文档向量在空间上的相似度。我们抽取每个用户的所有评论信息作为用户特征,我们认为用户相似度即为评论文档的相似度。之后选择top-60用户进行候选集商品的预测,并且引入用户的评分数据来帮助进行这个模块的推荐工作。我们利用预测函数评分,生成推荐列表。在基于WMD的推荐算法中,我们首先利用Word2vec算法准确高效地得到每个单词的词向量表示。本文采用了基于层次softmax的Skip-gram结构的模型实现模型的训练。Skip-gram输入为词语的one-hot向量,输出为词语上下文中单词的概率。其中,词语的上下文的窗口网络预测的结果的个数,词向量的训练速度受到窗口大小的影响。窗口参数设置越大训练速度越慢,我们在实验中,设置的参数为7。本文将词向量的维度设置为100。在实验中,我们用足够的预料库的文本语料进行模型训练,投影矩阵即为训练完成的词向量。通过训练模型,我们将用户评论中的每个单词都转换为100维的词向量。同时这种向量表示方法,还可以获取词的语境信息。相同语义的词相似度很高。我们使用亚马逊所有电子评论和视频评论,大约1.26M语料库。通过训练,我们将评论预处理后的文本信息中每个词语都用word2vec模型的向量表示,其中向量同时也保持了词语的语义信息。采用词移距离算法来计算每条评论之间的相似度,简单来说,就是指其中一个文档中的所有词,“移动”到对应文档中的所有词语之后,移动的距离之和最小。距离越大,相似度越小,距离越小,相似度越大。理论上来说,算法即是找一个单词匹配方法,使得累加带权重和距离最小,WMD没有超参数,加上实现简单直接,用于文本问题,能够比其他的度量方法取得较好的实验效果。在得到每个评论的相似度之后,我们进一步根据用户评论的物品情况,计算出每个用户的相似度。我们考虑每位用户对商品的评分以及平均评分和评分数量求得用户权重。综合用户权重,将所有邻居的评分加权计算预测商品的评分。最后生成推荐列表。通过使用两种方法从文本信息中推断用户偏好,然后将其与协同过滤方法相结合,通过评分预测进行商品推荐。我们用均方根误差(RMSE)比较了两种方法对同一数据集的评级预测精度。我们比较了基于CF的doc2vec和基于CF的WMD两种方法的精度。RMSE结果分别是0.4730和0.5294。结果表明,对于这两个数据集,基于doc2vec的推荐方法预测误差率较小,推荐效果更好。再使用多元回归算法训练得到预测模型。输入目标函数的是基于评分和基于评论的评分预测。我们的损失函数用最小二乘法。最后将特征输入回归模型进行评分预测。不同的预测任务有不同的评价方法。本文的推荐系统任务是预测用户对物品的评分。那么衡量评分预测的准确度就成了推荐系统的重要任务之一。均方根误差和平均绝对误差相比,在平均误差相同时,均方根误差更倾向于惩罚误差较大的项。本次实验采用RMSE作为系统的评价指标,用于衡量推荐列表的准确率。推荐系统评估。在本实验中,我们使用了两个公开数据集。分别是亚马逊电子商品数据集Amazon Electronics和亚马逊即时视频数据集Amazon Instant Video。这两个数据集中,包含用户评分信息和用户评论信息。其中,评分的范围是1.0-5.0,反应了用户对商品的整体满意度。评论信息表达了用户对商品的进一步反馈信息。亚马逊电子商品数据集Amazon Electronics包括192K用户、448K商品、375K评论和375K评分。我们去掉了只有一个用户评分或者评论记录或者未被任何用户评分或被评论的商品,将数据集分为两类,分别用于训练和测试。训练集和测试集占10%和90%。亚马逊即时视频数据集Amazon Instant Video,由5.2K个用户、1.7K个项目、3.3万条评论和3.3万个评论组成。我们去掉了评分小于三分或者没有评论信息的商品。然后将数据分成训练集,测试集和验证集。其中,测试集占10%,训练集占80%,验证集占10%。在实验中,我们使用RMSE(均方根误差)来评估对比实验结果,如果RMSE越小,我们就认为准确性越高。我们发现,综合考虑用户评论信息和评分信息的混合推荐,推荐准确性更高,混合推荐方法推荐性能较高。最后,我们也将本文实验结果与其他研究中的推荐方法的结果做了比较,结果显示本文提出的推荐方法的RMSE更小,性能更好。从以上结果可以看出,在协同过滤中同时使用评分和评论是有效的,我们提出的方法也有较高的准确性。误差分析。本部分的目的是对两种预测方法进行误差分析,一种是基于评分协同过滤方法,另一种是采用结合评分和评论的协同过滤方法进行推荐。我们在测试数据上,对两种方法的结果进行比较。将用户预测评分和实际评分差的绝对值定义为预测偏差。我们比较了偏差小于等于0.1,在0.1和0.5之间,以及大于0.5的评分记录的百分比。在两种方法中,误差不到0.1的百分比最大,说明我们这两种方法都能较好实现评分预测。其中,结合评分和评论的结果更好,59.2%的预测记录都在偏差为0.1的范围内。我们比较了预测偏差在0.1以内和大于0.1的记录中,用户在商品数量和评论文字上的差异。总而言之,在这项研究中,我们实现了一个综合考虑用户评分和评论的混合协同过滤推荐模型来预测用户的偏好和可能感兴趣的商品评分。第一,我们完成了基于用户评分的协同过滤模块和基于用户评论的协同过滤模块。在每个协同过滤模块中,我们分别根据评分情况和评论信息,通过利用不同的相似度算法寻找目标用户相近用户候选集,再通过我们的评分预测函数,计算目标用户对所有候选商品的评分。第二,在计算用户相似性时,我们分别使用了不同的方法。基于用户评分的协同过滤模块中,我们通过分析所有用户的评分情况,来计算用户是否有较高的相似性。但是,在基于用户的评论的协同过滤模块中,我们通过计算用户评论的相似性,即文本相似度来计算用户之间的相似度。我们使用Embedding技术,通过训练doc2vec和WMD模型,将用户的评论文本表示成特定维度的向量表示形式,进而有效度量两个文本的相似性。第三,我们提出一种混合方法,将这两个协同过滤模块的评分预测结果组合在回归模型中,通过训练模型,来预测推荐商品的评分。最后,我们利用了两组数据进行实验验证,结果表明,我们的方法显著地改进了协同过滤系统,具有较高的推荐性能。总之,我们的实验结果也证实,我们的基于评分和评论的混合推荐技术方案,有效提高了推荐系统对目标用户进行商品推荐的准确性。值得研究的是,如果我们的推荐系统中出现新用户,我们很难对其进行商品推荐,因为我们无法对其通过历史偏好进行分析。在今后的研究中,我们将尝试改进我们的方法,并加入更多的信息来解决冷起动问题。