24小时热线:400-808-5825

免费询价
今日免费诊断名额

仅剩

找代办客服经理电话

400-808-5825

您也可以留下您的电话号码,找代办客服经理会联系您,并免费为您定制一份推广方案

信息保护中请放心填写

在线免费咨询

召回、排序、混排等通用推荐算法介绍

2021/07/02

召回算法

什么是召回

召回系统,本质上是个信息漏斗,负责快速从海量信息中筛选出有价值的信息,缩小排序算法的搜素范围(解决了信息过载的问题);也负责将多路召回的数据,进行融合(相当于一个信息融合器,解决了单路召回特征单一,信息量小,多样性差的问题),得到一个精简的候选集。

image_1599032683_5878.png

召回是推荐系统的第一阶段,主要根据用户和商品部分特征,从海量的物品库里,快速找回一小部分用户潜在感兴趣的物品,然后交给排序环节。这部分需要处理的数据量非常大,速度要求快,所有使用的策略、模型和特征都不能太复杂。下面主要介绍四种常见的召回方法:

基于内容的召回:使用item之间的相似性来推荐与用户喜欢的item相似的item。

例如:如果用户A看了《绣春刀2》这部杨幂主演的电影后,则会为他推荐杨幂主演的其他电影或电视剧

协同过滤:同时使用query和item之间的相似性来进行推荐。

例如:如果用户A与用户B类似,并且用户B喜欢视频1,则系统可以向用户A推荐视频1(即使用户A尚未看过任何与视频1类似的视频)。

基于FM模型召回:FM是基于矩阵分解的推荐算法,其核心是二阶特征组合。(解决在数据稀疏的情况下,特征怎样进行交叉的问题)

基于深度神经网络的方法:利用深度神经网络生成相应的候选集。(「神经网络」是人工智能领域「机器学习」一部分,在今天就是「深度学习」的意思。)

排序算法

主要归为十种排序方法

选择排序

首先,找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。其次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。这种方法我们称之为选择排序。

插入排序

我们在玩打牌的时候,你是怎么整理那些牌的呢?一种简单的方法就是一张一张的来,将每一张牌插入到其他已经有序的牌中的适当位置。当我们给无序数组做排序的时候,为了要插入元素,我们需要腾出空间,将其余所有元素在插入之前都向右移动一位,这种算法我们称之为插入排序。

冒泡排序

把第一个元素与第二个元素比较,如果第一个比第二个大,则交换他们的位置。接着继续比较第二个与第三个元素,如果第二个比第三个大,则交换他们的位置…

我们对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样一趟比较交换下来之后,排在最右的元素就会是最大的数。

除去最右的元素,我们对剩余的元素做同样的工作,如此重复下去,直到排序完成。

希尔排序

希尔排序可以说是插入排序的一种变种。无论是插入排序还是冒泡排序,如果数组的最大值刚好是在第一位,要将它挪到正确的位置就需要 n - 1 次移动。也就是说,原数组的一个元素如果距离它正确的位置很远的话,则需要与相邻元素交换很多次才能到达正确的位置,这样是相对比较花时间了。

希尔排序就是为了加快速度简单地改进了插入排序,交换不相邻的元素以对数组的局部进行排序。

归并排序

将一个大的无序数组有序,我们可以把大的数组分成两个,然后对这两个数组分别进行排序,之后在把这两个数组合并成一个有序的数组。由于两个小的数组都是有序的,所以在合并的时候是很快的。

通过递归的方式将大的数组一直分割,直到数组的大小为 1,此时只有一个元素,那么该数组就是有序的了,之后再把两个数组大小为1的合并成一个大小为2的,再把两个大小为2的合并成4的 …… 直到全部小的数组合并起来。

快速排序

我们从数组中选择一个元素,我们把这个元素称之为中轴元素吧,然后把数组中所有小于中轴元素的元素放在其左边,所有大于或等于中轴元素的元素放在其右边,显然,此时中轴元素所处的位置的是有序的。也就是说,我们无需再移动中轴元素的位置。

从中轴元素那里开始把大的数组切割成两个小的数组(两个数组都不包含中轴元素),接着我们通过递归的方式,让中轴元素左边的数组和右边的数组也重复同样的操作,直到数组的大小为1,此时每个元素都处于有序的位置。

堆排序

堆的特点就是堆顶的元素是一个最值,大顶堆的堆顶是最大值,小顶堆则是最小值。

堆排序就是把堆顶的元素与最后一个元素交换,交换之后破坏了堆的特性,我们再把堆中剩余的元素再次构成一个大顶堆,然后再把堆顶元素与最后第二个元素交换…如此往复下去,等到剩余的元素只有一个的时候,此时的数组就是有序的了。

计数排序

计数排序是一种适合于最大值和最小值的差值不是不是很大的排序。

基本思想:就是把数组元素作为数组的下标,然后用一个临时数组统计该元素出现的次数,例如i=m, 表示元素 i 一共出现了 m 次。最后再把临时数组统计的数据从小到大汇总起来,此时汇总起来是数据是有序的。

桶排序

桶排序就是把最大值和最小值之间的数进行瓜分,例如分成 10 个区间,10个区间对应10个桶,我们把各元素放到对应区间的桶中去,再对每个桶中的数进行排序,可以采用归并排序,也可以采用快速排序之类的。

之后每个桶里面的数据就是有序的了,我们在进行合并汇总。

基数排序

基数排序的排序思路是这样的:先以个位数的大小来对数据进行排序,接着以十位数的大小来多数进行排序,接着以百位数的大小……

排到最后,就是一组有序的元素了。不过,他在以某位数进行排序的时候,是用“桶”来排序的。

由于某位数(个位/十位…,不是一整个数)的大小范围为0-9,所以我们需要10个桶,然后把具有相同数值的数放进同一个桶里,之后再把桶里的数按照0号桶到9号桶的顺序取出来,这样一趟下来,按照某位数的排序就完成了

推荐重排算法之MMR

MMR算法目的是减少排序结果的冗余,同时保证结果的相关性。最早应用于文本摘要提取和信息检索等领域。在推荐场景下体现在,给用户推荐相关商品的同时,保证推荐结果的多样性,即排序结果存在着相关性与多样性的权衡。

混排算法

混排算法指的就是微信实时社交混排算法

朋友圈广告与普通信息流广告不同,实时社交混排算法是腾讯的独门秘籍,是指微信通过后台累积数据,根据动态的用户信息分析目标受众朋友圈刷圈规律,对目标受众群及其好友圈进行混排算法,确定投放时间和投放对象。

举个例子,如果A用户对朋友圈广告进行过点赞、评论或查看甚至分享链接,则A用户的关系链好友也将有机会被推送这条广告。

实时社交混排这种新型的算法,以关系链、大数据为基础,在保证一定广告效果的同时有效缩写目标受众范围,降低广告成本。同时依托微信海量用户数据,锁定目标受众。而且,朋友圈超高的活跃度,确保了广告的强曝光量,“圈子式交流+精致内容”共同打造强互动传播,减少了用户对朋友圈广告的反感,也为广告主提高了广告投放的精准度。