商品引荐系统浅析
商品引荐系统浅析
一、综述
本文主要做引荐系统浅析,主要引见引荐系统的定义,引荐系统的根底框架,简单引见设计引荐的相关办法以及架构。适用于局部对引荐系统感兴味的同窗以及有相关根底的同窗,自己程度有限,欢送大家指正。
二、商品引荐系统
2.1 引荐系统的定义
引荐系统实质上还是处理信息过载的问题,协助用户找到他们感兴味的物品,深度发掘用户潜在的兴味。
2.2 引荐架构
其实引荐系统的中心流程只要召回、排序、重排。
恳求流程
当一个用户翻开一个页面,这个时分前端会携带用户信息(pin或者uuid等)去恳求后台接口(经过color间接调用),当后台收到恳求后普通会先依据用户标识停止分流获取相关战略配置(ab战略),这些战略去决议接下来会调用召回模块、排序模块以及重排模块的哪个接口。普通召回模块分多路召回,每路召回担任召回多个商品,排序和重排担任调整这些商品的次第。最后选择出适宜的商品并停止价钱、图片等相关信息补充展示给用户。用户会依据本人能否感兴味选择点击或者不点击,这些触及用户的行为会经过日志上报到数据平台,为之后效果剖析和应用用户行为引荐商品奠定根底。
其实有些问题想说一说:
为什么要采取召回、排序、重排这种漏斗分层架构?
(1)从性能方面
终极:从百万级的商品库挑选出用户感兴味的个位数级别的商品。
复杂的排序模型线上推断耗时严重,需求严厉控制进入排序模型的商品数量。需求停止拆解
(2)从目的方面
召回模块:召回模块的任务是快速从大量的物品中挑选出一局部候选物品,目的是不要漏掉用户可能会喜欢的物品。召回模块通常采用多路召回,运用一些简化的特征或模型。
排序模块:排序模块的任务是精准排序,依据用户的历史行为、兴味、偏好等信息,对召回模块挑选出的候选物品停止排序。排序模块通常运用一些复杂的模型。
重排模块:重排模块的任务是对排序模块的结果停止二次排序或调整,以进一步进步引荐的精确性和个性化水平。重排模块通常运用一些简单而有效的算法。
什么是ab实验?
参考论文:Overlapping Experiment Infrastructure: More, Better, Faster Experimentation(google2010)
只要在线实验才干真正评价模型优劣,ab实验能够快速考证实验的效果,快速迭代模型。减少上线新功用的风险。
ab算法:Hash(uuid+实验id+创立时间戳)%100
特性:分流+正交
2.3召回
召回层的存在仅仅是为用户从宽广的商品池子中初筛出一批还不错的商品。为了均衡计算速度与召回率(正样本占全部正样本的比例)指标之间的矛盾,采用多路召回战略,每路召回战略只思索其中的单一特征或战略。
2.3.1多路召回的优劣
多路召回:采用不同的战略、特征或者简单模型分别召回一局部候选集,然后把候选集混合在一同供排序运用。召回率高,速度快,多路召回互相补充。
多路召回中每路召回的截断个数K是个超参数,需求人工调参,本钱高;召回通路存在重合问题,冗余。
能否存在一种召回能够替代多路召回,向量召回应用而生,就目前而言,依然是以向量召回为主,其他召回为辅的架构。
2.3.2召回分类
主要分为非个性化召回,个性化召回两大类。非个性化召回主要是停止热点推送,引荐范畴马太效应严重,20%的商品奉献80%的点击。个性化召回主要是开掘用户感兴味的商品,着重处置每个用户的差别点,进步商品的多样性,坚持用户的粘性。
非个性化召回
(1) 抢手召回
近7天高点击、高点赞、高销量商品召回
(2)新品召回
最新上架的商品召回
个性化召回
(1)标签召回、地域召回
标签召回:用户感兴味的品类、品牌、店铺召回等
地域召回:依据用户的地域召回地域内的优质商品。
(2)cf召回
协同过滤算法是基于用户行为数据发掘用户的行为偏好,从而依据用户的行为偏好为其引荐物品,其依据的是用户和物品的行为矩阵(共现矩阵)。用户行为普通包括阅读、点赞、加购、点击、关注、分享等等。
协同过滤分为三大类:基于用户的协同过滤(UCF)和基于物品的协同过滤(ICF)和基于模型的协同过滤(隐语义模型)。能否为用户引荐某个物品,首先要把用户和物品停止关联,而停止关联的点是另一个物品还是另一个用户,决议了这属于哪个类型的协同过滤。而基于隐语义模型是依据用户行为数据停止自动聚类发掘用户的潜在兴味特征。从而经过潜在兴味特征对用户和物品停止关联。
基于物品的协同过滤(ICF):判别能否为用户引荐某个物品,首先依据用户历史行为记载的物品和这个物品的类似关系来推断用户对这个物品的兴味度,从而判别我们能否引荐这个物品。整个协同过滤过程主要分为以下几步:计算物品之间的类似度,计算用户对物品的兴味度,排序截取结果。
商品类似度计算:
权衡类似度主要有以下几种方式:夹角余弦间隔,杰卡德公式。由于用户或物品的表示方式的多样性,使得这些类似度的计算十分灵敏。我们能够应用用户和物品的行为矩阵来去计算类似度,也能够依据用户行为、物品属性和上下文关系结构用户和物品的向量表示去计算类似性。
夹角余弦间隔公式: cosθ=(x1*x2+y1*y2)/(√(x12+y12 )*√(x22+y22 ))
杰卡德公式J(A,B)=(|A⋂B|)/(|A⋃B|)
夹角余弦间隔公式计算商品a和b的类似度:
Wab=(1*0+0*1+1*0+1*1)/(√(1^2+0^2+1^2+1^2 )*√(0^2+1^2+0^2+1^2 ))=1/√6
spark完成ICF
问题:冷启动问题,长尾效应。
(3)向量召回
向量化召回:经过学惯用户与物品低维向量化表征,将召回建模成向量空间内的近邻搜索问题,有效提升了召回的泛化才能与多样性,是引荐引擎的中心召回通道。
向量:万物皆可向量化,Embedding就是用一个低维稠密的向量表示一个对象(词语或者商品),主要作用是将稠密向量转换成稠密向量(降维的效果),这里的表示包含着一定的深意,使其可以表达出对象的一局部特征,同时向量之间的间隔反映对象之间的类似性。
向量召回步骤:离线锻炼生成向量,在线向量检索。
1.离线锻炼生成向量
word2vec:词向量的鼻祖,由三层神经网络:输入层,躲藏层,输出层,躲藏层没有激活函数,输出层用了softmax计算概率。
目的函数
网络构造:
总的来说:输入是词语的序列,经过模型锻炼能够得到每个词语对应的向量。应用在引荐范畴就是输入是用户的点击序列,经过模型锻炼得到每个商品的向量。
优劣:简单高效,但是只思索了行为序列,没有思索其他特征。
双塔模型:
网络构造:分别称为User塔和物品塔;其中User塔接纳用户侧特征作为输入比方用户id、性别、年龄、感兴味的三级品类、用户点击序列、用户地址等;Item塔承受商品侧特征,比方商品id、类目id、价钱、近三天订单量等。数据锻炼:(正样本数据,1)(负样本,0)正样本:点击的商品,负样本:全局随机商品样本(或者同批次其他用户点击样本)
优劣:高效,圆满契合召回特性,在线恳求得到用户向量,检索召回item向量,泛化性高;用户塔和item塔割裂,只在最后做了交互。
2.在线向量检索
向量检索:是一种基于向量空间模型(Vector Space Model)的信息检索办法,用于在大范围文本汇合中快速查找与查询向量最类似的文档向量。在信息检索、引荐系统、文本分类中得到普遍应用。
向量检索的过程是计算向量之间的类似度,最后返回类似度较高的TopK向量返回,而向量类似度计算有多种方式。计算向量类似性得方式有欧式间隔、内积、余弦间隔。归一化后,内积与余弦类似度计算公式等价。
向量检索的实质是近似近邻搜索(ANNS),尽可能减小查询向量的搜索范围,从而进步查询速度。
目前在工业界被大范围用到的向量检索算法根本能够分为以下3类:
部分敏理性哈希(LSH)
基于图(HNSW)
基于乘积量化
简单引见LSH
LSH算法的中心思想是:将原始数据空间中的两个相邻数据点经过相同的映射或投影变换后,这两个数据点在新的数据空间中依然相邻的概率很大,而不相邻的数据点被映射到同一个桶的概率很小。
相比于暴力搜索遍历数据集中的一切点,而运用哈希,我们首先找到查询样本落入在哪个桶中,假如空间的划分是在我们想要的类似性度量下停止分割的,则查询样本的最近邻将极有可能落在查询样本的桶中,如此我们只需求在当前的桶中遍历比拟,而不用在一切的数据集中停止遍历。当哈希函数数目H获得太大,查询样本与其对应的最近邻落入同一个桶中的可能性会变得很微小,针对这个问题,我们能够反复这个过程L次(每一次都是不同得哈希函数),从而增加最近邻的召回率。
案例:基于word2vec完成向量召回
2.4排序
引荐系统的掌上明珠
排序阶段分为粗排和精排,粗排普通呈现在在召回结果的数据量级比拟大的时分。
进化进程
简单引见Wide&Deep
背景:手动特征组合完成记忆性效果不错但是特征工程太消耗人力,并且不曾呈现的特征组合无法记忆,不能停止泛化。
目的:使模型同时统筹泛化和记忆才能(有效的应用历史信息并具有强大的表达才能)
(1)记忆才能 模型直接学习并应用历史数据中物品或者特征共现频率的才能,记忆历史数据的散布特性,简单模型容易发现数据中对结果影响较大的特征或者组合特征,调整其权重完成对强特征的记忆
(2)泛化才能 模型传送特征的相关性,以及开掘稠密或者从未呈现过的稀有特征和最终标签相关性的才能,即便是十分稠密的特征向量输入也能得到稳定平滑的引荐概率。进步泛化性的例子:矩阵合成,神经网络
统筹记忆和泛化才能 (结果的精确性和扩展性) wide局部专注模型记忆,快速处置大量历史行为特征,deep局部专注模型泛化,探究新世界,模型传送特征的相关性,开掘稠密以至从外呈现过的稀有特征与最终标签的相关性的才能,具有强大的表达才能。最终将wide局部和deep局部分离起来,构成统一的模型。
wide局部就是根底的线性模型,表示为y=W^T X+b X特征局部包括根底特征和穿插特征。穿插特征在wide局部很重要,能够捕捉到特征间的交互,起到添加非线性的作用。
deep局部为embeding层+三层神经网络(relu),前馈公式
结合锻炼
优劣:为引荐/广告/搜索排序算法之后的开展奠定了重要根底,从传统算法逾越到深度学习算法,里程碑意义。统筹记忆和泛化才能但是Wide侧仍需求手工组合特征。
参考论文:Wide & Deep Learning for Recommender Systems
2.5 重排
定义:对精排后的结果次第停止微调,一方面完成全局最优、一方面满足业务诉求提升用户体验。比方打散战略,强插战略,进步曝光,敏感过滤
MMR算法
完成商品多样性问题
目的:在引荐结果精确性的同时保证引荐结果的多样性,为了均衡引荐结果的多样性和相关性
算法原理,如公式
D:商品汇合,Q:用户,S:已被选中的商品汇合, R\S:R中未被选中的商品汇合
def MMR(itemScoreDict, similarityMatrix, lambdaConstant=0.5, topN=20): #s 排序后列表 r 候选项 s, r = [], list(itemScoreDict.keys()) while len(r) > 0: score = 0 selectOne = None # 遍历一切剩余项 for i in r: firstPart = itemScoreDict[i] # 计算候选项与"已选项目"汇合的最大类似度 secondPart = 0 for j in s: sim2 = similarityMatrix[i][j] if sim2 > second_part: secondPart = sim2 equationScore = lambdaConstant * (firstPart - (1 - lambdaConstant) * secondPart) if equationScore > score: score = equationScore selectOne = i if selectOne == None: selectOne = i # 添加新的候选项到结果集r,同时从s中删除 r.remove(selectOne) s.append(selectOne) return (s, s[:topN])[topN > len(s)]
意义是选择一个与用户最相关的同时跟已选择物品最不相关的物品。时间复杂度O(n2) 能够经过限制选择的个数停止降低时间复杂度
工程完成:需求用户和物品的相关性和物品之间的类似性作为输入,用户和物品的相关性能够用排序模型的结果作为替代,物品之间的类似性能够经过协同过滤等算法得到商品向量,计算余弦间隔。也能够简单得能否同一三级类目、同一店铺等表征
三、总结
就简单唠叨这么多啦,主要想让大家理解一下引荐系统,向大家引见一下整个引荐架构,以及整个引荐都有哪些模块。由于自己程度有限,每个模块也没有讲的特别细,希望之后能在工作中继续学习这个范畴,深挖细节,产出更好的东西呈现给大家。感激!!!

