AiWin2022发债企业违约风险数据集和分类预警

摘要:

合集:AI案例-ML-泛金融业
赛题:发债企业的违约风险预警-初赛
主办方:国泰君安
主页:http://ailab.aiwin.org.cn/competitions/70
AI问题:分类问题
数据集:发债企业2019-2020年之间的违约数据用于模型训练。
数据集价值:预测发债企业在2021年发生违约风险的概率。
解决方案:LightGBM分类

一、赛题描述

赛题背景

自2014年我国债券市场“刚性兑付”神话被打破后,债券违约现象日益升温,2018年债券市场有160只债券发生违约,涉及44家发债企业,违约余额高达1505.25亿元,违约严重程度达历史之最。在债券市场信用风险加速暴露、违约事件发生趋于常态化的背景下,如何对发债企业违约风险进行有效评估与提前预测成为当前面临的重要监管难题。由于信息不完全,单纯依靠财务数据已难以充分解释违约风险溢价问题。如何有效利用财务以外的其他数据,例如发债企业的舆情数据、股权上下游数据,对发债企业违约风险进行预测具有重要意义。

赛题任务

本赛题任务是利用机器学习、深度学习等方法训练一个预测模型,该模型可以学习发债企业的相关信息,以预测发债企业未来一段时间内是否存在违约风险。赛题的难点在于数据集中包括大量的发债企业相关信息(股东信息、对外投资信息以及舆情信息等等),如何从中提取有效的特征并进行风险预测成为本赛题的关键问题。

二、数据集内容

内容

本赛题将提供发债企业2019-2020年之间的违约数据用于模型训练,以预测发债企业在2021年发生违约风险的概率,其中发债企业范围为2019-2021年发行过债券的企业。初复赛提供用于预测的发债企业范围不变,在初赛的基础上,复赛将增加发债企业的股东数据、对外投资数据以及相关企业的舆情数据。

初赛提供的数据集如下:

  • 企业的基本信息(只包含发债企业)
  • 2018-2020年的财务指标数据
  • 2018-2020年的舆情信息(只包含发债企业)
  • 2019-2020年的违约记录

复赛提供的数据集如下:

  • 企业的基本信息(包含发债企业及其股东企业和对外投资企业)
  • 发债企业的股东信息
  • 发债企业的对外投资信息
  • 2018-2020年的财务指标数据
  • 2018-2020年的舆情信息(包含发债企业及其股东企业和对外投资企业)
  • 2019-2020年的违约记录

企业基本信息

ent_info.csv

列名中文名类型说明
ent_id企业IDstring
industryphy国民经济行业门类string
industryco国民经济行业string
opfrom经营(驻在)期限自string
opto经营(驻在)期限至string
esdate成立日期string
apprdate核准日期string
regcap注册资本double万元
enttype企业类型string
entstatus企业状态string
prov所属省string
city所属城市string
country所属县string
is_bondissuer是否发债企业stringY: 是,N: 否

企业的财务指标数据

ent_financial_indicator.csv

