前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【 SPA大赛 】关于数据挖掘的理论与实践

【 SPA大赛 】关于数据挖掘的理论与实践

原创
作者头像
窦凯丽
修改2017-06-19 18:55:10
1K0
修改2017-06-19 18:55:10
举报
文章被收录于专栏:窦凯丽的专栏

这是我第一次参加数据挖掘类的比赛,幸运的是在比赛中认识了两个小伙伴,能够一起讨论,分享,得出成果,对我来说,受益良多。下面按照数据挖掘过程:数据预处理、特征工程、模型融合这三个方面进行一下总结,谈谈感受。

1. 数据预处理

1.1 稀疏特征值处理

在初赛中,数据量在百万级别,因为我们没有做稀疏特征值的处理,但是决赛这种数据量增长了10倍的情况下,稀疏特征值的处理能够影响模型的稳定性,因此我们会对特征值中少于10次出现的值进行统一的稀疏标记。

1.2 验证集的构建

构建验证集是比较重要的,目的是为了让线下成果与线上测试集结果保持一致,在几个周冠军的分享中,也都提到了构建有效的验证集的事情。在初赛中,我们直接使用了29号的数据进行验证,因为30号的数据不够准确,直接被我们舍弃了。在决赛中,我们会尝试一下方法进行验证集的构造:使用29号的数据,使用训练数据的10%(10%取决于训练集与测试集的比例)。

2. 特征工程

特征工程一般有三步:找到新的特征,然后进行简单的统计分析,判断其价值,再使用模型判断其是否有用。

2.1 特征产生

在本次比赛中,我们将所有特征分成以下几类:

特征分类

描述

原始特征

数据当中原有的特征

组合特征

将原来特征中的两个或多个直接进行组合

计数特征

主要针对用户,广告进行时序,非时序的统计

先验概率特征

类别特征的历史转化率

gbdt特征

利用gbdt模型对部分特征进行学习,将gbdt结果的叶子特征作为新的特征

在产生新的特征的过程中,如何初步判断特征的有效性是非常重要的,我们可以采取一些初步的统计进行比较,然后进行特征验证。

2.2 特征筛选

在本次比赛中,最让我感到困惑的地方就在于特征筛选,特征筛选的流程一般如下图所示:

在一开始的时候,我们将生面提到的所有特征一股脑的塞到模型里面,尽管有些特征的重要性很低,然而在我们删除了某些特征以后,模型的效果还是下降了,然而我们之后再删除特征的情况下,进行了模型参数的调整,把xgboost训练的树的深度增加以后,线下验证集的效果就提升了很多。其实,现在的特征中有很多冗余的特征,特征之间相关度比较高,目前正在采用单个特征逐步验证的方法,希望能够有所提升。

2.3 特征验证

此次比赛中,我们使用了xgboost来进行特征的验证,之所以选择这个,是因为本次比赛中的很多特征都是类别特征,用传统的lr模型进行分类的话,会遇到onehot维度爆炸的情况,而是用xgboost则比较便捷,并且能够很好的查看特征的重要性。

3. 模型融合

在初赛中,我们并没有采用模型融合的方法,但是“三个臭皮匠,赛过诸葛亮”,据此次比赛中的小伙伴们实践分享,模型融合能够大幅度提升效果。

在类似的比赛中(广告点击率预估),比较常用的模型包括ffm,ftlr,xgboost,这些模型在各个优胜大佬们的分享中都起到了很大作用,值得尝试一下。模型融合方法有简单的平均,均值平均,或者是stacking等,初步的计划是使用不同的模型进行训练,然后讲给结果进行stacking。

参加这次比赛,能让我将理论与实践相结合,是一次很不错的经历。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 数据预处理
    • 1.1 稀疏特征值处理
      • 1.2 验证集的构建
      • 2. 特征工程
        • 2.1 特征产生
          • 2.2 特征筛选
            • 2.3 特征验证
            • 3. 模型融合
            相关产品与服务
            大数据
            全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档