推荐算法之加权采样
Posted 智能推荐系统
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了推荐算法之加权采样相关的知识,希望对你有一定的参考价值。
一、应用场景
在基于用户兴趣召回物品时,每个用户都有兴趣标签,有时候可能兴趣标签非常多,每一个标签都有计算出来的权重,从高到底进行排序。在进行推荐的时候,我们到底基于哪些兴趣标签进行推荐呢,只选取topN的吗,还是全部?如果只选取topN的,那每次推荐结果都比较相似,而且权重低的兴趣标签似乎得不到推荐;如果按照全部标签进行推荐,可能计算量会非常大。
这个时候可以加权采样方式筛选用户的兴趣标签,每次召回的不是全部兴趣标签,而是按照权重采样一部分标签进行召回,这样做的好处是显然的:
1)减少召回的时间复杂度
2)可以保留更多的标签
3)每次召回计算都有所变化,满足了推荐多样性
4)虽有变化,但依然受标签相对权重大小的约束
在热门排行榜的展示中,也可以采用加权采样方法,比如热门展示位只有10个,那每次可以加权采样10个展示,刷新还有细微变化。
所以,加权采样应该属于推荐系统中的技巧性方法,能够细微的改善用户的推荐结果,还是非常重要的。
二、有限数据集的加权采样
现在假设你有用户标签若干,每一个标签都有个权重 w,权重高低反映了用户对这个标签的感兴趣程度高低。你希望每次输出一部分标签用于召回推荐候选集,每次输出时都不一样,但是又能反映用户标签的权重,输出的概率和权重成正比,公式如下:
1、wi 是每个样本的权重,比如用户标签权重;
2、R 是遍历每个样本时产生的 0 到 1 之间的随机数;
3、Si 就是每个样本的采样分数。
三、无限数据集-蓄水池抽样
两种采样都是针对有限数据集的,也就是采样之前都要遍历一遍所有样本。那么如果面对的数据集无限大,或者不知道多大时,该怎么做加权采样呢?这就要讲到另一个采样算法了,名字叫蓄水池采样(也叫蓄水池抽样)。
蓄水池采样:
假如有一个数据集合,一共有 n 条,要从中采样取出 k 个,那么每个样本被选中的概率就是 k/n 。
蓄水池采样的做法是:
1、直接先取出前 k 个样本留着,这 k 个就是随时准备最终要输出的;
2、从第 k+1 个开始,每个都以 k/n 的概率去替换那留着的 k 个样本中的一个。
这个过程,随时可以取用那 k 个集合作为输出结果,任意时刻,当总样本遍历了 n 个时,他们的概率都是 k/n 。这就是蓄水池采样,蓄水池采样,顾名思义,k 个元素的样本集合就是个蓄水池,是任意时刻的采样结果,可以随时取用。
加权蓄水池采样:
现在回到我们今天的主题来,实际上更需要的是加权蓄水池采样。加权蓄水池采样利用的依然是在前面说的第一种加权采样方法,只不过结合了蓄水池采样的思想:
1、为每一个样本生成一个分数,分数还是采用上述si的计算公式。
2、如果结果不足 k 个,直接保存到结果中。
3、如果结果中已经有 k 个了,如果 Si 比已有的结果里最小那个分数大,就替换它。
附:最近推出了推荐系统系列教程,已推出九期,没看过的朋友们可以点历史消息或点击下面的链接查看。本系列教程全部免费,希望大家每期都不要落下,这样可成体系,也希望各位粉丝朋友多多转发,并在看完后点个“在看”,以示鼓励。
「 更多干货,更多收获 」
智能推荐 个性化推荐技术与产品社区 |
长按并识别关注 |
一个「在看」,一段时光! 以上是关于推荐算法之加权采样的主要内容,如果未能解决你的问题,请参考以下文章