开发者社区> 问答> 正文

天猫推荐算法大赛Top 5 Tyche团队访谈


Tyche团队由来自南京大学的两名硕士研究生组成,最后一天F1是6.12以上,最终成绩第五。

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


Tyche
数据分析
提供的原始数据在天池集群的表t_alibaba_bigdata_user_brand_total_1中,字段分别为:user_id、brand_id、type、visit_datetime。用户4种行为类型(type)对应代码分别为:点击:0;购买:1;收藏:2;购物车:3。原始数据条数有5.7亿左右,用户1000万左右,品牌有3万左右,需要预测的目标是用户在下个月会对哪些品牌有购买行为。评价指标为经典的F1指标。 对数据简要分析可以发现数据本身符合齐夫定律。

数据清洗
目的:去除一些噪声数据。在此,我们尽可能去除离群点用户(对分类器影响较大但本身正例又很少的用户)。原始数据中存在一些爬虫用户。例如去除点击量大于800,购买量为0点击量大于5000,购买量少于50的用户。
数据集划分

目的:线下测试和线上结果相关性高度一致。我们和大多数数据集划分的方式不同。在数据集划分构造时我们对时间轴切两刀,训练集、验证集、测试集都是完整的数据集,能够更好的验证模型的泛化性能。

特征提取
目的:提取对行为数据刻画显著的特征。特征的提取建立在对业务的理解的基础上,努力得到类别更加多样性,更加全面的特征。我们在这个环节突破了纯粹从业务理解提取特征的思路,转而考虑一下问题:当提取了一些类别的特征后,在对业务逻辑整体理解以及 已提取的特征内在联系的基础上,思考是否可以用一种思路把已提的大部分特征统一起来?如果能做到这个,我们就可以在已有特征的基础上得到系统化的特征,而后在体系中,通过不同行为,不同时间段,不同行为指标的排列组合,可以较快的发现新类别的特征。而这些特征很可能有用。事实上我们有一半以上的有用特征都是这样发现的,我们之前只提取了92维有用的特征,最后使用了241维特征。实际中我们使用Xmind画出特征的思维导图,方便我们找到我们所说的特征之间的内在联系。

模型训练
我们使用了random forest,gbrt,logistic regression三种模型。 在训练之前由于数据存在严重的类别不平衡问题,所以我们根据理论和实际对正例采用了up sampling的采样方式,负例采用down sampling的采样方式,正例个数:负例个数=2:20=1:10,效果比单纯的up sampling或者 down sampling要好。
random forest属于bagging类型的集成算法,gbrt属于boosting类型的集成算法,共同特点是模型参数好调,很多情况下性能较好。比赛中,我们队gbrt的调参根据gbrt每次优化的是上一步的残差,所以我们使用每次训练200棵树再初始化参数再训练的迭代式调参方式,大大节省了调参的时间。


另外我们针对gbrt树的棵树较大时候训练时间长的问题,先用一个欠拟合的random forest初始化gbrt的残差再用一个树的棵树不是很大的gbrt来训练,从而能够在相对短的时间内得到比用较大棵树的gbrt还要高一些的性能。
由于在工业实际操作中对实时性要求很高, logistic regression 训练,预测时间都比较少,用途较广,所以借鉴有些公司采用的在使用logistic regression训练时对连续特征进行长度为16等的二进制编码的方法,得到了更好的性能。
模型融合

我们使用采样的多样性,特征的多样性,模型的多样性,分别得到模型差异化较大的多个模型然后采用stacking learning进行模型融合,在此使用的是线性模型,logistic regression。



在用stacking learning时,我们发现传统的把多个model预测的confidence做特征,使用Logistic regression学习,效果不够好。
为此我们考虑到优化的目标是F1,对confidence较高的那部分pair对,加强学习,选取confidence较大的500万pair,使用logistic regression学习
此外,将这些feature(confidence),映射到多个高斯空间中,再用以上方法学习有轻微的提高。

输出处理

考虑到比赛评价标准是F1,但大多模型优化的目标不是F1,所以我们考虑,能否针对F1,做更加精细的模型改进?
通过分析发现分类器更适用于预测结果中precision高的用户,这类用户称为规律性用户,所以我们对每个用户的预测结果进行分析,增加预测结果中precision高的用户的预测量。这相当于对不同用户在分类器中的margin做了轻微的修正。


CSDN:谈谈比赛感想。
Tyche以前并无参加过这样的比赛,在这四个月里,由于队友是室友,大量的讨论经常在晚上,所以经常性晚睡,有时要睡时外面已经能够看到“东方之既白”。
其实能够全身心的投入到一件事情中是一种幸福。我最看重的是这份全身心投入的执着。在自己以后的学习,工作中这种精神我认为是一种宝贵的财富。
CSDN:ODPS使用感受,优点及建议。
TycheODPS本身具有非常好的存储性能和计算性能,但个人建议对模型的接口再多些,我们希望能针对要解决的问题对一些模型的内部核心代码以及一些细节进行针对性的改进。

展开
收起
夜之魅 2014-08-29 17:33:55 11046 0
2 条回答
写回答
取消 提交回答
  • 顶~
    2014-09-01 22:22:42
    赞同 展开评论 打赏
  • 学习
    2014-08-30 18:22:05
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载