返回列表

#6 solution - Ensembling was the key

678. Playground Series - Season 5, Episode 11 | playground-series-s5e11

开始: 2025-11-01 结束: 2025-11-30 信贷风控 数据算法赛
#6 解决方案 - 集成学习是关键

#6 解决方案 - 集成学习是关键

大多数神经网络集成效果良好,但有几个不行

作者: Tilii (GRANDMASTER)
竞赛排名: 第 6 名
发布时间: 2025-12-01

这是一场不错的比赛,尽管第一周后冠军似乎就已明朗。恭喜 @mahoganybuttstrings 和其他高分选手。令我印象深刻的是 @angelosmar1@pirhosseinlou 仅凭几次提交就取得了如此高的排名。

感谢 @yekenot@masayakawamata 提供的优秀神经网络笔记本。他们都产生了具有良好 CV 分数的非常多样的模型,但它们无法与我其余的模型集成。我相当确定,由于未能找到将它们纳入集成的方法,我错失了很多机会,但有时就是这样。

我们总是谈论模型多样性带来良好的集成,在我的案例中,这是通过将所有特征视为分类变量来实现的。我们有几个特征的基数 > 100,000,但我通过将 loan_amount 四舍五入到最接近的 10,将 annual_income 四舍五入到最接近的 100,将其转换为可管理的数量。修改后的类别数量如下,它与 Keras 因子分解机 (FM) 配合得很好:

annual_income 1778
debt_to_income_ratio 572
credit_score 406
loan_amount 3683
interest_rate 1498
gender 3
marital_status 4
education_level 5
employment_status 5
loan_purpose 8
grade_subgrade 30

这得分约为 0.926,添加双 gram 交互后推升至 0.9265。单独来看,这些并不是我最好的模型,但它们与 GBM 模型融合得非常好。你可以从附带的爬山 plot 中看到,这些 FM 预测在经过一轮爬山后将 CV 分数从 0.9275 推升至约 0.928。Keras 和 CatBoost 堆叠在这些大型集成上都过拟合了,尽管在之前的 AUC 比赛中它们是最好的。最终经过大量正则化后我让 Keras 工作了,但那时它的分数略低于爬山法。

以下是进入最终集成的一些代表性模型列表。

模型 CV 公共榜单 私有榜单
XGBoost num 0.927548 0.92742 0.92862
CatBoost cat 0.927551 0.92743 0.92862
XGBoost cat 0.927516 0.92738 0.92854
LightGBM num 0.927171 0.92714 0.92839
CatBoost num 0.927202 0.92725 0.92837
LAMA AutoInt 0.926842 0.92702 0.92829
LAMA DenseLight 0.926779 0.92705 0.92824
RealMLP 0.926831 0.92709 0.92823
Keras FM 0.926564 0.92653 0.92778
PyT-trompt 0.926300 0.92605 0.92755
TabM 0.926061 0.92636 0.92751
TabR 0.925350 0.92528 0.92645

如表所示,我尝试了几乎 10 种不同的 NN 架构,因为我确信需要这样做来弥补模型中特征工程的不足。不幸的是,我无法让 RealMLPPyT-trompt 模型在集成中工作。它们有助于提高 CV 分数,但当它们添加到组中时,公共 LB 分数(以及后来的私有 LB)下降了。

我无法让 AutoGluon 产生任何有用的东西,可能是因为我开始得相对较晚,并且只使用了原始数据而没有进行任何特征工程。

我很好奇是否其他人也在集成阶段遇到过拟合问题。通常对于这种大小的数据集和 folds 分割一致的模型来说,这不是问题,但在这里我经常得到 0.9289 的 CV 分数,而在公共 LB 上得分却低得多。

最后我选择了我的最佳和第 4 佳提交,这总是感觉很好。

同比赛其他方案