打散作为推荐系统比较重要的数据处理逻辑,是推荐系统避免数据扎堆最重要的实现手段,本次介绍推荐算法中最简单的轮询算法。
轮询算法一般分为单维度、双维度轮询,所以本文主要介绍,单维度轮询和双维度轮询两种。
单维度轮询:
单维度轮询主要是把数据按照某一个角度进行分类,比如推荐业务中,相同品牌的商品不能相邻出现,这里可以对数据集作以下处理,具体流程如下
注:不同的形状代表不同的品牌
按照品牌分类前的结果集如下图:
按照品牌分类后的结构如下图(形状):
针对以上结构,可轮询每个分类,每次取分类中某个位置的一个元素,最终轮询结果如下:
根据上面结果可见,当某个分类比较多时(如图中的三角形有5个),容易导致尾部扎堆现象出现,这也是分类轮询比较大的缺点。
双维度轮询:
双维度轮询即在单维度轮询的基础上,再次对单维度分类结果进行第二个分类去分类,然后对第二个维度分类结果轮询,再轮询第一个结果分类,比如推荐业务中按照四级商品组(形状),品牌(字体颜色)轮询,大体流程如下
分类:原始结果集 -》 维度一分类 -》 维度二分类
轮询:维度二分类结果轮询 -》 维度一分类结果轮询 -》 最终轮询结果集
原始结果集
分类结果
维度二轮询
维度一轮询(最终结果)
这种情况会打的更散,但是依旧无法解决维度扎堆的情况,只能相对缩小扎堆的可能性(9、10依旧扎堆,一般来说,标准差越大,越不适合用这种打散方式)