PyTabKit:新一代表格数据机器学习框架,性能超越Scikit-Learn

PyTabKit:新一代表格数据机器学习框架,集成深度学习与梯度提升,性能优于Scikit-Learn,简化开发流程,节约计算资源。

原文标题:PyTabKit:比sklearn更强大的表格数据机器学习框架

原文作者:数据派THU

冷月清谈:

本文介绍了新兴的表格数据机器学习框架PyTabKit,它通过集成优化的深度学习和梯度提升技术,为表格数据处理提供了一套全新的解决方案。相较于Scikit-Learn,PyTabKit在深度学习方法的优化和超参数自动调整方面更具优势。通过引入RealMLP等技术,以及对XGBoost、LightGBM和CatBoost等主流算法进行元级调优,PyTabKit能够在无需手动进行超参数优化的情况下超越Scikit-Learn的基准实现。此外,PyTabKit还提供了简化的API设计,并减少了计算资源消耗,特别适合资源受限的环境。实验结果表明,PyTabKit在性能、开发效率和资源节约方面均有显著优势,是连接传统机器学习和现代深度学习技术的重要桥梁。

怜星夜思:

1、PyTabKit集成的RealMLP在哪些场景下会比传统的GBDT树模型更有优势?或者说,在选择模型时,除了数据集大小,还需要考虑哪些因素?
2、文章中提到PyTabKit通过优化的默认配置减少了超参数调优的需求,这对AutoML系统来说非常重要。那么,你认为在AutoML的未来发展中,这种“预配置”的思路会成为主流吗?它可能会带来哪些潜在的问题?
3、PyTabKit保持了与Sklearn相似的API设计,这降低了用户的学习成本。你认为在机器学习框架的设计中,兼容性是更重要的考量,还是应该优先考虑性能和创新?

原文内容

源:DeepHub  IMBA

本文共2500字,建议阅读9分钟

PyTabKit框架通过集成优化的深度学习和梯度提升技术,为表格数据处理提供了一套全新的解决方案。


长期以来Scikit-Learn 一直作为表格数据机器学习的主流框架,它提供了丰富的算法、预处理工具和模型评估功能。尽管 Scikit-Learn 功能完备,但随着技术的发展,新兴框架 PyTabKit 正逐渐崭露头角。该框架专为表格数据的分类和回归任务设计,集成了 RealMLP 等先进技术以及优化的梯度提升决策树(GBDT)超参数配置,为表格数据处理提供了新的技术选择。

Scikit-Learn 的局限与突破

Scikit-Learn 为机器学习模型开发奠定了坚实基础,但在深度学习方法的优化和超参数自动调整方面存在不足。
传统上应用于表格数据的深度学习模型往往需要繁复的超参数调整过程,限制了其实用性和效率。RealMLP 作为一种经过优化的多层感知器,通过在118个数据集上的基准测试和精细调优,已在中等至大型数据集(1,000-500,000样本)上展现出与GBDT相当的性能表现。RealMLP引入的诸多技术改进,包括鲁棒缩放机制、数值特征嵌入以及优化的权重初始化策略,使其成为传统模型的有效替代方案。
实践表明,相较于经过精细调整的模型,Scikit-Learn的默认超参数配置在性能上通常存在差距。PyTabKit针对XGBoost、LightGBM和CatBoost等主流算法提供了经过元级调优(meta-tuned)的默认参数设置,无需手动进行超参数优化(HPO)即可超越Scikit-Learn的基准实现。这些默认配置通过元训练基准进行了系统性优化,并在90个独立数据集上验证了其有效性和泛化能力。
超参数调优,尤其是针对深度学习模型的调优,往往耗费大量计算资源。PyTabKit通过优化的默认配置使得用户能在多数应用场景下无需进行超参数优化,即可获得优异性能。这一特性使PyTabKit尤其适用于AutoML系统,在这类系统中计算效率与预测精度的平衡至关重要。

RealMLP: 表格数据深度学习的技术突破

虽然梯度提升方法长期在结构化数据处理领域占据主导地位,但经过精心设计的深度学习架构正在逐渐缩小这一差距。RealMLP架构引入了多项关键技术创新:
预处理技术优化
RealMLP对数值特征实施鲁棒缩放和平滑裁剪处理,有效减轻异常值影响。同时,对基数有限的分类特征采用独热编码,提高特征表达能力。
架构创新
RealMLP引入对角权重层以增强表示学习能力,设计了优于传统特征转换的数值嵌入方法,并采用更为高效的初始化策略加速模型收敛过程。
性能提升
基准测试结果显示,RealMLP在多种应用场景中不仅能够匹敌GBDT的性能,有时甚至能够超越。将RealMLP与优化配置的GBDT结合使用,可以在不进行昂贵的超参数优化的情况下,获得最先进的预测性能
大规模数据优化
对于需要处理中等到大规模数据集的用户,PyTabKit提供了显著的优势:训练速度更快、预测精度具有竞争力、调优工作量大幅降低,这使其成为现代机器学习工作流程的理想技术选择。

