tribuo
Tribuo 是一款专为 Java 开发者打造的开源机器学习库,由 Oracle 实验室主导研发。它旨在解决 Java 生态中缺乏统一、高效且功能全面的机器学习工具的痛点,让开发者无需切换语言即可在项目中轻松实现多分类、回归、聚类、异常检测及多标签分类等核心任务。
Tribuo 不仅内置了多种主流算法的实现,还巧妙封装了 TensorFlow、XGBoost 等外部库,提供了一致的调用接口。其独特亮点在于强大的可复现性设计:所有模型和评估结果都自带“溯源”信息,详细记录数据变换、超参数及创建时间,确保实验过程透明可控。此外,Tribuo 支持通过 XML 或 JSON 配置文件灵活定义训练流程,并可将模型导出为 ONNX 格式,便于跨平台部署。
这款工具非常适合需要构建高可靠性预测系统的 Java 工程师、企业级应用开发者以及关注模型审计的研究人员。如果你希望在纯 Java 环境中完成从数据加载、特征工程到模型训练与评估的全流程,同时追求生产级的稳定性与可追踪性,Tribuo 将是一个专业且友好的选择。
使用场景
某金融科技公司数据团队需要在纯 Java 后端系统中构建实时的信用卡欺诈检测模型,并满足严格的审计合规要求。
没有 tribuo 时
- 技术栈割裂:算法团队使用 Python 训练模型,工程团队需通过复杂的 RPC 接口调用外部服务,导致系统延迟高且运维成本巨大。
- 审计溯源困难:模型上线后难以追溯具体的训练数据版本、特征变换逻辑及超参数配置,无法满足金融监管对模型“可解释性”和“血缘记录”的硬性指标。
- 部署格式受限:训练好的模型无法直接导出为通用格式,难以在不同语言环境或云端服务中灵活复用,造成资源浪费。
- 配置管理混乱:每次调整算法参数都需要修改代码并重新编译,缺乏统一的配置文件管理机制,实验复现极其耗时。
使用 tribuo 后
- 原生无缝集成:直接在 Java 项目中调用 tribuo 实现异常检测算法,消除了跨语言调用开销,显著降低推理延迟并简化架构。
- 自动合规溯源:利用内置的 Provenance 对象自动记录模型创建时间、数据指纹及完整处理链路,一键生成 JSON 格式的审计报告,轻松应对合规检查。
- 跨平台灵活部署:支持将训练好的模型导出为 ONNX 格式,既可保留在 Java 环境运行,也能无缝迁移至其他云平台或边缘设备。
- 配置驱动开发:基于 OLCUT 系统,仅需修改 XML 或 JSON 配置文件即可调整训练策略,无需重新编译代码,大幅提升了实验迭代效率。
tribuo 通过提供统一的 Java 原生机器学习接口与完整的模型血缘追踪能力,让企业级 AI 应用在保证高性能的同时轻松满足生产环境的合规与运维需求。
运行环境要求
- Windows 10
- macOS
- Linux (RHEL/OL/CentOS 7+)
未说明(纯 Java 库,部分接口如 TensorFlow/XGBoost/ONNX Runtime 依赖原生库,具体 GPU 需求取决于所集成的外部库)
未说明

快速开始

