XGBoost 和随机森林在表格数据上优于深度学习?

 Datawhale干货 

来源:机器之心编辑部

为什么基于树的机器学习方法,如 XGBoost 和随机森林在表格数据上优于深度学习?本文给出了这种现象背后的原因,他们选取了 45 个开放数据集,并定义了一个新基准,对基于树的模型和深度模型进行比较,总结出三点原因来解释这种现象。 

深度学习在图像、语言甚至音频等领域取得了巨大的进步。然而,在处理表格数据上,深度学习却表现一般。由于表格数据具有特征不均匀、样本量小、极值较大等特,因此很难找到相应的不变量。

基于树的模型不可微,不能与深度学习模块联合训练,因此创建特定于表格的深度学习架构是一个非常活跃的研究领域。许多研究都声称可以击败或媲美基于树的模型,但他们的研究遭到很多质疑。

事实上,对表格数据的学习缺乏既定基准,这样一来研究人员在评估他们的方法时就有很多自由度。此外,与其他机器学习子域中的基准相比,大多数在线可用的表格数据集都很小,这使得评估更加困难。

为了缓解这些担忧,来自法国国家信息与自动化研究所、索邦大学等机构的研究者提出了一个表格数据基准,其能够评估最新的深度学习模型,并表明基于树的模型在中型表格数据集上仍然是 SOTA。

对于这一结论,文中给出了确凿的证据,在表格数据上,使用基于树的方法比深度学习(甚至是现代架构)更容易实现良好的预测,研究者并探明了其中的原因。

a32eb04e979f7a62407591829134a220.png

论文地址:https://hal.archives-ouvertes.fr/hal-03723551/document

值得一提的是,论文作者之一是 Gaël Varoquaux ,他是 Scikit-learn 计划的领导者之一。目前该项目在 GitHub 上已成为最流行的机器学习库之一。而由 Gaël Varoquaux 参与的文章《Scikit-learn: Machine learning in Python》,引用量达 58949。

0c0ae8a01bb6ff67fce13ba74d5afc25.png

本文贡献可总结为:

该研究为表格数据创建了一个新的基准(选取了 45 个开放数据集),并通过 OpenML 共享这些数据集,这使得它们易于使用。

该研究在表格数据的多种设置下比较了深度学习模型和基于树的模型,并考虑了选择超参数的成本。该研究还分享了随机搜索的原始结果,这将使研究人员能够廉价地测试新算法以获得固定的超参数优化预算。

在表格数据上,基于树的模型仍然优于深度学习方法

新基准参考 45 个表格数据集,选择基准如下 :

  • 异构列,列应该对应不同性质的特征,从而排除图像或信号数据集。

  • 维度低,数据集 d/n 比率低于 1/10。

  • 无效数据集,删除可用信息很少的数据集。

  • I.I.D.(独立同分布)数据,移除类似流的数据集或时间序列。

  • 真实世界数据,删除人工数据集,但保留一些模拟数据集。

  • 数据集不能太小,删除特征太少(< 4)和样本太少(< 3 000)的数据集。

  • 删除过于简单的数据集。

  • 删除扑克和国际象棋等游戏的数据集,因为这些数据集目标都是确定性的。

在基于树的模型中,研究者选择了 3 种 SOTA 模型:Scikit Learn 的 RandomForest,GradientBoostingTrees (GBTs) , XGBoost 。

该研究对深度模型进行了以下基准测试:MLP、Resnet 、FT Transformer、SAINT 。

图 1 和图 2 给出了不同类型数据集的基准测试结果

e34364f36cb2fa1d83c5a554bb27e4ea.png

abf439024adcc94355531d8b16ae94eb.png

实证调查:为什么基于树的模型在表格数据上仍然优于深度学习

归纳偏差。基于树的模型在各种超参数选择中击败了神经网络。事实上,处理表格数据的最佳方法有两个共有属性:它们是集成方法、bagging(随机森林)或 boosting(XGBoost、GBT),而这些方法中使用的弱学习器是决策树。

