第一次参加DF的比赛(两个月前的比赛了),赛题为CCF-BDCI2017的《量子数聚-企业经营退出风险预测》,在此记录比赛过程中自己摸索的一些经验(运气使然前100进入了复赛,虽然最终离进入决赛还差了好几十名 o(一︿一+)o)。
*1.任务描述:
本赛题以企业为中心,围绕企业主体在多方面留下的行为足迹信息构建训练数据集,以企业在未来两年内是否因经营不善退出市场作为目标变量进行预测。
参赛者需要利用训练数据集中企业信息数据,构建算法模型,并利用该算法模型对验证数据集中企业,给出预测结果以及风险概率值。
预测结果以AUC值作为主要评估标准,在AUC值(保留到小数点后3位数字)相同的情况下,则以F1-score(命中率及覆盖率)进行辅助评估。
2.队伍名称:略
3.数据描述:
数据基本情况
本赛题提供两种数据:
(1)企业身份信息(已脱敏)及企业在一定时间范围内的行为数据。该数据对训练集和评测集都是相同的。
(2)目标数据。目标值为该企业在2017年8月时的经营状况:停业1,正常经营0
该表仅训练数据有。
选手从数据中自行组成特征和数据格式,自由组合训练测试数据比例。
为保护数据安全,所有数据均已进行了采样和必要的脱敏处理。
数据中部分列存在空值或NULL,记录可能存在重复情况,请参赛者根据数据字段描述自行处理。
具体赛题和数据格式:http://www.datafountain.cn/#/competitions/271/intro
4.数据处理:
初赛数据规模:原始数据约80MB大小,经过数据清洗和去重后供本地训练的数据集有153007行,需要在线提交验证的数据集102125行。
复赛数据规模:原始数据约270MB大小,经过数据清洗和去重后供本地训练的数据集有218265行,需要在线提交验证的数据集218248行。
数据处理使用python3.5+pandas。数据处理其实在提取特征之前或者之后都会使用,因为在多个表间取有相关联系的数据时或者表间数据进行拼接时都会产生数据缺失或者数据异常的情况。
4.1 数据去重
对原始数据中提供的13个表,根据每个数据库的主键对其进行去重操作。
4.2 处理NA
NA即数据中的missing value,一般需要分情况处理:
4.2.1 missing value占总体的比例非常小,那么直接填入平均值或者众数;
4.2.2 missing value所占比例较均衡,那么可以考虑它跟其他特征的关系,如果关系明显,那么直接根据其他特征填入;
4.2.3 missing value所占比例大,那么直接将missing value当作该特征取值的一种情况,选与能已有的值相区分的值;
4.2.3 如果前期只是为了跑一个初始的模型,可以先统一给NA取0或-1或-999这种特殊值;
4.3 去除不必要的符号
特征取值一般是离散值或者连续值,因此需将原始数据中不需要的符号去除,或者说是可以提取原始数据中的离散值或连续值,一般可以使用split函数或者正则表达式,eg:如年份为‘2017年1月1日’,应将汉字去除。
4.4 数据重新编码或者取对数变换
特征变量为连续值:如果为长尾分布并且考虑使用线性模型,可以对变量进行对数变换。
特征变量为离散值:观察每个离散值的频率分布,对于频次较低的特征,可以考虑统一编码为“其他”类别。
4.5 处理野点
一般是通过画图的方式处理离群点,但是此次比赛的数据规模较大,利用画图的方式有时不能准确的发现离群点的位置。处理野点的方式可以直接删除或者取统计值(平均值,众数等)。
4.6 数据标准化
原始数据集中由于各个特征的含义和单位不同,不同特征的数据取值范围有很大差异,可能会导致模型权重偏移的情况,因此一般需要对数据进行标准化,即去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。
z-score 标准化