代码实践:PyTabKit中的RealMLP与树模型应用

PyTabKit保持了与Sklearn相似的API设计,确保了使用的便捷性。
使用以下命令安装pytabkit和openml库:
 !pip install pytabkit
 !pip install openml


本文使用OpenML提供的Covertype数据集,并将其限制为15,000个样本:
importopenml
fromsklearn.model_selectionimporttrain_test_split
importnumpyasnp

从OpenML加载Covertype数据集

task=openml.tasks.get_task(361113)  # Covertype任务ID
dataset=openml.datasets.get_dataset(task.dataset_id, download_data=False)
X, y, categorical_indicator, attribute_names=dataset.get_data(
    dataset_format=‘dataframe’,
    target=task.target_name
)

限制为15,000个样本

index=np.random.choice(range(len(X)), 15_000, replace=False)
X=X.iloc[index]
y=y.iloc[index]

划分训练集和测试集

 X_train, X_test, y_train, y_test=train_test_split(X, y, random_state=0)


基础RealMLP模型训练
 %%time
frompytabkitimportRealMLP_TD_Classifier
fromsklearn.metricsimportaccuracy_score

训练RealMLP模型

model=RealMLP_TD_Classifier()
model.fit(X_train, y_train)

进行预测并评估准确率

y_pred=model.predict(X_test)
acc=accuracy_score(y_test, y_pred)
 print(f"Accuracy of RealMLP: {acc}")


预期输出:
  Accuracy of RealMLP: 0.8770666666666667

RealMLP通过n_cv=5参数支持基于5折交叉验证的集成学习。得益于向量化计算,该方法仍保持高效的训练速度:

%%time
# 使用bagging训练RealMLP
model=RealMLP_TD_Classifier(n_cv=5)
model.fit(X_train, y_train)

进行预测并评估准确率

y_pred=model.predict(X_test)
acc=accuracy_score(y_test, y_pred)
 print(f"Accuracy of RealMLP with bagging: {acc}")


预期输出:
  Accuracy of RealMLP with bagging: 0.8930666666666667

通过RealMLP_HPO_Classifier可实现自动超参数优化。优化步骤数量可根据需要进行调整:

 %%time
frompytabkitimportRealMLP_HPO_Classifier

n_hyperopt_steps=3  # 用于演示的步骤数
model=RealMLP_HPO_Classifier(n_hyperopt_steps=n_hyperopt_steps)
model.fit(X_train, y_train)

进行预测并评估准确率

y_pred=model.predict(X_test)
acc=accuracy_score(y_test, y_pred)
 print(f"Accuracy of RealMLP with {n_hyperopt_steps} steps HPO: {acc}")


预期输出:
  Accuracy of RealMLP with 3 steps HPO: 0.8605333333333334


比较调优后默认参数(TD)与原始默认参数(D)的性能差异:
 %%time
frompytabkitimport (
    CatBoost_TD_Classifier, CatBoost_D_Classifier,
    LGBM_TD_Classifier, LGBM_D_Classifier,
    XGB_TD_Classifier, XGB_D_Classifier
)

评估多种树模型

formodelin [CatBoost_TD_Classifier(), CatBoost_D_Classifier(),
             LGBM_TD_Classifier(), LGBM_D_Classifier(),
             XGB_TD_Classifier(), XGB_D_Classifier()]:
    model.fit(X_train, y_train)
    y_pred=model.predict(X_test)
    acc=accuracy_score(y_test, y_pred)
     print(f"Accuracy of {model.class.name}: {acc}")


预期输出:
 Accuracy of CatBoost_TD_Classifier: 0.8685333333333334
 Accuracy of CatBoost_D_Classifier: 0.8464
 Accuracy of LGBM_TD_Classifier: 0.8602666666666666
 Accuracy of LGBM_D_Classifier: 0.8344
 Accuracy of XGB_TD_Classifier: 0.8544
 Accuracy of XGB_D_Classifier: 0.8472


通过集成多种优化模型可构建高性能预测基线:
 %%time
frompytabkitimportEnsemble_TD_Classifier

训练集成模型

model=Ensemble_TD_Classifier()
model.fit(X_train, y_train)

进行预测并评估准确率

y_pred=model.predict(X_test)
acc=accuracy_score(y_test, y_pred)
 print(f"Accuracy of Ensemble_TD_Classifier: {acc}")


预期输出:
  Accuracy of Ensemble_TD_Classifier: 0.8962666666666667

总结