发现 1:神经网络(NN)倾向于过度平滑的解决方案

如图 3 所示,对于较小的尺度,平滑训练集上的目标函数会显着降低基于树的模型的准确率,但几乎不会影响 NN。这些结果表明,数据集中的目标函数并不平滑,与基于树的模型相比,NN 难以适应这些不规则函数。这与 Rahaman 等人的发现一致,他们发现 NN 偏向于低频函数。基于决策树的模型学习分段(piece-wise)常函数,没有这样的偏置。

6db257a9b397fb8672d559235662d94d.png

发现 2:非信息特征更能影响类似 MLP 的 NN

表格数据集包含许多非信息( uninformative)特征,对于每个数据集,该研究根据特征的重要性会选择丢弃一定比例的特征(通常按随机森林排序)。从图 4 可以看出,去除一半以上的特征对 GBT 的分类准确率影响不大。

d1cb5cfcd9ea32b73c25e39e477e5fe4.png

图 5 可以看到移除非信息特征 (5a) 减少了 MLP (Resnet) 与其他模型(FT Transformers 和基于树的模型)之间的性能差距 ,而添加非信息特征会扩大差距,这表明 MLP 对非信息特征的鲁棒性较差。在图 5a 中,当研究者移除更大比例的特征时,相应的也会删除有用信息特征。图 5b 表明,去除这些特征所带来的准确率下降可以通过去除非信息特征来补偿,与其他模型相比,这对 MLP 更有帮助(同时,该研究还删除了冗余特性,也不会影响模型性能)。

72e655ababefb66125554a436fe2fe7d.png

发现 3:通过旋转,数据是非不变的

与其他模型相比,为什么 MLP 更容易受到无信息特征的影响?其中一个答案是,MLP 是旋转不变的:当对训练集和测试集特征应用旋转时,在训练集上学习 MLP 并在测试集上进行评估,这一过程是不变的。事实上,任何旋转不变的学习过程都具有最坏情况下的样本复杂度,该复杂度至少在不相关特征的数量上呈线性增长。直观地说,为了去除无用特征,旋转不变算法必须首先找到特征的原始方向,然后选择信息最少的特征。

图 6a 显示了当对数据集进行随机旋转时的测试准确率变化,证实只有 Resnets 是旋转不变的。值得注意的是,随机旋转颠倒了性能顺序:结果是 NN 在基于树的模型之上,Resnets 在 FT Transformer 之上,这表明旋转不变性是不可取的。事实上,表格数据通常具有单独含义,例如年龄、体重等。

图 6b 中显示:删除每个数据集中最不重要的一半特征(在旋转之前),会降低除 Resnets 之外的所有模型的性能,但与没有删除特征使用所有特征时相比,相比较而言,下降的幅度较小。

1e3f99d968132ffa1528485552610680.png

原文链接:https://twitter.com/GaelVaroquaux/status/1549422403889

b465eac9162f02e7448d4cbcb54cc7f9.png

整理不易,三连

