Kaggle知识点:表格竞赛中NN什么时候优于树模型?
在表格数据建模中,特征工程和机器学习模型是最重要的两个要素。特征工程为模型提供了高质量的输入,而机器学习模型则通过学习特征之间的关系来实现预测和分类。
- 特征工程是指从原始数据中提取、选择和转换特征的过程
- 机器学习模型是表格数据建模的核心,它通过学习数据中的模式和规律来做出预测或分类
尽管近年来神经网络在表格数据上取得了进展,但关于NNs是否普遍优于GBDTs的讨论仍然存在。
在本文中,我们将讨论两个主要问题:
- 算法选择的重要性:是否真的需要在NNs和GBDTs之间做出选择?
- 数据集特性对算法性能的影响:哪些数据集特性使得NNs或GBDTs更适合?
机器学习模型
在表格建模中,流行的模型有如下几类:
GBDTs:CatBoost、LightGBM、XGBoost。
神经网络:DANet、FT-Transformer、两种MLP、NODE、ResNet、SAINT、STG、TabNet、TabPFN、VIME。
基线方法:决策树、KNN、逻辑回归、随机森林、SVM。
GBDT
梯度提升决策树(GBDT) 是一种强大的集成学习算法,通过构建一系列弱学习器(通常是决策树)来逐步减少预测误差。GBDT的核心思想是每次迭代都学习一个模型来拟合前一个模型的残差,从而逐步提升模型的性能。
CatBoost 是由俄罗斯搜索引擎公司Yandex开发的一种梯度提升算法,特别擅长处理类别型特征。以下是其主要特点:
处理类别型特征:CatBoost能够自然地处理分类数据,无需进行复杂的特征工程。它通过引入有序提升(ordered boosting)技术,有效减少了对类别型数据进行标签编码的需要。
防止过拟合:CatBoost在模型训练过程中引入了多种正则化技术,如L2正则化和早停法,能够有效防止模型过拟合。
训练效率:尽管CatBoost在处理类别型特征方面表现优异,但在大规模数据集上的训练速度相对较慢。
LightGBM 是微软开发的一种高效的梯度提升框架,主要针对大规模数据集的训练进行了优化。其特点包括:
高效性:LightGBM使用直方图算法来加速决策树的构建过程,显著提高了训练速度和内存效率。
Leaf-wise树生长策略:与传统的Level-wise策略不同,LightGBM采用Leaf-wise(按叶子生长)策略,能够更有效地利用计算资源。
分布式支持:LightGBM支持分布式训练,可以快速处理海量数据。
XGBoost 是一种广泛应用于工业界的梯度提升算法,具有以下特点:
高效性:XGBoost通过引入二阶导数和正则化项,使得模型训练更加高效和准确。
并行计算:XGBoost支持并行计算,能够充分利用多核处理器的计算能力。
灵活性:XGBoost提供了丰富的参数配置,允许用户根据具体任务进行灵活的调整。
神经网络
标准MLP由输入层、一个或多个隐藏层以及输出层组成,层与层之间是全连接的。隐藏层的神经元通过与输入层的全连接以及激活函数(如sigmoid或tanh)来生成输出,输出层通常使用softmax函数进行多类别分类。
FT-Transformer是一种用于分类任务的神经网络模型,其结构类似于ResNet,但在某些方面有所不同。它通过仿照BERT的设计增加了output token(CLS token)与features token一起进行进入Transformer参与注意力计算。
ResNet通过引入残差块来解决深层神经网络中的梯度消失问题。残差块允许网络学习残差变化,从而能够更好地捕捉和表示输入和输出之间的关系。
TabNet是一个循环架构,交替进行特征的动态重加权和传统的前馈模块。它通过动态特征选择和重加权来捕捉特征之间的复杂交互。
TabPFN是一种基于概率流的神经网络模型,专门用于处理表格数据。它通过概率流来建模特征之间的复杂分布和关系。
实验设置
实验数据集
实验在176个分类数据集上进行,这些数据集来自OpenML,包括OpenML-CC18套件、OpenML基准测试套件以及其他OpenML数据集。由于实验规模庞大(共训练了538,650个模型),每个实验的运行时间被限制在10小时内,因此排除了大小超过1.1M的数据集。
使用Python库PyMFE提取了965个元特征,这些元特征包括:
通用特征:如数据点数量、类别数量、数值/分类特征数量。
统计特征:如所有特征分布的最小、平均、最大偏度和峰度。
信息论特征:如目标的香农熵。
地标特征:如1-最近邻在数据集子样本上的表现。
基于模型的特征:如决策树模型中叶节点的数量。
实验设计
对于每个数据集,作者使用OpenML提供的10个训练/测试折,以便与其他使用相同OpenML数据集的研究进行比较。为了进行超参数调优,作者将每个训练折进一步分为训练集和验证集。对于每个算法和每个数据集折,作者在最多10小时内运行算法,并使用最多30个超参数集(一个默认集和29个随机集,使用Optuna)。每个参数化算法在32GiB V100上最多运行两小时来完成一次训练/评估周期。
实验结果
表1和表2分别展示了算法在98个数据集和57个小型数据集(大小≤1250)上的表现。结果显示:
CatBoost和TabPFN∗表现最佳:在所有数据集中,CatBoost和TabPFN∗的平均排名最高。
ResNet和SAINT表现优异:在小型数据集中,ResNet和SAINT的表现也非常出色。
GBDTs整体表现优于NNs:除了TabPFN∗,GBDTs在大多数数据集上的表现优于NNs。
基线方法表现稳定:随机森林和SVM等基线方法在某些数据集上也表现出色。
通过分析元特征发现:
数据集的正则性:如特征分布的偏度和峰度,是NNs优于GBDTs的预测因素。
数据集大小:GBDTs在大型数据集上表现更好。
对于许多表格数据集,选择NNs或GBDTs并不是最关键的因素。相反,轻量级的超参数调优可能更为重要。此外,TabPFN在小数据集上表现出色,而GBDTs在处理不规则数据集时表现更好。
实验分析
没有单一算法占主导地位
首先比较了所有算法在所有数据集上的平均排名,排除了在实验设置中因内存或超时问题导致无法运行的算法。因此,作者考虑了98个数据集(在下一部分和附录D.2中包含了所有176个数据集的结果)。
令人惊讶的是,几乎每个算法至少在一个数据集上排名第一,同时在另一个数据集上排名最后。正如预期的那样,基线方法通常表现较差,而神经网络和GBDTs在平均表现上更好。表现最好的算法CatBoost的平均排名仅为5.06,这表明没有一种方法在大多数数据集上占主导地位。
TabPFN表现突出
在表1中,作者发现TabPFN的表现几乎与CatBoost相当。这尤其令人惊讶,原因有二:
训练时间短:TabPFN每1000个实例的平均训练时间为0.25秒,是所有非基线算法中最快的,比CatBoost快两个数量级。
随机采样:为了在大型数据集上运行TabPFN,作者仅从完整训练数据集中随机抽取3000个样本进行训练。尽管TabPFN只看到了部分训练数据,但其表现仍然接近顶级。
在表2中,作者对57个最小数据集(大小≤1250)进行了同样的分析,发现TabPFN在所有算法中表现最佳,同时训练时间也最短。然而,TabPFN的推理时间较高,为每1000个实例2.36秒。
性能与运行时间的关系
在图2中,作者绘制了所有算法在所有数据集上的准确率与运行时间的关系图。总体而言,神经网络需要最长的运行时间,并且通常优于基线方法。另一方面,GBDTs在运行时间较短的同时也表现出色:它们始终优于基线方法,并且运行时间比NNs少。TabPFN再次表现出色,其在训练时间少于任何GBDT或NN的情况下达到了顶级准确率。
GBDTs vs. NNs
令人惊讶的是,GBDTs、NNs和基线方法的三向维恩图相对平衡,尽管GBDTs总体上略占优势。
实验发现GBDTs在大多数数据集上是唯一的高性能算法家族。然而,这些胜利的差距小于0.01%,对从业者来说可能并不显著。
算法选择 vs. 调优
在实验中对比了默认超参数的最佳GBDT和NN之间的性能差异,以及使用默认超参数的CatBoost与通过30次随机搜索在验证集上调优的CatBoost之间的性能差异(见图4右)。
令人惊讶的是,对于大约三分之一的数据集,轻量级超参数调优比GBDT与NN选择带来了更大的性能提升。这表明,对于大量数据集,确定GBDTs或NNs哪个更好并不必要:对CatBoost或ResNet等算法进行轻量级调优可以获得同样的性能提升。