返回列表

[CPU Only]6th Place Solution for "Linking Writing Processes to Writing Quality"

592. Linking Writing Processes to Writing Quality | linking-writing-processes-to-writing-quality

开始: 2023-10-02 结束: 2024-01-09 智能评测 数据算法赛
第六届"链接写作过程与写作质量"竞赛解决方案(仅CPU)

[仅CPU]第六届"链接写作过程与写作质量"竞赛解决方案

作者:Kazuki Igeta | 发布日期:2024-01-14

Pipeline diagram

信任CV分数的重要性

基于以下假设,我假设具有更好CV(交叉验证)分数而非LB(公开排行榜)分数的笔记本在私有LB上表现更佳:

  1. 根据以下观察,我推断具有良好LB分数的公开笔记本存在对LB过拟合的情况:

    • 我的CV分数与LB分数之间存在相关性
    • 当我计算LB分数优于我的公开笔记本的CV分数时,发现我的笔记本具有更好的CV分数
    • 将一些我创建的特征添加到公开笔记本后,CV和LB分数都得到了提升
  2. 根据以下观察,我推测LB包含比训练数据更容易预测的数据实例。此外,我认为拟合LB会导致模型鲁棒性降低,并增加在私有LB上出现"摇降"的可能性:

    • 在实验中,所有笔记本的LB分数均优于CV分数

背景信息


方法概述

我所有的计算均在CPU上完成,未使用GPU。

预处理

我参考了@kawaiicoderuwu论文重构笔记本来重建论文。

特征工程与特征选择

我生成的所有特征以及重建的论文已作为公开数据集发布。

在特征工程方面,我的目标是在添加我认为真正有效的特征的同时,尽可能减少特征数量。特征总数仅为169个。这是因为样本量相当小(2471个),我认为数百个特征过多。

我参考了@awqatak创建的银弹笔记本

例如,我进行了如下特征工程与选择:

  • 在获得重建论文的字符级TF-IDF向量后,我引入了额外特征,例如通过TruncatedSVD将n-gram范围为(1, 5)的TF-IDF向量压缩至29维
  • 引入表示按下'Ctrl'键次数的特征(因为我认为这可能与论文质量相关)
  • 在特征工程后移除了与其他特征相关系数为1或接近1的特征

验证方法

我使用重复分层K折交叉验证来提高OOF预测和CV分数的可靠性:

for i in range(n_repeats): skf = StratifiedKFold(n_splits=5, random_state=seed ** i, shuffle=True)

模型/算法

我决定在模型选择中优先考虑多样性,而非增加特征数量。为此,我在方法中选择了多种类型的模型。

对于许多模型,我通过特征装袋确保了特征组合的多样性。

此外,我实施了随机种子平均化以进一步提升性能。

Level-0 模型

  • LightGBM 分类器
  • LightGBM 分类器(ExtraTrees)
  • LightGBM 回归器
  • LightGBM 回归器(ExtraTrees)
  • CatBoost 回归器
  • XGBoost 回归器
  • RandomForest 回归器
  • Ridge
  • Lasso
  • KNN
  • SVR
  • LightAutoML
    • MLP
    • Dense Light
    • Dense
    • ResNet
  • TabPFN
  • TabNet

Level-1 模型

  • ExtraTree + Bagging
  • BayesianRidge
  • MLP

Level-2 模型

  • 几何平均混合

后处理

私有LB的测试数据可能包含训练数据中不存在的0分论文。但我认为仅凭打字行为无法准确预测0分论文,需要非匿名化的论文。因此我将截断下限设为0.5:

np.clip(submission, 0.5, 6.0)

未生效的方法

  • 重建论文的Word2Vec
  • 词级TF-IDF
  • 原始时间序列数据的NN模型
同比赛其他方案