返回列表

A Detoxify solution (#3)

475. Jigsaw Rate Severity of Toxic Comments | jigsaw-toxic-severity-rating

开始: 2021-11-08 结束: 2022-02-07 内容安全 数据算法赛
一种 Detoxify 解决方案 (#3)

一种 Detoxify 解决方案 (#3)

作者: steubk | 比赛排名: 第3名 | 发布日期: 2022-02-08

感谢 Jigsaw 和 Kaggle 举办这场充满挑战且引人入胜的比赛,同时祝贺获奖者以及所有享受这场比赛的朋友们!

我特别喜欢这次比赛的形式,因为它迫使我们寻找一种能在未见数据上具有良好泛化能力的解决方案。

我的解决方案

为了获得能在未见数据上泛化的解决方案,我尝试使用:

  • 来自以往 Jigsaw 比赛的数据集来提取特征
  • VAL 数据 + RUD 数据集用于集成和参数调整

遗憾的是,我看到 MHS 数据集的时间太晚,未能在比赛中使用它。

特征提取

我使用 Detoxify 预训练模型作为特征提取器 [毒性 (toxicity), 严重毒性 (severe_toxicity), 身份攻击 (identity_attack)...],因为它们在以往的 Jigsaw 比赛中表现非常好

我还在 JC/JUC 数据集上针对每个特定目标 [毒性, 严重毒性, 身份攻击 ...] 生成了其他 tf-idf 模型,总共提取了 46 个特征。

一些由 Detoxify 模型提取的单个特征生成的模型在“未见数据”VAL 和 RUD 上表现良好(RUD 上的准确率 > 0.80,VAL 上 > 0.69),而 tf-idf 模型则较弱(RUD 上 < 0.71,VAL 上 < 0.66)。

如何组合特征

作为第一次尝试,我使用 RUD(以 RMSE 作为指标)拟合模型,并使用 VAL 调整超参数:这些模型在 VAL 上的准确率在 0.700 到 0.707 之间变化。

然而,通过这种方式,我不确定模型在未见数据上的表现,因此我进一步简化了模型。

我通过选择特征来优化 VAL 上的排名均值,从而建立了一个简单的模型:
该模型包含 11 个 Detoxify 特征和 1 个 tf-idf 特征 提交 1

我进一步剔除了 2 个会降低 RUD 准确率的特征,以生成另一个模型:
该模型仅包含 10 个 Detoxify 特征 提交 2

我宁愿稍微降低 VAL 上的准确率,也希望获得更好的泛化能力(幸运的是,这奏效了!)

提交 VAL RUD LB (公开榜) Private (私有榜)
提交 1 0.70858 0.80888 0.759 0.80901
提交 2 0.70652 0.82242 0.764 0.81299

公开榜 / 私有榜

以下是我的模型表现:

模型 LB (公开榜) Private (私有榜)
Ridge 0.72559 0.78464
RF 0.74823 0.80405
LGB 0.75595 0.80466
XGB 0.75454 0.80159
提交 1 0.75922