LBS2I with Side-information
LBS2I
原始的LBS召回只用了当前用户与酒店的的相对距离,利用这个相对距离进行排序然后进行召回。但是经过数据分析会发现,如果仅仅使用距离作为LBS召回的唯一指标,会导致不同价格区间的酒店的点击存在认知偏差,为了解决这种现象,此次提出了一种基于数据分析融合了酒店距离以及酒店价格的一种新型LBS召回策略。
LBS2I Opitimize with Side-information
DataAnalysis
酒店点击量与距离之间的关系
首先抽取4个月的数据进行分析。分别抽取出曝光酒店与用户当前距离的一分位点,二分位点以及三分位点,我们通过对不同区间内的点击量进行分析(不同区间的曝光量大体一致),我们通过上图可以很明显的看出用户的点击量随着距离的增长存在一个缓慢下降的趋势。
酒店点击量与价格之间的关系
与分析酒店距离与点击量之间的关系类似,我们也分别抽取出曝光酒店价格的一分位点,二分位点以及三分位点,我们通过对不同区间内的点击量进行分析(不同区间的曝光量大体一致),我们通过上图可以很明显的看出用户的点击量随着价格的增长存在一个缓慢下降的趋势。
二者笛卡尔积
如果单纯的从数学上讲,两个单调递减函数的乘积或求和(并且两个递减函数f(x)均大于0)应该还是递减函数[数学证明],但是我们通过分析二者的笛卡尔积发现,并非如此,具体的实验结果如下图所示(其中A、B、C、D四个大写字母代表距离按照三个分位点分割成为的4个子区间,a、b、c、d四个小写字母代表距离按照三个分位点分割成为的4个子区间):
上图中,绿色框代表不同距离区间的整体状况,通过四个不同的绿色框,我们可以发现在距离相似的情况下,价格的提升会降低用户的点击量,这种现象也是符合常理的。但是,我们也会看出,在每两个绿色框的交界处会存在一个明显的上升趋势,这一点可以理解为,在距离相差不大的情况下,用户更愿意去选择比较便宜的酒店,而不是仅仅看距离指标。 传统的召回策略中,仅仅按照距离进行召回,我们会将Ad拍到Ba的前面,但是,从数据统计分析角度、日常生活角度两个方面而言,我们都应该将Ba排到Ad的前面。 为了解决此种现象,我提出了距离性价比的一个新概念,距离性价比目的是为了区分不同情况下,距离和价格那个重要性更强。此次的目标就是让召回按照上图中纵坐标的值从大到小进行召回,也就是召回顺序应该为:Aa、Ab、Ac、Ba、Ad、Bb、Bc、Ca、Bd...。同时,将召回的排序主键按照下面的公式进行计算:
为了满足上述召回顺序,通过建立数学函数,并利用线性规划可以求解出一组解(如下表所示):
Index | Distance | Price |
---|---|---|
(0,0.25) 第一个区间 | 1 A | 1 a |
[0.25,0.5) 第二个区间 | 0.2 B | 0.8 b |
[0.5,0.75) 第三个区间 | 0.1 C | 0.6 c |
[0.75,1) 第四个区间 | 0.05 D | 0.4 d |
利用GDBT对其余属性进行分析:
Features/Label | 解释 | 处理方式 |
---|---|---|
distance | LBS曝光酒店与用户当前距离 分桶策略,按照距离远近将distance分为6个桶 | (0,1000] : 1 ; (1000,2000] : 2 ; (2000,3000] : 3 ; (3000:4000] : 4 ; (4000,5000] : 5; (5000,+) : 6; |
price | LBS曝光酒店的价格 | 分桶策略(按照师兄之前提出的基于聚类的分桶策略) (0,150] : 1 ; (150,250] : 2 ; (250,400] : 3 ; (400,600] : 4 ;(600,900] : 5 ; (900,1500] : 6 ; (1500,+) : 7 ; |
time | 用户浏览的时间点 | 主要区分白天、黑夜。白天特征为0,黑夜为1 ;白天:6:00~20:00 黑夜 : 20:00~6:00 (+1) |
sameDay | 判断用户是否当天 | 当天:0 非当天:1 |
click | 0/1 | 0 代表曝光未点击 1 代表曝光且点击 |
最后在计算酒店的得分时,讲这些属性融合进去,本次实验的融合方式是按照权重相乘相加作为一个score值,在LBS召回之前先进行一步预排序操作。(类似于流行度排序)
Result
online
uctr +0.185% pctr +0.171% l2o +2.348%