列名中文名类型说明
ent_id公司IDstring
report_period报告期string
s_fa_extraordinary非经常性损益double
s_fa_deductedprofit扣除非经常性损益后的净利润double
s_fa_grossmargin毛利double
s_fa_operateincome经营活动净收益double
s_fa_investincome价值变动净收益double
s_stmnote_finexp利息费用double
s_stm_is折旧与摊销double
s_fa_ebit息税前利润double
s_fa_ebitda息税折旧摊销前利润double
s_fa_fcff企业自由现金流量double
s_fa_fcfe股权自由现金流量double
s_fa_exinterestdebt_current无息流动负债double
s_fa_exinterestdebt_noncurrent无息非流动负债double
s_fa_interestdebt带息债务double
s_fa_netdebt净债务double
s_fa_tangibleasset有形资产double
s_fa_workingcapital营运资金double
s_fa_networkingcapital营运流动资本double
s_fa_investcapital全部投入资本double
s_fa_retainedearnings留存收益double
s_fa_eps_basic基本每股收益double
s_fa_eps_diluted稀释每股收益double
s_fa_eps_diluted2期末摊薄每股收益double
s_fa_bps每股净资产double
s_fa_ocfps每股经营活动产生的现金流量净额double
s_fa_grps每股营业总收入double
s_fa_orps每股营业收入double
s_fa_surpluscapitalps每股资本公积double
s_fa_surplusreserveps每股盈余公积double
s_fa_undistributedps每股未分配利润double
s_fa_retainedps每股留存收益double
s_fa_cfps每股现金流量净额double
s_fa_ebitps每股息税前利润double
s_fa_fcffps每股企业自由现金流量double
s_fa_fcfeps每股股东自由现金流量double
s_fa_netprofitmargin销售净利率double%
s_fa_grossprofitmargin销售毛利率double%
s_fa_cogstosales销售成本率double%
s_fa_expensetosales销售期间费用率double%
s_fa_profittogr净利润/营业总收入double%
s_fa_saleexpensetogr销售费用/营业总收入double%
s_fa_adminexpensetogr管理费用/营业总收入double%
s_fa_finaexpensetogr财务费用/营业总收入double%
s_fa_impairtogr_ttm资产减值损失/营业总收入double%
s_fa_gctogr营业总成本/营业总收入double%
s_fa_optogr营业利润/营业总收入double%
s_fa_ebittogr息税前利润/营业总收入double%
s_fa_roe净资产收益率double%
s_fa_roe_deducted净资产收益率(扣除非经常损益)double%
s_fa_roa2总资产报酬率double%
s_fa_roa总资产净利润double%
s_fa_roic投入资本回报率double%
s_fa_roe_yearly年化净资产收益率double%
s_fa_roa2_yearly年化总资产报酬率double%
s_fa_roe_avg平均净资产收益率(增发条件)double%
s_fa_operateincometoebt经营活动净收益/利润总额double%
s_fa_investincometoebt价值变动净收益/利润总额double%
s_fa_nonoperateprofittoebt营业外收支净额/利润总额double%
s_fa_taxtoebt所得税/利润总额double%
s_fa_deductedprofittoprofit扣除非经常损益后的净利润/净利润double%
s_fa_salescashintoor销售商品提供劳务收到的现金/营业收入double%
s_fa_ocftoor经营活动产生的现金流量净额/营业收入double%
s_fa_ocftooperateincome经营活动产生的现金流量净额/经营活动净收益double
s_fa_capitalizedtoda资本支出/折旧和摊销double
s_fa_debttoassets资产负债率double%
s_fa_assetstoequity权益乘数double
s_fa_dupont_assetstoequity权益乘数(用于杜邦分析)double
s_fa_catoassets流动资产/总资产double%
s_fa_ncatoassets非流动资产/总资产double%
s_fa_tangibleassetstoassets有形资产/总资产double%
s_fa_intdebttototalcap带息债务/全部投入资本double%
s_fa_equitytototalcapital归属于母公司的股东权益/全部投入资本double%
s_fa_currentdebttodebt流动负债/负债合计double%
s_fa_longdebtodebt非流动负债/负债合计double%
s_fa_current流动比率double
s_fa_quick速动比率double
s_fa_cashratio保守速动比率double
s_fa_ocftoshortdebt经营活动产生的现金流量净额/流动负债double
s_fa_debttoequity产权比率double%
s_fa_equitytodebt归属于母公司的股东权益/负债合计double%
s_fa_equitytointerestdebt归属于母公司的股东权益/带息债务double%
s_fa_tangibleassettodebt有形资产/负债合计double%
s_fa_tangassettointdebt有形资产/带息债务double%
s_fa_tangibleassettonetdebt有形资产/净债务double%
s_fa_ocftodebt经营活动产生的现金流量净额/负债合计double%
s_fa_ocftointerestdebt经营活动产生的现金流量净额/带息债务double%
s_fa_ocftonetdebt经营活动产生的现金流量净额/净债务double%
s_fa_ebittointerest已获利息倍数(EBIT/利息费用)double%
s_fa_longdebttoworkingcapital长期债务与营运资金比率double%
s_fa_ebitdatodebt息税折旧摊销前利润/负债合计double%
s_fa_turndays营业周期double
s_fa_invturndays存货周转天数double
s_fa_arturndays应收账款周转天数double
s_fa_invturn存货周转率double
s_fa_arturn应收账款周转率double
s_fa_caturn流动资产周转率double
s_fa_faturn固定资产周转率double
s_fa_assetsturn总资产周转率double
s_fa_roa_yearly年化总资产净利率double%
s_fa_dupont_roa总资产净利率(杜邦分析)double%
s_stm_bs固定资产合计double
s_fa_prefinexpense_opprofit扣除财务费用前营业利润double
s_fa_nonopprofit非营业利润double
s_fa_optoebt营业利润/利润总额double%
s_fa_noptoebt非营业利润/利润总额double%
s_fa_ocftoprofit经营活动产生的现金流量净额/营业利润double%
s_fa_cashtoliqdebt货币资金/流动负债double
s_fa_cashtoliqdebtwithinterest货币资金/带息流动负债double
s_fa_optoliqdebt营业利润/流动负债double
s_fa_optodebt营业利润/负债合计double
s_fa_roic_yearly年化投入资本回报率double%
s_fa_tot_faturn固定资产合计周转率double
s_fa_profittoop利润总额/营业收入double%
s_qfa_operateincome单季度.经营活动净收益double
s_qfa_investincome单季度.价值变动净收益double
s_qfa_deductedprofit单季度.扣除非经常损益后的净利润double
s_qfa_eps单季度.每股收益double
s_qfa_netprofitmargin单季度.销售净利率double%
s_qfa_grossprofitmargin单季度.销售毛利率double%
s_qfa_expensetosales单季度.销售期间费用率double%
s_qfa_profittogr单季度.净利润/营业总收入double%
s_qfa_saleexpensetogr单季度.销售费用/营业总收入double%
s_qfa_adminexpensetogr单季度.管理费用/营业总收入double%
s_qfa_finaexpensetogr单季度.财务费用/营业总收入double%
s_qfa_impairtogr_ttm单季度.资产减值损失/营业总收入double%
s_qfa_gctogr单季度.营业总成本/营业总收入double%
s_qfa_optogr单季度.营业利润/营业总收入double%
s_qfa_roe单季度.净资产收益率double%
s_qfa_roe_deducted单季度.净资产收益率(扣除非经常损益)double%
s_qfa_roa单季度.总资产净利润double%
s_qfa_operateincometoebt单季度.经营活动净收益/利润总额double%
s_qfa_investincometoebt单季度.价值变动净收益/利润总额double%
s_qfa_deductedprofittoprofit单季度.扣除非经常损益后的净利润/净利润double%
s_qfa_salescashintoor单季度.销售商品提供劳务收到的现金/营业收入double%
s_qfa_ocftosales单季度.经营活动产生的现金流量净额/营业收入double%
s_qfa_ocftoor单季度.经营活动产生的现金流量净额/经营活动净收益double
s_fa_yoyeps_basic同比增长率-基本每股收益(%)double%
s_fa_yoyeps_diluted同比增长率-稀释每股收益(%)double%
s_fa_yoyocfps同比增长率-每股经营活动产生的现金流量净额(%)double%
s_fa_yoyop同比增长率-营业利润(%)double%
s_fa_yoyebt同比增长率-利润总额(%)double%
s_fa_yoynetprofit同比增长率-归属母公司股东的净利润(%)double%
s_fa_yoynetprofit_deducted同比增长率-归属母公司股东的净利润-扣除非经常损益(%)double%
s_fa_yoyocf同比增长率-经营活动产生的现金流量净额(%)double%
s_fa_yoyroe同比增长率-净资产收益率(摊薄)(%)double%
s_fa_yoybps相对年初增长率-每股净资产(%)double%
s_fa_yoyassets相对年初增长率-资产总计(%)double%
s_fa_yoyequity相对年初增长率-归属母公司的股东权益(%)double%
s_fa_yoy_tr营业总收入同比增长率(%)double%
s_fa_yoy_or营业收入同比增长率(%)double%
s_qfa_yoygr单季度.营业总收入同比增长率(%)double%
s_qfa_cgrgr单季度.营业总收入环比增长率(%)double%
s_qfa_yoysales单季度.营业收入同比增长率(%)double%
s_qfa_cgrsales单季度.营业收入环比增长率(%)double%
s_qfa_yoyop单季度.营业利润同比增长率(%)double%
s_qfa_cgrop单季度.营业利润环比增长率(%)double%
s_qfa_yoyprofit单季度.净利润同比增长率(%)double%
s_qfa_cgrprofit单季度.净利润环比增长率(%)double%
s_qfa_yoynetprofit单季度.归属母公司股东的净利润同比增长率(%)double%
s_qfa_cgrnetprofit单季度.归属母公司股东的净利润环比增长率(%)double%
s_fa_yoy_equity净资产(同比增长率)double%
rd_expense研发费用double

