开发者社区> 问答> 正文

天猫推荐算法大赛Top 3 Fly402 团队访谈

Fly402团队由3名硕士研究生组成,其中两位来自南京航空航天大学,一位来自东南大学,封榜前6.14%。


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

Fly402

解题思路
本次比赛赛题是根据用户4个月在天猫的行为日志,建立用户的品牌偏好,并预测他们在将来一个月内对品牌下商品的购买行为。由于预测“购买”以及给定数据集的抽样方法的问题,预测未交互部分(用户历史行为没有接触的品牌)的准确度不高。所以整个比赛中的重点放在交互部分(用户历史行为接触过的品牌),然后将这个问题转为一个二分类问题,可以采用现有的有监督的分类回归算法(逻辑回归、SVM、随机森林、GBRT)等,最后基于基本的算法模型进行模型融合。
算法亮点
  • 将训练集分为“购买过”跟“未购买过”两部分,分别训练,对预测集同样分为两部分,分别预测,最后两部分融合。
  • 为了训练集和预测集的信息量差异,将不同时间尺度的训练集预测集分别训练预测,最后融合。
  • 逻辑回归模型与树模型采用不一样的特征体系,使得融合效果更好。


攻坚方向
  • 构建特征
  • 构建训练集和预测集
  • 数据预处理
  • 构建本地评估框架
  • 模型融合


特征抽取
训练样本的基本形式是一对有交互的用户品牌对,我们对这样的用户品牌对提取特征。首先,从总的分类上分为用户的特征、品牌的特征、用户对这个品牌的特征;其次,考虑用户行为的周期性,从时间维度上分为最近一个星期、半个月、一个月等不同时间段的特征;然后,根据这次比赛给定的四种行为(点击、购买、收藏、购物车),从类型维度上去提取特征。在多维度考虑的基础上,主要提取的是点击数、天数、订单数这样的特征。
这次比赛的目的是由给定的数据去促进业务的提高,从数据到业务需要算法以及特征体系的驱动,在特征抽取的过程中,最本质的一点是要去让数据“贴合”业务,反过来就要求我们从业务指标出发提取特征。参照一些电商分析网站以及自己对业务的理解,诸如用户购买力、品牌购买成本、转化率、用户对品牌的忠诚度等等指标都可以从给定的数据集得以体现。典型的,比如如何衡量品牌的购买成本,可以使用购买该品牌的用户数、回头客的数量、平均每个回头客的回头次数等等来体现这个指标。
特征抽取的最后一部分主要是在之前特征体系的基础上做一些补充,主要有:
  1. 比值类特征。主要是一些基本特征的相除,这个一般是具有直观含义的,比如用户购买某个品牌的次数除以用户总的购买次数,这可以体现这个品牌在用户整个购买行为中的地位。
  2. 均值、方差类特征。主要是一些购买次数、活跃天数等统计值的平均值或方差,可以体现某些用户某些行为的平均水平或者波动情况。
  3. 策略。Season1的时候更多的考虑通过策略来预测,Season2的时候把一部分策略转化为特征,比如最后一次购买之后的点击次数等。


模型训练
这次比赛我们团队主要使用并且起作用的模型有三个:逻辑回归、随机森林和GBRT,逻辑回归本质是一个线性模型,如果为了防止过拟合,可以添加正则化项;如果方便特征的筛选,可以使用逐步逻辑回归;逻辑回归在大数据量下精度会下降,可以通过添加大量的特征(比如哑变量的方式)来提高精度,这次比赛来看,跟随机森林和GBRT相比,逻辑回归单模型上存在天然的劣势。随机森林跟GBRT都是一种ensemble方法,随机森林是一种多棵决策树组合,最后bagging的方法;GBRT是一种boosting方法,每棵树学习的是上一棵树的残差。对于模型的训练我们团队主要有两点心得:
  • 训练集和预测集的构造。我们通过前三个月提取特征,最后一个月标记来构造训练集;在预测的时候,我们使用四个月所有的行为构造预测集,跟训练集相比,时间尺度上不一样,但是这样会带来更多信息量、更多的用户品牌对,比三个月预测的效果好一些。在处理训练集和预测集时间尺度上不一致时,需要进行数据规格化处理,这里我们使用的是归一化方法(仅仅归一化时间尺度不一致的特征)。归一化方法对离群点比较敏感,这个过程中,需要对数据进行去噪,从而保证训练集跟预测集特征分布的一致性。去噪时,我们去除了异常点击量和异常购买量的用户品牌对。
  • 健壮的本地测试。本地测试时,我们尝试过两种方法,一种是将原始的训练样本集划分,80%训练,20%用来本地测试,这种方法跟实际线上训练预测的关系不一样,并且训练集跟测试集的特征分布式一致的,很多问题不易察觉。另外一种方法,本地最后一个月有购买行为的用户品牌对用来测试,前三个月的数据按照线上训练预测的方式构造训练集跟预测集,这种方式时间跨度跟少一个月,但是正样本的数量以及跟线上实际情况很接近,我们主要使用这种方法来本地调参以及部分特征的调试。


CSDN:谈谈比赛感想。
Fly402比赛历时142天,能够走到最后的队伍首先得是一只乌龟,我们很开心自己做到了这点,除此以外,通过142天的努力,我们不断学习、不断尝试、不断反思,拥抱海量真实数据,锻炼了团队合作能力,一切都是值得的!同时,我们也认识到了与优秀队伍的差距,利用这次宝贵的学习机会,取长补短,更进一步!这次比赛给的是真实数据,真实数据的处理跟平时做实验室差别很大,大数据量下的每一次尝试都需要比较大的代价,我们在比赛的过程中,也尝试了很多其他的算法,在这个数据集上效果都不好。但是通过不断摸索,我们也积累了很多大数据处理的经验。在探索大数据的路上,我们只能说,路漫漫其修远兮,吾将上下而求索!

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

Fly402
优点:

  • 分布式集群架构,支持MapReduce和SQL语句(支持UDF扩展),程序员上手快。
  • 提供很多数据处理、数据分析的方法以及机器学习算法,极大地方便了大数据分析与处理。
  • 支持Python脚本,提供了各种Python函数接口,方便了自动化运行。
  • 支持多用户管理协同分析数据,便于团队合作。


建议:

  • Xlab脚本编辑功能有待完善,图形化界面不是很成熟。
  • 目前仅支持MapReduce,没有提供其他的并行化开发接口,也没有提供更多的算法接口,自己动手实现算法的难度比较大。
  • 希望提供更强的编辑器(Vim等),提供代码管理工具(Git等)。

展开
收起
夜之魅 2014-08-29 17:31:32 14158 0
4 条回答
写回答
取消 提交回答
  • 2014-09-04 14:37:13
    赞同 展开评论 打赏
  • Re天猫推荐算法大赛Top3Fly402团队访谈
    以后用户很多行为都可以被他们事先预计了
    感觉到了科幻片时代啊
    2014-09-03 16:46:24
    赞同 展开评论 打赏
  • 顶~
    2014-09-01 22:22:55
    赞同 展开评论 打赏
  • 学习
    2014-08-30 18:23:40
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

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