☰
H2O-3 核心术语全解:从数据存储到机器学习建模的官方词汇表
2026/10/15 3:39:34 网站建设 项目流程
  • 机器学习
  • 深度学习
  • AutoML
  • 大数据
  • 后端

【免费下载链接】h2o-3

H2O is an Open Source, Distributed, Fast & Scalable Machine Learning Platform: Deep Learning, Gradient Boosting (GBM) & XGBoost, Random Forest, Generalized Linear Modeling (GLM with Elastic Net), K-Means, PCA, Generalized Additive Models (GAM), RuleFit, Support Vector Machine (SVM), Stacked Ensembles, Automatic Machine Learning (AutoML), etc.

项目地址:https://gitcode.com/gh_mirrors/h2/h2o-3
点击查看免费下载

本文是一份面向 H2O 平台使用者的系统性术语指南,完整梳理 h2o-3 官方文档《Glossary》(见 h2o-docs/src/product/tutorials/glossary.md)中的全部核心概念,并对照 h2o-core、h2o-algos 等模块的源码实现进行印证与深化。读者阅读本文后,将能够准确理解 H2O 的分布式存储模型(Cloud、DKV、Key)、数据类型体系(Categorical、Time、UUID 等)、机器学习建模流程(训练帧、验证帧、Epoch、N-folds)以及模型评估与部署(混淆矩阵、ROC、POJO)等术语在真实代码中的落地方式,从而更顺畅地阅读官方文档、使用 H2O 的 REST API 与 Python/R 客户端,并排查配置与建模过程中的常见疑问。

一、H2O 平台与分布式架构术语

H2O.ai 与 JVM

H2O.ai是 H2O 平台的开发者。JVM(Java Virtual Machine)是运行 H2O 的基础环境——H2O 是一个运行在 JVM 之上的分布式内存计算平台,因此启动 H2O 节点的常见方式就是使用java命令并配合堆内存参数,例如:

java -Xmx4g -jar h2o.jar

-Xmx指定 JVM 堆大小,直接决定该节点可用于驻留数据与训练的内存上限。

Cloud、Cluster 与 Node

Cloud是cluster(集群)的同义词,指一组协同工作的 H2O 节点:当任务被提交给集群时,集群中的每个节点都会承担任务的一部分。Node(节点)在分布式计算语境下指客户端、服务器或对等节点;在统计学语境下则指分类树中的决策点或终结点。

从源码看,H2O 用-name参数指定cloud name用于节点相互发现:water/H2O.java 中的帮助文本明确指出"Nodes with the same cloud name will form an H2O cloud (also known as an H2O cluster)"(具有相同 cloud name 的节点会组成 H2O 云,即 H2O 集群)。启动命令示例如下:

# 启动一个 4GB 内存、使用默认 cloud name 的节点 java -Xmx4g -jar h2o.jar # 启动一个 6GB 内存并显式指定 cloud name 的节点 java -Xmx6g -jar h2o.jar -name MyCloud # 启动一个由三个 2GB 节点组成的 H2O cloud java -Xmx2g -jar h2o.jar & java -Xmx2g -jar h2o.jar & java -Xmx2g -jar h2o.jar &

Instance(实例)指 H2O 每次启动的过程:该过程会构建一个节点集群(即使只是本地机器上的单节点集群也算),实例从集群形成时开始,到程序关闭时结束。

Flatfile

Flatfile是 H2O 用来配置集群的基本文本文件,每一行包含一个 IP 地址。H2O 源码 water/H2O.java 将其描述为"Configuration file explicitly listing H2O cloud node members"(显式列出 H2O 云节点成员的配置文件),适用于节点之间无法通过 UDP 广播自动发现的环境(例如跨网段或云环境)。命令行启动参数为-flatfile <filename>。

Job 与 YARN

Job是 H2O 执行的一项任务,例如读取数据文件、解析数据文件或构建模型;在基于浏览器的 H2O Flow GUI 中,每个 job 都列在Admin菜单的Jobs项下。YARN(Yet Another Resource Manager)用于在 Hadoop 集群上管理 H2O——即通过 YARN 分配容器资源来启动 H2O 集群(对应 h2o-hadoop-2 / h2o-hadoop-3 中的各发行版 assembly 构建)。

二、分布式存储与键(Key)体系

Key 与 Destination key

