翟航天,汪学明
(贵州大学 计算机科学与技术学院,贵州 贵阳 550025)
随着大数据产业的蓬勃发展,关于大数据的应用越来越贴近人们的日常生活。在完成互联网大数据累积的同时,也产生了相应的问题,即用户面对众多的资源信息时,在短时间内很难对自己真正的需求做出抉择,从而降低了选取信息的效率。为了解决这一难题,适用于每一个用户的个性化推荐系统应运而生,并且成为近年来一项非常流行的工具以满足互联网用户的个性化需求。推荐系统是一项为用户推荐潜在可能接受的资源的软件工具和技术[1-2]。这种推荐和用户多种多样的决策过程密不可分,例如用户要购买何种商品、平时喜欢什么样的资源、对哪些信息浏览或搜索过。通常,推荐系统面向的用户群体是那些对网络上提供的海量商品难以做出抉择的用户。推荐系统之所以应用广泛,是因为它可以刺激商品销量的急速增长,拓展资源的种类,增加用户的忠实度,更好地理解用户需求。
一个优质的推荐系统不但可以为用户提供个性化推荐,还可以和用户建立密切联系以增加用户对推荐的依赖感。而在一个推荐系统中,推荐算法[3-5]则是决定其好坏的关键因素,被称之为推荐系统的灵魂与核心。因此如何设计高效的推荐算法已经成为目前的研究热点。
在众多的个性化推荐算法中,协同过滤推荐的应用面最广,协同过滤推荐算法主要通过用户历史行为进行分析,使用聚类算法找到用户或资源相似的程度值,通过用户历史行为相似性或资源相似度进行推荐。在现今的众多协同过滤算法中,一般仅使用用户评分等显式反馈信息作为数据进行分析,对于用户的操作行为这类隐式反馈信息造成了浪费。隐式反馈相较于显式反馈的信息量呈现出数量级倍数的增长,但是其中有效数据并不能明显体现出来,因而需要通过相应的算法处理得到有效信息。卢慧琼[4]提出一种基于隐式反馈数据的在线旅游推荐算法,将用户在选取旅游景点时的操作行为与CLIQUE聚类算法相结合,计算出景点之间的相似性结果。刘晓[5]使用密度算法计算区域用户中点的密度大小,将用户加到与之相近的聚类中去。资源标签作为资源分类和索引的重要信息,其可见性既能体现资源特征,又能反映用户偏好。王卫平[6]提出一种基于标签的协同过滤推荐算法,能够较好地削弱数据稀疏性。蔡强[7]使用二维向量来表示用户的兴趣,通过标签的TF-IDF权重向量来计算用户间的相似度。
在上述算法基础上,文中提出一种将隐式反馈数据与资源标签相结合的协同过滤推荐算法。该算法使用现有资源建立Latent Dirichlet Allocation (LDA)模型,分析每个资源的标签主题,将资源主题加权计算出资源相似度矩阵。将用户对各个资源的操作行为赋予标签主题,通过隐式反馈的数据累积计算出用户对资源的偏好概率,以此与资源相似性矩阵相结合,利用协同过滤形成推荐结果。
用户对于资源使用特定的规则进行评分,推荐系统通过此类评分体系获取的数据称为显式反馈。显式反馈有体现用户偏好准确、噪声小、便于理解等优点。同时,显式反馈的缺点也是不容忽视的,显式反馈需要用户通过操作进行评分,并不是所有的用户都会进行此类操作,这就造成了用户评分矩阵存在很大稀疏性,相当一部分用户由于没有评分数据,推荐系统对其进行了错误的推荐。另一方面,由于用户评分能够充分反映用户的偏好,这就存在用户隐私保护方面的隐患。
隐式反馈是一种通过分析用户操作行为获取用户偏好数据的反馈方法。系统可以通过收集用户对于资源的搜索、浏览,页面停留时长,鼠标动态等方式,获取数据并从中挖掘出用户对于资源的偏好值。相较于显式反馈,隐式反馈的方式对于每一个用户都进行了操作数据收集,数据量是显式反馈的数量级倍数,不存在用户偏好矩阵出现矩阵稀疏的现象。隐式反馈数据不能明显地体现出用户偏好,噪声大容易误导推荐系统,但是这种方式能更好地保护用户隐私,噪声大的缺点可以通过算法模型的改进加以解决。文中使用的隐式反馈模型如下:
(1)
偏好Pij:多元变量,表示用户U对资源V的偏好。
Cij=1+αrij
(2)
信度Cij:变量,衡量了推荐系统对观测值的信任度。
最小化损失函数:
(3)
其中,rij在隐式反馈数据集中表示用户行为的观测,如用户U浏览信息i的次数、用户U收听音乐i的频率等等。
LDA模型简单有效,应用于主题模型研究。LDA模型的基本思想:主题和词汇之间的分布符合多项式分布,资源和主题之间的分布也符合多项式分布[8-9]。
在LDA模型中,有V个相互独立的词汇,K个相互独立的主题,M个资源。根据模型的基本思想,有w~Multi(w|φk),z~Multi(z|θm),φk表示第K个主题的多项式分布参数,长度为V,θm表示第M个资源的多项式分布参数,长度为K。且φk和θm的先验分布都是Dirichlet分布,φ~Dirichlet(α),θ~Dirichlet (β)。
那么一个资源的主题和词汇分布就可以描述为:
P(zm.n|θm)P(θm|α)P(φ|β)
(4)
根据式4,将隐含变量消除,通过极大似然估计方法求出资源的主题-词汇边缘概率。
(5)
在算法的实际应用中,通常有一些资源分布,通过算法自动提取主题,或者通过现有的资源训练出LDA模型,然后预测新的资源所属主题分类,也就是求出φ和θ的后验概率分布。虽然LDA的模型很简单,但是要精确求出参数的后验概率分布却是不可行的,只能通过近似的方式求解。现如今已经发现了很多近似求解方法,其中比较简单的就是Gibbs Sampling采样。对于式4中很复杂的高维概率分布P(zm,wm,θm,φ|α,β),参数θm和φ本身关联zm和wm,所以通过Gibbs Sampling多次重复,采样结果收敛后由贝叶斯法则可以得到主题分布概率,最后结合Dirichlet共轭结构推导得到参数模型结果:
(6)
(7)
由此,通过将后验分布参数代入,通过大量的资源就可以训练LDA模型。
图1 推荐算法框架
文中将用户隐式反馈数据和资源建立LDA模型相结合,提出一种基于隐式反馈和LDA模型的协同过滤推荐算法。如图1所示,算法分为两部分,一部分通过LDA模型和Gibbs Sampling采样,资源可以通过建立LDA模型,挖掘资源中的若干主题标签,通过这些标签统计出资源-标签矩阵,计算该矩阵中资源相互之间的标签关系,从而得到资源相似度矩阵。另一部分将用户的隐式反馈数据进行统计,并在数据中加入资源-标签矩阵的标签,计算出用户对各项资源的偏好概率矩阵。将资源相似度矩阵与用户偏好矩阵相结合计算出相似资源中用户偏好的资源Top-N个性化推荐结果。
首先将所有资源进行LDA建模,根据模型分析出的标签建立资源-标签矩阵。在所有资源中有主题数K,对所有资源中所有的词汇随机赋予主题编号ki。重新扫描所有资源,通过Gibbs Sampling重新对每一个资源中的词汇进行采样,并在资源中更新。重复此采样过程直到Gibbs Sampling收敛,从而获得式6和式7中的超级参数α、β。将超级参数带入式5获得主题分布,从而LDA模型建立完成,当有新资源加入时,不需要将上述模型建立过程重新运行,因为新资源中的主题也存在于上述过程规定的主题,已求得的参数φk,t意味着已经确定了所有资源主题的分布概率。
(8)
如式8所示,新加入的资源很难撼动原来由大量资源训练出来的LDA模型,因此新加入的资源直接使用该模型即可。统计资源主题出现的频率,获得的矩阵就是资源-标签矩阵Pm*k。
基于资源-标签矩阵计算资源相似度,文中采用John S.Breese在论文中提出的一个称为IUF的计算公式,将统计到的标签个数作为参数来修正两种资源的相似性,他认为两种资源相同标签的共现频率对资源相似度的影响权重应大于Pearson相关系数的影响权重[10],计算公式如下:
(9)
其中,wi,j表示资源i和资源j之间的相似度;N(i)表示资源i中出现的所有标签的集合;|N(i)∩N(j)|表示资源i和资源j中出现相同标签的频率。
通过式10可以计算出资源相似度矩阵Wn*n。
(10)
通过第1节介绍的隐式反馈数据处理模型,对隐式反馈数据进行处理。用户ui对于每一项资源的各项操作,例如用户对该资源的搜索次数、点击次数、页面停留时长等,通过式1、式2、式3进行行为分值计算,获得的结果就是用户偏好值hi。计算出的矩阵Hm*i就是用户对于资源的偏好值矩阵。
计算用户偏好矩阵Hm*i后,将主题标签分布矩阵Pm*k与其进行计算处理,这样可以充分明确用户对于各资源与各主题标签的偏好,从而提高推荐结果的准确性。
文中提出的基于隐式反馈和LDA模型的协同过滤推荐算法描述如下:
输入:资源记录、主题集、隐式反馈数据;
输出:Top-N推荐结果。
步骤1:输入资源记录和主题集,对所有资源进行Gibbs Sampling直至收敛;
步骤2:将收敛的采样结果进行LDA建模,计算出资源-标签矩阵Pm*k;
步骤3:根据资源-标签矩阵Pm*k中的主题标签共现频率,根据相似度公式计算出资源相似度矩阵Wn*n;
步骤4:通过分析隐式反馈数据,由数据模型计算出用户偏好矩阵Hm*i;
步骤5:将矩阵Wn*n和矩阵Hm*i进行协同过滤计算获得Top-N推荐结果。
实验数据集使用Retailrocket电子商务网站数据集,该数据集包括三个文件:一个数据文件(events.csv),一个属性文件(item_properties .csv)和一个描述分类树的文件(category_tree .csv)。这些数据是从真实的电子商务网站收集的。这是原始数据没有任何改变,由于保密问题所有的值都是离散排列的[11-14]。为减少计算量,在该数据集中仅选取操作活跃的用户数据作为实验数据,并按照3:1的比例划分训练集和测试集。通过Maven构建Mahout协同过滤项目实现隐式反馈数据处理模型和LDA模型代码,将所有资源的主题数设置为25,Gibbs Sampling重复次数设置为500。
准确率是推荐算法中最重要的测评数据,用来衡量算法推荐结果的准确性,表示推荐给用户的资源中有多少比例是用户所接受的物品。计算方法为算法推荐资源集合与用户接受资源集合的交集与推荐资源集合的比值。准确率计算公式如下:
(11)
其中,R(u)是推荐给用户u的资源集合;T(u)是用户实际操作的资源集合。
召回率是推荐算法中另一个重要测评数据,与准确率一起被合称为精确率,表示用户所接受的资源中有多少比例是算法推荐给用户的资源。计算方法为算法推荐资源集合与用户接受资源集合的交集与用户实际操作的资源集合的比值。召回率计算公式如下:
(12)
为了验证提出的协同过滤算法是否准确性更高,设计了3组实验进行对比分析。第一组实验采用基于LDA模型的协同过滤算法[15],该算法是通过建立LDA模型计算用户对于资源的偏好值,将偏好值进行排名,推荐排名前N个结果;第二组实验使用基于隐式反馈的协同过滤推荐算法[16],通过处理隐式反馈数据得出用户偏好概率,并将概率较大的资源推荐给用户;第三组实验是文中提出的基于隐式反馈和LDA模型的协同过滤推荐算法。每次实验选择相同的测试集和训练集,以推荐资源数N为变量,分别对三种算法的准确率和召回率进行对比。
在实验中,超级参数α、β值的选取对于LDA模型建立会产生巨大影响,由此首先进行α、β的值对于准确度的影响实验。由图2可以看出,一开始准确度随着α的增大而增大,当α的值到达0.11时准确率达到最高,推荐效果达到最佳,之后随着α的增大准确度开始下滑。
图2 准确度随α值的变化曲线
由图3可以看出,一开始准确度在β的值取0.01时达到最高,之后随着β的增大准确度逐渐下降。由此可知,当α=0.11,β=0.01时文中提出的算法效果会达到最佳。
图3 准确度随β值的变化曲线
在选取参数值后,开始对三种算法进行对比实验。根据图4所示,随着推荐资源Top-N中N个数的增长,三种算法的准确率整体呈现出先升高后降低的趋势,当N取15时,推荐算法准确率达到峰值。
图4 三种算法的准确率对比结果
根据图5所示,随着N个数的增长,三种算法的召回率整体呈现出稳定增长的趋势。
图5 三种算法的召回率对比结果
由实验结果可见,基于隐式反馈和LDA模型的协同过滤推荐算法,在准确率和召回率两项指标上的推荐质量高于基于LDA模型的协同过滤算法和基于隐式反馈的协同过滤推荐算法。
从实际角度出发,提出了一种隐式反馈与资源标签相结合的协同过滤推荐算法。对资源进行Gibbs采样,通过建立LDA模型计算出资源-标签矩阵。充分利用资源标签矩阵,首先在隐式反馈数据中赋予主题标签以此计算出用户标签偏好,之后依据资源-标签矩阵计算资源相似度矩阵,将两矩阵结合协同过滤推荐算法,预测用户个性化偏好。在Retailrocket网站行为数据集上的实验结果表明,相较于传统基于隐式反馈和基于标签的协同过滤推荐算法,该算法能有效地提高推荐质量。下一步将进一步改进隐式反馈数据处理模型,增加偏好精准度,提高推荐准确率。