PyTabKit框架通过集成优化的深度学习和梯度提升技术,为表格数据处理提供了一套全新的解决方案。实验结果表明,该框架的主要优势包括:
性能提升:经过元级调优的模型默认配置在无需额外调优的情况下,显著优于传统实现,特别是在中等到大型数据集上。
开发效率:简化的API设计和优化的默认参数大幅减少了开发周期,使数据科学家能够将更多精力集中在业务理解与模型解释上。
资源节约:通过减少或消除繁重的超参数优化需求,PyTabKit有效降低了计算资源消耗,特别适合资源受限的环境。
多模型集成:如实验所示,集成多种优化模型能够进一步提升预测性能,为实际应用提供更可靠的结果。
随着表格数据在企业决策、风险管理和资源优化等领域的持续重要性,PyTabKit这类专为表格数据设计的现代框架将扮演越来越重要的角色。其简化的工作流程和卓越的性能使其成为连接传统机器学习和现代深度学习技术的重要桥梁。
对于数据科学从业者而言,掌握PyTabKit等新兴工具将是应对日益复杂的数据分析挑战的重要技能。无论是在高度竞争的预测建模比赛中,还是在要求快速部署的企业环境中,这些工具都能提供显著的竞争优势。
在未来的发展中,期待PyTabKit能够进一步整合自动化特征工程、可解释AI等新兴技术,为表格数据分析提供更全面的支持。
PyTabKit项目地址:
https://github.com/dholzmueller/pytabkit
编辑:黄继彦



关于我们

数据派THU作为数据科学类公众号,背靠清华大学大数据研究中心,分享前沿数据科学与大数据技术创新研究动态、持续传播数据科学知识,努力建设数据人才聚集平台、打造中国大数据最强集团军。




新浪微博:@数据派THU

微信视频号:数据派THU

今日头条:数据派THU

从软件工程的角度来看,兼容性是可持续发展的关键。一个不兼容的框架,即使性能再好,也难以长期生存。因为用户需要花费大量时间和精力来迁移代码,这会大大降低用户的积极性。所以,我认为在机器学习框架的设计中,应该在保持一定兼容性的前提下,追求性能和创新。

谢邀,利益相关,炼丹师一枚。我觉得这个问题可以这么看:如果你的数据集维度很高,特征工程又比较困难,那么RealMLP可能更适合,因为它能自动学习特征。但是,如果你的数据集特征比较明确,而且对模型的可解释性要求很高,那么GBDT可能更优。总之,没有哪个模型是万能的,需要根据具体情况选择。

从学术角度来看,这种“预配置”思路实际上是一种迁移学习的体现,将从大量数据集上学习到的知识迁移到新的数据集上。这种方法在数据量较小的情况下尤其有效。但是,如果新数据集与原始数据集分布差异很大,那么“预配置”的参数可能会导致负迁移。因此,需要对预配置的参数进行自适应调整,才能更好地适应新的数据集。

我觉得这个问题没有标准答案,需要根据框架的定位来决定。如果目标是吸引更广泛的用户,降低学习成本,那么兼容性肯定更重要。但如果目标是追求极致性能,引领技术创新,那么就可以牺牲一定的兼容性。PyTabKit选择兼容Sklearn,说明它更希望被更多人使用,快速普及。

预配置这种东西,就像开盲盒,有时候能给你惊喜,有时候会让你失望。对于追求极致性能的玩家来说,肯定还是会手动调参。但对于只想快速上手,或者对性能要求不高的用户来说,预配置就非常友好了。所以我觉得,预配置会成为AutoML的一个重要组成部分,但不会是唯一选择。

我个人更倾向于性能和创新。现在的机器学习框架太多了,如果只是在Sklearn的基础上做一些简单的改进,很难吸引用户的注意力。只有真正解决了现有框架的痛点,才能赢得市场。当然,如果能在保证性能和创新的同时,兼顾一定的兼容性,那就更好了。

我认为“预配置”思路在AutoML中肯定会越来越流行。毕竟,减少人工干预,提高效率是AutoML的目标。但是,潜在问题也很明显:预配置的参数可能并不适用于所有数据集,可能会牺牲模型在特定数据集上的最佳性能。如何平衡通用性和特殊性,是未来需要解决的问题。

这个问题很有意思!从我的经验来看,RealMLP在处理包含大量非线性关系的数据时,可能会更胜一筹。GBDT虽然强大,但在捕捉深层非线性特征方面可能不如神经网络。此外,如果特征之间存在复杂的交互作用,RealMLP可能也能更好地学习。当然,最终还是要看实际数据的表现,多尝试不同的模型才是王道!

我从理论角度补充一下,RealMLP的优势在于其非线性拟合能力,擅长挖掘隐藏在数据中的复杂模式。但是,深度学习模型对数据质量要求更高,需要更多的清洗和预处理。而GBDT通常对缺失值和异常值具有更好的鲁棒性。因此,在选择模型时,除了数据集大小,还需要考虑数据质量、特征工程的难度、以及对模型可解释性的要求。