H2O-3 核心术语全解:从数据存储到机器学习建模的官方词汇表
机器学习深度学习AutoML大数据后端【免费下载链接】h2o-3H2O 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 与 JVMH2O.ai是 H2O 平台的开发者。JVMJava Virtual Machine是运行 H2O 的基础环境——H2O 是一个运行在 JVM 之上的分布式内存计算平台因此启动 H2O 节点的常见方式就是使用java命令并配合堆内存参数例如java -Xmx4g -jar h2o.jar-Xmx指定 JVM 堆大小直接决定该节点可用于驻留数据与训练的内存上限。Cloud、Cluster 与 NodeCloud是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 每次启动的过程该过程会构建一个节点集群即使只是本地机器上的单节点集群也算实例从集群形成时开始到程序关闭时结束。FlatfileFlatfile是 H2O 用来配置集群的基本文本文件每一行包含一个 IP 地址。H2O 源码 water/H2O.java 将其描述为Configuration file explicitly listing H2O cloud node members显式列出 H2O 云节点成员的配置文件适用于节点之间无法通过 UDP 广播自动发现的环境例如跨网段或云环境。命令行启动参数为-flatfile filename。Job 与 YARNJob是 H2O 执行的一项任务例如读取数据文件、解析数据文件或构建模型在基于浏览器的 H2O Flow GUI 中每个 job 都列在Admin菜单的Jobs项下。YARNYet Another Resource Manager用于在 Hadoop 集群上管理 H2O——即通过 YARN 分配容器资源来启动 H2O 集群对应 h2o-hadoop-2 / h2o-hadoop-3 中的各发行版 assembly 构建。二、分布式存储与键Key体系Key 与 Destination keyKey是数据被解析进 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 与 DKVKey/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 frameData 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 与 ParseHEX format指由十六进制数字组成的记录代表机器语言代码或常量数据。在 H2O 中数据必须先被解析为.hex格式才能对其执行操作——这是 H2O 内部的二进制内存表示与用户原始文件格式无关。Parse解析是对一串符号或数据进行的分析将一组信息从人可读格式转换为机器可读格式。在 H2O 中解析流程由 water/parser/ParseDataset.java 驱动先用ParseSetup.guessSetup从首个数据键猜测表头、分隔符、列类型等设置然后启动分布式解析任务最终生成一个以用户指定 keyokey存储的 Frame。解析过程中还会检测列类型数值、枚举、字符串、时间等为后续建模做好准备。四、数据类型体系H2O 支持丰富的列类型理解它们对正确建模至关重要。以下是官方词汇表中的核心类型术语含义Binary / Binomial只有两个可能取值的变量。Binomial 变量的取值为 0 或 10 表示事件未发生或观测缺少某个特征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、CategoricalEnumerator/enum枚举是一种数据类型其值取自一组已定义的命名值集合中的某一个这些命名值被称为元素、成员或枚举器——例如cat、dog、mouse是枚举类型animal的枚举器。Factor的值是某组已定义类别中的一个。Categorical是其同义词。底层存储实现源码印证上述类型在底层由 water/fvec/Chunk.java 实现并注释得非常清晰Time 数据以 Unix Epoch 以来的毫秒数保存Time data is held as milliseconds since the Unix EpochUUID保存为 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、YFeature是属性attribute、预测变量predictor或自变量independent variable的同义词通常指数据集中各列所观察到的特征。Independent variable自变量指可以被操纵或控制的因子即预测变量与 dependent variable 相对。Dependent variable因变量就是 H2O 中的response响应列是你要测量、观察或预测的对象。Y是 GLM 中使用的因变量是从用户数据中现存变量集合里选出的用户自定义输入。Response column、Training frame、Validation frameResponse column是在 H2O 中选择 dependent variable 的方法。Training frame是用于构建模型的数据集Validation frame是用于评估模型准确度的数据集。这两者在建模时通过参数显式指定H2O 的模型参数基类 hex/Model.java 中即有_response_column响应列名字段训练与验证帧则由算法各自的参数对象持有。ValidationValidation是对模型拟合效果的分析——用验证帧或交叉验证评估模型在新数据上的表现是判断过拟合、选择超参数的关键步骤。六、机器学习算法与学习范式术语Deep Learning 与 AutoencoderDeep Learning使用多个非线性变换的组合来建模数据中的高层抽象。Autoencoder自编码器是深度学习框架的扩展可用于压缩输入特征类似于 PCA稀疏自编码器是简单的扩展可以提高精度。官方文档建议使用自编码器实现以下用途通用降维作为任何算法的预处理步骤异常检测将重建信号与原始信号比较找出可能是异常的差异逐层预训练使用堆叠自编码器。Backpropogation 与 Feed-forwardBackpropogation反向传播利用每个输入值已知的期望输出来计算用于训练的损失函数梯度如果启用则在Deep Learning的每个训练样本之后执行。Feed-forward前馈将输入与输出关联起来用于模式识别——前馈网络是深度学习中信息从输入层单向流向输出层的基础结构。Supervised learning 与 Unsupervised learningSupervised learning监督学习的输入是有标签的算法可以识别输入并从中学习例如分类与回归任务。Unsupervised learning无监督学习的输入没有标签例如聚类、PCA、自编码器降维。Classification 与 RegressionClassification分类是目标为预测response输入的类别的模型。Regression回归的输入是数值、输出是对数值的预测也称为定量quantitative与分类模型相对。MultinomialMultinomial多项变量的取值可以是两个以上可能结果之一例如血型。Hit ratio命中率仅适用于多分类预测正确的次数占预测总次数的比例。七、模型训练、验证与数据平衡术语Epoch 与 IterationEpoch是一轮或一次模型训练/测试的迭代也称为iteration。二者是同义词iteration 指模型测试或训练的一轮。N-folds 与交叉验证N-folds是用户定义的、由 H2O 生成的交叉验证模型数量。例如设置nfolds5会将训练数据随机分为 5 折依次用其中 4 折训练、1 折验证最终汇总出交叉验证指标。在 hex/Model.java 中基类参数_nfolds 0为默认值0 表示不启用交叉验证同时_fold_column允许用户指定列来定义折的划分当_nfolds 1或_fold_column ! null时H2O 会生成一组交叉验证模型其 Key 列表保存在模型对象中。Balance classesBalance classes是一个对少数类进行过采样以平衡分布的参数。源码印证见 hex/Model.java_balance_classes默认值为false启用后可通过_max_after_balance_size默认5.0f限制平衡后的数据集大小不超过原始数据集的指定倍数_class_sampling_factors允许按类别字典序指定期望的过采样/欠采样比率若未指定H2O 会在训练期间自动计算以实现类别平衡。Offset 与 WeightsOffset是补偿观测单位差异例如不同人口或地理规模的参数以确保结果成比例。Weights指定某些结果更显著——例如在识别疾病发病率时一个阳性结果可能比 50 个阴性响应更有意义权重值越高表示越重要。SeedSeed是随机化的起点。当机器学习模型包含随机成分时指定 seed 可以让用户在未来重新创建模型中使用的精确随机条件从而实现可复现实验。Scoring historyScoring history表示模型构建过程中的误差率变化——它是随训练迭代记录的评分历史用于观察模型是否收敛。Standardization 与 Standard deviationStandardization标准化将变量变换为以 0 为中心均值居中并按标准差缩放有助于防止精度问题——这是 GLM、PCA 等算法对特征做预处理时的常见做法。Standard deviation标准差是列中数据的标准差定义为观测值与均值之差的平方和除以列中元素数减一后的平方根缩写为sd。八、模型评估指标术语Confusion matrixConfusion matrix混淆矩阵是以表格形式展示算法性能的矩阵使用假阳性率、假阴性率、真阳性率和真阴性率。其源码实现在 hex/ConfusionMatrix.java底层是一个二维方阵_cm保存实际类别 vs 预测类别的共现计数以double类型存储因为观察权重可以是 double并伴随一个统一的类别标签域_domain。该实现还支持通过H2O.OptArgs.SYSTEM_PROP_PREFIX cm.maxClasses系统属性调整混淆矩阵的最大类别数默认上限 1000避免打印超大的混淆矩阵。MSEMSEMean squared error均方误差衡量误差率预测值与观测值之差平方的平均值是最常用的回归损失/评估指标之一。ROC CurveROC CurveROC 曲线是表示真阳性与假阳性比率的图形用于二分类模型阈值的可视化评估。其相关实现在 hex/AUC2.java该文件计算 AUC 值并服务于 ROC 曲线的绘制。Variable importanceVariable importance变量重要性表示数据中每个变量对模型的统计显著性影响。H2O 在训练结束后会为树模型、线性模型等输出各变量的重要性排序用于特征选择与可解释性分析。九、GLM 与正则化术语Family 与 Link functionFamily是 GLM 中可用于预测建模的分布选项如gaussian、binomial、poisson、gamma、tweedie、negativebinomial等。Link function链接函数是 GLM 中用户可定义的选项它将线性预测器与响应变量的期望值联系起来如 identity、logit、log 等。Loss functionLoss function损失函数是为获得期望估计量而最小化的函数与目标函数、准则函数同义。例如线性回归将最佳参数估计集定义为使误差平方和最小的估计集误差是预测值与观测值之差。损失函数的选择直接决定模型优化的方向。L1 与 L2 正则化L1 regularization约束权重的绝对值净效果是使部分值归零设置为 0以降低模型复杂度、避免过拟合——这相当于 LASSO 的稀疏化效果。L2 regularization约束权重平方和会向参数估计中引入偏差但由于估计方差减小通常会在建模中带来实质收益——这相当于 Ridge 的效果。在 H2O 的 GLM 中两者通过alphaL1/L2 惩罚的混合比例源码校验要求alpha必须在 0 到 1 之间与lambda正则化强度要求 0参数组合使用即 Elastic Net。DevianceDeviance偏差是期望值与观测值之间的差异在定义 GLM 模型中起关键作用。H2O 在模型输出中以偏差及对应的偏差比作为拟合优度的重要参考指标。Beta constraintsBeta 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.javaH2O 在构建 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 拟合。十、模型部署与用户界面术语POJOPOJOPlain Old Java Object是将 H2O 中构建的模型导出并在 Java 应用程序中实现的一种方式。H2O 可以导出模型的 POJO一个独立、无依赖的 Java 类在本地 Java 应用中直接加载原始模型对象通过EasyPredictModelWrapper等工具进行低延迟评分无需运行 H2O 集群对应的 runtime 工具位于 h2o-genmodel 模块中。Flow、Clip 与 OutlineFlow指在 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-3H2O 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点击查看免费下载相关推荐Relay 术语全解从 GraphQL 指令、运行时存储到数据驱动依赖的权威词汇表Relay 术语全解从 GraphQL 指令、运行时存储到数据驱动依赖的权威词汇表 导读 本文以 Relay v16 官方词汇表 website/versi前端开发工具Jupyter 官方术语表全解析从 .ipynb 到 Project Jupyter 的完整技术词汇指南Jupyter 官方术语表全解析从 .ipynb 到 Project Jupyter 的完整技术词汇指南 Jupyter 是一个横跨多个独立子项目的庞大伞形组开发工具读懂 Lore 版本控制系统的核心词汇官方术语表Glossary深度解读读懂 Lore 版本控制系统的核心词汇官方术语表Glossary深度解读 导读 docs/glossary.md https://link.gitcode版本控制后端上一篇OmX 0.14.0 交互编排重构指南omx question 统一提问面、Deep-Interview 问题义务与 Autoresearch 校验门控下一篇Diffusers 快速上手指南用 DiffusionPipeline 与「模型 调度器」组合生成图像创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考