23. 实用的加权采样算法.pdfVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
今天来讲一个非常轻松的话题,这个话题看似和推荐系统没什么关系,但肯定有 用,只是在别的推荐系统相关话题里都没人会提。 一些场景 还记得前面讲到的用户画像吗?想象一个场景:你经过辛辛苦苦抓数据,清洗数 据,收集用户行为,目的就是给用户计算兴趣标签。 这时候你可能会遇到一个两难的问题:如果给用户计算出兴趣标签的权重了,那 应该保留多少标签呢? 保留太多的话,每次召回候选集时,计算复杂度可不低,只保留少部分吧,那真 是手心手背都是肉,生怕丢弃的标签才是用户的真爱。 怎么办?这时候,你需要的一个简单的加权采样算法,每次召回时并不使用全部 用户标签,而是按照权重采样一部分标签来使用,这样做的好处当然很明显: 1. 大大减少召回时的计算复杂度; 2. 可以保留更多的用户标签; 3. 每次召回计算时还能有所变化; 4. 虽然有变化,但是依然受标签的权重相对大小约束。 加权采样的应用不只这一个地方,比如在热门排行榜展示时,也可以用加权采样, 而不仅仅按照排行榜分数顺序展示,采用加权采样的展示方法,会让排行榜每次 刷新都略有变化,人民群众也会更加喜闻乐见。 下面介绍几种常用的加权采样算法及其原理,供你日常随手拿来使用。 加权采样 加权采样有两种情况,一种是能够已知全部样本的个数。这需要遍历整个样本, 比如说用户标签采样输出,那么每次采样时仍然需要遍历所有的标签,来依次决 定每一个标签输出的概率。 另一种是不知道总量样本是多大,或者总量很大,以至于你不愿意全部遍历之后 再输出采样结果,这样的数据就是数据流,对应的就是流采样。 下面分别讲这两种采样方法。 1. 有限数据集 等概率采样的方法非常简单,任意编程语言中都有伪随机数实现,就不在本文讨 论范围内了。 现在假设你有用户标签若干,每一个标签都有个权重 w ,权重高低反映了用户 对这个标签的感兴趣程度高低。你希望每次输出一部分标签用于召回推荐候选集, 每次输出时都不一样,但是又能反映用户标签的权重,输出的概率和权重成正比。 这时候你需要一个公式: Si=R1wiSi=R1wi 解释一下这个公式: 1. wi 是每个样本的权重,比如用户标签权重; 2. R 是遍历每个样本时产生的 0 到 1 之间的随机数; 3. Si 就是每个样本的采样分数 遍历之后,按照采样分数排序,输出前 k 个结果就是你得到的采样结果。可以 编程简单做个模拟,比如下面有这样几个简单样本。 模拟 10000 次后,三个样本被采样次数如下: 你可以看到,每个样本采样概率和它的权重成正比。 还有另一种加权采样方法,是利用指数分布。 我先给忘记了指数分布的人复习一下什么是指数分布。 假设你到银行去办业务,每个人办理业务的时间是不确定的,那每个人办理业务 时间的概率分布就是指数分布,用教科书上的话说,就是两个事件发生的时间间 隔。 指数分布的概率密度函数是: 指数分布的参数 Lambda,它的倒数,1λ1λ 就是事件发生时间间隔的期望。把指 数分布的这个意义放进标签中来考虑,标签的权重其实反映一个直觉:权重越大 的标签,用户消费它就越频繁,也就是间隔时间就会短。 所以根据这个原理,就有另一个加权采样的办法:为每一个标签构造一个指数分 布随机数,这个指数分布的参数 Lambda 就是标签权重,然后用这个指数分布 的产生一个随机数,再输出随机数最大的 k 个标签作为采样结果, 是不是很完 美? 还是上面的权重,再来模拟 10000 次。 依然完美符合权重的相对大小。 2. 无限数据集 上面的两种采样都是针对有限数据集的,也就是采样之前都要遍历一遍所有样本。 那么如果面对的数据集无限大,或者不知道多大时,该怎么做加权采样呢?这就 要讲到另一个采样算法了,名字叫蓄水池采样(也叫蓄水池抽样)。 蓄水池采样可以用在推荐系统的哪些地方呢?比如可以再模型融合之后加一层 蓄水池抽样,或者在召回阶段加一层蓄水池采样,这样在不影响整个推荐流程和 转化概率的前提下,降低计算复杂度和提升推荐多样性。 或者,在线阶段要使用用户的反馈行为做实时推荐,对于不同的用户,活跃程度 不同,产生的反馈行为数量不同,你也可以用蓄水池采样,为每个用户取出固定 数量的行为用于更新推荐结果。 下面,我先讲蓄水池采样,再讲加

文档评论(0)

Action + 关注
实名认证
文档贡献者

分享知识,快乐生活

1亿VIP精品文档

相关文档