ML:训练模型
ML:训练模型步骤在源表上拟合 scikit-learn 模型,并将结果写入模型表。模型表与其他表一样在工作流中流转:可将其传递给 ML:评分步骤,为数据表追加预测结果;也可直接查询它来查看训练指标。该步骤作为受管的 PlaidCloud 作业运行(与 LLM 步骤相同),因此训练不会与工作流中的其他部分争用资源。
- 训练表:用于训练的表。目标值为空的行不参与训练。
- 模型表:接收模型记录的输出表。
-
算法:要拟合的模型:
算法 值 类别 逻辑回归 logistic_regression分类 决策树分类器 decision_tree分类 随机森林分类器 random_forest分类 梯度提升分类器(XGBoost 风格) xgb_classifier分类 线性回归 linear_regression回归 决策树回归器 decision_tree_regressor回归 随机森林回归器 random_forest_regressor回归 XGBoost 风格算法是 scikit-learn 的
HistGradientBoostingClassifier:它在统计上等效于 XGBoost,可作为替代,但并不是对 XGBoost 的封装。参见限制与注意事项。 -
目标列:要预测的列。除无监督算法和
sota外必须指定,后两者的类别列为可选。分类目标被视为文本标签;回归目标会被强制转换为数字,目标无法解析为数字的行将被排除。
算法列表还提供以下算法。转换后的 KNIME 工作流也会使用它们。
| 算法 | 说明 |
|---|---|
xgboost_classifier, xgboost_regressor, xgboost_linear_classifier, xgboost_linear_regressor |
XGBoost 本身,使用树或线性增强器 |
gradient_boosting_classifier, gradient_boosting_regressor |
scikit-learn 梯度提升 |
svm, svm_regressor, mlp, mlp_regressor, dummy, dummy_regressor |
scikit-learn 支持向量机、多层感知器和基线模型 |
knime_decision_tree, knime_tree_ensemble, naive_bayes, knn, lda, pnn_dda, fuzzy_rules, sota |
KNIME 自有的学习器,结果与 KNIME 一致;其超参数即 KNIME 的设置 |
kmeans, dbscan, optics, pca, mds, tsne, isolation_forest, apriori, fp_growth |
KNIME 的无监督算法:没有目标列,特征列为数值列(apriori 和 fp_growth 则为唯一的项目列表列) |
kmedoids, fuzzy_cmeans, hierarchical, hierarchical_tree, silhouette, h2o_pca, mds_projection, smote, target_shuffling, knn_distance, prediction_fusion, al_uncertainty, al_combiner, al_selector, al_density, al_density_table, distribution_creator, distribution_splitter, weak_label, als, rule_table, optics_table, dose_response |
KNIME 的聚类、采样、主动学习、推荐(als:特征列为用户和产品,目标为评分)、关联规则和剂量反应节点 |
dbscan、mds、tsne 以及其他除数据本身外没有模型的算法,会将其设置保存在模型表中,而 ML:评分会按给定的表原样输出。
所选算法的 scikit-learn 超参数,为可选的 JSON 对象,例如 {"max_depth": 5, "n_estimators": 200}。保存步骤时会拒绝未知的键,因此拼写错误的参数会立即失败,而不会被悄悄忽略。从 Alteryx 转换而来的工作流还可能带有 Alteryx 风格的哨兵键,如 max_depth_none,这些键会自动转换。
scikit-learn 已移除的一些旧版参数(例如 presort,或限制与注意事项中列出的 XGBoost 树参数)会被接受但不会应用;以这种方式丢弃的参数都会记录在模型表 params_json 的 dropped_params 下,因此不会有任何内容悄然消失。
“特征”选项卡为源表的每一列显示一行:
- 特征:勾选要用于训练的列。所有复选框都不勾选时,将使用除目标列以外的所有列训练。所有复选框都不勾选时,步骤会使用运行时表中的列进行训练;若要排除其中某些列,请在排除列(
exclude_columns)中列出。 - 类型覆盖:强制将列按数值或分类方式处理,或保留为 (推断),由表列类型推导。
特征准备与 Alteryx 辅助建模一致:数值特征被强制转换为数字(无法解析的值变为缺失值),缺失值用中位数填补;分类特征被视为文本,用出现频率最高的值填补,并进行独热编码。分类特征在训练期间从未见过的值,在评分时会被忽略。
模型表包含以下列:
| 列 | 内容 |
|---|---|
model_pickle_b64 |
已拟合的 scikit-learn 管道(经 pickle 序列化、压缩并以 base64 编码)。大型模型会拆分到多行,参见模型的存储方式。 |
chunk_index |
此行所含模型片段的位置,从 0 开始计数。 |
algorithm |
算法值,例如 logistic_regression。 |
params_json |
JSON:已应用的 scikit-learn 参数、所用的特征类型以及 dropped_params(如有)。 |
feature_names_json |
JSON 数组:模型在评分时需要的有序特征列。 |
class_labels_json |
类别标签的 JSON 数组(分类器),或 null(回归器)。 |
metrics_json |
JSON 训练指标,见下文。 |
trained_at |
训练运行的 UTC 时间戳。 |
由于模型是普通的表,因此可以像查询其他表一样查询它,例如在下游步骤中提取 metrics_json,以模型质量作为工作流的控制条件。
metrics_json 包含 kind 键(classification 或 regression)、分类器的 train_accuracy 或回归器的 train_r2 和 train_rmse,以及 n_training_rows。
模型的存储方式
Section titled “模型的存储方式”已拟合的模型可能很大:保持默认一百棵树的随机森林可达数百兆字节,超过了数据仓库对单个值的接受范围。因此模型会先被压缩,若仍然过大,则按需拆分到多行。每行都会重复上述各列,因此任何一行都能告诉您算法、参数、特征和指标;各行之间只有 model_pickle_b64 和 chunk_index 不同。
这在两个方面很重要:
- 读取指标。 模型表可能包含多行,因此应从单独一行读取指标,而不要假定只有一行,例如使用
WHERE chunk_index = 0。 - 自行重新组装模型。 如果在 PlaidCloud 之外读取
model_pickle_b64,请按chunk_index顺序拼接各片段,进行 base64 解码,然后解压缩,再进行反序列化。
ML:评分步骤会为您完成上述全部工作。它还会检查每个片段是否齐全,如有缺失则报错停止,而不会使用不完整的模型评分。
限制与注意事项
Section titled “限制与注意事项”- 训练指标基于训练集计算:此版本没有留出集拆分或交叉验证。请将其视为拟合情况检查,而不是样本外性能的估计。
- 内存中的工作集:训练表会读入内存,因此该步骤的目标规模约为一百万行。更大的表请先抽样或聚合。
- 模型大小上限:已拟合的模型压缩后超过 128 MB 时会被拒绝,训练一结束步骤就会停止,并给出指明大小和限制的消息。作为参考:一百棵树、17,000 行、17 个特征的随机森林约为 56 MB,因此上限约为该值的两倍。如果达到上限,请减少树的数量(
n_estimators)或限制max_depth。 - XGBoost 近似:
xgb_classifier训练的是 scikit-learn 的HistGradientBoostingClassifier;xgboost_*算法运行的是 XGBoost 本身。XGBoost 特有的树参数gamma、min_child_weight、subsample以及colsample_*系列没有对应项,会被丢弃(记录在dropped_params中;如果步骤是从 Alteryx 转换而来,也会记录在步骤的映射说明中)。在依赖一致性之前,请对照参考运行结果验证模型指标。 - AutoML 转换只选择一种算法,而不是搜索:Alteryx AutoML 工具与分类和回归一样会融合为此步骤,但 AutoML 不会记录其候选算法中哪一个在 Alteryx 运行时胜出。转换会选取此步骤支持的第一个已勾选算法并注明所做选择,而不会重现自动搜索,这里不会运行任何模型选择循环。请将转换后的 AutoML 步骤与您自己的 Alteryx 结果进行对比。
- ML:评分:使用训练好的模型为数据表评分。
- 迁移 Alteryx 工作流:Alteryx 辅助建模管道(包括 AutoML)如何转换为此步骤。