交叉驗證模型

藉由分割資料來交叉驗證分類或回歸模型的參數估計值

Category: Machine Learning/評估

注意

適用于 : Machine Learning Studio (傳統)

此內容僅適用于 Studio (傳統) 。 Azure Machine Learning 設計工具中已新增類似的拖放模組。 若要深入瞭解 這兩個版本,請參閱這篇文章

模組概觀

本文說明如何在 Azure Machine Learning Studio (傳統) 中使用 交叉驗證模型 模組。 交叉驗證 是一項重要的技術,通常用於機器學習服務,以評估資料集的變化性,以及使用該資料定型之任何模型的可靠性。

交叉驗證模型 模組會以標記的資料集做為輸入,以及未定型的分類或回歸模型。 它會將資料集分成數個 子集 (折 迭) 、在每個折迭上建立模型,然後針對每個折迭傳回一組精確度統計資料。 藉由比較所有折迭的精確度統計資料,您可以解讀資料集的品質,並瞭解模型是否容易受到資料變化的影響。

交叉驗證也會傳回資料集的預測結果和機率,讓您可以評估預測的可靠性。

交叉驗證的運作方式

  1. 交叉驗證會隨機將定型資料分成數個數據分割, 也稱為折 迭。

    • 如果您先前未分割資料集,演算法的預設值為 10 個摺疊。
    • 若要將資料集分割成不同數目的折迭,您可以使用資料 分割和範例 模組,並指出要使用多少折迭。
  2. 此模組會將折迭1中的資料設定為用於驗證 (這有時稱為「 維持折 迭) ,並使用其餘的折迭來定型模型。

    例如,如果您建立了五個折迭,模組會在交叉驗證期間產生五個模型,每個模型都會使用4/5 的資料進行定型,並在剩餘的1/5 上進行測試。

  3. 在每個折迭的模型測試期間,會評估多個精確度統計資料。 使用的統計資料取決於您正在評估的模型類型。 不同的統計資料會用來評估分類模型與回歸模型。

  4. 當所有折迭的建立和評估程式都完成時, 交叉驗證模型 會產生一組效能度量和計分結果來處理所有資料。 您應檢查這些計量,以查看是否有任何單一折迭的精確度特別高或低

交叉驗證的優點

評估模型的另一種常見方式是將資料分割成定型集和測試集(使用 分割資料),然後驗證定型資料上的模型。 不過,交叉驗證可提供一些優點:

  • 交叉驗證會使用更多的測試資料。

    交叉驗證會以較大的資料空間中指定的參數來測量模型的效能。 也就是說,交叉驗證會使用整個訓練資料集來進行定型和評估,而不是部分。 相反地,如果使用隨機劃分產生的資料來驗證模型,通常您只能根據 30% 或更少的可用資料來評估模型。

    不過,因為交叉驗證會在較大型的資料集上多次定型和驗證模型,所以需要更多運算,而且需要比在隨機分割上進行驗證更長的時間。

  • 交叉驗證會評估資料集以及模型。

    交叉驗證並不只是測量模型的精確度,還可讓您瞭解如何代表資料集,以及模型對資料變化的敏感性。

如何使用交叉驗證模型

有兩種主要的方式可以使用交叉驗證。

如果您使用大量資料,交叉驗證可能需要很長的時間來執行。 因此,您可能會在建立和測試模型的初始階段中使用 交叉驗證模型 、評估模型參數的良好程度 (假設計算時間可容忍) ,然後使用已建立的參數搭配 定型模型評估模型 模組來定型和評估模型。

簡單交叉驗證

在此案例中,您可以使用 交叉驗證模型 來定型和測試模型。

  1. 交叉驗證模型 模組新增至您的實驗。 您可以在 [評估] 下的 [ Machine Learning ] 類別中,于 Azure Machine Learning Studio (傳統) 中找到它。

  2. 連接任何 分類回歸 模型的輸出。

    例如,如果您使用 兩個類別貝氏機率分類點機器 進行分類,請使用所需的參數來設定模型,然後將連接器從分類器的未定型 模型 埠拖曳至 交叉驗證模型 的相符埠。

    提示

    模型不需要定型,因為 交叉驗證模型 會在評估過程中自動將模型定型。

  3. 在 [交叉驗證模型] 的 資料集 埠上,連接任何加上標籤的訓練資料集。

  4. 在 [交叉驗證模型] 的 [屬性] 窗格中,按一下 [啟動資料行選取器],然後選擇包含類別標籤的單一資料行或可預測的值。

  5. 如果您想要能夠在相同資料的連續執行之間重複交叉驗證的結果,請設定 隨機種子 參數的值。

  6. 執行實驗。

  7. 如需報表的描述,請參閱 [ 結果 ] 區段。

    若要取得模型的複本以供稍後重複使用,請以滑鼠右鍵按一下包含演算法的模組的輸出 (例如, 兩個類別貝氏機率分類點電腦) ,然後按一下 [ 另存為定型的模型]。

使用參數清理進行交叉驗證

在此案例中,您可以使用 [ 微調模型超參數 ],藉由執行參數清除來識別最佳模型,然後使用 [ 交叉驗證模型 ] 來檢查其可靠性。 這是讓 Azure Machine Learning 識別最佳模型,然後產生其計量的最簡單方式。

  1. 新增模型定型的資料集,並新增一個可建立分類或回歸模型的機器學習模組。

  2. 微調模型超參數 模組新增至您的實驗。 您可以在 [定型] 下的 [ Machine Learning ] 類別中找到它。

  3. 將分類或回歸模型附加至 微調模型超參數的未定型 模型 輸入。

  4. 交叉驗證模型 模組新增至您的實驗。 您可以在 [評估] 下的 [ Machine Learning ] 類別中,于 Azure Machine Learning Studio (傳統) 中找到它。

  5. 找出 [微調模型超參數] 的 定型最佳模型 輸出,然後將它連接至 交叉驗證模型 的未定型 模型 輸入。

  6. 將定型資料連線至 交叉驗證模型訓練資料集 輸入。

  7. 執行實驗。

  8. 查看結果和評估分數之後,若要取得最佳模型的複本以供稍後重複使用,只要以滑鼠右鍵按一下 [ 微調模型超參數 ] 模組、選取 [ 定型的最佳模型],然後按一下 [ 另存為定型的模型]。

