ITPub博客

首页 > 大数据 > 数据挖掘 > 混合IBCF协同过滤推荐算法推荐引擎

混合IBCF协同过滤推荐算法推荐引擎

原创 数据挖掘 作者:tecdat 时间:2020-11-04 17:28:55 0 删除 编辑

原文链接: http://tecdat.cn/?p=3948

 

混合IBCF算法的离线与实时的分布式设计实现

在现行的 Web 站点上的推荐往往都不是单纯只采用了某一种推荐的机制和策略,往往是将多个方法混合在一起,从而达到更好的推荐效果。结合业务痛点,我们采用一种基于矩阵填充技术的混合IBCF算法。首先利用准确度指标找出SVD的最优参数和混合IBCF算法的最佳权重,然后使用SVD降维方法对原始的高维稀疏矩阵进行预测填充,最后使用IBCF在用户所属类中寻找目标用户最近邻并使用最佳权重合并结果产生推荐。该算法利用用户与商品之间的潜在关系克服了稀疏性问题,同时保留了可离线建模、可扩展性好等优点。

以母婴产品为例,通过分析母婴类产品,收集数据集构造母婴领域不同类型产品的特征向量。提取母婴类偏好系数不为0的用户为目标用户,通过用户访问的时间偏好来确定服务推荐的权重,计算其访问的母婴类与目标产品的特征向量的相似度来确定推荐产品的类型。最后,在母婴之家购物平台上实践结果表明,该方法确实可提升用户的个性化推荐。

【大数据部落】电商行业智能推荐引擎的探索2

用户个性化需求解决方案设计

提高计算精度——优化k值,SVD和ItemCF的合并

由于母婴类商品的相似性较高,不同商品具有比较固定的相似度,所以我们使用基于物品的协同过滤算法(IBCF)来进行推荐,在推荐过程中可以预先在线下计算好不同商品之间的相似度结果,然后把结果存在相似度表中,当推荐时进行表的查询,预测用户可能的偏好值,从而进行推荐。同时,由于母婴商品相似度高,当推荐过程的运算量比较大的时候,使用物品的一个小部分子集也可以得到高质量的预测结果。

针对上述问题,使用SVD方法将用户评分分解为不同的特征及这些特征对应的重要程度,利用用户与商品之间潜在的关系,用初始评分矩阵的奇异值分解去抽取一些本质的特征,降低数据维度来进行推荐,从而提高运算效率。

由于SVD算法中保留的维数k很重要,也不容易选取,k如果太小,容易失去原始数据中重要的信息,不能得到用户评分矩阵的重要结构,k如果选大了,达不到降维的目的,而且容易过拟合训练数据,因此测试数据时需要先对k的取值进行优化,选取最优的k值然后再进行实验。

更客观地评价用户对商品的兴趣——用户行为权重、用户遗忘曲线

首先根据用户的不同行为(bhv)定义偏好权重,行为: "投诉" 、"下单"、 "商品浏览" 、"商品加入购物车" 、"评论"分别对应偏好分值-1、4、3、2、3。

然而传统的推荐基于用户兴趣是固定不变的假设,即用户兴趣不随时间的变化而改变,因此,这些方法不能反映用户兴趣的变化。同时,被推荐的资源(产品)往往具有时效性,用户的兴趣也往往随时间的不同而变化。

针对以上问题,为了满足用户的个性化需求,我们提出了基于时间加权的协同过滤算法,考虑了时间对推荐质量的影响,认为用户兴趣随时间的流逝而衰减,即某个用户感兴趣的资源最可能和他近期访问过的资源相似。

IMG_256 【大数据部落】电商行业智能推荐引擎的探索2

其中,艾宾浩斯遗忘曲线可以较好的描述用户浏览商品和遗忘的过程。它认为当用户浏览商品时,商品信息输入大脑后,遗忘也就随之开始了。遗忘率随时间的流逝而先快后慢,特别是在刚刚识记的短时间里,遗忘最快。遵循艾宾浩斯遗忘曲线所揭示的记忆规律,对所浏览的商品及时进行推荐,可以提升用户的个性化推荐。 