Key是数据被解析进 H2O 后生成的.hex键。在基于 Web 的 GUI 中,key是每个定义模型的页面以及每个在新型数据集上验证模型或使用模型生成预测的页面上的输入项。Destination key是模型自动生成的键,允许后续分析中召回特定模型;用户可以指定一个不同于 H2O 自动生成键的 destination key。

源码层面,water/Key.java 给出了更精确的定义:H2O 支持带精确 Java 内存模型一致性的分布式 Key/Value 存储,Key 是查找 Cloud 中某个Value的手段,用于缓存数据并允许对Value做全局一致的更新。Key 被定义为一个简单的字节数组加 hashCode;字节数组的第一个字节决定这是用户可见的 Key 还是内部系统 Key——首字节小于 32 的是系统 Key。系统 Key 为Job、Vec、Chunk和Vec.VectorGroup保留了特殊初始字节(源码中可见JOB = 3、VEC = 4、CHK = 5、GRP = 6),使得这些对象可以在不加载底层 Value 的情况下被识别。

Key/value pair、Key/value store 与 DKV

Key/value pair(键值对)是一种将特定键索引关联到特定数据的数据类型。Key/value store(键值存储)是一种允许存储无模式(schema-less)数据的工具,数据通常由一个代表键的字符串和该数据本身(作为值)组成。

Distributed key/value (DKV)即分布式键值存储,是 H2O 内存数据层的核心:所有 Vec、Frame、模型等对象都以键值形式分布在集群各节点的内存中,任何节点都可以通过 Key 定位并读取对象。从 water/Key.java 的注释可以看出,Key 拥有一个"home"节点,该节点由 Key 本身可计算得出,用于在并发更新时打破竞争,并跟踪缓存副本;而所有对 DKV 的 Get 与 Put 操作都集中在DKV类中。

Data frame

Data frame是大数据集的分布式表示。在 H2O 中,解析完成后的数据以 Frame 形式分布式驻留在集群内存中(内部由多个 Vec 组成,每个 Vec 又划分为 Chunk 分布在多节点上),后续建模、评分操作都直接在这些分布式帧上进行。

三、数据与文件格式术语

CSV、Gzipped (gz)、XLS 文件

CSV file是逗号分隔值(comma-separated value)文件的缩写,以纯文本格式存储数据,是 H2O 最常用的导入格式。Gzipped (gz) file是 gzip 类型压缩文件,常用于 H2O 的依赖文件分发。XLS file指 Microsoft Excel 2003-2007 的电子表格文件格式。Separator(分隔符)指数据集中分隔条目(entry)的字符,通常是逗号、分号等;解析时 H2O 会自动检测分隔符(见 water/parser/CsvParser.java 的解析器实现)。

HEX format 与 Parse

HEX format指由十六进制数字组成的记录,代表机器语言代码或常量数据。在 H2O 中,数据必须先被解析为.hex格式才能对其执行操作——这是 H2O 内部的二进制内存表示,与用户原始文件格式无关。

Parse(解析)是对一串符号或数据进行的分析,将一组信息从人可读格式转换为机器可读格式。在 H2O 中,解析流程由 water/parser/ParseDataset.java 驱动:先用ParseSetup.guessSetup从首个数据键猜测表头、分隔符、列类型等设置,然后启动分布式解析任务,最终生成一个以用户指定 key(okey)存储的 Frame。解析过程中还会检测列类型(数值、枚举、字符串、时间等),为后续建模做好准备。

四、数据类型体系

H2O 支持丰富的列类型,理解它们对正确建模至关重要。以下是官方词汇表中的核心类型:

术语含义
Binary / Binomial只有两个可能取值的变量。Binomial 变量的取值为 0 或 1:0 表示事件未发生或观测缺少某个特征,1 表示事件发生或具有某个属性。
Categorical定性、无序变量(例如血型A、B、AB、O);是 enum 或 factor 的同义词。在 H2O 中以带String映射的int列存储,限制为最多 1000 万个唯一字符串。
Continuous可以取实数轴上某个区间内全部或几乎所有值的变量(例如身高、体重);与只能取某些特定数值的discrete(离散)值相对。
Discrete只能取某些特定数值的变量(例如接受治疗的患者数);与 continuous 相对。
Integer整数(可以为负但不能是分数)。在 H2O 中可表示为int——这并非一种类型,而是数据的一种属性。
Numeric包含实数、小整数或布尔值的列类型。
Real小数(分数)。
String每个条目通常唯一的数据(例如包含人名和地址的数据集)。
BAD只包含缺失值的列类型。
Sparse很多行包含空值或 "NA" 而非数据的数据集。
TimeH2O 支持的数据类型,表示为"自 Unix Epoch 起的毫秒数",在标准int列中以 64 位整数存储;可直接用于 Cox Proportional Hazards 模型,也可用于构建其他特征。
UUID用于标记和分组事件的通用唯一标识符的密集表示,存储为 128 位数值。

