3.10.1 ML_TRAIN

ML_TRAIN 在标记的训练数据集上 运行 例程会生成经过训练的机器学习模型。

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_ROWML_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:对于预测任务,用作预测变量索引的日期时间列的列名。该列可以是受支持的日期时间列类型之一(DATETIMETIMESTAMPDATETIMEYEAR),也可以是自动递增索引。

    • endogenous_variables:对于预测任务,需要预测的列。预测函数支持单个数字列,指定为 JSON 数组。该列也必须在例程的 target_column_name选项中 指定ML_TRAIN ,因为该字段是必需的,但在该位置未使用。

    • model_list:要训练的模型类型。如果指定了多个模型,则从列表中选择最佳模型类型。有关受支持模型类型的列表,请参阅 模型类型

      该选项不能与 exclude_model_list选项一起使用。

    • exclude_model_list:不应训练的模型类型。在模型选择过程中,指定的模型类型被排除在外。有关您可以指定的模型类型的列表,请参阅 模型类型

      此选项不能与 model_list选项一起指定。

    • optimization_metric:训练机器学习模型时要优化的评分指标。指标必须与task类型(classificationregressionforecasting)和目标数据兼容。有关受支持指标的列表,请参阅 评分指标

    • exclude_column_list:在训练模型时要排除的训练数据集的特征列。使用排除的列 exclude_column_list不需要从用于预测的数据集中排除。

模型类型

下面列出了 HeatWave 机器学习支持的分类、回归和预测训练模型。训练模型时,您可以使用 和 选项指定应考虑或排除的训练模型。 ML_TRAIN model_listexclude_model_list

评分指标

下面列出了支持的评分指标。optimization_metric训练模型时,您可以使用该选项 针对特定评分指标进行优化。

评分指标必须与 task类型(classificationregressionforecasting)和目标数据兼容。例如,如果您正在使用具有二元目标的分类数据集,则只能为二元目标指定分类评分指标,例如 f1.

语法示例

  • ML_TRAIN 隐式使用classification 任务选项 的 示例(classification如果未明确指定,则为默认选项):

    CALL sys.ML_TRAIN('ml_data.iris_train', 'class', NULL, @iris_model);
  • An ML_TRAIN example that specifies the classification task 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_TRAIN example that specifies the regression task type:

    CALL sys.ML_TRAIN('employee.salary_train', 'salary', JSON_OBJECT('task', 'regression'), 
    @salary_model);
  • An ML_TRAIN example that specifies the forecasting task type and the additional required parameters datetime_index and endogenous_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 选项 的 示例。此示例训练 XGBClassifieror LGBMClassifier模型。

    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);