推荐算法——冷启动算法调研

文章目录

  • 讨论内容
  • 平台准备
    • 其他平台信息整合
    • 做好文章画像
    • 产品设计
  • 新用户到来初期
    • 丰富用户画像,基于内容推荐
    • 上下文推荐
    • 热度排序
    • 快速试探
  • 冷启动用户操作一段时间后
    • 评估冷启动效果
    • 判定冷启动阶段结束
    • 策略迁移
  • 一些讨论
    • 冷启动结束判定
    • 推荐系统收敛性问题

微信面试一直在讨论冷启动,然后给我提了一个任务是,让我就讨论内容查找资料,两天时间出个报告发给他。

讨论内容

  1. 如何做用户冷启动
  2. 如何做文章冷启动
  3. 冷启动效果如何评估,具体怎么实现
  4. pipline收敛

首先明确该本文讨论的是用户冷启动问题,我们的信息流平台没有用户的交互行为(比如点击、收藏、转发等),但是可以拥有诸如其他平台补充数据、用户手机app等信息

全文以搜狗信息流产品举例

整体思路是:
(1)平台做好充足的准备,包括文章画像、知识库等
(2)新用户到来,根据平台准备的画像等,尽可能丰富用户画像维度,结合热度推荐内容。
(3)用户有部分操作后,逐渐收敛用户画像,改变推荐策略。
(4)评估冷启动效果,完善pipline
推荐算法——冷启动算法调研_第1张图片

平台准备

该步骤是一个推荐平台必须具备的,拥有自己的数据监控;完善用户、文章的画像等
推荐算法——冷启动算法调研_第2张图片

其他平台信息整合

搜狗拥有输入法、搜索几个流量大的入口,可以弥补信息流用户信息缺失的问题;而像腾讯的产品则具备很好的社交关系网络

具体实现上:

  1. 数据监控:信息流用户mid和其他平台(搜索/输入法)mid应该有对应关系
  2. 知识库准备:根据拥有的平台数据,设计多种模型规则,丰富知识库。比如拥有用户的搜索/输入 query,可以生成关键词表;拥有用户的社交记录,可以生成社交网络图;拥有用户打车记录,可以生成地理区域图等。

做好文章画像

文章画像非常重要,可以从内容角度出发,利用tf-idf,textrank,lda,fasttext等算法构建画像,为文章打标签

产品设计

很好的获取冷启动用户信息的方式是,在用户注册登陆时提供一些表单让用户填写或者点击。而过多的内容则不利于用户体验,比较好的方法是,查看我们召回模型的参数和效果,把一些效果比较好的召回理由或者特征在用户注册页就要求填写。

新用户到来初期

采用级联推荐策略,我们认为用户画像>上下文>热度,采取优先级策略。比如用户有一定的画像,就基于画像推荐,如果没有就看上下文;都没有的话再用热度策略
推荐算法——冷启动算法调研_第3张图片

丰富用户画像,基于内容推荐

利用第一步的平台准备,看能利用到什么信息。

具体实现上:

  1. 监控用户数据
  2. 根据用户监控到的数据,比如mid,手机型号,地域信息等,结合知识库丰富用户画像。
  3. 根据已有的画像,结合文章画像进行推荐

举例:
a.监控到用户的mid,和搜索平台的mid进行匹配,然后利用搜索query得到的搜索画像,补充信息流画像。
b.监控到用户的手机app,借助知识库中app和主题的对应关系,如果用户常用腾讯动漫app,那就可以给用户打上“动漫”标签
c. 用户补充了一些标签比如NBA、海贼王,那就把带有NBA、海贼王标签的文章推给他

用户画像可以从以下角度结合平台数据制定算法策略:
推荐算法——冷启动算法调研_第4张图片

上下文推荐

主要是时间、地点两个维度

具体实现:

  1. 时间:离线数据挖掘分析文章主题与时间的关系,为用户召回该主题的文章
  2. 地点:召回用户同地域、且地域性强的文章

热度排序

简单的将热度较高的文章排序召回

需要注意的是:
热度是具有时效性的,很多点击或者ctr高的文章可能已经过时了,比如NBA战报,就算昨天的战报点击率很高也不该在今天推送

快速试探

一般来说,能够用来启动用户兴趣的物品需要具有以下特点:

  • 比较热门
  • 具有代表性和区分性
  • 启动物品集合需要有多样性(这些物品能覆盖几乎所有主流的用户兴趣)

先随机或者按照非个性化推荐的策略给用户推荐,基于用户的点击反馈快速发现用户的兴趣点。
在推荐算法中,我们将其称为EE问题,具体实现流程:

  1. 每篇文章都对应一套(a,b)参数,然后通过以下公式生成beta随机数
    在这里插入图片描述
  2. 将产生的随机数最大的臂作为结果,并根据用户反馈,点击则a+1,否则b+1