Tribuo - 一个 Java 预测库(v4.3)
Tribuo 是一个基于 Java 的机器学习库,提供了多分类、回归、聚类、异常检测以及多标签分类等功能。Tribuo 不仅实现了多种流行的机器学习算法,还封装了其他库以提供统一的接口。Tribuo 包含加载、特征提取和数据转换所需的所有代码,并且为所有支持的预测类型提供了评估类。该项目由 Oracle Labs 的机器学习研究团队主导开发,我们欢迎社区贡献。
所有训练器都可以通过 OLCUT 配置系统进行配置。这使得用户能够在一个 XML 或 JSON 文件中定义训练器,并可重复地构建模型。每个包的 config 文件夹中都包含所提供训练器的示例配置文件。这些配置文件也可以使用相应的 OLCUT 配置依赖项以 JSON 或 EDN 格式编写。模型和数据集可以通过 Java 序列化进行序列化。
所有模型和评估都包含一个可序列化的溯源对象,该对象记录了模型或评估的创建时间、数据的身份及其所应用的任何转换,以及训练器的超参数。对于评估而言,此溯源信息还包括所使用的具体模型。溯源信息可以提取为 JSON,或者直接使用 Java 序列化进行序列化。在生产部署中,溯源信息可以被删除并替换为哈希值,以便通过外部系统跟踪模型。许多 Tribuo 模型可以导出为 ONNX 格式,以便在其他语言、平台或云服务中部署。
Tribuo 支持 Java 8 及以上版本,并且我们在 Java 的长期支持版本以及最新版本上进行测试。Tribuo 本身是一个纯 Java 库,支持所有 Java 平台;然而,我们的一些接口需要本地代码,因此仅在有本地库支持的情况下才受支持。我们主要在 Windows 10、macOS 和 Linux(RHEL/OL/CentOS 7+)的 x86_64 架构上进行测试,因为这些是与我们交互的本地库所支持的平台。如果您对其他平台感兴趣,并希望使用本地库接口(ONNX Runtime、TensorFlow 和 XGBoost),我们建议您联系这些库的开发者。请注意,模型卡片和可复现性包需要 Java 17,因此它们并不包含在 tribuo-all Maven Central 发布中。
文档
教程
教程笔记本包括分类、聚类、回归、异常检测、TensorFlow、文档分类、列式数据加载、使用外部训练模型以及配置系统的示例,可以在 tutorials 中找到。这些教程使用 IJava Jupyter 笔记本内核,并支持 Java 10 及以上版本,但模型卡片和可复现性教程需要 Java 17。要将教程中的代码转换回 Java 8,在大多数情况下只需将 var 关键字替换为相应类型即可。
算法
通用预测器
Tribuo 包含多个适用于广泛预测任务的算法实现:
| 算法 | 实现 | 备注 |
|---|---|---|
| Bagging | Tribuo | 可使用任何 Tribuo 训练器作为基学习器 |
| 随机森林 | Tribuo | 适用于分类和回归任务 |
| Extra Trees | Tribuo | 适用于分类和回归任务 |
| K-NN | Tribuo | 包含多种并行后端选项,以及单线程后端 |
| 神经网络 | TensorFlow | 通过 Tribuo 封装器在 TensorFlow 中训练神经网络。模型可以使用 ONNX 接口或 TF 接口进行部署 |
集成方法和 K-NN 使用组合函数来生成其输出。这些组合器针对特定的预测任务,但集成方法和 K-NN 的实现则与任务无关。我们为多分类、多标签分类和回归任务提供了投票和平均组合器。
分类
Tribuo 提供以下算法的实现或接口:
| 算法 | 实现 | 备注 |
|---|---|---|
| 线性模型 | Tribuo | 使用 SGD,并允许使用任何梯度优化器 |
| 因子分解机 | Tribuo | 使用 SGD,并允许使用任何梯度优化器 |
| CART | Tribuo | |
| SVM-SGD | Tribuo | Pegasos 算法的实现 |
| Adaboost.SAMME | Tribuo | 可使用任何 Tribuo 分类训练器作为基学习器 |
| 多项式朴素贝叶斯 | Tribuo | |
| 正则化线性模型 | LibLinear | |
| SVM | LibSVM 或 LibLinear | LibLinear 仅支持线性 SVM |
| 梯度提升决策树 | XGBoost |
Tribuo 还提供用于序列分类任务的线性链 CRF。该 CRF 使用 Tribuo 的任意梯度优化器通过 SGD 进行训练。
Tribuo 拥有一组信息论特征选择算法,可用于分类任务。特征输入会自动离散化为等宽区间。目前包括互信息最大化 (MIM)、条件互信息最大化 (CMIM)、最小冗余最大相关性 (mRMR) 和联合互信息 (JMI) 的实现。
为了解释分类器的预测结果,Tribuo 实现了 LIME 算法。该实现允许混合文本和表格数据,并可使用任何稀疏模型作为解释器(例如回归树、Lasso 等),但不支持图像。
回归
Tribuo 的回归算法默认是多维的。一维实现会被封装以产生多维输出。
| 算法 | 实现 | 备注 |
|---|---|---|
| 线性模型 | Tribuo | 使用 SGD,并允许使用任何梯度优化器 |
| 因子分解机 | Tribuo | 使用 SGD,并允许使用任何梯度优化器 |
| CART | Tribuo | |
| Lasso | Tribuo | 使用 LARS 算法 |
| 弹性网 | Tribuo | 使用坐标下降算法 |
| 正则化线性模型 | LibLinear | |
| SVM | LibSVM 或 LibLinear | LibLinear 仅支持线性 SVM |
| 梯度提升决策树 | XGBoost |
聚类
Tribuo 提供了聚类的基础设施,并内置了两种聚类算法实现。我们计划在未来逐步增加更多算法。
| 算法 | 实现 | 备注 |
|---|---|---|
| HDBSCAN* | Tribuo | 一种基于密度的算法,用于发现聚类和异常点 |
| K-Means | Tribuo | 包含顺序和并行后端,以及 K-Means++ 初始化算法 |
异常检测
Tribuo 提供了异常检测任务的基础设施。我们计划在未来添加新的实现。
| 算法 | 实现 | 备注 |
|---|---|---|
| 一类支持向量机 | LibSVM | |
| 一类线性支持向量机 | LibLinear |
多标签分类
Tribuo 提供了多标签分类的基础设施,并附带一个包装器,可以将 Tribuo 的任何多分类算法转换为多标签分类算法。我们预计未来会增加更多专门针对多标签分类的实现。
| 算法 | 实现 | 备注 |
|---|---|---|
| 独立包装器 | Tribuo | 通过为每个标签单独训练一个分类器,将多分类算法转换为多标签分类算法 |
| 分类器链 | Tribuo | 利用 Tribuo 的任意多分类算法构建分类器链及随机化分类器链集成 |
| 线性模型 | Tribuo | 使用随机梯度下降法,并支持任意梯度优化器 |
| 因子分解机 | Tribuo | 使用随机梯度下降法,并支持任意梯度优化器 |
接口
除了我们自己实现的机器学习算法之外,Tribuo 还为 JVM 上流行的机器学习工具提供了通用接口。如果您有兴趣贡献一个新的接口,请在 GitHub 上提交一个问题,我们将讨论它如何融入 Tribuo。
目前,我们已有的接口包括:
- LibLinear - 通过原生 LibLinear(v2.44)的 LibLinear-java 移植版本。
- LibSVM - 使用 C++ 实现的纯 Java 转换版本(v3.25)。
- ONNX Runtime - 通过我们团队贡献的 Java API(v1.12.1)。
- TensorFlow - 使用 TensorFlow Java v0.4.2(基于 TensorFlow v2.7.4)。这使得完全在 Java 中训练和部署 TensorFlow 模型成为可能。
- XGBoost - 通过内置的 XGBoost4J API(v1.6.2)。
二进制文件
Tribuo 的二进制文件已在 Maven Central 发布,其 groupId 为 org.tribuo。要获取所有兼容 Java 8 的 Tribuo 组件,包括 TensorFlow、ONNX Runtime 和 XGBoost 的绑定(这些是本地库),请使用以下依赖:
Maven:
<dependency>
<groupId>org.tribuo</groupId>
<artifactId>tribuo-all</artifactId>
<version>4.3.2</version>
<type>pom</type>
</dependency>
或 Gradle:
implementation ("org.tribuo:tribuo-all:4.3.2@pom") {
transitive = true // 对于 build.gradle(即 Groovy)
// isTransitive = true // 对于 build.gradle.kts(即 Kotlin)
}
tribuo-all 依赖是一个 pom 文件,它依赖于所有的 Tribuo 子项目,但不包括需要 Java 17 的模型卡片和可复现性项目。
Tribuo 的大部分代码是纯 Java,因此具有跨平台特性,然而部分接口会链接到使用本地代码的库。这些接口(TensorFlow、ONNX Runtime 和 XGBoost)仅能在各自发布二进制文件的支持平台上运行,而 Tribuo 并不能控制具体提供哪些二进制文件。如果您需要特定平台的支持,请联系这些项目的维护者。截至 4.1 版本,这些本地包都提供了适用于 Windows、macOS 和 Linux 的 x86_64 二进制文件。此外,也可以为 macOS ARM64(即 Apple Silicon)编译每个包,不过目前 Maven Central 尚未提供适用于该平台的 TensorFlow 或 XGBoost 二进制文件。从 4.3 版本开始,Tribuo 现在依赖于一个支持 macOS ARM64 和 Linux aarch64 平台的 ONNX Runtime 版本。在 ARM 平台上开发时,您可以在 Tribuo 的 pom.xml 中选择 arm 配置文件来禁用本地库测试。
Tribuo 的各个模块也分别发布了单独的 jar 文件。建议仅依赖于项目所需的模块,这样可以避免您的代码不必要地引入像 TensorFlow 这样的大型依赖项。
从源码编译
Tribuo 使用 Apache Maven v3.5 或更高版本进行构建。Tribuo 兼容 Java 8 及以上版本,并且我们在 LTS 版本的 Java 以及最新版本上进行测试。要构建,只需运行 mvn clean package 即可。Tribuo 的所有依赖项应可在 Maven Central 获取。如果您在构建过程中遇到问题,请提交一个问题(但在提交之前,请先检查是否缺少 Maven 的代理设置,因为这通常是构建失败的常见原因,且不在我们的控制范围内)。请注意,如果您使用 Java 16 或更早版本进行构建,模型卡片和可复现性相关的包将会被禁用。
仓库布局
开发工作在 main 分支上进行,该分支的版本号为下一个 Tribuo 发布版本,并附加了 -SNAPSHOT 后缀。Tribuo 的主要和次要版本将在 main 分支上打标签,然后从标记的提交中分支出名为 vA.B.X-release-branch 的分支,用于后续的点版本发布(例如 vA.B.1、vA.B.2 等)。这些点版本会在相应的发布分支上打标签,比如 v4.0.2 就会在 v4.0.X-release-branch 分支上打标签。
贡献
我们欢迎各种贡献!请参阅我们的贡献指南。
我们有一个讨论邮件列表 tribuo-devel@oss.oracle.com,存档在此处:这里。我们正在探索不同的实时聊天方式,敬请期待。对于错误报告、功能请求或其他问题,请在 GitHub 上提交一个问题。
安全
请参阅安全指南,了解我们负责任的安全漏洞披露流程。
许可证
Tribuo 根据 Apache 2.0 许可证授权。
发布说明:
- v4.3.2 - 修复了一些小 bug,特别是在 Protocol Buffers 序列化和树模型方面,并升级了依赖项。
- v4.3.1 - 修复了一些小 bug,特别是在 CART 树和 Example.densify 方法中,并将依赖项升级到更安全的版本。
- v4.3.0 - 增加了模型卡片支持、分类任务中的特征选择功能、Protocol Buffers 序列化格式、用于距离计算的 kd 树,以及稀疏线性模型的速度优化。同时更新了大多数依赖项的版本,并进行了其他多项小修复和改进。
- v4.2.2 - 修复了一些小 bug,将 TF-Java 升级至 0.4.2,Jackson 升级至 2.13.4,protobuf-java 升级至 3.19.6,OpenCSV 升级至 5.7.1。
- v4.2.1 - 修复了 KMeans 的多线程问题、影响 ONNX 导出和 K-Means 初始化的非确定性迭代顺序等问题,并将 TF-Java 升级至 0.4.1。
- v4.2.0 - 新增了因子分解机、分类器链和 HDBSCAN 聚类算法。增加了 ONNX 导出和 OCI 数据科学集成功能,并引入了可复现性框架。此外还进行了多项小修复和改进,包括 v4.1.1 中的回归问题修复。补充了剩余的 Javadoc 文档,新增了 4 个教程(ONNX 导出、多标签分类、可复现性、HDBSCAN),并扩展了现有教程。
- v4.1.1 - 修复了多输出回归、多标签评估、在 SecurityManager 环境下使用 KMeans 和 KNN 时的问题,并将 TF-Java 更新至 0.4.0。
- v4.1.0 - 新增了 TensorFlow 训练支持、BERT 特征提取器、ExtraTrees 随机森林、K-Means++ 算法,以及多项线性模型和 CRF 模型的性能优化。同时新增了关于 TensorFlow 和文档分类的教程,并修复了大量 bug 和文档问题。
- v4.0.2 - 修复了许多 bug(CSVDataSource、JsonDataSource、RowProcessor、LibSVMTrainer、Evaluations、Regressor 序列化等)。改进了 Javadoc 和文档,并新增了两个教程(列式数据和外部模型)。
- v4.0.1 - 修复了 CSVReader 在处理空行时的问题,并新增了 IDXDataSource,以支持加载原生 MNIST 格式的数据。
- v4.0.0 - 初次公开发布。
- v3 - 新增了溯源系统、外部模型支持和 ONNX 集成。
- v2 - 功能从单纯的分类系统扩展到支持回归、聚类和多标签分类。
- v1 - 初始内部版本。该版本仅支持多分类任务。
版本历史
v4.3.22025/04/04v4.3.12022/12/23v4.2.22022/10/25v4.3.02022/10/07v4.2.12022/05/04v4.2.02021/12/20v4.1.12021/12/10v4.1.02021/05/26v4.0.22020/11/05v4.0.12020/09/01v4.0.02020/08/13常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器