本发明属于推荐学习领域,特别涉及一种结合标签和时间因素的协同过滤推荐方法。
背景技术:
目前,已有的推荐技术包括基于内容的推荐、协同过滤推荐、混合推荐等,基于内容的推荐算法,首先由系统隐式地获取或者由用户显式地给出用户对物品属性的偏好,然后通过计算已知用户偏好和待预测物品的描述文档(由物品属性刻画)之间的相似度,最后按照偏好排序结果向用户推荐其可能感兴趣的物品。协同过滤,利用当前用户或者其他用户对部分物品的已知偏好数据来预测当前用户对其他物品的潜在偏好,或者利用部分用户对当前物品或者其他物品的已知偏好数据来预测其他用户对当前物品的潜在偏好。协同过滤算法可以分为基于邻域的协同过滤算法和基于模型的协同过滤算法。基于邻域的协同过滤推荐算法包括基于用户的协同过滤推荐算法和基于物品的协同过滤算法。
在使用基于内存协同过滤算法进行评分预测时,用户或物品间的相似度度量扮演者重要角色。传统的协同过滤算法从用户-物品评分矩阵中计算相似度,但是评分矩阵是非常稀疏的,这就导致了推荐的不准确。同时,推荐系统中存在着大量的描述用户和物品的属性特征的标签信息,以及反映用户行为的时间信息,针对电影推荐来说,电影的标签信息就是描述其类型的关键字,用户的标签信息是<性别,年龄,职业>等人口统计学信息。把这些信息融入到传统推荐算法中,是缓解数据稀疏性和冷启动问题的有效方法。
技术实现要素:
本发明的目的,在于提供一种结合标签和时间因素的协同过滤推荐方法,此种方法可有效缓解数据稀疏性问题,提高推荐算法的预测准确性。
为了达成上述目的,本发明的解决方案是:
一种结合标签和时间因素的协同过滤推荐方法,包括如下步骤:
步骤1,基于评分或标签计算用户间、物品间的相似度;
步骤2,寻找邻居用户集、物品集;
步骤3,预测评分,提供个性化推荐。
上述步骤1中,在计算相似度前,首先对标签信息进行预处理,将文本信息转化成数字信息。
上述步骤1中,基于标签计算相似度的公式是:
其中,用户u1或物品i1的标签集所对应的数值型标签向量为t=(t1,t2,…,tm),用户u2或物品i2的标签集所对应的数值型标签向量为s=(s1,s2,…,sm)。
上述步骤1中,基于评分计算用户间相似度的公式是:
其中,ruj、rvj分别表示用户u对物品j的评分和用户v对物品j的评分,
上述热门物品惩罚项wi的计算公式是:
其中,ni表示评论过物品i的用户数。
上述步骤1中,基于评分计算物品间相似度的公式是:
其中,rui、ruj分别表示用户u对物品i的评分和用户u对物品j的评分,
上述步骤2中,获得用户间或物品间的相似度矩阵后,对相似度矩阵进行排序,得到topk个与活动用户/物品最相似的邻居用户/物品集合,分别记为n(u)、n(i)。
上述步骤3中,采用如下模型进行预测:
其中,λ是平衡参数,
simunify*(u,v)表示结合评分信息和标签信息计算用户间的相似度,具体模型如下所示:
simunify*(u,v)=β×simrating*(u,v)+(1-β)simtag(u,v)
simtag(u,v)是用户u和用户v的标签集之间的相似性,
simrating*(u,v)是用户u和用户v的评分之间的相似性,
β是平衡参数;
simunify*(i,j)表示结合评分信息和标签信息计算物品间的相似度,具体模型如下所示:
simunify*(i,j)=α×simrating(i,j)+(1-α)×simtag(i,j)
simtag(i,j)是物品i和物品j的标签集之间的相似性,
simrating(i,j)是物品i和物品j的评分之间的相似性,
α是平衡参数。
采用上述方案后,本发明结合评分信息和标签信息来计算相似度,缓解数据稀疏性问题,同时引入一个时间权值,给予用户最近的行为较大的权值,有效提高推荐的精确性。本发明提出的方法可以针对基于评分矩阵计算出的并不精确的相似度进行改良,进而提高推荐系统的推荐准确性。
附图说明
图1是本发明的流程图。
具体实施方式
以下将结合附图,对本发明的技术方案及有益效果进行详细说明。
如图1所示,本发明提供一种结合标签和时间因素的协同过滤推荐方法,包括如下步骤:
步骤1,基于评分或标签计算用户间、物品间的相似度;
步骤2,寻找邻居用户集、物品集;
步骤3,预测评分,提供个性化推荐。
首先我们获取评分信息和标签信息,要计算相应的用户间或者物品间的评分相似性和标签相似性,就要先对评分信息和标签信息进行预处理。评分信息是推荐系统中可获得的以评分矩阵形式呈现的数据。本文中使用的标签信息,对于电影推荐来说,用户的标签集{m,24,‘educator’}就是描述用户的性别、年龄、职业的人口统计学特征,物品也就是电影,其标签集{action,adventure,animation}就是每个电影的所属的类型。在计算标签集相似度之前,首先把标签集等文本信息转化成数字信息以方便建模。假设用户u1(或物品i1)的标签集所对应的数值型标签向量为t=(t1,t2,…,tm),用户u2(或物品i2)的标签集所对应的数值型标签向量为s=(s1,s2,…,sm)。使用余弦相似性度量方法来计算标签向量之间的相似性,则标签向量t=(t1,t2,…,tm)与s=(s1,s2,…,sm)的相似性计算如下所示:
计算用户u与用户v之间的的评分相似性如下:
其中,ruj、rvj分别表示用户u对物品j的评分和用户v对物品j的评分,
其中ni表示评论过物品i的用户数。
计算物品i和物品j之间的评分相似性如下:
其中,rui、ruj分别表示用户u对物品i的评分和用户u对物品j的评分,
该方法集成了改进的基于用户的协同过滤算法(tt_usercf)和改进的基于物品的协同过滤算法(tt_itemcf)。
tt_usercf结合评分信息和标签信息计算用户间的相似度,同时引入用户兴趣时间权值来进行推荐,预测模型如下所示:
其中,rui表示用户u对物品i的预测评分,其中simunify*(u,v)表示结合评分信息和标签信息计算用户间的相似度,具体模型如下所示:
simunify*(u,v)=β×simrating*(u,v)+(1-β)simtag(u,v)
simtag(u,v)是用户u和用户v的标签集之间的相似性,
simrating*(u,v)是用户u和用户v的评分之间的相似性。
β是平衡参数,决定了标签相似性和评分相似性所占的比重。
f(tvi)是一个时间权值,给予用户最近的行为较大的权值:
f(tvi)=1-exp(-tvi)
tvi表示用户v对物品i评论的时间。tt_itemcf结合评分信息和标签信息计算物品间的相似度,同时引入用户兴趣时间权值来进行推荐,预测模型如下所示:
其中simunify*(i,j)表示结合评分信息和标签信息计算物品间的相似度,具体模型如下所示:
simunify*(i,j)=α×simrating(i,j)+(1-α)×simtag(i,j)
simtag(i,j)是物品i和物品j的标签集之间的相似性;
simrating(i,j)是物品i和物品j的评分之间的相似性。
α是平衡参数,决定了标签相似性和评分相似性所占的比重。
tt_cf最终预测模型为:
其中左半部分是改进的基于用户的协同过滤,右半部分是改进的基于物品的协同过滤。λ是平衡参数,决定了两种算法所占的比重。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。