共用方式為


交叉驗證 (Analysis Services - 數據採礦)

交叉驗證 是分析中的標準工具,是協助您開發和微調數據採礦模型的重要功能。 建立採礦結構和相關採礦模型之後,您可以使用交叉驗證來確認模型的有效性。 交叉驗證具有下列應用程式:

  • 驗證特定採礦模型的健全性。

  • 從單一語句評估多個模型。

  • 建置多個模型,然後根據統計數據識別最佳模型。

本節說明如何使用數據採礦所提供的交叉驗證功能,以及如何根據單一數據集來解譯單一模型或多個模型的交叉驗證結果。

交叉驗證程式概觀

交叉驗證包含兩個階段:定型和結果產生。 這些階段包括下列步驟:

  • 您可以選取目標採礦結構。

  • 您可以指定您要測試的模型。 此步驟是選擇性的;您也可以只測試採礦結構。

  • 您可以指定用來測試定型模型的參數。

    • 可預測屬性、預測值和精確度臨界值。

    • 要分割結構或模型數據的折疊數目。

  • Analysis Services 會建立和訓練與資料分折數相同數量的模型。

  • Analysis Services 會針對每個模型中的每個折疊傳回一組精確度計量,或針對整個數據集傳回一組精確度計量。

設定交叉驗證

您可以自定義交叉驗證的運作方式,以控制交叉區段的數目、所測試的模型,以及預測的正確性列。 如果您使用交叉驗證預存程式,您也可以指定用來驗證模型的數據集。 這種豐富的選擇表示您可以輕鬆地產生許多不同的結果集,然後必須加以比較和分析。

本節提供的資訊可協助您適當地設定交叉驗證。

設定分割區數目

當您指定分割區數目時,會決定將建立多少個暫存模型。 針對每個分割區,數據交叉區段會標示為做為測試集使用,而新模型是透過對不在數據分割中的其餘數據進行定型所建立。 此程式會重複執行,直到 Analysis Services 建立並測試指定的模型數目為止。 您指定為可用於交叉驗證的數據會平均散發到所有分割區之間。

圖表中的範例說明了數據在指定三個摺疊層時的使用方式。

交叉驗證如何分割數據

在圖表所示的情境中,採礦結構包含用於測試的保留數據集,但測試數據集未參與交叉驗證。 因此,用於交叉驗證的是訓練數據集中的所有數據,以及資料探勘結構中 70% 的數據。 交叉驗證報告會顯示每個分割區中使用的案例總數。

您也可以指定要在交叉驗證期間使用的數據量,方法是指定要使用的整體案例數目。 案例會平均分散到所有折疊。

對於儲存在 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)格式 <輸入巢狀數據行的名稱>。<巢狀數據行>。 如果巢狀數據表中唯一使用的數據行是索引鍵數據行,您可以使用 <巢狀數據表名稱>(key)。

選取可預測屬性之後,Analysis Services 會自動測試使用相同可預測屬性的所有模型。 如果目標屬性包含離散值,在選取可預測數據行之後,您可以選擇性地輸入目標狀態,如果有您想要預測的特定值。

目標狀態的選取會影響傳回的量值。 如果您指定了一個目標屬性,也就是欄位名稱,卻未選擇您希望模型預測的特定數值,則預設情況下,模型將根據其對最可能的狀態的預測進行評估。

當您搭配叢集模型使用交叉驗證時,沒有可預測的欄位;而是從 目標屬性 清單框中選取 #Cluster。 選取此選項之後,其他與叢集模型無關的選項,例如 [目標狀態] 會停用。 Analysis Services 接著會測試與採礦結構相關聯的所有叢集模型。

交叉驗證的工具

您可以從數據採礦設計師使用交叉驗證,也可以執行預存程式來執行交叉驗證。

如果您使用資料採礦設計師工具來執行交叉驗證,您可以在單一對話框中設定定型和精確度結果參數。 這可讓您更輕鬆地設定和檢視結果。 您可以測量與單一採礦結構相關的所有採礦模型的正確性,然後在 HTML 報表中立即檢視結果。 儲存過程提供一些優點,例如增加自訂功能和撰寫腳本的能力。

數據採礦設計師中的交叉驗證

您可以使用 SQL Server Management Studio 或 SQL Server Development Studio 中採礦精確度圖表檢視的 [ 交叉驗證 ] 索引卷標來執行交叉驗證。

若要查看如何使用使用者介面建立交叉驗證報表的範例,請參閱 建立交叉驗證報告

交叉驗證預存程式

對於進階使用者,交叉驗證也可以完全參數化系統預存程式的形式提供。 您可以從 SQL Server Management Studio 或任何使用托管代碼的應用程式連接到 SQL Server 2014 Analysis Services (SSAS) 實例,以執行預存程序。

預存程式會依採礦模型類型分組。 一組預存程式僅適用於叢集模型。 另一組預存程式與其他採礦模型搭配運作。

針對每一種類型的採礦模型,叢集或非叢集,預存程式會在兩個不同的階段中執行交叉驗證。

分割數據並生成分割的指標

在第一階段,您會呼叫系統預存程序,該程序會在數據集中建立指定數目的分割區,並傳回每個分割區的精確度結果。 針對每個計量,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 - 數據採礦)

散佈圖 (分析服務 - 資料探勘)
說明建立各種精確度圖表的步驟。 測試與驗證工作與作說明 (資料採礦)

另請參閱

測試與驗證 (資料採礦)