发债企业违约记录

ent_default.csv

对于一个发债企业若存在违约记录,则设置预测输出变量default_score为1-已违约。

列名中文名类型说明
ent_id公司IDstring
default_date违约日期string

企业的舆情信息

ent_news.csv

列名中文名类型说明
ent_id公司IDstring
news_code新闻编码string
index_type风险标签类别string
index风险标签string
imp_score重要性int
publish_date发布日期string
publish_time发布时间string
news_source新闻来源string
newsc_title新闻标题string

评估结果

answer.csv

列名中文名类型说明
ent_id公司IDstring
default_score违约风险值double取值范围:[0,1]

三、baseline方案

源码:baseline.ipynb

工作原理

该解决方案实现了一个基于LightGBM的企业违约预测模型。

工作流程总结:

  1. 加载并预处理原始数据
  2. 构建时间相关的复合键
  3. 合并不同来源的数据
  4. 特征工程和编码
  5. 使用LightGBM进行交叉验证训练
  6. 生成预测结果并保存

安装开发包

参考《安装传统机器学习开发包》。以下为开发包版本信息:

lightgbm                  4.5.0
gensim                   4.3.2
scikit-learn             1.5.1

triu 函数在 scipy.linalg 中从 scipy 版本 1.4.0 开始提供。你可以通过以下代码升级当前的 scipy 版本:conda install scipy=1.5.0。

