题目描述
成绩
决赛第7名
赛题分析
比赛中,我们比较关心的一个问题在于:数据线上线下分布不一致:1、某些app和用户的记录比较少;2、数据的时效性要求较高。这对于特征工程会是一个比较大的要求,在比赛中有许多的特征会使得线上的成绩下降,比如各种差分的特征。
特征工程
特征的提取主要有以下几个方面:
基础特征:计数特征、转化率、比例特征等各种基本的特征; 线上的特征:基于当天数据统计的用户行为、app行为的特征;用户行为挖掘特征:计算用户行为与历史行为的关联;
特征提取方式有以下几个方面考虑:
基于cv统计、贝叶斯平滑等方法,能够很好的修正线上线下的特征分布不一致的问题;特征提取主要有基于全局的数据统计以及滑窗的历史统计。
因此,比赛中我选择了两种生成特征的方式来产生不同的模型进行融合。
特征选择模型方法
比赛中主要使用 的方式,其中一个模块的示意图如下:
如图所示,模块中使用cv的方法,把数据分成5份来进行训练和预测,这样模型的效果会比单模型的要好些(相当于投票的一种策略)。此外模块中层,每一层使用原有的特征和预测值作为下一个模型的输入,增强模块的精度。模型中使用和。
这种模型的缺点在于,效率是单模型的十几倍,因此需要一种策略来保证效率。这里我使用分而治之的思想,每一次训练使用上一个模块的预测值和当前新提取的特征,作为下一个模块的输入进行训练,不断迭代。这样相当于把所有的特征分成很多部分分开训练,并且在决赛中通过线上成绩反馈来选择特征的去留。最终模型的流水线如下:
就是模型的一个模块(cv5份和层的模块),每次提取新的特征则加入到新的中训练。这里流水线中使用了15个模块。
实验中,随着加入的特征越多,模型效果变得更好。模型的效果如下:
模型融合
主要有两种融合的方式:
加权融合:当融合的模型效果差异大时,根据线上的成绩人工设定融合的权重;平均:当融合的模型效果差异小时,采用以下公式进行融合:$p=f(frac{sum_i f^{-1}(p_i)}{n})$
除了的模型,同时也考虑全集和滑窗特征上的单模型效果,还有每个成绩,进行融合:
##赛后总结
个人感觉在模型的stack方面,已经做到了很好的程度,实验的结果表明比单模型的效果要好且鲁棒性更高。但是决赛后期尝试使用ffm算法,但是效果一直不理想,所以只是稍微的加进去原来的模型中进行融合。
云衔科技是一家专注于企业数字化广告营销解决方案的服务商。公司凭借深厚的行业经验和专业技术能力,致力于为企业客户提供全方位、更高效的数字化广告营销与运营服务。