交叉驗證 (Analysis Services - 資料採礦)

交叉驗證是一項標準分析工具,而且它是協助您開發並微調資料採礦模型的重要功能。在您建立了採礦結構和相關的採礦模型之後,就可以使用交叉驗證來確定模型的有效性。交叉驗證具有下列應用方式:

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

  • 從單一陳述式評估多個模型。

  • 建立多個模型,然後根據統計資料來識別最佳模型。

本節將說明如何使用 SQL Server 2008 中提供的交叉驗證功能,以及如何解譯特定模型或資料集之交叉驗證的結果。您可以將交叉驗證當做一組預存程序執行。此外,您也可以從 Business Intelligence Development Studio 中的資料採礦設計師使用交叉驗證。

交叉驗證程序的概觀

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

  • 選取目標採礦結構。

  • 指定您想要測試的模型。

  • 指定要將結構資料分割成的目標摺疊數目。

  • Analysis Services 所建立並定型的模型數目與摺疊數目一樣。

  • 若要產生結果,您必須針對測試定型的模型指定參數。

  • 指定測試資料的來源 (只有在您使用預存程序時才能使用這項功能)。

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

  • 然後,Analysis Services 會針對每個模型中的每個摺疊傳回一組精確度標準。您也可以針對整個資料集傳回精確度標準。

在資料採礦設計師中使用交叉驗證

如果您在 Business Intelligence Development Studio 中使用 [採礦精確度圖表] 檢視的 [交叉驗證] 索引標籤,藉以執行交叉驗證,就可以在單一表單中設定定型和精確度結果參數。這樣可讓您更輕易地設定和檢視結果。您可以測量與單一採礦結構有關之所有採礦模型的精確度,然後立即在 HTML 報表中檢視結果。

如需有關報表格式的詳細資訊,以及交叉驗證所提供的精確度標準,請參閱<交叉驗證報表 (Analysis Services - 資料採礦)>。

如需有關如何在 Business Intelligence Development Studio 中設定交叉驗證參數的詳細資訊,請參閱<交叉驗證索引標籤 (採礦精確度圖表檢視)>。

使用交叉驗證預存程序

對於進階使用者而言,交叉驗證也可以當做四個系統預存程序使用。您可以從 SQL Server Management Studio 或任何 Managed 程式碼應用程式連接至 Analysis Services 2008 執行個體,藉以執行這些預存程序。

這些預存程序是依據採礦模型類型分組的。第一對程序只能使用群集模型。第二對程序則可使用其他採礦模型。

[!附註]

交叉驗證無法搭配包含 KEY TIME 資料行或 KEY SEQUENCE 資料行的任何模型使用。

對於每種採礦模型類型而言,系統提供了兩個預存程序。第一個程序所建立的資料分割數目與您在資料集內部指定的數目一樣,而且它會針對每個資料分割傳回精確度結果。Analysis Services 會針對每個標準計算資料分割的平均和標準差。

第二個預存程序不會分割資料集,但是它會針對整個指定的資料集傳回精確度結果。如果採礦結構及其模型已經進行資料分割和處理,您也可以使用第二個預存程序。

分割資料並產生資料分割的標準

SystemGetCrossValidationResults (Analysis Services - 資料採礦)

SystemGetClusterCrossValidationResults (Analysis Services - 資料採礦)

產生整個資料集的標準

SystemGetAccuracyResults (Analysis Services - 資料採礦)

SystemGetClusterAccuracyResults (Analysis Services - 資料採礦)

設定交叉驗證

您可以自訂交叉驗證的運作方式,以便控制交叉的數目、測試的模型,以及預測的精確度列。如果您使用交叉驗證預存程序,就可以同時指定用來驗證模型的資料集。這些豐富的選項表示您可以輕易地產生許多組之後必須比較和分析的不同結果。

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

設定資料分割的數目

當您指定資料分割的數目時,便決定了即將建立的暫時性模型數目。對於每個資料分割而言,資料的交叉會標幟為當做測試集使用,而且針對不在資料分割中的其餘資料所做的定型會建立新的模型。這項程序會重複進行,直到 Analysis Services 已建立並測試指定的模型數目為止。您指定要用於交叉驗證的資料會平均地分配給所有資料分割。

下圖中的範例將說明指定了三個摺疊時,資料的使用方式。

交叉驗證如何分割資料

在上圖的狀況中,採礦結構包含用於測試的鑑效組資料集,但是尚未加入用於交叉驗證的測試資料集。因此,訓練資料集中的所有資料 (採礦結構中 70% 的資料) 都會用於交叉驗證。交叉驗證報表會顯示每個資料分割中所用的案例總數。

您也可以指定要使用的整體案例數目,藉以指定在交叉驗證期間使用的資料量。這些案例會平均地分配給所有摺疊。

如果採礦結構儲存在 SQL Server Analysis Services 的執行個體中,您可以針對摺疊數目設定的最大值就是 256 或案例的數目 (兩者取較小者)。如果您要使用工作階段採礦結構,最大摺疊數目就是 10。

[!附註]

