解释是通过运行
ML_EXPLAIN_ROW
或
ML_EXPLAIN_TABLE
在未标记的数据上生成的;也就是说,它必须具有与用于训练模型的数据相同的特征列,但没有目标列。
解释可帮助您了解哪些特征对预测的影响最大。特征重要性表示为 -1 到 1 之间的值。正值表示特征对预测有贡献。负值表示该特征对不同的预测有贡献;例如,如果具有两种可能预测(“批准”和“拒绝”)的贷款审批模型中的特征对于“批准”预测具有负值,则该特征对于“拒绝”预测具有正值。值为 0 或接近 0 表示特征值对其应用的预测没有影响。
ML_EXPLAIN_ROW
为一行或多行数据生成解释。
ML_EXPLAIN_TABLE
生成对整个数据表的解释并将结果保存到输出表。ML_EXPLAIN_*
例程将解释限制为 100 个最相关的特征。
从 MySQL HeatWave 8.0.31 开始,在使用
ML_TRAIN
例程后,使用
ML_EXPLAIN
例程为 HeatWave ML 训练预测解释器和模型解释器。您必须训练预测解释器才能使用
ML_EXPLAIN_ROW
和
ML_EXPLAIN_TABLE
。在早期版本中,
ML_TRAIN
例程训练默认的排列重要性模型和预测解释器。请参阅第 3.5 节,“培训解释器”。
ML_EXPLAIN_ROW
解释对一行或多行未标记数据的预测。它是使用SELECT
语句调用的。有关
ML_EXPLAIN_ROW
参数说明,请参阅
第 3.10.6 节,“ML_EXPLAIN_ROW”。
运行前
ML_EXPLAIN_ROW
,确保加载了你要使用的模型;例如:
CALL sys.ML_MODEL_LOAD(@census_model, NULL);
有关加载模型的更多信息,请参阅 第 3.9.3 节,“加载模型”。
@row_input
以下示例为分配给会话变量
的单行未标记数据生成解释
:
SET @row_input = JSON_OBJECT(
"age", 25,
"workclass", "Private",
"fnlwgt", 226802,
"education", "11th",
"education-num", 7,
"marital-status", "Never-married",
"occupation", "Machine-op-inspct",
"relationship", "Own-child",
"race", "Black",
"sex", "Male",
"capital-gain", 0,
"capital-loss", 0,
"hours-per-week", 40,
"native-country", "United-States");
SELECT sys.ML_EXPLAIN_ROW(@row_input, @census_model, JSON_OBJECT(
'prediction_explainer', 'permutation_importance')));
在哪里:
@row_input
是包含一行未标记数据的会话变量。数据以JSON
键值格式指定。列名必须与训练数据集中的特征列名匹配。@census_model
是包含模型句柄的会话变量。prediction_explainer
提供您为此模型训练的预测解释器的名称,排列重要性预测解释器或 SHAP 预测解释器。您可以使用ML_EXPLAIN
例程对其进行训练(请参阅第 3.5 节“训练解释器”)。
ML_EXPLAIN_ROW
输出包括预测、用于进行预测的特征以及表示特征重要性的加权数值,格式如下:( )。从 MySQL 8.0.30 开始,输出包括一个字段,该字段标识对预测影响最大的特征,并在模型质量低时报告警告。
"
feature
_attribution":
value
Notes
您还可以
ML_EXPLAIN_ROW
对从表中选择的多行数据运行。有关示例,请参阅
第 3.10.6 节“ML_EXPLAIN_ROW”中的语法示例。
ML_EXPLAIN_TABLE
解释整个未标记数据表的预测并将结果保存到输出表。解释是并行进行的。有关
ML_EXPLAIN_TABLE
参数说明,请参阅
第 3.10.7 节,“ML_EXPLAIN_TABLE”。
ML_EXPLAIN_TABLE
是一个计算密集型过程。建议通过将大表拆分为较小的表来将操作限制为 10 到 100 行的批次。
以下示例创建一个表,其中包含从数据集中选择的 10 行数据,census_test
并为该表生成解释。
运行前
ML_EXPLAIN_TABLE
,确保加载了你要使用的模型;例如:
CALL sys.ML_MODEL_LOAD(@census_model, NULL);
有关加载模型的更多信息,请参阅 第 3.9.3 节,“加载模型”。
以下示例创建一个包含 10 行未标记测试数据的表,并为该表生成解释:
CREATE TABLE heatwaveml_bench.census_test_subset AS SELECT * FROM heatwaveml_bench.census_test
LIMIT 10;
CALL sys.ML_EXPLAIN_TABLE('heatwaveml_bench.census_test_subset', @census_model,
'heatwaveml_bench.census_explanations', JSON_OBJECT('prediction_explainer', 'shap'));
在哪里:
heatwaveml_bench.census_test_subset
是输入表 (schema_name.table_name
) 的完全限定名称。该表必须具有与训练数据集相同的特征列名称,但没有目标列。@census_model
是包含模型句柄的会话变量。heatwaveml_bench.census_explanations
是存储解释数据的表。如果表不存在,则创建该表。必须指定完全限定的表名 (schema_name.table_name
)。如果该表已经存在,则返回错误。prediction_explainer
提供您为此模型训练的预测解释器的名称,排列重要性预测解释器或 SHAP 预测解释器。您可以使用ML_EXPLAIN
例程对其进行训练(请参阅第 3.5 节“训练解释器”)。
查看
ML_EXPLAIN_TABLE
结果,查询输出表;例如:
SELECT * FROM heatwaveml_bench.census_explanations;
ML_EXPLAIN_TABLE
输出表包括用于进行解释的特征、解释以及
提供
指示特征重要性的加权数值的列。
feature
_attribution
从 MySQL 8.0.30 开始,
ML_EXPLAIN_TABLE
输出还包括一个Notes
字段,用于标识对预测影响最大的特征。
ML_EXPLAIN_TABLE
如果模型质量低,则报告警告。