备注:EE是独立的链路,每天给一定比例的流量曝光,不参与其他内容的排序

冷启动用户操作一段时间后

推荐算法——冷启动算法调研_第5张图片

评估冷启动效果

用户冷启动的指标,我认为有两个方面:

  1. 首先是新用户的画像指标,我们希望某个冷启动召回理由能够让该部分用户画像更加准确和收敛,具体指标有
  • 人均兴趣数
  • 画像覆盖率
  • 画像准确率(需要长期证明)
  1. 其次是新用户活跃表现,我们希望该类冷启动用户能够活跃起来并且成为我们的核心用户,具体关注指标有
  • 点击率
  • 登录频率(活跃度)
  • N日留存
  • 收藏/转发数等

如何对比冷启动的效果呢,我认为ABtest是一个好方法:
推荐算法——冷启动算法调研_第6张图片
将部分冷启动用户切分流量为三部分,A1+A2 = B, 对A1和A2不做任何动作,对B采用我们的模型策略。
以用户活跃度为例,设y是观察日期周下的平均登录次数,则y(B)> y(A1+A2)证明模型是有效的,而差距越大则效果越好

判定冷启动阶段结束

判定冷启动结束(即什么时候用户从冷启动用户转化为了可以用模型计算的常驻用户)的标准,我认为也是两个:

  1. 用户画像是否收敛
    用画像更新程度来刻画
    因为我们的模型一直在应用,其画像也在不断丰富,我们可以设定指定的天数N,则x天的时候用户画像是A = [a,b,c,d,e], x+N天的时候用户画像是B = [a,b,d,e,f],用户画像变化程度用“差数/和数”表示,具体在本例中则是:2/6 = 1/3。我们可以在实践中根据经验设定阈值,如果结果<阈值,则证明画像收敛。

  2. 用户活跃度是否足够高
    用用户的点击率、日均登录次数、行为数等指标来判断,如果用户行为足够多,密度足够高,那么我们认为用户满足了协同等模型的条件,即可以不再使用冷启动策略

策略迁移

在用户从冷启动用户过渡到非冷启动用户的时候,我们可以做ABtest,将过渡用户分为两部分,然后一部分采用原先的冷启动模型,二部分采用协同等召回模型,观察我们推荐平台的指标判断效果,以下指标是我在搜狗实习时会统计的一些指标参数
在这里插入图片描述

根据经验,一般情况下在冷启动阶段结束后,运用我们常规的召回排序模型,取得的效果指标都是更好的

一些讨论

和面试官的讨论集中在两个部分,一个是冷启动结束判定,一个是推荐系统收敛性的问题

冷启动结束判定

问题是:冷启动用户最初肯定是运用一系列针对冷启动用户的策略算法,之后会逐渐迁移到正常算法,如何判定这个临界值

解决方法:

  1. 用户画像是否收敛
    用画像更新程度来刻画
    因为我们的模型一直在应用,其画像也在不断丰富,我们可以设定指定的天数N,则x天的时候用户画像是A = [a,b,c,d,e], x+N天的时候用户画像是B = [a,b,d,e,f],用户画像变化程度用“差数/和数”表示,具体在本例中则是:2/6 = 1/3。我们可以在实践中根据经验设定阈值,如果结果<阈值,则证明画像收敛。

  2. 用户活跃度是否足够高
    用用户的点击率、日均登录次数、行为数等指标来判断,如果用户行为足够多,密度足够高,那么我们认为用户满足了协同等模型的条件,即可以不再使用冷启动策略。

推荐系统收敛性问题

问题是:按照推荐系统的召回-排序流程,逐渐会发生马太效应(强者愈强、弱者愈弱),排序到前列的文章最容易出现正反馈行为,而正反馈行为又将帮助它的召回,导致我们能利用的item越来越少

解决方法:

  1. 多目标优化。如果我们仅通过ctr作为指标,那最终的局面是整个系统都把热门/点击率高的排在前面,一定会出现马太效应,而且这个情况会让用户很反感。所以可以采取多目标优化的方法,优化诸如用户时长、CVR、MAP等参数,这样会缓解马太效应。
  2. 运用EE策略。EE是独立的链路,每天给一定比例的流量曝光,不参与其他内容的排序。这样会导致诸如CTR等指标的下降,但是从长远角度来看对生态有很大帮助,生态的评估方法可以通过基尼系数、新增优质内容占比等评估。

你可能感兴趣的:(推荐系统)