其他分享
首页 > 其他分享> > AIWIN企业违约预测

AIWIN企业违约预测

作者:互联网

基本情况

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

初赛提供的数据集如下:

赛题链接:AIWIN - 比赛

提交总结

04/27/2022 16:53:57|第1次提交|0.938918

暂时不使用舆情特征

04/27/2022 19:26:02|第2次提交|0.94099|0.2071%

小幅度调整参数

04/28/2022 13:14:15|第3次提交|0.958458|1.7468%

改进:增加了舆情特征,但没有对文本进行分析,只是使用了新闻出现的时间和重要程度

新特征包括

遇到的问题:加入新特征后线下正确率提升很大,线上提升却很一般

问题分析:

处理结果:

04/28/2022 15:21:06|第4次提交|0.971285|1.2827%

修复了统计特征导致数据泄露的问题

04/28/2022 15:21:06|第5次提交|0.980702|0.9417%

进一步挖掘舆情特征,这次用上了tf-idf对新闻的来源进行编码,并做了降维处理(这里的处理挺巧妙的,值得学习)

04/30/2022 10:31:37|第9次提交|0.986175|0.5473%

使用AutoGulon重新拟合,相当于模型融合

05/02/2022 00:12:35|第12次提交|0.9909|0.4725%

对indextype重新做CountVectorize编码,得到

05/03/2022 13:32:51|第16次提交|0.992404|0.1504%

对新闻标题做TF-IDF,去除了停用词并对一个字的词也进行分析(sklearn默认不处理只有一个字的词),最后降维到128

ent_news['newstitle_cut']=ent_news.newstitle.apply(lambda x: ' '.join(list(jieba.cut(x)))).copy()
tmp=ent_news.groupby(['ent_id_year'])['newstitle_cut'].agg(lambda x: x.str.cat(sep=' ')).reset_index()

tfidf=text.TfidfVectorizer(stop_words=stop_w,token_pattern=r"(?u)\b\w+\b")
tf=tfidf.fit_transform(tmp['newstitle_cut'])

已知的无效特征:

  1. 使用ent_id_news_count_weight,也就是舆情的数量统计,最后的auc掉到0.97左右
ent_id_news_count_weight=pd.read_pickle('../usrdata/news_count_weight_text_64.pkl')
ent_id_news_count_weight.drop(columns=list(range(64)),inplace=True)

l=[]
time_cols=['2018_weight',  '2019_weight',  '2020_weight',
    '2021_weight', '2018_1_count', '2018_2_count', '2018_3_count',
    '2018_4_count', '2019_1_count', '2019_2_count', '2019_3_count',
    '2019_4_count', '2020_1_count', '2020_2_count', '2020_3_count',
    '2020_4_count', '2021_1_count', '2021_2_count', '2021_3_count',
    '2021_4_count']
text_cols=[i for i in ent_id_news_count_weight.columns if isinstance(i,int)]

for year in usrdata.year.unique():
    data=usrdata[usrdata.year==year].copy()
    cols=[i for i in time_cols if year>=int(i.split('_')[0])]+['ent_id']
    news=ent_id_news_count_weight[cols].copy()
    l.append(pd.merge(data,news,on='ent_id',how='left'))

usrdata=pd.concat(l)

05/05/2022 18:51:27|第21次提交|0.993095|0.0691%|第16名

将0.9924和0.9919按0.6:0.4的比例融合提交后得到

还可以采用的方案

赛后方案学习

特征构造:

特征举例说明:年末两个月各类别新闻数量占全年的比率

这个特征可以很好指示企业变坏的趋势,若预测更低频率的债券违约,可以构造最近一周在最近一个月里面负面新闻的占比,通过后续特征重要性分析,此类特征权重较大。

特征举例说明:企业投资关系图谱,对新闻重要性进行传播。

构建图谱,传递投资的企业与企业股东在舆情方面对发债企业的影响。

标签:count,预测,特征,违约,2020,舆情,news,ent,AIWIN
来源: https://www.cnblogs.com/anime-enjoy/p/16531942.html