天猫推荐算法大赛Top 7  Bazinga团队访谈

2026-01-29 04:27:36   场地维护动态

Bazinga团队由3名队员组成,他们有两位来自中科院计算所,一位来自中科院软件所。最近一次公布F1得分是6.11。

CSDN:请描述你的解题思路、算法亮点以及着重攻坚方向,并具体谈一下特征抽取、训练模型的建立,以及模型训练的思想。

Bazinga:

1. 数据分析

原始数据是天猫用户4个月的行为日志,日志的格式为(user_id,brand_id,action_type,date),其中四种行为分为用户的点击、购买、收藏和添加购物车。总共的日志条目达到了亿级,均匀分布在给定的4个月中。总的用户数为千万级,品牌数为万级。需要预测的目标是用户在下个月会对哪些品牌有购买行为。评价指标是经典的F1指标。

2. 数据清洗

经过对数据的分析我们发现用户的平均行为为50次,品牌的平均行为为2万次,品牌的信息量明显多于用户,所以在品牌层面的信息相对可靠。在用户平均行为次数为50的大背景下,我们发现少量用户的一些异常行为,主要是有些疯狂点击不购买的用户,这些用户不仅不会对预测带来收益,反而会成为我们的模型中的噪声。于是我们对数据进行了一次过滤,过滤掉了点击次数太大,而没有购买的用户的所有行为记录。在剩下的数据上去构造样本、特征并进行模型学习。

3. 建模

得到一份干净的数据后,我们就要构建本地的测试数据。现在的数据划分如下图所示。八月份的数据是不可见的线上测评数据,在线下,我们切分出7月的数据作为我们的本地测试的数据。

我们将这个问题看做是一个条件概率预测问题。就是给定历史行为,预测下个月的购买行为。这个问题可以形式化为:

由于这是个有监督的学习问题,我们需要知道构造出来的一个(用户,品牌)样本的分类标签是什么,而我们的模型是基于时序的,所以我们引入一个分割点的概念,分割点将时间轴分成两个部分,分割点的前面是用户的历史行为,分割点的后面是这个历史行为造成的结果,也就是我们所说的分类的标签。简单说来,我们用历史行为进行特征的提取,并构造样本,而这个样本是正样本还是负样本,需要看分割点后面的时间区间上这个样本对是否有购买行为。

在分割点的选取方面,我们分为了两种选取方式,一种是固定分割点,一种是滑动分割点。固定分割是一种很自然的分割方式,也是此次比赛中大部分队伍所采用的一种方式。滑动分割点是对固定分割点的一个扩展,可以产生更多的样本,充分利用历史信息。具体见下图:

4. 特征

我们构造了如下特征。

Pair FeaturesUser FeaturesBrand FeaturesCounting Featuresaction#action#action#action day#action day#action day#valid click#distinct action brand#distinct action user#valid click day#distinct first action brand#distinct first action user#action per brand per day#action per user per day#CVR Featurescvr (buy#, click#)cvr (buy#, click#)cvr (buy#, click#)cvr (buy day, click day)cvr (buy day#, click day#)cvr (buy day#, click day#)cvr (distinct buy brand#, distinct click brand#)cvr (distinct buy user#, distinct click user#)Ratio Featuresratio (click#, click day#)ratio (click a#, click b#) X C52ratio (click a#, click b#) X C52ratio (buy#, buy day#)ratio (buy a#, buy b#) X C52ratio (buy a#, buy b#) X C52Flag Featuresaction flagaction flagaction flagother rulesGlobal Featuresfirst / last action dayfirst / last action dayfirst / last buy dayfirst / last buy dayfirst / last buy day active range lengthfrequent user ratio

Counting特征指的是不同粒度上对行为数的聚合。CVR特征指的是转化率特征。Ratio特征是指同一种行为在不同粒度上的比例特征。Flag特征是指一种0-1标志特征,表示是否存在这种状态,可以用来融合进各种规则。Global特征是指与时间区间无关的全局特征。

5. 模型

主要用到的模型有GBRT和RF模型,这两种模型是基于决策树的模型,都是将若干个弱决策树用某种方式聚合成森林来进行训练和预测。不同的是GBRT是在梯度上建立决策树,用Boosting的思想进行融合;而RF是在采样出数据和特征后建立决策树,并用Bagging的思想进行融合。

6. 融合

在得到两个基础模型产生的结果后,我们用了一个简单的两级线性融合的方法对我们的模型进行融合。第一级融合是根据本地训练集的结果学出来一个lr(Logistic Regression)线性模型进行融合;第二级则是简单地对第一级的预测结果进行平均融合。

7. 流程化

所有的前面的步骤我们都进行了流程化,也就是运行一个脚本便可以从最原始的数据表,运行到最后的提交结果表。

CSDN:谈谈比赛感想。

Bazinga:这次比赛,给了我们一次体验工业界大数据的宝贵机会。与之前在实验室接触到的小规模数据集不同,大数据不仅拥有更大的数据规模,数据本身更加复杂,处理的难度更大。在参赛伊始,我们认真地分析了比赛的任务,并通过查阅资料去理解真实的业务场景。从利用简单的规则做出最早的几次提交,到后来利用机器学习的方法来提高预测的效果,我们对问题的认识进一步的加深,对数据也有更多的理解。值得一提的是,在这次比赛中,我们团队的三位成员很好地进行了团队协作。每位成员都会负责推进一块子任务,同时,我们也会保持充分的沟通,遇到困难大家一起讨论,寻找解决方案。高效的团队协作让我们一直保持着较好的成绩。大赛组委会也为我们颁发了“最佳团队奖”。

CSDN:ODPS使用感受,优点及建议。

Bazinga:ODPS具有很好的数据存储能力和计算能力,并且简单易用。但在实际使用过程中,我们也发现一些需要改进的地方。比如,可以加强一下MapReduce作业的可视化,让我们可以方便地查看当前执行的精度,预计完成时间等信息。

2025年“信雅斋杯”传统射箭邀请赛在楼观台圆满收弓传统射艺绽放时代华彩
独占26分8板!17岁男篮新星斩获MVP,是否能助中国队重返亚洲巅峰?