美文网首页数据分析和大叔走大数据应用之路
如何进行一场数据挖掘算法竞赛

如何进行一场数据挖掘算法竞赛

作者: SeekerLinJunYu | 来源:发表于2019-06-06 17:37 被阅读84次
    一. 为什么要参加竞赛?
    why.png
    二. 需要哪些技能?
    image.png
    三. 怎么选择比赛合适的比赛?
    • 建议去kaggle学习. 里面大牛分享的想法 , 还有开源.
      competition.png
    四. 竞赛中的几个主要模块?
    model.png
    4.1 问题建模
    • 业务理解 :理解赛题的具体含义,理解业务才能构造出与业务相关性高的特征.

    • 赛题数据: 拿到数据首先明确数值特征部分和类别特征部分. 然后思考能够构造出哪些特征,并且考虑哪些特征或者数据是不能够使用的.

    • 评价指标:

      • 精确率/召回率, 需要对预测概率调整分类阈值,这个阈值属于超参数,会影响到模型最后的泛化能力.
      • AUC考虑样本排序的,对预测的分数不敏感.
      • logloss对预测概率敏感,衡量的是预测概率的分布与根本概率分布的差异性.值越少,效果越好.
      • MAE, MSE
    • 线下验证:
      + 时序验证 :一般选择最近邻的1-3天
      + 交叉验证:与k相关大, k偏小则性能不稳定. k偏大则计算量大.

    4.2 EDA
    EDA.png

    EDA一般使用可视化和统计检测完成.

    4.3 特征工程
    4.3.1 数据预处理
    • 数值特征可视化:数值特征使用散点图进行可视化绘制,去掉离群点.


      数值特征筛除离群点.png
    • 缺失值处理: 缺失值并非全是脏数据, 其背后可能存在具体的业务意义,这种需要根据业务意义进行填充.另外一部分是真实的缺失,那么可以考虑用统计值进行填充,或者不填充,对于树模型来说是可以处理缺失的.
      缺失值处理.png
    • 错误值处理: 需要注意的是除了明显的违反逻辑常识的错误值之外,有的数据集中可能使用某一特定的数值对缺失进行填充,这种需要注意.

      错误值处理.png
    • 假标签处理: 如果在训练集中出现明显的错误标签(在业务背景下),那么直接删除该样本,或者也可以使用统计特征进行替换. 对于标签和评估指标不一致的情况需要根据实际要求对标签进行数值转换.

      假标签处理.png

    4.3.2 特征提取
    • 类别特征:
      • 编码:对于模型不能学习的字符串特征可以进行编码(自然数编码和独热编码,使用区别在于该特征是否具有大小的意义).
      • 计数统计(count):给类别特征做count运算,反应类别在整体下的一个热度情况.但是对于异常值是很敏感,比如某一个类别特别大的情况, 这个时候特征会影响模型的泛化能力.
      • 计数排名: 根据统计进行类别连续值排名,可以缩小异常值的权重,减少异常值的影响.
      • 目标编码: 根据标签来做特征,比如统计标签下的统计特征(譬如房租赛当中统计每个板块下的均价),但是这样的做法很容易导致过拟合,需要使用交叉验证来解决.将数据拆分成多份,用n-1份作为已知数据,剩下一份作为未知数据,在已知数据中构造特征,赋值到未知数据中,从而避免过拟合,提升泛化能力
      • 交叉组合:类别与类别进行交叉组合,可以让类别之间的粒度更细. 类别与数值进行组合,可以反映类别的统计特征,比如类别下的平均值统计等.
      • 防止过拟合: 使用交叉统计进行特征构造(比如数据拆分为5分,每使用4份构造一份,构造五次可以拼出一个完整的集合). 时序特征进行构造(使用前一天和前两天的一些信息).在这种情况下可能部分类别特征没有同时存在于两个集合中(比如房租比赛中的plate62, 和JD比赛中的action type5),此时可以选择使用统计特征填充.
    类别特征.png
    • 数值特征


      数值特征提取.png
    • 时间特征:可以反映周期性和趋势线.并且时间越近效果时越好的.
      • 对于日期变量是可以做One-Hot的
      • 时序相关特征可以进行历史平移和滑窗统计(JD中都有用过).
    时间特征.png

    多值特征,可以完全展开one_hot,也可以词频统计,也可以wordToVector, embeding等进行降维.

    4.3.3特征选择

    没有哪种方法是一定最好的

    • 过滤法: 卡方检验和互信息衡量x和y的相关性;相关系衡量特征之间的相关性.
    • 封装法: 前向搜索: 选定好模型,先放入几个基本特征,然后依次往其中丢入特征,保留效果好的特征,属于启发式算法,但是可能陷入局部最优解.后向搜索: 依次从模型中剔除特征的思路,耗费时间更长,数据量大的时候难以使用.
    • 嵌入法: 根据树模型返回的特征重要性来选择特征.
      特征选择.png

    特征案例:在比赛中的时候需要尝试多种方式,没有哪一种一定是最好的 :-)

    案例.png

    4.4必备模型

    必备模型.png

    4.5模型融合

    • 理论分析: 让模型做到优质而尽量不同. 保证特征差异,样本差异,模型差异的情况下, 可以使得融合能有更好的效果. 实际中可以处理出多套特征,使用重合较少的样本,使用不同的理论模型来达到这一目的.
    • 训练过程融合是树模型本身带有的, 因此可以使用调参达到这个目的.
    • 结果融合: 分类(投票),平均(回归), stacking.
    模型融合.png
    5. 竞赛过程中最重要的事
    vital.png
    6.好的竞赛总结比竞赛过程更总要
    conclusion.png

    Q:

    1. 调整单调性是什么操作?
    2. 防止过拟合的时候,使用交叉统计进行特征构造(比如数据拆分为5分,每使用4份构造一份,构造五次可以拼出一个完整的集合). 理解不够?

    相关文章

      网友评论

        本文标题:如何进行一场数据挖掘算法竞赛

        本文链接:https://www.haomeiwen.com/subject/rukuxctx.html