工作流程

1、导入开发包

import pandas as pd
import gc
import lightgbm as lgb
from lightgbm import early_stopping, log_evaluation
import numpy as np
from sklearn.model_selection import StratifiedKFold
import warnings
warnings.filterwarnings('ignore')

Scikit-learn(简称sklearn)是一个基于Python的开源机器学习库,广泛应用于数据挖掘和数据分析。它提供了简单而高效的工具,涵盖了分类、回归、聚类、降维等多个领域。LightGBM是一个由微软开发的开源梯度提升框架,以其高效、快速和准确著称,广泛应用于分类、回归和排序等机器学习任务。

2、数据加载与预处理

数据加载

  • 加载了4个主要数据文件:
    • ent_default.csv:企业违约记录
    • ent_info.csv:企业基本信息
    • ent_financial_indicator.csv:企业财务指标
    • ent_news.csv:企业新闻数据(但后续未使用,该数据可应用于自然语言处理。)
ent_default=pd.read_csv('data/ent_default.csv',delimiter="|")
ent_info=pd.read_csv('data/ent_info.csv',delimiter="|")
ent_financial=pd.read_csv('data/ent_financial_indicator.csv',delimiter="|")
ent_news = pd.read_csv('data/ent_news.csv', delimiter="|", on_bad_lines='warn')

