可解释性结果¶
包含从 _ForecastingModelExplainer.explain()
获得的可解释性结果。
ComponentBasedExplainabilityResult
用于基于组件的可解释性结果HorizonBasedExplainabilityResult
用于基于地平线的可解释性结果
- class darts.explainability.explainability_result.ComponentBasedExplainabilityResult(explained_components)[源代码]¶
基类:
_ExplainabilityResult
通用组件对象的可解释性结果。被解释的组件可以描述任何事物。
示例
>>> explainer = SomeComponentBasedExplainer(model) >>> explain_results = explainer.explain() >>> output = explain_results.get_explanation(component="some_component")
方法
get_explanation
(component)返回给定组件的一个或多个解释。
- class darts.explainability.explainability_result.HorizonBasedExplainabilityResult(explained_forecasts)[源代码]¶
基类:
_ExplainabilityResult
存储
_ForecastingModelExplainer
的可解释性结果,并提供方便访问基于时间范围的结果。结果是一个包含多元 TimeSeries 实例,其中包含了在任何可预测时间戳下,对应于前景 TimeSeries 输入的(预测范围,目标组件)预测的 ‘解释’。
这个多变量 TimeSeries 的组件命名约定是:
"{name}_{type_of_cov}_lag_{idx}"
,其中:{name}
是从原始前景系列(目标、过去或未来)中的组件名称。{type_of_cov}
是协变量类型。它可以取3个不同的值:"target"
、"past_cov"
或"future_cov"
。{idx}
是滞后指数。
示例
假设我们有一个模型,包含两个名为
"T_0"
和"T_1"
的目标组件,三个过去协变量,默认组件名称为"0"
、"1"
和"2"
,以及一个未来协变量,默认组件名称为"0"
。此外,horizons = [1, 2]
。该模型是一个回归模型,其中lags = 3
,lags_past_covariates=[-1, -3]
,lags_future_covariates = [0]
。我们提供 foreground_series、foreground_past_covariates、foreground_future_covariates,每个长度为5。
>>> explainer = SomeHorizonBasedExplainer(model) >>> explain_results = explainer.explain( >>> foreground_series=foreground_series, >>> foreground_past_covariates=foreground_past_covariates, >>> foreground_future_covariates=foreground_future_covariates, >>> horizons=[1, 2], >>> target_names=["T_0", "T_1"] >>> ) >>> output = explain_results.get_explanation(horizon=1, target="T_1")
然后,该方法返回一个包含相应 _ForecastingModelExplainer 的 解释 的多变量时间序列,其组件名称为:
T_0_目标_滞后-1
T_0_目标_滞后-2
T_0_目标_滞后-3
T_1_目标_滞后-1
T_1_目标_滞后-2
T_1_目标_滞后-3
0_过去_cov_滞后-1
0_过去_cov_滞后-3
1_past_cov_lag-1
1_past_cov_lag-3
2_过去_cov_滞后-1
2_past_cov_lag-3
0_fut_cov_lag_0
这个系列的长度为3,因为模型可以解释5-3+1个预测(时间戳索引4、5和6)
方法
get_explanation
(horizon[, component])返回一个或多个表示给定预测范围和组件解释的 TimeSeries。
- get_explanation(horizon, component=None)[源代码]¶
返回一个或多个表示给定预测范围和组件解释的 TimeSeries。
- 参数
horizon (
int
) – 要返回解释的地平线。component (
Optional
[str
,None
]) – 要返回解释的组件。对于单变量序列,不需要指定。
- 返回类型
Union
[TimeSeries
,List
[TimeSeries
]]
- class darts.explainability.explainability_result.ShapExplainabilityResult(explained_forecasts, feature_values, shap_explanation_object)[源代码]¶
基类:
HorizonBasedExplainabilityResult
存储一个
ShapExplainer
的可解释性结果,并提供方便的结果访问。它扩展了HorizonBasedExplainabilityResult
,并携带了特定于 Shap 解释器的附加信息。特别是,除了 explained_forecasts`(在 `ShapExplainer 的情况下是 shap 值)之外,它还提供了对相应 feature_values 和底层 shap.Explanation 对象的访问。get_explanation()
: 对给定时间范围(和目标组件)的预测进行解释get_feature_values()
: 给定时间范围(和目标组件)的特征值。get_shap_explanation_object()
: 给定时间范围(和目标组件)的 shap.Explanation 对象。
实际案例
>>> explainer = ShapExplainer(model) # requires `background` if model was trained on multiple series >>> explain_results = explainer.explain() >>> exlained_fc = explain_results.get_explanation(horizon=1) >>> feature_values = explain_results.get_feature_values(horizon=1) >>> shap_objects = explain_results.get_shap_explanation_objects(horizon=1)
方法
get_explanation
(horizon[, component])返回一个或多个表示给定预测范围和组件解释的 TimeSeries。
get_feature_values
(horizon[, component])返回一个或多个表示给定时间和组件特征值的 TimeSeries。
get_shap_explanation_object
(horizon[, component])返回给定水平和组件的底层 shap.Explanation 对象。
- get_explanation(horizon, component=None)¶
返回一个或多个表示给定预测范围和组件解释的 TimeSeries。
- 参数
horizon (
int
) – 要返回解释的地平线。component (
Optional
[str
,None
]) – 要返回解释的组件。对于单变量序列,不需要指定。
- 返回类型
Union
[TimeSeries
,List
[TimeSeries
]]
- get_feature_values(horizon, component=None)[源代码]¶
返回一个或多个表示给定时间和组件特征值的 TimeSeries。
- 参数
horizon (
int
) – 要返回特征值的地平线。component (
Optional
[str
,None
]) – 要返回特征值的组件。对于单变量序列,不需要指定。
- 返回类型
Union
[TimeSeries
,List
[TimeSeries
]]
- class darts.explainability.explainability_result.TFTExplainabilityResult(explanations)[源代码]¶
基类:
ComponentBasedExplainabilityResult
存储
TFTExplainer
的可解释性结果,并提供方便的结果访问。它扩展了ComponentBasedExplainabilityResult
,并携带了特定于 TFT 解释器的信息。get_attention()
: 编码器和解码器上的自注意力get_encoder_importance()
: 编码器特征重要性,包括过去的目标、过去的协变量和未来协变量的历史部分。get_decoder_importance()
: 解码器特征重要性,包括未来协变量的未来部分。get_static_covariates_importance()
: 静态协变量的重要性。get_feature_importances()
: 一次性获取所有特征重要性。
实际案例
>>> explainer = TFTExplainer(model) # requires `background` if model was trained on multiple series >>> explain_results = explainer.explain() >>> attention = explain_results.get_attention() >>> importances = explain_results.get_feature_importances() >>> encoder_importance = explain_results.get_encoder_importance() >>> decoder_importance = explain_results.get_decoder_importance() >>> static_covariates_importance = explain_results.get_static_covariates_importance()
方法
返回编码器和解码器在每个 horizon (1, output_chunk_length) 上的时间依赖注意力。
返回时间相关的解码器重要性作为 pd.DataFrames。
返回时间相关的编码器重要性作为 pd.DataFrames。
get_explanation
(component)返回给定组件的一个或多个解释。
返回编码器、解码器和静态协变量的特征重要性,作为 pd.DataFrames。
返回数值型和类别型静态协变量的重要性,作为 pd.DataFrames。
- get_attention()[源代码]¶
返回编码器和解码器在每个 horizon 上的时间依赖注意力(horizon 在 (1, output_chunk_length) 范围内)。时间索引从预测序列的开始时间减去 input_chunk_length 开始,到预测序列的结束时间结束。如果在调用
TFTExplainer.explain()
时使用了多个序列,则返回一个 TimeSeries 列表。- 返回类型
Union
[TimeSeries
,List
[TimeSeries
]]
- get_decoder_importance()[源代码]¶
返回时间相关的解码器重要性作为 pd.DataFrames。如果在
TFTExplainer.explain()
中使用了多个序列,则返回一个 pd.DataFrames 列表。- 返回类型
Union
[DataFrame
,List
[DataFrame
]]
- get_encoder_importance()[源代码]¶
返回时间依赖的编码器重要性作为 pd.DataFrames。如果在
TFTExplainer.explain()
中使用了多个序列,则返回一个 pd.DataFrames 列表。- 返回类型
Union
[DataFrame
,List
[DataFrame
]]
- get_explanation(component)¶
返回给定组件的一个或多个解释。
- 参数
component – 要返回解释的组件。
- 返回类型
Union
[Any
,List
[Any
]]
- get_feature_importances()[源代码]¶
返回编码器、解码器和静态协变量的特征重要性,以 pd.DataFrame 的形式。如果在
TFTExplainer.explain()
中使用了多个序列,则按重要性返回每个序列的 pd.DataFrame 列表。- 返回类型
Dict
[str
,Union
[DataFrame
,List
[DataFrame
]]]
- get_static_covariates_importance()[源代码]¶
返回数值型和类别型静态协变量的重要性作为 pd.DataFrames。如果在
TFTExplainer.explain()
中使用了多个序列,则返回一个 pd.DataFrames 列表。- 返回类型
Union
[DataFrame
,List
[DataFrame
]]