枚举类型(Enum、Factor、Categorical)

Enumerator/enum(枚举)是一种数据类型,其值取自一组已定义的命名值集合中的某一个,这些命名值被称为"元素"、"成员"或"枚举器"——例如cat、dog、mouse是枚举类型animal的枚举器。Factor的值是某组已定义类别中的一个。Categorical是其同义词。

底层存储实现(源码印证)

上述类型在底层由 water/fvec/Chunk.java 实现并注释得非常清晰:

  • Time 数据以 Unix Epoch 以来的毫秒数保存(Time data is held as milliseconds since the Unix Epoch);
  • UUID保存为 128 位整数(UUIDs are held as 128-bit integers (a pair of Java longs));
  • 分类/因子保存为小的整数,并附带一个共享的 String 查找表(Categoricals/factors are held as small integers, with a shared String lookup table on the side)——这正是"Categorical 存储为带 String 映射的int列"的底层实现;
  • 稀疏数据以稀疏方式保存(Sparse data is held... sparsely),例如以 SVMLight 格式加载的数据不会撑爆内存表示;
  • 整数类类型(boolean、byte、short、int、long)总是无损压缩,浮点类型可能在压缩中损失 1 到 2 个 ulp。

五、数据角色与建模字段术语

Feature、Dependent / Independent variable、Y

Feature是属性(attribute)、预测变量(predictor)或自变量(independent variable)的同义词,通常指数据集中各列所观察到的特征。Independent variable(自变量)指可以被操纵或控制的因子(即预测变量),与 dependent variable 相对。Dependent variable(因变量)就是 H2O 中的response(响应)列,是你要测量、观察或预测的对象。

Y是 GLM 中使用的因变量,是从用户数据中现存变量集合里选出的用户自定义输入。

Response column、Training frame、Validation frame

Response column是在 H2O 中选择 dependent variable 的方法。Training frame是用于构建模型的数据集;Validation frame是用于评估模型准确度的数据集。这两者在建模时通过参数显式指定:H2O 的模型参数基类 hex/Model.java 中即有_response_column(响应列名)字段,训练与验证帧则由算法各自的参数对象持有。

Validation

Validation是对模型拟合效果的分析——用验证帧(或交叉验证)评估模型在新数据上的表现,是判断过拟合、选择超参数的关键步骤。

六、机器学习算法与学习范式术语

Deep Learning 与 Autoencoder

Deep Learning使用多个非线性变换的组合来建模数据中的高层抽象。Autoencoder(自编码器)是深度学习框架的扩展,可用于压缩输入特征(类似于 PCA);稀疏自编码器是简单的扩展,可以提高精度。官方文档建议使用自编码器实现以下用途:

  • 通用降维(作为任何算法的预处理步骤);
  • 异常检测(将重建信号与原始信号比较,找出可能是异常的差异);
  • 逐层预训练(使用堆叠自编码器)。

Backpropogation 与 Feed-forward

Backpropogation(反向传播)利用每个输入值已知的期望输出来计算用于训练的损失函数梯度;如果启用,则在Deep Learning的每个训练样本之后执行。Feed-forward(前馈)将输入与输出关联起来,用于模式识别——前馈网络是深度学习中信息从输入层单向流向输出层的基础结构。

Supervised learning 与 Unsupervised learning

Supervised learning(监督学习)的输入是有标签的,算法可以识别输入并从中学习(例如分类与回归任务)。Unsupervised learning(无监督学习)的输入没有标签(例如聚类、PCA、自编码器降维)。

Classification 与 Regression

Classification(分类)是目标为预测response输入的类别的模型。Regression(回归)的输入是数值、输出是对数值的预测,也称为"定量"(quantitative),与分类模型相对。

Multinomial

