[中奖]第九届“泰迪杯”挑战赛A题

问题概述

题目1如下:

在这里插入图片描述

赛题有2个点,分别是:

  • 确定数据指标

    即确定哪些特征是决定财务造假与否的关键特征

  • 预测造假公司

    训练模型,然后跑测试数据即可

预处理
  • 首先使用missingno2,对全局数据进行观测,看一看缺失值等情况

  • 然后删去无用的特征列

  • 删去缺失值占比过多的特征列

  • 使用pd.interpolate()3对缺失值占比较小的特征列进行补充,也可以参考45

第一题

最开始的想法是直接跑树模型,然后看看谁的权重大就选谁,然而问题出在样本比例上。

  • 首先对整体来看,正样本的数量远远大于负样本。不均衡的情况下,树模型虽然有所缓解,但估计还是够呛

  • 更惨的是,第一题要求的是各行业的财务造假关键指标。数据一共几十个行业,有些行业没有造假,全是正样本。这样的情况无法用树模型处理,其他模型也不行。

后来查到了一个方法,Null Importances678

其思路大概是,先用正确的标签计算一下各个特征对于分类的重要性,然后打乱标签,再计算特征的重要性。如果一个特征真的对分类有用,那么他应该在真实的标签下展示高重要性,而在错误的标签下展示低重要性。

对于第一题而言,我们分两类情况来考虑:

  • 对于整个行业没有造假记录的数据来说:

    先对各个数值特征(好像所有的特征都是数值特征?)计算方差,取方差较小的特征为重要特征。因为该行业没有造假,所以其与造假相关的特征应当表现出聚集的趋势,即都没有造假,也就是方差较小的特征。然后随机赋予标签,计算其互信息9(mutual_info_classif)。然后用前一个的特征集合减去后一个的特征集合,留下的即为关键特征。

  • 对于整个行业有造假记录的数据来说

    先对正确的标签计算互信息9,然后随机赋予标签,再计算其互信息9。取两者的差集为关键特征。

第二题

这一题将数据分成了2个行业,制造业和非制造业。虽然样本还是很不均衡,但至少,正负样本都有。

  • 首先进行特征选择,使用LinearSVC10

  • 然后将数据丢进模型训练,并使用网格调参11

  • 最后走一遍stacking1213

后记

其实模型训练的结果并不乐观,因为样本分布的不均衡。后来有一些其他想法:

  • 在模型融合的时候,加大树模型的权重,因为树模型对分布不均衡有所缓解

  • 使用一些其他方法补充数据,例如SMOTE等14

啊,对了,我当时参考博文15,用pandas-profiling还跑崩了16,数据太多。


  1. 第九届“泰迪杯”数据挖掘挑战赛 ↩︎

  2. 数据探索分析之全局数据如何看? ↩︎

  3. 数据分析之Pandas缺失数据处理 ↩︎

  4. 独家 | 在机器学习中利用统计插补来处理缺失值(附代码) ↩︎

  5. Kaggle知识点:缺失值处理 ↩︎

  6. Feature Selection with Null Importances ↩︎

  7. 【数据挖掘比赛】之 Null Importances(特征选择) ↩︎

  8. 特征选择之tree的feature_importance的null importance part2 ↩︎

  9. 知识点-如何使用互信息进行单变量特征筛选? ↩︎ ↩︎ ↩︎

  10. 机器学习 特征选择(过滤法 封装法 嵌入法) ↩︎

  11. 第八届“泰迪杯”挑战赛A题优秀论文——基于数据挖掘的上市公司高送转预测(1) ↩︎

  12. 集成学习中的 stacking 以及python实现 ↩︎

  13. 详解 Stacking 的 python 实现 ↩︎

  14. 对"样本不均衡"一顿操作 ↩︎

  15. 2020泰迪杯数据挖掘挑战赛总结(A题) ↩︎

  16. [未解决]pandas-profiling出现MemoryError ↩︎

  • 7
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值