问题概述
题目1如下:
赛题有2个点,分别是:
-
确定数据指标
即确定哪些特征是决定财务造假与否的关键特征
-
预测造假公司
训练模型,然后跑测试数据即可
预处理
第一题
最开始的想法是直接跑树模型,然后看看谁的权重大就选谁,然而问题出在样本比例上。
后来查到了一个方法,Null Importances678。
其思路大概是,先用正确的标签计算一下各个特征对于分类的重要性,然后打乱标签,再计算特征的重要性。如果一个特征真的对分类有用,那么他应该在真实的标签下展示高重要性,而在错误的标签下展示低重要性。
对于第一题而言,我们分两类情况来考虑:
-
对于整个行业没有造假记录的数据来说:
先对各个数值特征(好像所有的特征都是数值特征?)计算方差,取方差较小的特征为重要特征。因为该行业没有造假,所以其与造假相关的特征应当表现出聚集的趋势,即都没有造假,也就是方差较小的特征。然后随机赋予标签,计算其互信息9(mutual_info_classif)。然后用前一个的特征集合减去后一个的特征集合,留下的即为关键特征。
-
对于整个行业有造假记录的数据来说
先对正确的标签计算互信息9,然后随机赋予标签,再计算其互信息9。取两者的差集为关键特征。
第二题
这一题将数据分成了2个行业,制造业和非制造业。虽然样本还是很不均衡,但至少,正负样本都有。
-
首先进行特征选择,使用LinearSVC10
-
然后将数据丢进模型训练,并使用网格调参11
-
最后走一遍stacking1213
后记
其实模型训练的结果并不乐观,因为样本分布的不均衡。后来有一些其他想法:
啊,对了,我当时参考博文15,用pandas-profiling还跑崩了16,数据太多。