674. Jigsaw - Agile Community Rules Classification | jigsaw-agile-community-rules
首先,我要感谢竞赛组织者举办本次活动,为我们提供了一个宝贵的学习和探索新技术的机会。
其次,我要向我的导师 @zwzwyang 以及我的两位队友 @mavicbf 和 @mikeoscar1 表达诚挚的谢意——他们在整个过程中都发挥了不可或缺的作用。
最后,我要感谢暨南大学广东智慧教育研究院的支持。
我们的主要思路是利用公共测试集(Public)中的正样本和负样本进行训练。
在数据增强过程中,我们将其他规则下的正样本转换为当前规则下的负样本(30%)(Public-1),以更好地拟合测试分布。
# 采样 30% 的数据
sampled = dataframe.sample(frac=0.3, random_state=42).copy()
all_rules = dataframe["rule"].unique().tolist()
def get_different_rule(current_rule):
choices = [r for r in all_rules if r != current_rule]
return pd.Series(choices).sample(1).iloc[0]
sampled["rule"] = sampled["rule"].apply(get_different_rule)
sampled["rule_violation"] = 0 # 始终为负样本
dataframe = pd.concat([dataframe, sampled], axis=0).reset_index(drop=True)
| 模型 | 公共分数 | Public-1 分数 | 私有分数 | 训练时间 |
|---|---|---|---|---|
| Qwen3-8b-gptq-int4 | 0.922 | 0.927 | 0.923 | 8 小时 |
| Qwen3-1.7b-gptq-int4 | 0.911 | 0.918 | 0.912 | 1.5 小时 |
| DeBERTa-base | 0.906 | 0.911 | 0.903 | 1 小时 |
| DeBERTa-small | 0.900 | – | – | 0.5 小时 |
我们没有为 DeBERTa-small 使用额外数据,因为实验表明包含它会略微降低整体集成性能。
我们的开源代码地址:
https://www.kaggle.com/code/yangjiahua/finall-qwen3-8b-int4