0 引 言
随着移动用户数量的增加和移动设备的方便使用,移动用户能够很方便地对餐饮进行评分。但在实际的餐饮个性化推荐中采用传统的协同过滤技术,即首先为目标用户寻找兴趣相似的邻居用户,然后把邻居用户感兴趣的项目推荐给目标用户。这种推荐往往不准确,不能满足用户的真正需求。
移动用户无法通过小小的移动设备在短时间内浏览所有餐饮信息,从而面临“信息超载”的问题,使用户失去兴趣。解决此类问题常采用的方法有信息检索、关联规则、基于项目属性和云填充的协同过滤推荐算法提出在项目评分预测推荐的基础上结合云模型的算法。
本文在移动用户餐饮个性化推荐中,对传统协同过滤算法进行改进,在移动用户餐饮个性化推荐中取得了较为理想的效果。
1 协同过滤算法
在大多数采用协同过滤算法的推荐系统中,由于用户评分的项目往往不超过总项目[5]数的1%,所以导致评分数据的极端稀疏性,使得传统的相似性计算方法不能准确地计算出项目之间的相似性。文献[6]提出结合似然关系模型和用户等级的协同过滤推荐算法。协同过滤算法中一般采用以下几种相似性计算算法。
1.1 相似性计算
(1) 余弦相似性
用户评分看作为[n]维项目空间上的向量,如果用户对项目没有进行评分,则将用户对该项目的评分设为0,用户间的相似性通过向量间的余弦夹角度量。设用户[i]和用户[j]在[n]维项目空间上的评分分别为向量[pi,][pj,]则用户[i]和用户[j]直接的相似度sim(i,j)为:
[sim(i,j)=cos (pi,pj)=(pi,pj)pi?pj] (1)
(2) 相关相似性
设用户[i]和[j]共同评分过的项目集合用[Iij]表示,则用户[i]和用户[j]之间的相似性sim(i,j)通过pearson相关系数度量:
[sim(i,j)=c∈Iij(Ri,c-Ri)(Rj,c-Rj)c∈Iij(Ri,c-Ri)2c∈Iij(Rj,c-Rj)2] (2)
(3) 修正的余弦相似性
在余弦相似性度量方法中没有考虑不同用户的评分尺度问题,修正的余弦相似性度量方法通过减去用户对项目的平均评分改善了该缺陷, 设用户i和j共同评分过的项目集合用[Iij]表示,[Ii]和[Ij]分别表示用户i和用户j评分过的项目集合,则用户i 和用户j 之间的相似性sim(i,j)为: [sim(i,j)=c∈Iij(Ri,c-Ri)(Rj,c-Rj)c∈Ii(Ri,c-Ri)2c∈Ij(Rj,c-Rj)2] (3)
式中:Ri,c表示用户i对项目c评分;[Ri]和[Rj]分别表示用户i和用户j对项目c的平均评分。
1.2 推荐
根据其他相似邻居集用户兴趣,对目标用户进行评分预测,预测推荐公式如下:[Pu,i=Ru+a=1n(Ra,i-Ra)sim(u,a)a=1nsim(u,a)] (4)
式中:[Ru]和[Ra]分别表示用户[u]和用户[a]对项目的平均评分;sim(u,a)是用户[u]和用户[a]的相似系数;Ra,i表示用户[a]对项目[i]的评分;[n]是用户的个数。
2 餐饮个性化需求推荐
随着移动用户在餐饮方面的需求越来越高,普通的个性化推荐很难满足用户的真正需求,本文从移动用户的角度出发,考虑餐饮之间味道的相似性和移动用户餐饮评价相似性,综合这两方面的因素,在移动用户餐饮个性化推荐中取得了较为理想的效果。
2.1 餐饮味道相似性
计算餐饮味道的相似性,味道包括酸、甜、苦、辣、咸等其他味道,假设餐饮的种类为n,其中每道餐饮又有k种味道,表1为餐饮的种类对应的多种味道,1代表餐饮具有某种味道,0代表不具有某种味道。
根据表1每种餐饮对应的多种味道可知,计算各个餐饮味道的相似性,假设餐饮A和餐饮B在n维味道空间上看作是向量[A={A1,A2,…,Ai},][B={B1,B2,…,Bi},]并且由于该向量的取值为二维数据(0或者1) ,则餐饮A和餐饮B之间的味道相似性[sims(A,B)]计算公式为:
[sims(A,B)=i=1nAi?Bin] (5)
式中:[Ai?Bi]表示[Ai]和[Bi]的交集。
2.2 移动用户餐饮评价相似性
以餐饮为点评对象,在事件性营销、培育核心用户和全面社区化策略下,迅速聚拢人气,构建内容较丰富的餐饮口碑信息库,用户的点评数量和质量影响着其他用户的体验,用户对餐饮的评价可用1~5分来表示,其中1~3分可表达不喜欢,用数值0表示。4~5分表达喜欢,用数值1表示。也可以直接表达顾客喜欢/不喜欢,用数值1/0表示。对于未评分的餐饮,简单的办法就是将未评分餐饮设为一个固定的缺省值,通常取餐饮的评分均值进行填充。这种改进方法确实可以提高推荐精度。
假设用户u对餐饮a、b、c评分为2分、3分、5分,但未对餐饮d进行评价,可以参考对前三种餐饮的评分均值得到。这里引入计算相似性的杰卡德系数来描述,杰卡德相似系数是衡量两个集合相似度的一种指标。其思想是两个集合A和B的交集元素在A,B并集中所占的比例,称为两集合的杰卡德相似系数,用符号[J(A,B)]表示,[J(A,B)=A?BA?B,]可将杰卡德相似系数用在衡量样本的相似度上。样本A与样本B是两个n维向量,而且所有维度的取值都是0或1。根据对上面杰卡德系数的分析,这里引入杰卡德系数用来自适应调节用户之间的相似性值,设用户u和用户v的杰卡德系数如下:
[J(u,v)=Ru?RvRu?Rv] (6)
式中:[Ru]和[Rv]分别为用户u和用户v的评分项目集合;[J(u,v)∈][0,1];[?]表示集合中的项目数。当两个用户拥有完全相同的评分项目集合时,值为1。
从用户对餐饮评分的角度来看,共同评分占用比越高,则说明两个人感兴趣的餐饮越相似。利用杰卡德系数通过两个用户的评分分布计算两用户的相似性,两用户共同评价的餐饮所占的比例越大,则相似性就越高。用户评价大于3分的用数值1表示,评价小于3分的用0表示。假设用户u对餐饮a、b、c的评分分别是5分、4分、2分,用数值表示为(110),用户v对餐饮a、b、c的评分分别是4分、2分、3分,用数值表示为(101),则用户u和用户v的相似度为[13。]这里用杰卡德系数和sim(u,v)相结合达到修正sim(u,v)的效果,最终获得更加准确的用户之间的相似性:
[simr(u,v)=J(u,v)?sim(u,v)] (7)
将用户之间相似性[simr(u,v)]和餐饮的味道相似性[sims(u,v)]相结合,其中a∈[0,1],a是调节基于两种相似性的平衡因子。
[sim(i,j)=asims(i,j)+(1-a)simr(i,j)] (8)
2.3 餐饮个性化推荐
根据一些移动用户对餐饮的评价,对这些数据进行整理,计算用户u对餐饮i的预测评价Pu,i可以通过用户u对最近邻居集合中项目的评分得到,将餐饮之间相似性和修正过的用户相似性结合,应用到用户u对餐饮的预测评分,计算公式如下:
[Pu,i=Ru+a=1n(Ra,i-Ra)sim(u,a)a=1nsim(u,a)] (9)
式中:Ra,i表示用户a对餐饮i的评分;[Ru]和[Ra]分别表示对餐饮u和a的平均评分。
3 实验结果分析
本文试验中选取了200名注册的移动用户对50道餐饮进行的1 000条评分记录作为实验数据集。MAE通过计算所有预测评分与实际评分的偏差来评价算法的优劣。MAE值越小,则算法越精确。
[MAE=(u,i)∈RTPu,i-Ru,iRT] (10)
式中:Pu,i表示用户u对餐饮i的预测评分;Ru,i表示顾客u对餐饮i的真实评分;RT表示测试集。
用户邻居数目从10增加到50,中间间隔为10,比较不同邻居数目下两种算法的不同MAE值,如图1所示。其中a=0.5,由图1可知MAE值越小准确率越高,改进的协同过滤算法明显优于传统的协同过滤,将预测评分最高的N个餐饮推荐给用户。
4 结 语
考虑到移动用户平时对各种餐饮的评分,本文引入杰卡德系数,将杰卡德系数和用户相似性联系在一起达到修正的目的,再和餐饮味道相似性线性相结合,最终预测移动用户对餐饮的评分,改进的协同过滤算法在移动用户餐饮个性化推荐中取得了较为理想的效果。
参考文献
[1] 孙金刚,艾丽荣.基于项目属性和云填充的协同过滤推荐算法[J].计算机应用,2012(3):658?660.
// Procee?dings of the 10th International Conference on World Wide Web. New York: ACM Press, 2001: 285?295.
[3] 贺银慧,陈端兵,陈勇,等.一种结合共同邻居和用户评分信息的相似度算法[J].计算机科学,2010(9):184?186.