MySQL HeatWave 用户指南  / 第 3 章 HeatWave ML  /  3.5 培训讲解员

3.5 培训讲解员

从 MySQL HeatWave 8.0.31 开始,在使用 ML_TRAIN 例程后,使用 ML_EXPLAIN 例程为 HeatWave ML 训练预测解释器和模型解释器。在早期版本中, ML_TRAIN 例程训练默认的排列重要性模型和预测解释器。

解释可帮助您了解哪些特征对预测的影响最大。特征重要性表示为 -1 到 1 之间的值。正值表示特征对预测有贡献。负值表示该特征对不同的预测有贡献;例如,如果具有两种可能预测(“批准”和“拒绝”)的贷款审批模型中的特征对于“批准”预测具有负值,则该特征对于“拒绝”预测具有正值。值为 0 或接近 0 表示特征值对其应用的预测没有影响。

当您运行 ML_EXPLAIN_ROWML_EXPLAIN_TABLE 例程以生成特定预测的解释时,将使用预测解释器。您必须先为模型训练一个预测解释器,然后才能使用这些例程。该 ML_EXPLAIN 例程可以训练这些预测解释器:

  • 排列重要性预测解释器(指定为permutation_importance)是 HeatWave ML 的默认预测解释器,它解释单个行或表的预测。

  • SHAP 预测解释器(指定为 shap)使用特征重要性值来解释单个行或表的预测。

运行 ML_EXPLAIN 例程时会使用模型解释器来解释模型从训练数据集中学到了什么。模型解释器提供了一个特征重要性列表,以显示模型根据整个训练数据集认为重要的特征。该 ML_EXPLAIN 例程可以训练这些模型解释器:

  • 部分依赖模型解释器(指定为 partial_dependence)显示更改一个或多个列的值将如何更改模型预测的值。当您训练这个模型解释器时,您需要指定一些额外的选项。

  • SHAP 模型解释器(指定为 shap)根据 Shapley 值生成全局特征重要性值。

  • Fast SHAP 模型解释器(指定为 fast_shap)是 SHAP 模型解释器的子采样版本,通常具有更快的运行时间。

  • Permutation Importance 模型解释器(指定为 permutation_importance)是 HeatWave ML 的默认模型解释器。

模型解释与机器学习模型一起存储在模型目录中(请参阅 第 3.9.1 节“模型目录”)。如果您 ML_EXPLAIN 再次运行相同的模型句柄和模型解释器,该字段将被新结果覆盖。

在运行之前 ML_EXPLAIN,您必须加载模型,例如:

CALL sys.ML_MODEL_LOAD('ml_data.iris_train_user1_1636729526', NULL);

以下示例运行 ML_EXPLAIN 以训练模型的 SHAP 模型解释器和排列重要性预测解释器:

CALL sys.ML_EXPLAIN('ml_data.`iris_train`', 'class', 'ml_data.iris_train_user1_1636729526', JSON_OBJECT(
'model_explainer', 'shap', 
'prediction_explainer', 'permutation_importance'));

在哪里:

  • ml_data.`iris_train`是包含训练数据集 ( schema_name.table_name) 的表的完全限定名称。

  • class是目标列的名称,其中包含参考标准值。

  • ml_data.iris_train_user1_1636729526是模型目录中模型的模型句柄。您可以使用会话变量来指定模型句柄,写为 . @var_name

  • JSON_OBJECT是命名要为模型训练的模型解释器和预测解释器的键值对列表。在这种情况下, model_explainer指定 shapSHAP 模型解释器,并 prediction_explainer指定 permutation_importancePermutation Importance 模型解释器。

此示例运行 ML_EXPLAIN 以训练部分依赖模型解释器(需要额外的选项)和模型的 SHAP 预测解释器:

CALL sys.ML_EXPLAIN('ml_data.`iris_train`', 'class', @iris_model, JSON_OBJECT(
'columns_to_explain', JSON_ARRAY('sepal width'), 
'target_value', 'Iris-setosa', 
'model_explainer', 'partial_dependence', 
'prediction_explainer', 'shap'));

在哪里:

  • columns_to_explain标识解释器的 sepal width列,以解释更改此列中的值如何影响模型。您可以在 JSON 数组中标识多个列。

  • target_value是包含基本真实值(在本例中为 )的目标列可以采用的有效值 class

有关完整的 ML_EXPLAIN 选项说明,请参阅第 3.10.2 节,“ML_EXPLAIN”