當您增加摺疊的數目時,執行交叉驗證所需的時間就會因而增加,因為系統必須針對每個摺疊產生並測試一個模型。如果摺疊的數目過高,您可能會遇到效能問題。

定義測試資料

當您執行計算精確度的預存程序 (SystemGetAccuracyResults (Analysis Services - 資料採礦)SystemGetClusterAccuracyResults (Analysis Services - 資料採礦)) 時,可以使用下列選項的組合來指定交叉驗證期間用於測試的資料來源:

  • 僅使用定型資料。

  • 包含現有的測試資料集。

  • 僅使用測試資料集。

  • 將現有的篩選套用至每個模型。

  • 定型集、測試集和模型篩選的任何組合。

您可以提供 DataSet 參數值,藉以控制測試資料集的構成要素。

如果您使用資料採礦設計師中的 [交叉驗證] 報表 來執行交叉驗證,就無法變更所使用的資料集。根據預設,系統會使用每個模型的定型案例。如果某個篩選與某個模型相關聯,就會套用此篩選。

篩選採礦模型的交叉驗證

如果您要測試多個採礦模型,而且這些模型具有篩選,系統就會個別篩選每個模型。您無法在交叉驗證期間將篩選加入至模型,或變更模型的篩選。

由於交叉驗證預設會測試與結構相關聯的所有採礦模型,因此如果某些模型具有篩選而其他沒有,您可能就會收到不一致的結果。若要確保您只會比較這些具有相同篩選的模型,您應該使用預存程序並指定採礦模型的清單。或者,請單獨使用沒有篩選的採礦結構測試集來確保系統會針對所有模型使用一致的資料集。

設定精確度臨界值

此狀態臨界值可讓您設定預測的精確度列。對於每個情況而言,模型會計算預測狀態正確的機率,稱為「預測機率」(Predict Probability)。如果預測機率超過精確度列,預測就會計算成正確。如果沒有超過,預測就會計算成不正確。您可以將 [狀態臨界值] 設定為介於 0.0 與 1.0 之間的數字來控制此值,其中較接近 1 的數字代表對於預測有信心的強烈等級,而較接近 0 的數字則代表預測不太可能成真。狀態臨界值的預測值為 NULL,表示具有最高機率的預測狀態會被視為目標值。

[!附註]

雖然您可以設定 0.0 的值,但這樣做沒有意義,因為每個預測將計算成正確,即使是機率為零的預測也一樣。請小心不要將 [狀態臨界值] 設定為 0.0。

例如,您有三個預測資料行 [Bike Buyer] 的模型,而且您想要預測的值為 1,表示「是的,將會購買」。這三個模型傳回預測機率為 0.05、0.15 和 0.8 的預測。如果您將狀態臨界值設定為 0.10,其中兩個預測就會計算成正確。如果您將狀態臨界值設定為 0.5,只有一個模型會計算成已傳回正確的預測。如果您使用預設值 Null,最可能的預測就會計算成正確。在此情況中,這三個預測都會計算成正確。

交叉驗證中使用的標準

系統會根據特定採礦模型類型、可預測屬性的資料類型,以及可預測的屬性值 (如果有的話),產生不同的精確度標準。本節定義了一些主要標準,供您參考。如需在每個模型之報表中傳回的精確度標準清單 (依類型分組),請參閱<交叉驗證報表 (Analysis Services - 資料採礦)>。

量值

適用於

實作

分類:真肯定、誤判、真否定、誤否定

離散屬性,已指定值

資料分割中的資料列或值計數,其中預測機率大於狀態臨界值,而且預測的狀態與目標狀態相符。

分類:通過/失敗

離散屬性,沒有指定的目標

資料分割中的資料列或值計數,其中預測的狀態與目標狀態相符,而且預測機率值大於 0。

增益

離散屬性。您可以指定目標值,但並非必要條件。

包含目標屬性值之所有資料列的平均對數可能性,其中每一個案例的對數可能性會計算為 Log(ActualProbability/MarginalProbability)。若要計算平均值,對數可能性值總和會除以輸入資料集內的資料列數,不包括遺失目標屬性值的資料列。增益可以是負數或正數。正數代表比隨機猜測效果好的有效模型。

對數分數

離散屬性。您可以指定目標值,但並非必要條件。

每一個案例的實際機率對數,並加總起來,然後除以輸入資料集內的資料列數,不包括遺失目標屬性值的資料列。因為機率會表示為小數,所以對數分數一定是負數。

案例可能性

叢集

所有案例的叢集可能性分數總和,除以資料分割內的案例數,不包括遺失目標屬性值的資料列。

平均絕對誤差

連續屬性

資料分割內所有案例的絕對誤差總和,除以資料分割中的案例數目,不包括遺失值的案例。

均方根誤差

連續屬性

資料分割之均方根誤差的平方根。

均方根誤差

離散屬性。您可以指定目標值,但並非必要條件。

機率分數補數之平方平均值的平方根,除以資料分割內的案例數,不包括遺失目標屬性值的資料列。

均方根誤差

離散屬性,沒有指定的目標。

機率分數補數之平方平均值的平方根,除以資料分割內的案例數,不包括遺失目標屬性值的案例。