-
题目思路
!思路图片 -
model: Xgboost
-
数据处理: pandas
-
文件夹结构介绍
data/alldata/: 存放所有的得到的数据文件
data/public/: 题目给定的原始数据
(https://pan.baidu.com/s/1nuJNz9B) 提取密码:t2ek
运行之前,请建立对应的文件夹,并导入数据。
model/:运行的model文件
feature/: 提取特征的py文件
saveModel/: 保存model,可以不使用
stack/: stacking特征的py文件
xresult/:存放输出结果的文件 -
排名
初赛: 43 / 1192 (571个队伍)
复赛: 25 / 1192 (569个队伍)
数据量: 复赛是:21W训练数据,21W测试数据,共两个省份
比赛思路从小文件开始,先提取特征后优化模型。
-----------------------------------------------------------------------------------------------------------------------
赛后总结:
背景:
传统的企业评价主要基于企业的财务信息,借贷记录信息等来判断企业经营状况,以及是否可能违约等信用信息。对于财务健全、在传统银行借贷领域留有记录的大中型企业,这种评价方式无疑较为客观合理。然而,对于更大量的中小微企业,既无法公开获得企业真实财务信息,也无这些企业的公开信用信息,在强变量缺失的情况下,如何利用弱变量客观公正评价企业经营状况,正是本赛题需要解决的主要问题。
本次大赛从全国2000多万企业抽取部分企业(脱敏后),提供企业主体在多方面留下的行为足迹信息数据。参赛队伍需要通过数据挖掘的技术和机器学习的算法,针对企业未来是否会经营不善构建预测模型,输出风险预测概率值。
数据量: 初赛:train: 10W, test: 10W 复赛:train: 21W, test: 21W
数据的清洗:
- 转化或者去掉数据中存在的中文字符
- 针对性的填充空置,根据这个工作的类别的平均值,最大值和最小值进行填充,填充的时候考虑公司的注册的时间,
使用相近时间短的同类型的工司的数据进行填充,比如前后3年 - 针对性的去掉重复的数据,数据本省的噪声,去掉完全相同的数据,比如投资数据出现两份
- 如何处理异常值,针对有先验证知识的特征进行分组
特征选择:
基础特征: 添加的过程中进行特征选择和分组,进行多特征多模型训练
1. 直接使用原始数据的列作为特征,使用单个和分组统计的特征,
2. 分时间段记性统计特征
3. 统计特征,比如投资公司的个数,违约的个数等,在本省内的个数和本省外的个数,
4. 计算不同分组之间的统计值的特征
5. 单个数据的同大类别和小类别的公司的个数(已经排序rank特征)
6. 同(大、小)行业对根据年份归一化后的注册资本进行排序,得到不同排序次序特征
7. 对一些实数数据,进行取对数特征变换
偏离值特征:
1. 计算每一个个体与分组之间的偏离距离,计算分组的均值,得到与每个个体的分组
2. 添加聚类特征,计算单个个体与当年(全部或者3年),所有同大类型和同小类型公司的均值的偏差距离
交叉特征:
1. 跨表时间交叉特征: 使用不同的表的时间间隔得到特征,例如,第一次投资或违约时间和注册时间之间的差值
2. 加减乘除特征、多项式交叉特征,暴力特征,应该是暴力出奇迹
计算的使用进行特征筛选交叉,分别对积极特征和消极特征进行组合,
主管考虑正相关和负相关,比如,分公司的个数、投资公司数量、专利数都是正相关
失信此时、被执行案件此时都是负相关
3. one-hot特征,将one-hot特征乘以某个其他特征
4. stacking特征,使用树模型得到stacking特征
5. 企业关系特征,与这个企业有关系的事务的个数,可以构造一个有向图计算出度和入度
6. 注意时间衰减特征
特征相似性检验,进行特征分组
训练模型:
在不同的特征集合上进行单模型调优和多模型融合
复赛的使用分省份预测,提高结果
评价指标: AUC + F1
注意: 如果使用python2运行出现错误,请在Python文件头加上:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
``