电商行业智能推荐引擎的探索 机器学习助力母婴电商
拓端帮助国内母婴电商公司创建智能推荐引擎,由此打造精准、高效的购物体验,探索如何在大规模数据上实现各种推荐策略,进行策略优化,构建高效的推荐引擎的解决方案。
业务挑战
随着电商网站用户数量和商品数量的增加,数据成为影响推荐质量的重要因素。作为电子商务中一个热门领域,价值万亿的中国母婴市场随着二孩政策的全面放开已经进入高增速增长时代,母婴消费市场每年可新增超300亿母婴消费,至少带来年均13%左右的新增长空间,巨大的市场必然蕴含着巨大的商机和强大的利润空间。
随着电商平台的蓬勃发展和用户群体的不断壮大,数据在提升推荐系统质量方面扮演着愈发重要的角色。尤其在商品数量急剧增长的背景下,如何准确、高效地为用户推荐符合其需求的产品,成为电商行业面临的一大挑战。
中国母婴市场作为电子商务中的一个重要细分领域,近年来呈现出迅猛的发展势头。随着二孩政策的全面放开,母婴市场的增速进一步加快,市场规模不断扩大。每年新增的母婴消费群体和消费需求为市场带来了持续的增长动力,预计未来几年内,这一市场仍将保持高速增长的态势。
举个简单的小例子,我们已知道
用户u1喜欢的电影是A,B,C
用户u2喜欢的电影是A, C, E, F
用户u3喜欢的电影是B,D
我们需要解决的问题是:决定对u1是不是应该推荐F这部电影
基于内容的做法:要分析F的特征和u1所喜欢的A、B、C的特征,需要知道的信息是A(战争片),B(战争片),C(剧情片),如果F(战争片),那么F很大程度上可以推荐给u1,这是基于内容的做法,你需要对item进行特征建立和建模。
协同过滤的办法:那么你完全可以忽略item的建模,因为这种办法的决策是依赖user和item之间的关系,也就是这里的用户和电影之间的关系。我们不再需要知道ABCF哪些是战争片,哪些是剧情片,我们只需要知道用户u1和u2按照item向量表示,他们的相似度比较高,那么我们可以把u2所喜欢的F这部影片推荐给u1。
众所周知,解决信息过载的方式主要有类目导航、搜索、推荐,还有目前大热的聊天机器人(chatbot),但其本质也是基于推荐系统和知识图谱实现的。
推荐不同于或者优于搜索的地方在于:搜索需要用户知道自己需要什么,而推荐则可以做到帮助用户发现自己需要什么或者让你需要的信息主动找到你,而且更加个性化,甚至能做到“比你自己更了解你自己”。
传统推荐机制主要有基于人口统计学的推荐机制的工作原理和基于内容推荐机制的基本原理。
基于人口统计学的推荐机制的工作原理
豆瓣的推荐“豆瓣猜”
基于内容推荐机制的基本原理
而母婴类的商品具有种类多、功能相似的特点,用户在购买时会出现“信息迷航”的问题,同时,由于母婴市场激烈的竞争,商品同质化越来越严重,传统的推荐机制能难满足业务需求。
对于本次合作而言,所面临的主要挑战就是如何设计智能推荐引擎从海量商品中准确找到用户所需要的商品。
混合IBCF算法的离线与实时的分布式设计实现
在现行的 Web 站点上的推荐往往都不是单纯只采用了某一种推荐的机制和策略,往往是将多个方法混合在一起,从而达到更好的推荐效果。结合业务痛点,我们采用一种基于矩阵填充技术的混合IBCF算法。首先利用准确度指标找出SVD的最优参数和混合IBCF算法的最佳权重,然后使用SVD降维方法对原始的高维稀疏矩阵进行预测填充,最后使用IBCF在用户所属类中寻找目标用户最近邻并使用最佳权重合并结果产生推荐。该算法利用用户与商品之间的潜在关系克服了稀疏性问题,同时保留了可离线建模、可扩展性好等优点。
以母婴产品为例,通过分析母婴类产品,收集数据集构造母婴领域不同类型产品的特征向量。提取母婴类偏好系数不为0的用户为目标用户,通过用户访问的时间偏好来确定服务推荐的权重,计算其访问的母婴类与目标产品的特征向量的相似度来确定推荐产品的类型。最后,在母婴之家购物平台上实践结果表明,该方法确实可提升用户的个性化推荐。
用户个性化需求解决方案设计
提高计算精度——优化k值,SVD和ItemCF的合并
由于母婴类商品的相似性较高,不同商品具有比较固定的相似度,所以我们使用基于物品的协同过滤算法(IBCF)来进行推荐,在推荐过程中可以预先在线下计算好不同商品之间的相似度结果,然后把结果存在相似度表中,当推荐时进行表的查询,预测用户可能的偏好值,从而进行推荐。同时,由于母婴商品相似度高,当推荐过程的运算量比较大的时候,使用物品的一个小部分子集也可以得到高质量的预测结果。
针对上述问题,使用SVD方法将用户评分分解为不同的特征及这些特征对应的重要程度,利用用户与商品之间潜在的关系,用初始评分矩阵的奇异值分解去抽取一些本质的特征,降低数据维度来进行推荐,从而提高运算效率。
由于SVD算法中保留的维数k很重要,也不容易选取,k如果太小,容易失去原始数据中重要的信息,不能得到用户评分矩阵的重要结构,k如果选大了,达不到降维的目的,而且容易过拟合训练数据,因此测试数据时需要先对k的取值进行优化,选取最优的k值然后再进行实验。
更客观地评价用户对商品的兴趣——用户行为权重、用户遗忘曲线
首先根据用户的不同行为(bhv)定义偏好权重,行为: “投诉” 、”下单”、 “商品浏览” 、”商品加入购物车” 、”评论”分别对应偏好分值-1、4、3、2、3。
然而传统的推荐基于用户兴趣是固定不变的假设,即用户兴趣不随时间的变化而改变,因此,这些方法不能反映用户兴趣的变化。同时,被推荐的资源(产品)往往具有时效性,用户的兴趣也往往随时间的不同而变化。
随时关注您喜欢的主题
针对以上问题,为了满足用户的个性化需求,我们提出了基于时间加权的协同过滤算法,考虑了时间对推荐质量的影响,认为用户兴趣随时间的流逝而衰减,即某个用户感兴趣的资源最可能和他近期访问过的资源相似。
其中,艾宾浩斯遗忘曲线可以较好的描述用户浏览商品和遗忘的过程。它认为当用户浏览商品时,商品信息输入大脑后,遗忘也就随之开始了。遗忘率随时间的流逝而先快后慢,特别是在刚刚识记的短时间里,遗忘最快。遵循艾宾浩斯遗忘曲线所揭示的记忆规律,对所浏览的商品及时进行推荐,可以提升用户的个性化推荐。
因此,我们根据用户对商品行为距今的时间差对用户的偏好进行权重调整,其中时间权重的计算使用艾宾浩斯(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值然后再进行实验。
为了验证所提出的算法的性能,将传统的推荐算法和提出的基于SVD的协同过滤的算法(SVD approximation)进行TOP-N实验比对。
奇异值分解(SVD)中k值优化
性能比较
其中,使用SVD对用户-商品评价矩阵降低稀疏程度时使用上述实验得到的45作为最佳维度。实验指标使用ROC曲线性能。在测试数据集上,这五种方法在不同近邻个数上的ROC性能表现如图所示,其中横坐标为FPR,纵坐标是TPR值。
不同算法ROC曲线的比较
不同算法准确度的比较
在图中,曲线random item代表随机推荐算法,曲线popular item代表热门物品推荐算法,曲线user-based cf代表基于用户的协同过滤算法,曲线item-based cf代表基于物品的协同过滤算法,曲线SVD approximation代表基于SVD矩阵分解的协同过滤算法。
可以看到基于SVD矩阵分解的协同过滤算法在ROC指标上要优于其他算法。
线上AB实验评估
主要采用的评价指标包括点击量、点击率等。算法效果简述如下:
商品推荐方面(原算法为基于点击行为的CF算法):
离线:PC商品详情页推荐点击率提升12%;
实时:PC商品详情页推荐点击率提升3%左右。该部分经过后续优化,效果略有提升。
用户行为统计分析
个性化推荐
推荐相似行为用户
后续可优化点
1、如何度量用户的社交信息。根据用户评分信息使用皮尔逊相似度来衡量社交网络中用户关系权重,标准单一,算法准确度受到一定影响。因此,利用社交网络中的信息更加准确地衡量用户关系是值得进一步研究的问题。
2、界定短期偏好的时间阈值的自动调整。提出的算法在离线阶段结束后,时间阈值已经确定,然而在实际应用中用户数目、用户行为、用户关系都是不断变化的。