注意

如果您使用 微調模型超參數 模組上的輸入做為 選擇性的驗證資料集,您可能會收到不同的結果。

這是因為當您使用此選項時,您實際上會指定靜態訓練資料集和測試資料集。 因此,交叉驗證程式也會使用指定的定型和測試資料集,而不是將資料分割成 n 個群組以進行定型和測試。 不過,計量會以 n 折迭為基礎產生。

結果

所有反復專案都完成之後, 交叉驗證模型 會為整個資料集建立分數,以及您可以用來評估模型品質的效能計量。

計分的結果

模組的第一個輸出會提供每個資料列的來源資料,以及一些預測的值和相關的機率。

若要查看這些結果,請在實驗中以滑鼠右鍵按一下 [ 交叉驗證模型 ] 模組,選取 [ 評分的結果],然後按一下 [ 視覺化]。

新增資料行名稱 Description
折迭指派 指出每個資料列在交叉驗證期間指派給的每個資料列之以零為起始的索引。
評分標籤 這個資料行會加入至資料集的結尾,並包含每個資料列的預測值。
評分機率 這個資料行會加入資料集的結尾,並指出值在 計分標籤 中的預估機率。

Evaluation results

第二個報表依折迭分組。 請記住,在執行期間, 交叉驗證模型 會隨機將定型資料分割成 n 折迭 (預設為 10) 。 在資料集的每個反復專案中, 交叉驗證模型 會使用一個折迭作為驗證資料集,並使用其餘的 n-1 折迭來定型模型。 每個 n 模型都會針對其他所有折迭中的資料進行測試。

在這份報表中,折迭是依索引值以遞增順序列出。 若要在其他任何資料行上排序,您可以將結果儲存為資料集。

若要查看這些結果,請在實驗中以滑鼠右鍵按一下 [ 交叉驗證模型 ] 模組,選取 [ 依折迭評估結果],然後按一下 [ 視覺化]。

資料行名稱 描述
折迭編號 每個折迭的識別碼。 如果您建立了5個折迭,則會有5個數據子集(編號為0到4)。
折迭中的範例數目 指派給每個折迭的資料列數目。 它們應該大致相等。
型號 模型中所使用的演算法,以 API 名稱識別

此外,根據您要評估的模型類型,每個折迭都會包含下列計量。

  • 分類模型:精確度、召回率、F 分數、AUC、平均記錄遺失、定型記錄遺失

  • 回歸模型:負面記錄可能性、平均絕對錯誤、根本 mean 平方誤差、相對絕對錯誤和判斷係數

範例

如需如何在機器學習中使用交叉驗證的範例,請參閱 Azure AI 資源庫

技術說明

  • 將資料集用於交叉驗證之前,建議您先將資料集標準化。

  • 因為 交叉驗證模型 會定型和驗證模型多次,所以需要更多運算,而且比使用隨機分割的資料集驗證模型需要更長的時間才能完成。

  • 在已指定參數的情況下,我們建議您使用 [交叉驗證模型] 來建立模型的健全度。 使用 [ 微調模型超參數 ] 來識別最佳參數。

  • 當您使用交叉驗證來測量模型的精確度時,不需要將資料集分割成定型集和測試集。

    但是,如果有上游提供驗證資料集,則此模組會使用指定的定型和測試資料集,而不是分割成 n 折迭。 也就是說,第一個資料集會用來針對每個參數組合定型模型,並在驗證資料集上評估模型。 請參閱搭配 交叉驗證使用參數清除的一節。

  • 雖然本文使用較舊版本的模組,但它對於交叉驗證程式有很大的說明: 如何選擇參數來優化您的演算法 Azure Machine Learning

預期的輸入

名稱 類型 Description
未定型的模型 ILearner 介面 用於交叉驗證資料集的未定型模型
資料集 資料表 輸入資料集

模組參數

Name 範圍 類型 預設 描述
標籤資料行 任意 ColumnSelection 選取包含要用於驗證的標籤的資料行
隨機種子 任意 整數 0 亂數產生器的種子值

這是選擇性的值。 (如果未指定)。

輸出

名稱 類型 Description
計分的結果 資料表 計分結果
依摺疊的評估結果 資料表 評估的結果 (依摺疊和全體)

例外狀況

例外狀況 描述
錯誤 0035 若未提供指定使用者或項目的特徵,就會發生例外狀況。
錯誤 0032 如果引數不是數字,就會發生例外狀況。
錯誤 0033 如果引數無限制,就會發生例外狀況。
錯誤 0001 如果找不到資料集的一或多個指定的資料行,就會發生例外狀況。
錯誤 0003 如果一或多個輸入為 Null 或空白,就會發生例外狀況。
錯誤 0006 如果參數大於或等於指定值,就會發生例外狀況。
錯誤 0008 如果參數不在範圍內,就會發生例外狀況。
錯誤 0013 如果傳遞到模組的學習者具有無效類型,就會發生例外狀況。

如需 Studio (傳統) 模組特定的錯誤清單,請參閱 Machine Learning 錯誤碼

如需 API 例外狀況的清單,請參閱 Machine Learning REST API 錯誤碼

另請參閱

評價
評估推薦
A-Z 模組清單