解決預測建模函數中的錯誤
在 Tableau 中使用預測建模函數時,嘗試將計算新增至視覺效果時,可能會發生錯誤。通常,這是由於預測值和視覺化元素的結合,導致數學計算無效。
通常,首先要嘗試的是仔細檢查您的計算使用維度。接著,驗證預測值中指定的詳細層級與檢視中的詳細層級之間是否不相符。另外,還要驗證預測值是否考量到目前的視覺效果,向模型提供相關資料。
在本文中,我們詳細說明了幾個常見問題,以及解決這些問題的方法。
預測建模函數的錯誤通常是由以下一個或多個問題引起的,具體取決於所使用的模型。
一般錯誤
高斯過程回歸錯誤
無效的計算使用維度
將預測建模函數視覺化時,必須指定「計算使用」維度。建議您選取特定維度(例如「區域」或「類別」),而非定向維度(例如「表(橫穿,然後向下)」或「窗格(橫穿)」)。
由於您可能在單一視覺效果或儀表板中包含多個預測建模函數,因此,選取特定的分區維度可確保為每個函數使用相同的基礎資料集建立模型,換句話說,即為比較同類模型的結果。
有關定址和分區的詳情,請參閱使用表計算轉換值。
使用預測建模函數時,無論是模型的不同反覆運算(例如,當您選取不同的預測值時),還是在不同的視覺效果中,您必須確保在不同的具現化中保持一致。使用定向「計算使用」維度導致一種可能性,就是視覺化資料的細微變化將大幅影響用於建立模型的資料,因此,影響不同視覺效果之間的有效性和一致性。
如果未指定「計算使用」維度,或如果已選取無效的「計算使用」維度,您可能會看見 Null 值。
無效的「計算使用」維度包括:
- 儲存格:此維度經常造成單一資料點用於建立模型,而且不會成功。
- 更高層級的巢狀維度(例如,如果「區域」和「州/省」在軸上皆已視覺化,其中,已針對「州/省」產生標記,但依「區域」分組。)如果已選取「區域」做為分區維度,則會傳回 Null 值,因為在此檢視中,沒有為「區域」形式化任何標記。
在上述的視覺效果中,有效的「計算使用」維度是州/省和類別。依州/省或依類別對資料進行分區會產生多個可用於建立模型的有效標記。
儘管區域列為「計算使用」選項,但不會在此檢視的詳細層級上產生任何標記,而且無法用於對資料進行分區。
有關詳情,請參閱預測建模中的計算使用和資料分區。
維度預測值與視覺化的詳細層級發生衝突
維度預測值必須與要視覺化的詳細層級相同或更高。也就是說,如果您要依州/省將資料視覺化,可以使用州/省、區域或國家/地區做為預測值,不過,使用城市做為預測值將會造成錯誤。由於一個州/省內存在多個城市,此預測值將針對所有標記解析為 *,而且不會傳回有意義的資訊;因此,Tableau 會忽略該預測值。
每個維度預測值必須括在 ATTR 函數中,例如:
MODEL_PERCENTILE(SUM([Sales]), ATTR([State]), ATTR([Category])
多個預測值彼此之間發生衝突
在給定的預測建模函數中使用的每個預測值必須為計算提供獨立資訊。如果選取兩個完全等效、擴展版本或彼此反向的預測值,則預測建模函數會在視覺化時傳回錯誤。
例如,追蹤一段時間之天氣狀況的資料集可能有兩個欄位:IsRain 和 IsClear。這兩個欄位是彼此反向的;也就是說,當 IsRain = False,IsClear = True,反之亦然。在單一預測建模函數上同時包含 IsClear 與 IsRain 做為預測值將會傳回錯誤。
上述情況對於做為預測值的度量和維度皆是如此。
在這兩種情況下,可以藉由修改預測值來移除高度相關的預測值來解決錯誤。有關詳情,請參閱選擇預測值。
沒有足夠的資料建立模型
在分區內必須至少有三個標記,才能讓預測建模函數建立模型,並產生預測。如果由檢視的資料和「計算使用」維度定義的資料集存在兩個或更少的標記,則預測建模函數將傳回 Null 結果。
若要解決此問題,請修改詳細層級、資料篩選參數或「計算使用」維度,以便每個分區具有兩個以上的標記。
無法從提供的資料成功建構模型
如果選取的預測值、視覺化的詳細層級,及/或選取的「計算使用」維度之間發生衝突,則會出現此錯誤,進而無法使用預測值建立理性模型。
例如,讓我們來看看 MODEL_QUANTILE 計算:
MODEL_QUANTILE(0.5, MEDIAN([Profit]), ATTR(MONTH([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 個資料點,以便建立預測模型,並傳回預測。若遇到此錯誤,請修改預測。
有 5,000 多個標記
僅在少於 5,000 個標記的視覺效果上支援高斯過程回歸。若要解決此問題,請更新詳細資料層級,以減少標記數量,或選取其他統計模型。