当前位置: 首页 > news >正文

用于表格数据的神经网络分类器_TabPFN

1 简介

TabPFN(Tabular Prior-Data Fitted Network)是由 Meta AI 团队开发的针对表格数据的神经网络分类器。

1.1 主要特点是

  • 无需超参数调优:TabPFN 与 XGBoost、LightGBM 等传统树模型不同,它即插即用,不需调整超参数。
  • 极快的推理速度:TabPFN 训练和预测时间不到一秒,远超深度学习模型。
  • 基于 Transformer:尽管规模小,它在预训练时利用大量合成数据,实现对新数据集的良好泛化能力。
  • 适合小型数据集(<10K 样本):TabPFN 在小数据集上表现出色,但对大规模数据暂不是最佳。

1.2 适用场景

  • 对于小型表格数据集,希望能够快速获得高质量的分类结果。
  • 不希望投入太多时间在参数调优上,需要一个即插即用的分类器。

2 原理

TabPFN 通过元学习(Meta-Learning)预训练一个 Transformer,让其学习各种合成数据的模式,从而可以在新数据集上实现零训练和极速推理。对于小型表格数据分类任务,它是一个开箱即用且无需调参的强力工具。

3 阶段

  • 预训练阶段(Offline Learning):
  • 数据生成:在预训练时,TabPFN 没有使用真实的表格数据,而是通过神经过程(Neural Processes)和其他生成方法,创造了几百万个合成的小型分类任务(不同的特征、分布、噪声等)。
  • 学习任务分布:模型通过学习这些任务的共同模式,相当于“见过”各种可能的数据集,从而掌握预测不同类型数据的能力。
  • Transformer 作为先验模型(Transformer as Prior):
  • 在训练过程中,使用小型 Transformer(大约 10M 参数)对这些合成数据的分类方式进行建模。
  • 这个 Transformer 不是在单个数据集上训练,而是基于“数据集的分布”进行训练,类似于学习了各种数据分布,能够泛化到新任务。
  • 推理阶段(Inference):
  • 无需再训练:当拿到一个新的表格数据集时,TabPFN 不需要再经过训练,而是直接将数据输入到 Transformer,使其进行预测。
  • 基于任务先验(Prior Knowledge):TabPFN 不是在新数据上优化参数,而是基于它在预训练阶段学到的先验信息进行直接分类。
  • 极快的推理速度:由于 Transformer 的推理过程是一次性前向计算(forward pass),整个分类过程可以在毫秒级别完成。

4 用法

pip install tabpfn

python程序

from tabpfn import TabPFNClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_digitsX, y = load_digits(return_X_y=True)  # 载入数据
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)model = TabPFNClassifier(device='cpu')  # 也可以使用 'cuda'
model.fit(X_train, y_train)  # 训练
preds = model.predict(X_test) # 预测

5 思考

这个模型拥有深刻的数据理解能力,能够根据具体数据找到最佳解决方案。在某些情况下,其表现可与 XGBoost 类模型相当甚至更好。有空尝试一下在金融领域的数据中应用。

http://www.xdnf.cn/news/196831.html

相关文章:

  • Vuex持续保存数据 页面刷新不丢失 vuex-persistedstate
  • WPF 程序监控硬件设备状态变化的实现方案
  • vscode源代码管理Tab-文件右侧标志(M、A 等)的含义
  • await和async
  • (28)VTK C++开发示例 ---添加坐标轴
  • std::print 和 std::println
  • echarts自定义图表--仪表盘
  • 【机器学习】人工智能在电力电子领域的应用
  • 反射与注解实现动态功能扩展案例-插件系统
  • 模型上下文协议(MCP)深度解析:大模型从“思考者“进化为“行动者“
  • 总账主数据——Part 2 科目-4
  • 优先队列和单调队列(双端队列实现的)
  • stm32wb55rg (1) 基于IAR 创建stm32 工程模板
  • 序列密码算法ShanLooog512设计原理详解
  • DeepSearch复现篇:QwQ-32B ToolCall功能初探,以Agentic RAG为例
  • React速通笔记
  • 初识Python
  • 【Keil5-开发指南】
  • Java实现基数排序算法
  • 机器学习day2
  • 深入理解链表:从基础操作到高频面试题解析
  • 省哲学社科基金项目申请书(论证活页)模版框架参考
  • 013几何数学——算法备赛
  • web技术与Nginx网站服务
  • word2Vec与GloVe的区别
  • LeetCode 1482. 制作 m 束花所需的最少天数
  • 【SpringMVC】详解参数传递与实战指南
  • MANIPTRANS:通过残差学习实现高效的灵巧双手操作迁移
  • 策略模式:灵活的算法封装与切换
  • 实验研究 | 千眼狼高速摄像机驱动精密制造创新