2019BDCI经验历程分享
ICBC-互联网情感分析
达达
一、简介
本次竞赛采用<span style="color:red">互联网线上数据</span>,数据爬取网站包括<span style="color:red">新闻网、微信、博客、贴吧</span>等,此外共有三份数据集,训练集用于算法模型训练,验证集用于算法模型选择,测试集用于最终算法性能测试用于排名。
注意本次竞赛不允许使用第三方其他数据
目的:进行情感分类。正性:0,中性:1,负性:2。
初赛数据介绍 初赛数据属性介绍
成绩评判二、基础方法
2.1 数据清洗
目的:去除掉脏数据
处理方法:正则替换(下面是其中两个例子)
2.2 模型结果
9月份上半旬:
基础模型baseline 9月份上半旬 排行榜特征(记录于9月10日):
1、每日最高分提0.1~0.5个点,分数相差不大;
2、80%的分数成为普遍。(PS:很多人开源了他们的代码,tensorflow/keras);
3、该赛题理解难度小,容易上手。参与人数多,但提分难。已提交:367份
成绩榜:78%以上占比50%
最高分:81.6%
9月份下半旬:(9月14日)
单模型性能 初期的模型融合方法10月份初:(10月1-15日)
方法 | 地址 | 效果 |
---|---|---|
Label-Smoothing(标签平滑) | Label-Smoothing(标签平滑) | 效果不好,万分点提升 |
eda(简单数据增强) | eda(简单数据增强) | 0.008个点的提升,和论文提升效果相仿(训练太慢了) |
focal loss | Focal loss主要是为了解决one-stage目标检测中正负样本比例严重失衡的问题。该损失函数降低了大量简单负样本在训练中所占的权重,也可理解为一种困难样本挖掘 | |
stacking(集成学习) | stacking | 效果不好,估计bert强模型太死板了 |
弱模型融合 | 在强模型融合中,加入对等权值的弱模型,有几率改成强模型分错,但弱模型分对的文本。3+2|4+1,用弱模型泛化强模型 | 提升1-3个千分点 |
阶段性提分小trick:(提分0.5%)
目的:提取不同模型,正确性效果较好的提分点(可能会有错误)。基于pandas进行合取或者析取。PS:只能提取,<span style="color:red">分数接近的两个结果集进行推断</span>。
差异性检测10月份后期:(10月15-28日)
1、模型融合tricks:
1、概率融合(效果最好)
2、等比投票融合(1:1:1)(特殊时效果超级好,提升1个点)
3、分数作为权重的投票融合(score1 : score2 : score3)
2、上分小trick(可能会过拟合)
为了更好的进行模型融合,建立了一个相似度程序。防止拟合上类似的数据标本。
(PS:<span style="color:red">有时模型融合,新得的结果和原先的一个结果一模一样,提交浪费了好几次次数</span>)
结果相似度检测初赛结束:(2745个队伍,3306人)
比赛初赛结束:A榜(第11名)
初赛A榜初赛结束:B榜(第8名)
初赛B榜11月复赛:(11月05-18日)(前50名进复赛)
1、<span style="color:red">切记一定要保存初赛较好的模型,复赛可能会很好用</span>,复赛只有10天左右,由于训练过程很慢。
初赛模型 | 复赛结果 |
---|---|
2019-10-28-roberta-512-7e-6 | 80.64 |
2019-10-26-roberta-256-5e-5 | 80.45 |
2019-10-19-roberta-512-8e-5 | 80.23 |
2019-10-18-robert-512-1e-5 | 80.1376 |
复赛刚开始,即可用初赛数据直接到第三名。
初赛开始,第三名复赛数据,及其结果
复赛数据 | 结果 |
---|---|
roberta-1折 | 75.51 |
roberta-5折-1-256 | 78.2 |
roberta-5折-1-512 | 78.57 |
roberta-5折-1-512-5e-6 | 79.1 |
roberta-五折---单模型 | 范围:76-79.6 |
复赛+复赛数据,及其结果
初赛+复赛数据 | 结果 |
---|---|
roberta-5折-1-512 | 79.8 |
roberta-5折-1-256 | 79.6 |
roberta+lstm - 5折 | 80.6 |
roberta+gru - 5折 | 80.8 |
roberta-五折---单模型 | 79.8-81.08 |
融合
累积模型 | 效果 |
---|---|
79.8,79.7,78.2,10-28_float,79.23 | 80.23 |
78.5,78.3,78.4,78.2,79.12,79.3 | 80.45 |
81.16,81.14,80.88 | 81.28 81.32 |
融合效果,主要找差异性较大的份数临近的结果集进行融合 | 普遍提升5个千分点 |
复赛提分小trick
1、根据验证集,挑选每折验证集结果最好的训练模型。
最好的:80.64
次好的:80.55
基础模型:80.1-80.6
<span style="color:red">和基础模型相差1个千分点,但数据分布有明显不同</span>。
不同模型的验证集分数2、差异概率融合
差异概率融合3、测试集切割(<span style="color:red">长文本切割</span>)
将测试集进行分割,用训练好的模型,对测试集进行预测。 测试集切割4、训练集切割(<span style="color:red">长文本切割,听师兄说单模81.50+,但我已经没机会跑了</span>)
同上述方法,但将训练集文本进行256或者512切分,投入模型中训练。
(复赛)单模效果在81.0-81.6左右