数据预处理

  • 时间处理:从日期字段中提取年份
    • ent_default['year'] = ent_default['acu_date'].apply(lambda x:x//10000)
    • 类似处理财务数据和新闻数据的年份
  • 创建复合键:将企业ID与年份结合创建ent_id_year字段
    • ent_default['ent_id_year'] = ent_default['ent_id'] + '_' + (ent_default['year'] - 1).astype(str)
  • 数据合并
    • 合并违约记录与样本提交文件
    • 添加2019年和2020年未违约企业的记录(标记为0)
### 时间处理
ent_default['year'] = ent_default['acu_date'].apply(lambda x:x//10000)
ent_fina['year'] = ent_fina['report_period'].apply(lambda x:x//10000)
news_df['year'] = news_df['publishdate'].apply(lambda x:int(x)//10000)

ent_default['ent_id_year'] = ent_default['ent_id'] + '_' + (ent_default['year'] - 1).astype(str)
ent_fina['ent_id_year'] = ent_fina['ent_id'] + '_' + ent_fina['year'].astype(str)
news_df['ent_id_year'] = news_df['ent_id'] + '_' + news_df['year'].astype(str)
answer['ent_id_year'] = answer['ent_id'].apply(lambda x: x+'_2020')

del ent_fina['year'], news_df['year']


# 去重
ent_default_new = ent_default.drop_duplicates(subset=['ent_id_year'], keep='last')

# 合并
ent_default_new['default_score'] = 1
answer['year'] = 2021
data = pd.concat([ent_default_new[['ent_id','ent_id_year','year','default_score']], answer], axis=0, ignore_index=True)
del ent_default_new

3、特征工程

特征分类

  • 企业基本信息特征:
    • 分类特征:行业、企业类型、状态、地区等
    • 数值特征:注册资本
    • 时间特征:经营期限、成立日期等
  • 财务指标特征:
    • 全部数值特征(共170多个财务指标)
features = [f for f in data.columns if f not in ['ent_id','ent_id_year','default_score','is_bondissuer'] + \
                                               ent_info_time_cols + ent_fina_time_cols]

train = data[data.year!=2021].reset_index(drop=True)
test = data[data.year==2021].reset_index(drop=True)

x_train = train[features]
x_test = test[features]

y_train = train['default_score'] # 预测输出变量

特征编码

对分类特征进行自然数编码:

def label_encode(series):
   unique = list(series.unique())
   return series.map(dict(zip(unique, range(series.nunique()))))

for col in ent_info_cat_cols:
   ent_info[col] = label_encode(ent_info[col])

数据合并

  • 将企业基本信息、财务指标合并到主数据集
  • 去重处理,保留每个企业每年的最新记录
# 合并ent_info、ent_fina
print(data.shape)
ent_info_new = ent_info.drop_duplicates()
data = data.merge(ent_info_new, on=['ent_id'], how='left')

print(data.shape)

ent_fina_new = ent_fina.sort_values('report_period').drop_duplicates(subset=['ent_id_year'], keep='last')
data = data.merge(ent_fina_new, on=['ent_id','ent_id_year'], how='left')
print(data.shape)

4、模型训练

使用LightGBM模型

  • 采用5折分层交叉验证
  • 主要参数:def cv_model(clf, train_x, train_y, test_x, clf_name):
       folds = 5
       seed = 2022
       kf = StratifiedKFold(n_splits=folds, shuffle=True, random_state=seed)

       train = np.zeros(train_x.shape[0])
       test = np.zeros(test_x.shape[0])

       cv_scores = []

       for i, (train_index, valid_index) in enumerate(kf.split(train_x, train_y)):
           print(‘************************************ {} ************************************’.format(str(i+1)))
           trn_x, trn_y, val_x, val_y = train_x.iloc[train_index], train_y[train_index], train_x.iloc[valid_index], train_y[valid_index]

           if clf_name == “lgb”:
               train_matrix = clf.Dataset(trn_x, label=trn_y)
               valid_matrix = clf.Dataset(val_x, label=val_y)

               params = {
                   ‘boosting_type’: ‘gbdt’,
                   ‘objective’: ‘binary’,
                   ‘metric’: ‘auc’,
                   ‘min_child_weight’: 5,
                   ‘num_leaves’: 2 ** 5,
                   ‘lambda_l2’: 10,
                   ‘feature_fraction’: 0.8,
                   ‘bagging_fraction’: 0.8,
                   ‘bagging_freq’: 4,
                   ‘learning_rate’: 0.01,
                   ‘seed’: 2022,
                   ‘n_jobs’:-1,
                   ‘verbose’: -1,
              }

               # model = clf.train(params, train_matrix, 50000, valid_sets=[train_matrix, valid_matrix],
               #                   categorical_feature=[], verbose_eval=500, early_stopping_rounds=500)
               model = lgb.train(params, train_matrix, 50000, valid_sets=[train_matrix, valid_matrix],
                     categorical_feature=[],
                     callbacks=[log_evaluation(500), early_stopping(stopping_rounds=500)])  # 使用早停机制(500轮不提升停止)
               
               val_pred = model.predict(val_x, num_iteration=model.best_iteration)
               test_pred = model.predict(test_x, num_iteration=model.best_iteration)
               
               # print(list(sorted(zip(features, model.feature_importance(“gain”)), key=lambda x: x[1], reverse=True))[:20])
               
           train[valid_index] = val_pred
           test += test_pred / kf.n_splits
           cv_scores.append(roc_auc_score(val_y, val_pred))
           
           print(cv_scores)
         
       print(“%s_scotrainre_list:” % clf_name, cv_scores)
       print(“%s_score_mean:” % clf_name, np.mean(cv_scores))
       print(“%s_score_std:” % clf_name, np.std(cv_scores))
       return train, test

这段代码使用LightGBM库训练一个二分类模型,并设置了多种参数来优化模型的性能和防止过拟合。通过设置早停和日志记录回调函数,可以在训练过程中监控模型的性能,并在验证集性能不再提升时提前停止训练,从而节省计算资源并提高模型的泛化能力。

训练过程

  • 使用早停机制(500轮不提升停止)
  • 记录每折的AUC得分
  • 最终平均AUC约为0.948
def lgb_model(x_train, y_train, x_test):
   lgb_train, lgb_test = cv_model(lgb, x_train, y_train, x_test, "lgb")
   return lgb_train, lgb_test
   
lgb_train, lgb_test = lgb_model(x_train, y_train, x_test)

训练结果

************************************ 1 ************************************
Training until validation scores don't improve for 500 rounds
[500] training's auc: 0.979015 valid_1's auc: 0.945491
[1000] training's auc: 0.988989 valid_1's auc: 0.950173
[1500] training's auc: 0.993245 valid_1's auc: 0.95231
[2000] training's auc: 0.99579 valid_1's auc: 0.953922
[2500] training's auc: 0.997349 valid_1's auc: 0.953116
Early stopping, best iteration is:
[2289] training's auc: 0.996766 valid_1's auc: 0.954321
[0.9543206969625618]
************************************ 2 ************************************
Training until validation scores don't improve for 500 rounds
[500] training's auc: 0.978808 valid_1's auc: 0.93397
[1000] training's auc: 0.989057 valid_1's auc: 0.947722
[1500] training's auc: 0.994123 valid_1's auc: 0.948498
[2000] training's auc: 0.996725 valid_1's auc: 0.950519
[2500] training's auc: 0.998096 valid_1's auc: 0.951043
[3000] training's auc: 0.998792 valid_1's auc: 0.951698
[3500] training's auc: 0.999238 valid_1's auc: 0.952568
Early stopping, best iteration is:
[3372] training's auc: 0.99915 valid_1's auc: 0.952942
[0.9543206969625618, 0.9529422771073066]
************************************ 3 ************************************
Training until validation scores don't improve for 500 rounds
[500] training's auc: 0.980715 valid_1's auc: 0.91176
[1000] training's auc: 0.98861 valid_1's auc: 0.925989
[1500] training's auc: 0.993395 valid_1's auc: 0.930443
[2000] training's auc: 0.996026 valid_1's auc: 0.933455
[2500] training's auc: 0.997595 valid_1's auc: 0.935551
[3000] training's auc: 0.998411 valid_1's auc: 0.937422
[3500] training's auc: 0.998923 valid_1's auc: 0.939274
[4000] training's auc: 0.999226 valid_1's auc: 0.941613
[4500] training's auc: 0.999449 valid_1's auc: 0.942848
[5000] training's auc: 0.999597 valid_1's auc: 0.943727
[5500] training's auc: 0.999715 valid_1's auc: 0.944204
[6000] training's auc: 0.999785 valid_1's auc: 0.944391
[6500] training's auc: 0.999826 valid_1's auc: 0.945645
[7000] training's auc: 0.999865 valid_1's auc: 0.946029
[7500] training's auc: 0.999897 valid_1's auc: 0.94659
[8000] training's auc: 0.999921 valid_1's auc: 0.946047
Early stopping, best iteration is:
[7640] training's auc: 0.999904 valid_1's auc: 0.946693
[0.9543206969625618, 0.9529422771073066, 0.9466928618205632]
************************************ 4 ************************************
Training until validation scores don't improve for 500 rounds
[500] training's auc: 0.978465 valid_1's auc: 0.967953
[1000] training's auc: 0.988048 valid_1's auc: 0.968417
[1500] training's auc: 0.993321 valid_1's auc: 0.969371
[2000] training's auc: 0.996009 valid_1's auc: 0.971523
[2500] training's auc: 0.997614 valid_1's auc: 0.972572
[3000] training's auc: 0.998446 valid_1's auc: 0.973545
[3500] training's auc: 0.99898 valid_1's auc: 0.974724
[4000] training's auc: 0.999253 valid_1's auc: 0.975239
[4500] training's auc: 0.999475 valid_1's auc: 0.975557
[5000] training's auc: 0.999613 valid_1's auc: 0.975856
[5500] training's auc: 0.999735 valid_1's auc: 0.976315
[6000] training's auc: 0.999801 valid_1's auc: 0.976193
Early stopping, best iteration is:
[5538] training's auc: 0.999737 valid_1's auc: 0.976446
[0.9543206969625618, 0.9529422771073066, 0.9466928618205632, 0.9764458169567659]
************************************ 5 ************************************
Training until validation scores don't improve for 500 rounds
[500] training's auc: 0.98418 valid_1's auc: 0.89053
[1000] training's auc: 0.991626 valid_1's auc: 0.899027
[1500] training's auc: 0.995276 valid_1's auc: 0.901001
[2000] training's auc: 0.997118 valid_1's auc: 0.90277
[2500] training's auc: 0.998209 valid_1's auc: 0.905222
[3000] training's auc: 0.998751 valid_1's auc: 0.908357
[3500] training's auc: 0.999113 valid_1's auc: 0.908984
Early stopping, best iteration is:
[3384] training's auc: 0.999062 valid_1's auc: 0.909657
[0.9543206969625618, 0.9529422771073066, 0.9466928618205632, 0.9764458169567659, 0.9096574957888827]
lgb_scotrainre_list: [0.9543206969625618, 0.9529422771073066, 0.9466928618205632, 0.9764458169567659, 0.9096574957888827]
lgb_score_mean: 0.948011829727216
lgb_score_std: 0.021658242565467948

5. 预测与输出

  • 对测试集进行预测
  • 生成提交文件4_29_1.csv,包含企业ID和预测的违约概率

提交文件4_29_1.csv数据样例:

ent_id  |  default_score

pz02551f7157daa47863bf24165b32e8af|0.0017181022635838128
pz17ed364608b1470526dd99102ba3d4d5|0.00392982717793669
pz21fe86a42da0133463e525d615ad559d|0.00011260979806847706
pz2405eece6308c587bce6b379d3099628|2.7782630874952274e-05
pz29b17e9c378ef899938d86ca08778810|0.008482012223639899
pz4cad6ea138e8d74d237217d91b423ec4|0.0004072060656886154
...

源码开源协议

GPL-3.0 license

四、获取案例套装

需要登录后才允许下载文件包。登录

发表评论