交叉驗證 (Analysis Services - 數據採礦)
適用於: SQL Server 2019 和舊版 Analysis Services Azure Analysis Services Fabric/Power BI Premium
重要
SQL Server 2017 Analysis Services 中已淘汰數據採礦,現在已在 SQL Server 2022 Analysis Services 中停止。 檔不會更新為已淘汰和已停止的功能。 若要深入瞭解,請參閱 Analysis Services 回溯相容性。
交叉驗證 是分析的標準工具,是協助您開發和微調數據採礦模型的重要功能。 建立採礦結構和相關採礦模型之後,您可以使用交叉驗證來確認模型的有效性。 交叉驗證具有下列應用程式:
驗證特定採礦模型的健全性。
從單一語句評估多個模型。
建置多個模型,然後根據統計數據識別最佳模型。
本節說明如何使用數據採礦所提供的交叉驗證功能,以及如何根據單一數據集來解譯單一模型或多個模型的交叉驗證結果。
交叉驗證程式概觀
交叉驗證包含兩個階段:定型和結果產生。 這些階段包括下列步驟:
您可以選取目標採礦結構。
您可以指定您要測試的模型。 此步驟是選擇性的;您也可以只測試採礦結構。
您可以指定用來測試定型模型的參數。
可預測屬性、預測值和精確度臨界值。
要分割結構或模型數據的折疊數目。
SQL Server Analysis Services 會建立和定型與折疊一樣多的模型。
SQL Server Analysis Services 會針對每個模型中的每個折疊傳回一組精確度計量,或針對整個數據集傳回一組精確度計量。
設定交叉驗證
您可以自定義交叉驗證的運作方式,以控制交叉區段的數目、所測試的模型,以及預測的正確性列。 如果您使用交叉驗證預存程式,您也可以指定用來驗證模型的數據集。 這種豐富的選擇表示您可以輕鬆地產生許多不同的結果集,然後必須加以比較和分析。
本節提供的資訊可協助您適當地設定交叉驗證。
設定分割區數目
當您指定分割區數目時,會決定將建立多少個暫存模型。 針對每個分割區,數據交叉區段會標示為做為測試集使用,而新模型是透過對不在數據分割中的其餘數據進行定型所建立。 此程式會重複執行,直到 SQL Server Analysis Services 建立並測試指定的模型數目為止。 您指定為可用於交叉驗證的數據會平均散發到所有分割區之間。
圖表中的範例說明如果指定了三個折疊,數據使用方式。
在圖表的案例中,採礦結構包含用於測試的鑒效組數據集,但測試數據集尚未包含在交叉驗證中。 因此,定型數據集中的所有數據,在採礦結構中,70% 的數據都會用於交叉驗證。 交叉驗證報告會顯示每個分割區中使用的案例總數。
您也可以指定要在交叉驗證期間使用的數據量,方法是指定要使用的整體案例數目。 案例會平均分散到所有折疊。
對於儲存在 SQL Server SQL Server Analysis Services 實例中的採礦結構,您可以針對折疊數目設定的最大值是 256,或案例數目,無論哪一個比較少。 如果您使用會話採礦結構,折疊數目上限為 10。
注意
當您增加折疊數時,執行交叉驗證所需的時間會隨之增加,因為必須為每個折疊產生並測試模型。 如果折疊數目太高,您可能會遇到效能問題。
設定精確度閾值
狀態臨界值可讓您設定預測的正確性列。 針對每個案例,模型會計算 預測機率,這表示預測狀態正確的可能性。 如果預測機率超過精確度列,則預測會計算為正確;如果不是,則預測會計算為不正確。 您可以將 狀態閾值 設定為介於 0.0 到 1.0 之間的數位來控制此值,其中接近 1 的數位表示預測的信賴度較強,而接近 0 的數位則表示預測不太可能是 true。 狀態閾值的預設值為 NULL,這表示具有最高機率的預測狀態會被視為目標值。
您應該知道狀態閾值的設定會影響模型精確度的量值。 例如,假設您有三個您想要測試的模型。 全部都是以相同的採礦結構為基礎,而且都會預測數據行 [Bike Buyer]。 此外,您想要預測單一值 1,這表示「是的,會購買」。這三個模型會傳回預測機率為 0.05、0.15 和 0.8 的預測。 如果您將狀態閾值設定為0.10,則會將兩個預測計算為正確。 如果您將狀態閾值設定為0.5,則只會將一個模型計算為傳回正確的預測。 如果您使用預設值 Null,則最可能預測的計算結果會算為正確。 在此情況下,這三個預測都會計算為正確。
注意
您可以為臨界值設定0.0值,但此值毫無意義,因為每個預測都會算作正確,即使是機率為零的預測也一樣。 請小心不要不小心將狀態臨界值 設定為0.0。
選擇要驗證的模型和數據行
當您在數據採礦設計師中使用 [交叉驗證] 索引標籤時,您必須先從清單中選取可預測的數據行。 一般而言,採礦結構可以支援許多採礦模型,並非所有模型都使用相同的可預測數據行。 當您執行交叉驗證時,報表中只能包含使用相同可預測數據行的模型。
若要選擇可預測的屬性,請按兩下 目標屬性,然後從清單中選取資料行。 如果目標屬性是巢狀數據行或巢狀數據表中的數據行,您必須使用巢狀數據表名稱 <巢狀數據表名稱>格式輸入巢狀數據行的名稱(索引鍵)。<巢狀資料行>。 如果巢狀資料表中唯一使用的數據行是索引鍵數據行,您可以使用 <巢狀資料表名稱>(key) 。
選取可預測的屬性之後,SQL Server Analysis Services 會自動測試使用相同可預測屬性的所有模型。 如果目標屬性包含離散值,在選取可預測數據行之後,您可以選擇性地輸入目標狀態,如果有您想要預測的特定值。
目標狀態的選取會影響傳回的量值。 如果您指定目標屬性,也就是數據行名稱,且不會挑選您想要模型預測的特定值,則根據模型對最可能狀態的預測,預設會評估模型。
當您搭配叢集模型使用交叉驗證時,沒有可預測的數據行;相反地,您會在 [目標 屬性] 清單框中選取 #Cluster。 選取此選項之後,其他與叢集模型無關的選項,例如 目標狀態會停用。 SQL Server Analysis Services 接著會測試與採礦結構相關聯的所有叢集模型。
交叉驗證的工具
您可以從數據採礦設計師使用交叉驗證,也可以執行預存程式來執行交叉驗證。
如果您使用資料採礦設計師工具來執行交叉驗證,您可以在單一對話框中設定定型和精確度結果參數。 這可讓您更輕鬆地設定和檢視結果。 您可以測量與單一採礦結構相關的所有採礦模型的正確性,然後在 HTML 報表中立即檢視結果。 不過,預存程式提供一些優點,例如新增自定義專案,以及編寫程式腳本的能力。
數據採礦設計師中的交叉驗證
您可以使用 SQL Server Management Studio 或 SQL Server Development Studio 中採礦精確度圖表檢視 交叉驗證 索引標籤來執行交叉驗證。
若要查看如何使用使用者介面建立交叉驗證報表的範例,請參閱 建立交叉驗證報告。
交叉驗證預存程式
對於進階使用者,交叉驗證也可以完全參數化系統預存程式的形式提供。 您可以從 SQL Server Management Studio 或從任何 Managed 程式代碼應用程式連線到實例,以執行預存程式。
預存程式會依採礦模型類型分組。 一組預存程式僅適用於叢集模型。 另一組預存程式與其他採礦模型搭配運作。
針對每種採礦模型、叢集或非叢集類型,預存程式會在兩個不同的階段中執行交叉驗證。
分割數據併產生數據分割 計量
在第一個階段中,您會呼叫系統預存程式,該預存程式會建立與數據集內指定的分割區數目一樣多,並傳回每個分割區的精確度結果。 針對每個計量,Analysis Services 接著會計算數據分割的平均值和標準偏差。
產生整個數據集的計量
在第二個階段中,您會呼叫一組不同的預存程式。 這些預存程式不會分割數據集,而是產生整個指定數據集的正確性結果。 如果您已經分割並處理採礦結構,您可以呼叫這個第二組預存程式,只取得結果。
定義測試數據
當您執行計算精確度的交叉驗證預存程式時(SystemGetAccuracyResults 或 SystemGetClusterAccuracyResults),您可以指定交叉驗證期間用於測試的數據來源。 使用者介面中無法使用此選項。
您可以指定測試資料來源的任何選項:
只使用定型數據。
包含現有的測試數據集。
只使用測試數據集。
將現有的篩選套用至每個模型。
定型集、測試集和模型篩選的任何組合。
若要指定測試數據源,您可以為預存程式的 DataSet 參數提供整數值。 如需自變數值的清單,請參閱相關預存程序參考主題的一節。
如果您在數據採礦設計師中使用 交叉驗證 報表來執行交叉驗證,則無法變更所使用的數據集。 根據預設,會使用每個模型的定型案例。 如果篩選條件與模型相關聯,則會套用篩選。
交叉驗證的結果
如果您使用數據採礦設計工具,這些結果會顯示在類似方格的 Web 查看器中。 如果您使用交叉驗證預存程式,則會以數據表的形式傳回這些相同的結果。
報表包含兩種類型的量值:匯總,指出分割成折疊時的數據集變異性,以及每個折疊的模型特定精確度量值。 下列主題提供這些計量的詳細資訊:
依測試類型列出所有量值。 一般說明如何解譯量值。
交叉驗證報告中的 量值
描述計算每個量值的公式,並列出每個量值可以套用的屬性類型。
交叉驗證的限制
如果您在 SQL Server Development Studio 中使用交叉驗證報告來執行交叉驗證,則您可以測試的模型有一些限制,以及您可以設定的參數。
根據預設,與所選採礦結構相關聯的所有模型都會經過交叉驗證。 您無法指定模型或模型清單。
根據Microsoft時間序列演算法或Microsoft時序群集演算法的模型,不支援交叉驗證。
如果您的採礦結構未包含任何可透過交叉驗證測試的模型,則無法建立報表。
如果採礦結構同時包含叢集和非叢集模型,而且您未選擇 [#Cluster] 選項,即使屬性、狀態和臨界值設定可能不適合叢集模型,這兩種類型的模型的結果仍會顯示在相同的報表中。
某些參數值會受到限制。 例如,如果折疊數目超過10,就會顯示警告,因為產生這麼多模型可能會導致報表顯示緩慢。
如果您要測試多個採礦模型,而且模型有篩選,則會個別篩選每個模型。 您無法在交叉驗證期間將篩選新增至模型,或變更模型的篩選。
因為根據預設,交叉驗證會測試與結構相關聯的所有採礦模型,因此如果某些模型有篩選,而其他模型沒有,您可能會收到不一致的結果。 若要確保您只比較具有相同篩選條件的模型,您應該使用預存程式並指定採礦模型清單。 或者,只使用沒有篩選條件的採礦結構測試集,以確保所有模型都使用一致的數據集。
如果您使用預存程式執行交叉驗證,您可以選擇測試資料來源的額外選項。 如果您使用數據採礦設計工具執行交叉驗證,則必須使用與模型或結構相關聯的測試數據集,如果有的話。 一般而言,如果您想要指定進階設定,您應該使用交叉驗證預存程式。
交叉驗證無法與時間序列或時序群集模型搭配使用。 具體來說,沒有包含 KEY TIME 數據行或 KEY SEQUENCE 數據行的模型可以包含在交叉驗證中。
相關內容
如需交叉驗證的詳細資訊,請參閱下列主題,或測試採礦模型相關方法的相關信息,例如精確度圖表。
主題 | 連結 |
---|---|
描述如何在 SQL Server Development Studio 中設定交叉驗證參數。 | 交叉驗證索引標籤 (採礦精確度圖表檢視) |
描述交叉驗證所提供的計量 | 交叉驗證公式 |
說明交叉驗證報表格式,並定義針對每個模型類型提供的統計量值。 | 交叉驗證報告中的 量值 |
列出計算交叉驗證統計數據的預存程式。 | 數據採礦預存程式 (Analysis Services - 數據採礦) |
描述如何建立採礦結構和相關模型的測試數據集。 | 定型及測試數據集 |
請參閱其他精確度圖表類型的範例。 |
分類矩陣 (Analysis Services - 數據採礦) 增益圖 (Analysis Services - 數據採礦) 收益圖 (Analysis Services - 數據採礦) 散佈圖 (Analysis Services - 數據採礦) |
說明建立各種精確度圖表的步驟。 | 測試和驗證工作和操作說明 (資料採礦) |