Multinomial(多项)变量的取值可以是两个以上可能结果之一(例如血型)。Hit ratio(命中率)仅适用于多分类:预测正确的次数占预测总次数的比例。

七、模型训练、验证与数据平衡术语

Epoch 与 Iteration

Epoch是一轮或一次模型训练/测试的迭代,也称为iteration。二者是同义词:iteration 指模型测试或训练的一轮。

N-folds 与交叉验证

N-folds是用户定义的、由 H2O 生成的交叉验证模型数量。例如设置nfolds=5会将训练数据随机分为 5 折,依次用其中 4 折训练、1 折验证,最终汇总出交叉验证指标。在 hex/Model.java 中,基类参数_nfolds = 0为默认值(0 表示不启用交叉验证),同时_fold_column允许用户指定列来定义折的划分;当_nfolds > 1或_fold_column != null时,H2O 会生成一组交叉验证模型(其 Key 列表保存在模型对象中)。

Balance classes

Balance classes是一个对少数类进行过采样以平衡分布的参数。源码印证见 hex/Model.java:

  • _balance_classes默认值为false;
  • 启用后可通过_max_after_balance_size(默认5.0f)限制平衡后的数据集大小不超过原始数据集的指定倍数;
  • _class_sampling_factors允许按类别(字典序)指定期望的过采样/欠采样比率;若未指定,H2O 会在训练期间自动计算以实现类别平衡。

Offset 与 Weights

Offset是补偿观测单位差异(例如不同人口或地理规模)的参数,以确保结果成比例。Weights指定某些结果更显著——例如在识别疾病发病率时,一个"阳性"结果可能比 50 个"阴性"响应更有意义;权重值越高表示越重要。

Seed

Seed是随机化的起点。当机器学习模型包含随机成分时,指定 seed 可以让用户在未来重新创建模型中使用的精确"随机"条件,从而实现可复现实验。

Scoring history

Scoring history表示模型构建过程中的误差率变化——它是随训练迭代记录的评分历史,用于观察模型是否收敛。

Standardization 与 Standard deviation

Standardization(标准化)将变量变换为以 0 为中心(均值居中)并按标准差缩放,有助于防止精度问题——这是 GLM、PCA 等算法对特征做预处理时的常见做法。

Standard deviation(标准差)是列中数据的标准差,定义为观测值与均值之差的平方和除以列中元素数减一后的平方根,缩写为sd。

八、模型评估指标术语

Confusion matrix

Confusion matrix(混淆矩阵)是以表格形式展示算法性能的矩阵,使用假阳性率、假阴性率、真阳性率和真阴性率。其源码实现在 hex/ConfusionMatrix.java:底层是一个二维方阵_cm,保存实际类别 vs 预测类别的共现计数,以double类型存储(因为观察权重可以是 double),并伴随一个统一的类别标签域_domain。该实现还支持通过H2O.OptArgs.SYSTEM_PROP_PREFIX + "cm.maxClasses"系统属性调整混淆矩阵的最大类别数(默认上限 1000),避免打印超大的混淆矩阵。

MSE

MSE(Mean squared error,均方误差)衡量误差率(预测值与观测值之差)平方的平均值,是最常用的回归损失/评估指标之一。

ROC Curve

ROC Curve(ROC 曲线)是表示真阳性与假阳性比率的图形,用于二分类模型阈值的可视化评估。其相关实现在 hex/AUC2.java,该文件计算 AUC 值并服务于 ROC 曲线的绘制。

Variable importance

Variable importance(变量重要性)表示数据中每个变量对模型的统计显著性影响。H2O 在训练结束后会为树模型、线性模型等输出各变量的重要性排序,用于特征选择与可解释性分析。

九、GLM 与正则化术语

Family 与 Link function

Family是 GLM 中可用于预测建模的分布选项(如gaussian、binomial、poisson、gamma、tweedie、negativebinomial等)。Link function(链接函数)是 GLM 中用户可定义的选项,它将线性预测器与响应变量的期望值联系起来(如 identity、logit、log 等)。

Loss function

Loss function(损失函数)是为获得期望估计量而最小化的函数,与目标函数、准则函数同义。例如,线性回归将最佳参数估计集定义为使误差平方和最小的估计集;误差是预测值与观测值之差。损失函数的选择直接决定模型优化的方向。

L1 与 L2 正则化

