从 MySQL HeatWave 8.0.31 开始,在使用
ML_TRAIN
例程后,使用
ML_EXPLAIN
例程为 HeatWave ML 训练预测解释器和模型解释器。在早期版本中,
ML_TRAIN
例程训练默认的排列重要性模型和预测解释器。
解释可帮助您了解哪些特征对预测的影响最大。特征重要性表示为 -1 到 1 之间的值。正值表示特征对预测有贡献。负值表示该特征对不同的预测有贡献;例如,如果具有两种可能预测(“批准”和“拒绝”)的贷款审批模型中的特征对于“批准”预测具有负值,则该特征对于“拒绝”预测具有正值。值为 0 或接近 0 表示特征值对其应用的预测没有影响。
当您运行
ML_EXPLAIN_ROW
和
ML_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
指定shap
SHAP 模型解释器,并prediction_explainer
指定permutation_importance
Permutation 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”。