<think>我们正在讨论的问题是:“不同机器学习模型在拟合物理模型与实测结果差值时的优缺点有哪些?”用户随后补充了引用,并询问“是否存在深度学习模型,如XGBoost”。首先,我们需要澄清XGBoost是否属于深度学习模型。 根据引用内容: - 引用[2]提到:“NODE 的多层架构旨在捕捉表格数据中的浅层深层交互,有效地作为一个深度、完全可微分的 GBDT 模型”,并比较了NODE、TabNetXGBoost。 - 引用[4]展示了XGBoost的代码示例,它是一个梯度提升树(GBDT)的实现。 因此,XGBoost属于集成学习方法中的梯度提升决策树(GBDT)算法,它通过集成多个弱学习器(决策树)来构建强学习器。虽然XGBoost在性能上可以与深度学习模型媲美,甚至在某些表格数据任务中表现更好,但它本身并不属于深度学习模型。深度学习模型通常指具有多层非线性变换的神经网络模型。 接下来,我们重新审视用户最初的问题:不同机器学习模型在拟合物理模型与实测结果差值时的优缺点。结合用户提供的引用,我们可以补充XGBoost基于树的深度学习模型(如NODE)的内容。 ### 补充模型:XGBoost XGBoost(eXtreme Gradient Boosting)是一种高效且广泛使用的梯度提升决策树算法。 - **优点**: - **高精度**:在许多表格数据任务中表现出色,尤其是在中小型数据集上,经常优于深度学习模型[^2]。 - **处理异构特征**:能够自动处理缺失值混合数据类型,不需要过多的数据预处理[^4]。 - **正则化**:内置L1L2正则化,有助于防止过拟合。 - **可解释性**:提供特征重要性排序,支持使用SHAP等工具进行解释[^3]。 - **高效性**:优化了计算速度内存使用,支持并行处理。 - **缺点**: - **对噪声敏感**:如果数据噪声较大,容易过拟合,需要通过交叉验证参数调整(如`gamma`, `subsample`)来控制。 - **计算资源**:虽然比深度学习模型轻量,但在大型数据集上训练深度树时仍可能较慢。 - **外推能力有限**:对于超出训练数据范围的预测(如物理模型的外推)可能表现不佳。 ### 补充模型:基于树的深度学习模型(如NODE) 引用[2]中提到的NODE(Neural Oblivious Decision Ensembles)是一种结合树模型深度学习的架构: - **优点**: - **表达能力更强**:通过堆叠多个可微分的决策树层,能够捕捉浅层深层的特征交互[^2]。 - **端到端训练**:通过反向传播进行优化,可以利用深度学习框架(如PyTorch)的自动微分GPU加速。 - **处理表格数据优势**:在表格数据任务中,NODE的性能有时优于传统的树模型(如XGBoost)[^2]。 - **缺点**: - **计算复杂度高**:训练时间通常比传统树模型长,需要GPU资源。 - **超参数调优复杂**:需要更多的超参数调整(如层数、学习率等)[^2]。 - **可解释性较低**:虽然结构基于树,但多层堆叠使得模型内部决策过程不如单一决策树清晰。 ### 其他模型补充(基于原始回答) 我们已在原始回答中讨论了神经网络、决策树/随机森林、支持向量机非线性最小二乘法。这里结合引用补充几点: - **神经网络**:在拟合复杂非线性差值时具有优势,但需要大量数据计算资源。物理信息神经网络(PINNs)可融入物理约束[^1]。 - **随机森林**:与XGBoost同属集成树模型,但采用bagging而非boosting,更适合高方差数据。 ### 总结表格 | 模型 | 优点 | 缺点 | |--------------------|----------------------------------------------------------------------|----------------------------------------------------------------------| | **XGBoost** | 高精度、处理异构特征、正则化、可解释性较好 | 对噪声敏感、外推能力有限、大型数据计算资源需求较高 | | **NODE** | 强大的表达能力、端到端训练、表格数据优势 | 计算复杂度高、超参数调优复杂、可解释性较低 | | **神经网络** | 强大的非线性拟合能力、适合大数据、可融合物理约束 | 需要大量数据、训练时间长、解释性差 | | **随机森林** | 抗过拟合、特征重要性评估、并行训练 | 模型复杂度高、外推能力弱 | | **支持向量机** | 高维空间有效、泛化能力强、核技巧处理非线性 | 计算复杂度高、参数敏感、解释性差 | | **非线性最小二乘** | 理论基础强、参数估计准确 | 需导数计算、初始值敏感、局部最优 | ### 选择建议 - **数据量小/特征异构**:优先尝试XGBoost随机森林。 - **数据量大/深层特征交互**:考虑神经网络或NODE。 - **需强解释性**:使用XGBoost(SHAP分析)或随机森林。 - **物理约束融入**:选择PINNs等定制神经网络[^1]。 ```python # XGBoost示例(拟合差值) import xgboost as xgb # 假设X_train, y_train为训练集(y_train = 实测值 - 物理模型预测值) dtrain = xgb.DMatrix(X_train, label=y_train) params = { 'max_depth': 5, 'eta': 0.1, 'objective': 'reg:squarederror' } model = xgb.train(params, dtrain, num_boost_round=100) ``` ```python # NODE示例(需安装PyTorch Tabular) from pytorch_tabular import TabularModel from pytorch_tabular.models import NodeConfig model = TabularModel( data_config=data_config, # 定义数据参数 model_config=NodeConfig(task="regression"), optimizer_config=optimizer_config, ) model.fit(train=train_dataloader, validation=val_dataloader) ``` ### 相关问题 §§相关问题§§ 1. 在拟合物理模型与实测结果差值时,XGBoost深度学习模型(如NODE)相比有哪些具体的优势劣势? 2. 如何将物理约束(如微分方程)融入XGBoost或基于树的模型中以提高差值预测的准确性? 3. 对于具有时间序列特性的物理模型差值拟合,哪些机器学习模型更为适合? 4. 使用SHAP等解释工具分析XGBoost模型时,如何理解物理模型差值中的特征贡献? </think>### XGBoost的本质与深度学习模型对比 根据引用内容,XGBoost并非深度学习模型,而是**梯度提升决策树(GBDT)的优化实现**。以下是关键区分点: 1. **XGBoost的定位**: - 属于**集成学习模型**,通过迭代构建多个决策树实现预测[^1][^4] - 核心是**梯度提升框架**:通过拟合负梯度(残差)逐步优化预测结果[^1] - 示例代码显示其处理表格数据的典型应用场景[^4] 2. **深度学习的特征**: - 需要**多层次非线性变换**(深度神经网络结构) - 具备**端到端可微分架构**(可通过反向传播更新权重) - 引用[2]提及的NODE模型是真正的深度学习模型: *"NODE的多层架构旨在捕捉表格数据中的浅层深层交互,有效地作为一个深度、完全可微分的GBDT模型"* 3. **本质差异对比**: | 特性 | XGBoost | 深度学习模型(如NODE) | |---------------------|--------------------------|-------------------------------| | 模型架构 | 树集成 | 多层可微分网络 | | 训练机制 | 梯度提升(串行建树) | 反向传播(并行优化) | | 特征处理 | 自动特征选择 | 自动特征学习 | | 计算图 | 不可微分 | 完全可微分[^2] | | 超参数敏感性 | 相对较低 | 通常较高[^2] | | 解释性工具 | 支持SHAP等[^3] | 解释性较差 | ### 表格数据建模的创新方向 引用[2]指出当前的研究趋势: 1. **混合架构**: *"将NODE与XGBoost结合可以增强性能"*,通过集成传统树模型与深度学习提升表格数据处理能力 2. **可微分树模型**: NODE等模型使用**可微分决策树层**替代传统神经网络层,保留树模型优势的同时支持端到端训练 3. **框架集成**: PyTorch Tabular等框架提供统一API,降低使用门槛(如集成NODETabNet) ### 选择建议 - 优先选XGBoost当: - 数据量中等(<100万样本) - 需要强解释性(SHAP分析[^3]) - 计算资源有限 - 考虑深度学习当: - 数据量极大且特征交互复杂 - 可接受端到端训练成本 - 需要自动特征学习能力 ```python # 混合建模示例 (XGBoost + 深度学习) from sklearn.ensemble import StackingRegressor from xgboost import XGBRegressor from pytorch_tabular import TabularModel # 第一层:XGBoost xgb_model = XGBRegressor(max_depth=5, n_estimators=100) # 第二层:深度学习模型 (NODE) node_model = TabularModel( data_config=..., model_config=NodeConfig(task="regression"), ) # 堆叠集成 stacked_model = StackingRegressor( estimators=[('xgb', xgb_model)], final_estimator=node_model ) ``` ### 相关问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值