推荐系统在技术实现上一般划分为三个阶段:挖掘、召回、排序。
为什么要融合?
挖掘的工作就是对用户和物品做非常深入的结构化分析,庖丁解牛一样,各个角度各个层面的特征都被呈现出来,并且建好索引,供召回阶段使用,大部分挖掘工作都是离线进行的。
接下来就是召回,为什么会有召回?因为物品太多了,每次给一个用户计算推荐结果时,如果对全部物品挨个计算,那将是一场灾难,取而代之的是用一些手段从全量的物品中筛选出一部分比较靠谱的。
最后就是排序,针对筛选出的一部分靠谱的做一个统一的论资排辈,最后这个统一的排序就是今天要讲的主题:融合。
前面巴拉巴拉说了一段,画成图的话会好理解一些,示意图如下。
为什么要融合呢?这还得倒回去说一说召回是什么,以及这个阶段到底发生了什么?
在召回阶段,其实就是各种简单的、复杂的推荐算法,比如说基于内容的推荐,会产生一些推荐结果,比如基于物品的协同过滤会产生一些结果,矩阵分解会产生一些结果,等等。
总之,每种算法都会产生一批推荐结果,一般同时还附带给每个结果产生一个推荐分数,是各自算法给出来的。
于是问题就来了,这些不同算法产生的推荐分数,最后要一起排个先后,难道依据各自的分数吗?
这样是不行的,为什么?有几