可解释性结果

包含从 _ForecastingModelExplainer.explain() 获得的可解释性结果。

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)

返回给定组件的一个或多个解释。

get_explanation(component)[源代码]

返回给定组件的一个或多个解释。

参数

component – 要返回解释的组件。

返回类型

Union[Any, List[Any]]

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 = 3lags_past_covariates=[-1, -3]lags_future_covariates = [0]

我们提供 foreground_seriesforeground_past_covariatesforeground_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 对象的访问。

实际案例

>>> 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]]

get_shap_explanation_object(horizon, component=None)[源代码]

返回给定水平和组件的底层 shap.Explanation 对象。

参数
  • horizon (int) – 要返回 shap.Explanation 对象的地平线。

  • component (Optional[str, None]) – 要返回 shap.Explanation 对象的组件。对于单变量序列,不需要指定。

返回类型

Union[Explanation, List[Explanation]]

class darts.explainability.explainability_result.TFTExplainabilityResult(explanations)[源代码]

基类:ComponentBasedExplainabilityResult

存储 TFTExplainer 的可解释性结果,并提供方便的结果访问。它扩展了 ComponentBasedExplainabilityResult ,并携带了特定于 TFT 解释器的信息。

实际案例

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

方法

get_attention()

返回编码器和解码器在每个 horizon (1, output_chunk_length) 上的时间依赖注意力。

get_decoder_importance()

返回时间相关的解码器重要性作为 pd.DataFrames。

get_encoder_importance()

返回时间相关的编码器重要性作为 pd.DataFrames。

get_explanation(component)

返回给定组件的一个或多个解释。

get_feature_importances()

返回编码器、解码器和静态协变量的特征重要性,作为 pd.DataFrames。

get_static_covariates_importance()

返回数值型和类别型静态协变量的重要性,作为 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]]