本文来自网易云社区
作者:穆学锋
简介:传统的搜索个性化做法是定义个性化的标签,将用户和商品通过个性化标签关联起来,在搜索时进行匹配。传统做法的用户特征基本是离线计算获得,不够实时;个性化标签虽然具有一定的泛化能力,但是其准确性有所不足,不能很好的做精准个性化。本文提出两个创新优化,一是打通实时用户行为的获取流程,并在实时用户流下采用FTRL算法不断的更新用户特征的权重,将用户实时感兴趣的商品加权,达到online training;二是在保证相关性的前提下,采取推荐的思路,避开打个性化标签,结合用户的实时&历史行为,直接预估用户对商品的偏好,并在搜索排序中加权。这两个优化在实际的ABTest结果中表现突出,提升搜索下窄口径UV价值较大,它们都是在用户实时行为的基础上完成的,因此合称为搜索实时个性化模型。
背景
搜索中传统的个性化应用是基于个性化标签来完成的。例如,我们会假设用户在购物时对商品的某些属性有独特的偏好,然后建立属性标签,并基于用户的历史行为构建算法模型将商品上的标签打到用户身上,预估其偏好程度,这就构成了用户在特定类目下对于某属性标签的偏好。模型一旦建立起来,属性标签就构成了一个商品簇,模型的泛化能力会很强。这种方式在用户对某类目的商品行为量巨大时会比较有效,但是一般情况下用户的行为都会比较分散/稀疏,因此模型的准确性一般不高。举个例子,用户A购买了一件有大嘴猴图案的莫代尔T恤,因为是购买行为,是一个表示强偏好的特征,那么模型最后计算出来大概率会显示用户A对于动物图案标签和材质莫代尔标签都有一定的偏好,但实际上呢,可能用户A关心的只是T恤是圆领的。
怎么办呢?一种方法是丰富个性化标签,将领型标签也加入进去,这将是一个很庞大很漫长的profiling构建过程。另一种方法,我们可以转变下思路,用户A对商品B有行为,那么就是A对B有一定的偏爱。因此,我们只要获取用户A所有行为过的商品集合,然后构建模型计算最感兴趣的几个商品,并推给用户。至于,用户是喜欢B的什么特质,什么原因,我们并不用刻画。因为特质太多,我们目前刻画得并不好。
系统框架
要实现我们的思路解决上述的问题,首先得在搜索中获得实时的用户行为流数据。为此,我们设计并实现了如下的系统结构: