解决预测建模函数中的错误

在 Tableau 中使用预测建模函数时,当您尝试将计算添加到可视化项时,您可能会遇到错误。通常,这是由于预测器和可视化元素的组合,导致了数学上无效的计算。

通常,要尝试的第一件事是仔细检查“计算依据”维度。接下来,验证预测因子中指定的详细信息级别与视图中的详细信息级别之间没有不匹配。在给定当前可视化项的情况下,还要验证预测因子是否为模型提供了相关数据。

在本文中,我们详细介绍了几个常见问题,以及解决这些问题的方法。

预测建模函数的错误通常由以下一个或多个问题引起,具体情况视使用的型号而定:

一般错误

高斯过程回归错误

“计算依据”维度无效

对预测建模函数进行可视化时,必须指定“计算依据”维度。建议您选择特定维度(例如“Region”(区域)或“Category”(类别)),而不是定向维度(例如“表(横穿,然后向下)”或“区(横穿)) ”。

由于可视化项或仪表板中可能包含多个预测建模函数,因此选择特定的分区维度有助于确保您为每个函数使用相同的基础数据集构建模型,换句话说,比较同类模型的结果。

有关寻址和分区的详细信息,请参见使用表计算转换值

使用预测建模函数时,必须确保在不同的实例处理中保持一致性,既在模型的不同迭代(例如,选择不同的预测变量时)中保持一致,也在不同的可视化项中保持一致。使用定向“计算依据”维度可能会使可视化数据中的微小更改显著影响用于构建模型的数据,从而影响其在不同可视化项中的有效性和一致性。

如果未指定“计算依据”维度,或者选择了无效的“计算依据”维度,您将看到 null 值

无效的“计算依据”维度包括:

  • 单元格:此维度始终会导致使用单个数据点来生成模型,并且不会成功。
  • 更高级别的嵌套维度(例如,如果“Region”(区域)“State”(州/省/市/自治区)均在轴上可视化,其中标记是针对“State”(州/省/市/自治区)生成的,但按“Region”(区域)分组。 如果选择“Region”(区域) 作为分区维度,它将返回 null 值,因为此视图中没有针对“Region”(区域)形式化的标记。

可视化项,其中“计算依据”维度为“State”(州/省/市/自治区)和“Category”(类别)

在上面的可视化项中,有效的“计算依据”维度为“State”(州/省/市/自治区)和“Category”(类别)。按“State”(州/省/市/自治区)和“Category”(类别)对数据进行分区将生成多个可用于构建模型的有效标记。

Region”(区域)虽然被列为“计算依据”选项,但不会在此视图的详细信息级别生成任何标记,并且不能用于对数据进行分区。

有关详细信息,请参见预测建模中的计算依据和数据分区

维度预测因子与可视化详细信息级别冲突

维度预测因子必须处于可视化的相同详细级别或更高级别 。也就是说,如果按“State”(州/省/市/自治区)对数据进行可视化,您可以使用“State”(州/省/市/自治区)、“Region”(区域)或“Country”a(国家/地区)作为预测因子,但使用“City”(城市)作为预测因子将导致错误。由于一个州/省/市/自治区内存在多个城市,因此此预测因子对于所有标记将解析为 *,并且不会返回有意义的信息;因此,Tableau 会将其忽略。

每个维度预测因子必须包含在 ATTR 函数中,例如:

MODEL_PERCENTILE(SUM([Sales]), ATTR([State]), ATTR([Category])

多个预测因子相互冲突

给定预测建模函数中使用的每个预测因子都必须为计算提供独立信息。如果选择的两个预测器是完全相同、成比例的版本或彼此相反,预测建模函数在可视化时将返回一个错误。

例如,跟踪一段时间内天气状况的数据集可能有两个字段:IsRainIsClear。这两个字段彼此相反;也就是说,当 IsRain = False 时 IsClear = True,反之亦然。在单一预测函数上同时包括 IsClearIsRain 作为预测因子将返回错误。

对于作为预测因子的度量和维度来说,情况也是如此。

在这两种情况下,可以通过修改预测因子来移除高度相关的预测因子,从而解决错误。有关详细信息,请参见选择预测因子

没有足够的数据来构建模型

分区中至少必须有三个标记,才能允许预测建模函数生成模型并生成预测。如果数据集中由查看的数据和“计算依据”定义的标记只有两个更少,则预测建模函数将返回 null 结果。

为了解决此问题,请修改详细级别、数据筛选参数或“计算依据”维度,以便每个分区具有超过两个标记。

无法依据提供的数据构建成功的模型

如果所选预测因子、可视化的详细信息级别和/或所选的“计算依据”维度之间存在冲突,因此无法使用预测因子构建合理的模型,则会出现此错误。

例如,让我们看看以下 MODEL_QUANTILE 计算:

MODEL_QUANTILE(0.5, MEDIAN([Profit]), ATTR(MONTH([Order Date])))

将此计算应用于每个标记表示一个“State”(州/省/市/自治区)值的可视化项返回以下错误:

错误消息

由于“Order Date”(订单日期)未用于可视化或分段数据,因此预测建模函数无法使用指定的预测因子来构建模型。

若要解决此问题,请执行以下操作:

  • 更新可视化项以包括预测因子作为维度。
  • 更新函数以移除不可行的预测因子。

值得注意的是,此错误反映了可视化项和表计算的特定预测因子之间的不匹配。如果应用于包含“Order Date”(订单日期)作为维度的可视化项,则相同的计算将毫无问题地工作。

高斯过程回归只需要一个有序维度预测因子

若要使用高斯过程回归,必须只包含一个有序维度作为预测因子。您可以将其他无序维度作为预测因子。 无法使用度量作为高斯过程回归的预测因子。

如果遇到此错误,请向表计算添加有序维度预测因子、移除超额有序维度预测因子,或指定应将其中一个有序维度视为无序维度。

由于高斯过程回归最适合用于时间序列数据,因此这通常采用基于时间的预测因子的形式,例如 ATTR(DATETRUNC('month',[Order Date]))。DATETRUNC 表达式中可以使用任何 date_part,但 date_part 必须与可视化项处于相同或更高的详细级别。也就是说,如果可视化项使用 WEEK([Order Date]) 作为聚合级别,则 date_part 必须为“week”、“month”、“quarter”等;而不能是“dayofyear”、“day”、“weekday”、“hour”等。

请注意,由于 ATTR(MONTH([Date])) 返回字符串值,因此除非手动指定,否则它将不作为有序维度预测因子运行。这是通过在紧靠预测因子之前包括“ordered”来实现的,如下所示:

MODEL_PERCENTILE(
"model=gp",
SUM([Sales]),
"ordered",ATTR(MONTH([Order Date]))
)

如果要在预测因子中包括多个时间维度,则必须指定要用作无序维度的时间维度。这是通过在维度之前直接包括“unordered”来实现的,如下所示:

MODEL_PERCENTILE(
"model=gp",
SUM([Sales]),
ATTR(DATETRUNC('month',[Order Date]))
"unordered",ATTR(DATETRUNC('year',[Order Date]))
)

尝试使用上述计算而不在 ATTR(DATETRUNC('year',[Order Date]) 前面指定“unordered”将返回错误。

此外,高斯过程回归的寻址方向(或“计算依据”)必须设置为与有序维度预测因子相同的字段。

只能为所有模型选择一个寻址方向(或“计算依据”)。

高斯过程回归仅支持维度作为预测因子

在高斯过程计算中,不能使用任何度量作为预测因子。移除度量预测因子。

此限制仅适用于指定高斯过程回归的预测建模函数。线性回归(或 OLS,默认值)和正则化线性回归函数都支持度量作为预测因子。

一个或多个预测目标没有训练数据

高斯过程回归要求每个数据分区至少有 n 个 数据点,以便构建预测模型并返回预测。 如果遇到此错误,请修改预测。

有超过 5000 个标记

高斯过程回归仅在标记数少于 5000 的可视化项上受支持。若要解决此问题,请更新详细级别以减少标记数,或选择其他统计模型。

感谢您的反馈!