因此,我们根据用户对商品行为距今的时间差对用户的偏好进行权重调整,其中时间权重的计算使用艾宾浩斯(H.Ebbinghaus)遗忘率 ,得到最终的用户行为偏好为。

用户购买周期性问题解决——惩罚上一周购买

然而,常常存在这样一种现象,用户往往在根据自己的兴趣爱好购买了商品之后,一段时间内会对所购买物品相似的物品产生“疲倦期”,会更加趋向于选择与以前购买过的商品较为相异的那些新商品进行购买。从本质上讲,这种情况往往发生在作为用户短期兴趣的资源上,这样的用户兴趣会随时间的接近而衰减。因此,如果能有效识别出用户的短期兴趣,在预测用户最感兴趣的资源时加以考虑,区分不同时间对推荐的不同影响,可以提升用户的个性化推荐。

因此,进一步清晰区分用户长期兴趣和短期兴趣在预测评分时所起的不同作用。认为预测资源的评分时,作为短期兴趣的可进行衰减。  

 Item画像设计

变量

描述

变量类型

DeviceIdentity

用户id

名义变量

SKUId_All

商品id

名义变量

is_temai

是否特卖商品

名义变量

bhv_type

用户行为类型

名义变量

bhv_cnt

行为数量

数值变量

bhv_datetime

行为时间

日期变量

 

基于Item画像的相似度计算是Item间相似度计算中至关重要的一部分,也是增加Item间区分度的有效手段(因为同质化都比较严重),同时也通过这种方式将CB算法融入到了CF中。

SVD算法参数k的设定

SVD 算法中保留的维数k很重要,也不容易选取,k如果太小,容易失去原始数据中重要的信息,不能得到用户评分矩阵的重要结构,k如果选大了,达不到降维的目的,而且容易过拟合训练数据,本节利用测试集数据先对k的取值进行优化,选取最优的k值然后再进行实验。

Rplot01

  奇异值分解(SVD)中k值优化

性能比较

为了验证所提出的算法的性能,将传统的推荐算法和提出的基于SVD的协同过滤的算法(SVD approximation)进行TOP-N实验比对。其中,使用SVD对用户-商品评价矩阵降低稀疏程度时使用上述实验得到的45作为最佳维度。实验指标使用ROC曲线性能。在测试数据集上,这五种方法在不同近邻个数上的ROC性能表现如图所示,其中横坐标为FPR,纵坐标是TPR值。

【大数据部落】电商行业智能推荐引擎的探索2  不同算法ROC曲线的比较

【大数据部落】电商行业智能推荐引擎的探索2

 不同算法准确度的比较

 

在图中,曲线random item代表随机推荐算法,曲线popular item代表热门物品推荐算法,曲线user-based cf代表基于用户的协同过滤算法,曲线item-based cf代表基于物品的协同过滤算法,曲线SVD approximation代表基于SVD矩阵分解的协同过滤算法。

可以看到基于SVD矩阵分解的协同过滤算法在ROC指标上要优于其他算法。

线上AB实验评估

主要采用的评价指标包括点击量、点击率等。算法效果简述如下:

商品推荐方面(原算法为基于点击行为的CF算法):

离线:PC商品详情页推荐点击率提升12%;

实时:PC商品详情页推荐点击率提升3%左右。该部分经过后续优化,效果略有提升。

后续可优化点

1 、如何度量用户的社交信息。根据用户评分信息使用皮尔逊相似度来衡量社交网络中用户关系权重,标准单一,算法准确度受到一定影响。因此,利用社交网络中的信息更加准确地衡量用户关系是值得进一步研究的问题。

2 、界定短期偏好的时间阈值的自动调整。提出的算法在离线阶段结束后,时间阈值已经确定,然而在实际应用中用户数目、用户行为、用户关系都是不断变化的。

 

 


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69982319/viewspace-2732210/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
拓端tecdat分享最in的大数据资讯,提供“一站式”的数据分析学习和咨询体验,让我们一起做有态度的数据人。关注公众号:拓端数据部落、拓端数据。

注册时间:2020-08-21

  • 博文量
    87
  • 访问量
    35327