L1 regularization约束权重的绝对值,净效果是使部分值归零(设置为 0)以降低模型复杂度、避免过拟合——这相当于 LASSO 的稀疏化效果。L2 regularization约束权重平方和,会向参数估计中引入偏差,但由于估计方差减小,通常会在建模中带来实质收益——这相当于 Ridge 的效果。在 H2O 的 GLM 中,两者通过alpha(L1/L2 惩罚的混合比例,源码校验要求alpha必须在 0 到 1 之间)与lambda(正则化强度,要求>= 0)参数组合使用,即 Elastic Net。

Deviance

Deviance(偏差)是期望值与观测值之间的差异,在定义 GLM 模型中起关键作用。H2O 在模型输出中以偏差(及对应的偏差比)作为拟合优度的重要参考指标。

Beta constraints

Beta constraints是 GLM 中的一个重要参数,指定为 data.frame 或 H2OParsedData 对象,包含列["names", "lower_bounds", "upper_bounds", "beta_given"],其中每行对应 GLM 中的一个预测变量:names是预测变量名,lower_bounds和upper_bounds是 beta 的下界与上界,beta_given是提供的 beta 起始值。

源码印证见 h2o-algos/src/main/java/hex/glm/GLMModel.java,H2O 在构建 GLM 模型时会对该参数做严格校验:

  • beta_constraints参数本身是一个 Frame 的 Key(_beta_constraints);
  • 帧中必须包含names列(含有效的系数名),否则报错;
  • upper_bounds、lower_bounds、beta_given列如果存在则必须是数值类型;
  • 此外还支持beta_start列(必须是数值);
  • 约束仅支持gaussian、binomial、poisson、gamma、tweedie等家族,不适用于 multinomial 或 ordinal 家族(源码中会直接报错)。

在求解层面,hex/glm/GLM.java 使用BetaConstraint类封装约束,并通过ConstrainedGLMUtils将等式约束、大于等于约束、小于等于约束转换为线性约束参与求解,从而实现带上下界和起始值的有约束 GLM 拟合。

十、模型部署与用户界面术语

POJO

POJO(Plain Old Java Object)是将 H2O 中构建的模型导出并在 Java 应用程序中实现的一种方式。H2O 可以导出模型的 POJO(一个独立、无依赖的 Java 类),在本地 Java 应用中直接加载原始模型对象(通过EasyPredictModelWrapper等工具)进行低延迟评分,无需运行 H2O 集群;对应的 runtime 工具位于 h2o-genmodel 模块中。

Flow、Clip 与 Outline

Flow指在 H2O 的 Web UI 中创建的一系列基于单元格(cell)的动作,也指该 Web UI 本身。Clip是 H2O Web UI Flow 中一个保存供后续复用的单元格(包含某个动作)。Outline是 H2O Web UI Flow 中对单元格所含动作的简要摘要,用于快速浏览 Flow 的整体结构。

结语

本文完整继承了官方 Glossary 的全部词条,并从源码层面印证了若干关键术语:从 water/Key.java 的分布式键值存储设计,到 water/fvec/Chunk.java 的数据类型底层表示,再到 hex/ConfusionMatrix.java、hex/Model.java 与 h2o-algos/src/main/java/hex/glm/GLMModel.java 中的参数校验逻辑。无论是初学 H2O、阅读 API 文档,还是在建模与调参过程中遇到陌生概念,本文都可以作为一份可随时查阅的术语参考手册。需要深入某方面时,建议对照 h2o-docs/src/product 下的各算法文档与上述源码文件继续阅读。

  • 机器学习
  • 深度学习
  • AutoML
  • 大数据
  • 后端

【免费下载链接】h2o-3

H2O is an Open Source, Distributed, Fast & Scalable Machine Learning Platform: Deep Learning, Gradient Boosting (GBM) & XGBoost, Random Forest, Generalized Linear Modeling (GLM with Elastic Net), K-Means, PCA, Generalized Additive Models (GAM), RuleFit, Support Vector Machine (SVM), Stacked Ensembles, Automatic Machine Learning (AutoML), etc.

项目地址:https://gitcode.com/gh_mirrors/h2/h2o-3
点击查看免费下载
上一篇:OmX 0.14.0 交互编排重构指南:omx question 统一提问面、Deep-Interview 问题义务与 Autoresearch 校验门控
下一篇:Diffusers 快速上手指南:用 DiffusionPipeline 与「模型 + 调度器」组合生成图像

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询