ML_TRAIN
在标记的训练数据集上
运行
例程会生成经过训练的机器学习模型。
CALL sys.ML_TRAIN ('table_name', 'target_column_name', [options], model_handle);
options: {
JSON_OBJECT('key','value'[,'key','value'] ...)
'key','value':
|'task', {'classification'|'regression'|'forecasting'}|NULL
|'datetime_index', 'column'
|'endogenous_variables', JSON_ARRAY('column')
|'model_list', JSON_ARRAY('model'[,'model'] ...)
|'exclude_model_list', JSON_ARRAY('model'[,'model'] ...)
|'optimization_metric', 'metric'
|'exclude_column_list', JSON_ARRAY('column'[,'column'] ...)
}
运行的MySQL账号名称中
ML_TRAIN
不能有句号(“.”);例如,
允许名为 name 的用户训练模型,但不允许名为 name 的用户
。有关此限制的更多信息,请参阅
第 3.13 节“限制”。
'joesmith'@'%''joe.smith'@'%'
从 MySQL HeatWave 8.0.31 开始,在使用
ML_TRAIN
例程后,使用
ML_EXPLAIN
例程为 HeatWave ML 训练预测解释器和模型解释器。您必须训练预测解释器才能使用
ML_EXPLAIN_ROW
和
ML_EXPLAIN_TABLE。在早期版本中,
ML_TRAIN
例程训练默认的排列重要性模型和预测解释器。请参阅
第 3.5 节,“培训解释器”。
ML_TRAIN
参数:
table_name:包含标记训练数据集的表的名称。表名必须有效且完全合格;也就是说,它必须包含架构名称 (schema_name.table_name)。该表不能超过 10 GB、1 亿行或 900 列。target_column_name:包含参考标准值的目标列的名称。-
model_handle:用户定义的会话变量的名称,用于在连接期间存储机器学习模型句柄。用户变量写为 . 本指南中的一些示例 用作变量名称。允许用户定义变量的任何有效名称(例如,)。@var_name@census_model@my_model从 MySQL 8.0.31 开始,如果您
model_handle在调用之前将变量设置为一个值ML_TRAIN,则该模型句柄将用于该模型。您设置的模型句柄在模型目录中必须是唯一的。否则,HeatWave ML 会生成一个模型句柄。执行完成
ML_TRAIN后,您可以通过查询会话变量来检索生成的模型句柄。请参阅 第 3.9.8 节,“模型句柄”。 -
optionsJSON_OBJECT(): 可选参数,格式为键值对 。如果未指定选项,则使用默认设置。如果没有指定选项,您可以指定NULL代替JSON_OBJECT()参数。-
task:指定机器学习任务。允许的值为:classification:默认。如果目标是离散值,则使用此任务类型。regression:如果目标列是连续数值,则使用此任务类型。forecasting:如果目标列是需要时间序列预测的日期时间列,请使用此任务类型。datetime_index指定此任务类型时需要 和 参数endogenous_variables。
datetime_index:对于预测任务,用作预测变量索引的日期时间列的列名。该列可以是受支持的日期时间列类型之一(DATETIME、TIMESTAMP、DATE、TIME和YEAR),也可以是自动递增索引。endogenous_variables:对于预测任务,需要预测的列。预测函数支持单个数字列,指定为 JSON 数组。该列也必须在例程的target_column_name选项中 指定ML_TRAIN,因为该字段是必需的,但在该位置未使用。-
model_list:要训练的模型类型。如果指定了多个模型,则从列表中选择最佳模型类型。有关受支持模型类型的列表,请参阅 模型类型。该选项不能与
exclude_model_list选项一起使用。 -
exclude_model_list:不应训练的模型类型。在模型选择过程中,指定的模型类型被排除在外。有关您可以指定的模型类型的列表,请参阅 模型类型。此选项不能与
model_list选项一起指定。 optimization_metric:训练机器学习模型时要优化的评分指标。指标必须与task类型(classification、regression或forecasting)和目标数据兼容。有关受支持指标的列表,请参阅 评分指标。exclude_column_list:在训练模型时要排除的训练数据集的特征列。使用排除的列exclude_column_list不需要从用于预测的数据集中排除。
-
下面列出了 HeatWave 机器学习支持的分类、回归和预测训练模型。训练模型时,您可以使用
和
选项指定应考虑或排除的训练模型。
ML_TRAIN
model_listexclude_model_list
下面列出了支持的评分指标。optimization_metric训练模型时,您可以使用该选项
针对特定评分指标进行优化。
评分指标必须与
task类型(classification、
regression或
forecasting)和目标数据兼容。例如,如果您正在使用具有二元目标的分类数据集,则只能为二元目标指定分类评分指标,例如
f1.
-
分类指标
-
回归指标
-
预测指标
-
ML_TRAIN隐式使用classification任务选项 的 示例(classification如果未明确指定,则为默认选项):CALL sys.ML_TRAIN('ml_data.iris_train', 'class', NULL, @iris_model); -
An
ML_TRAINexample that specifies theclassificationtask type explicitly, and sets a model handle instead of letting HeatWave ML generate one:SET @iris_model = 'iris_manual'; CALL sys.ML_TRAIN('ml_data.iris_train', 'class', JSON_OBJECT('task', 'classification'), @iris_model); -
An
ML_TRAINexample that specifies theregressiontask type:CALL sys.ML_TRAIN('employee.salary_train', 'salary', JSON_OBJECT('task', 'regression'), @salary_model); -
An
ML_TRAINexample that specifies theforecastingtask type and the additional required parametersdatetime_indexandendogenous_variables:CALL sys.ML_TRAIN('ml_data.opsd_germany_daily_train', 'consumption', JSON_OBJECT('task', 'forecasting', 'datetime_index', 'ddate', 'endogenous_variables', JSON_ARRAY('consumption')), @forecast_model); -
ML_TRAIN指定model_list选项 的 示例。此示例训练XGBClassifierorLGBMClassifier模型。CALL sys.ml_train('ml_data.iris_train', 'class', JSON_OBJECT('task','classification', 'model_list', JSON_ARRAY('XGBClassifier', 'LGBMClassifier')) , @iris_model); -
ML_TRAIN指定exclude_model_list选项 的 示例。在此示例中,LogisticRegression模型GaussianNB被排除在模型选择之外。CALL sys.ml_train('ml_data.iris_train', 'class', JSON_OBJECT('task','classification', 'exclude_model_list', JSON_ARRAY('LogisticRegression', 'GaussianNB')) , @iris_model); -
ML_TRAIN指定optimization_metric选项 的 示例。CALL sys.ml_train('ml_data.iris_train', 'class', JSON_OBJECT('task','classification', 'optimization_metric', 'neg_log_loss') , @iris_model); -
ML_TRAIN指定exclude_column_list选项 的 示例。CALL sys.ml_train('ml_data.iris_train', 'class', JSON_OBJECT('task','classification', 'exclude_column_list', JSON_ARRAY('sepal length', 'petal length')) , @iris_model);