使用自動化 ML 來防止過度學習與不平衡資料

當建置機器學習模型時,過度學習與不平衡資料是常見的錯誤。 根據預設,Azure Machine Learning 的自動化 ML 可提供圖表與計量,以協助找出這些風險,並實作最佳做法以協助降低這些風險。

識別過度學習

機器學習中的過度學習會在模型與定型資料相符程度太過完美時發生,導致無法正確預測隱形測試資料。 換句話說,此模型已記下定型資料中的特定模式和失真,但是沒有足夠的彈性可對實際資料進行預測。

請注意下列已定型模型及其對應的定型和測試正確性。

模型 定型正確性 測試正確性
A 99.9% 95%
B 87% 87%
C 99.9% 45%

對於 A 模型,存在一個普遍的誤解,即認為如果對隱形資料的測試正確性低於定型正確性,則代表該模型過度學習。 實際上,測試正確性應始終小於定型正確性,過度學習與適當學習其的區別在於正確性的「下降幅度」

比較 AB 模型,A 模型是較佳的模型,因為該模型擁有更高的測試正確性,雖然測試正確性為 95% 略低於定型正確性,但這種微小差異並不代表存在著過度學習。 您不會因為定型和測試正確性較接近就選擇 B 模型。

C 模型則明顯為過度學習的案例;其定型正確性高,但測試正確性卻沒有那麼高。 這是一項主觀的區別,但其來自對於問題和資料的了解,以及可接受錯誤的程度。

防止過度學習

在最糟糕的情況下,過度學習的模型會假設在定型期間所出現特徵值組合,一律會產生與目標完全相同的輸出。

避免過度學習的最佳方式就是遵循 ML 最佳做法,包括:

  • 使用更多定型資料,並消除統計偏差
  • 防止目標洩漏
  • 使用較少的特徵
  • 正規化和超參數最佳化
  • 模型複雜性限制
  • 交叉驗證

在自動化 ML 的內容中,前三種方式會列出您實作的最佳做法。 後三個粗體顯示項目依預設為由自動化 ML 實作的最佳做法,以防止過度學習。 在自動化 ML 以外的設定中,所有六個最佳做法都值得遵循,以避免模型過度學習。

由您實作的最佳做法

使用更多資料

使用更多資料是避免過度學習的最簡單且最佳方式,且通常還能夠同時提高正確性。 當使用更多資料時,模型會變得更難記住確切的模式,並會迫使模型使用更有彈性的解決方案,以容納更多條件。 也請務必辨識統計偏差,以避免定型資料包含不存在於即時預測資料中的偏差模式。 此案例可能難以解決,因為相較於即時測試資料,可能會出現過度學習。

防止目標洩漏

目標洩漏是類似的問題,您可能不會在定型/測試集中發現過度學習,而是在預測階段時出現過度學習。 當模型在定型期間存取通常在預測階段不應該擁有的資料而「作弊」時,就會發生目標洩漏。 例如,若要在星期一時預測某項商品在星期五的價格,但若您的一項特徵不小心包含了星期四的資料,這就是模型在預測階段不該出現的資料,因為模型並無法透視未來。 目標洩漏是很容易遺漏的錯誤,其特點往往是因為問題具有異常高的正確性。 如果您嘗試預測股票價格,而定型的模型具有 95% 正確性,則特徵中便可能存在目標洩漏。

使用較少的特徵

移除特徵也可以讓模型不會使用太多欄位來記住特定模式,藉此避免過度學習,使其更具彈性。 定量測量可能很困難,但如果您可移除特徵並維持相同的正確性,則或許能夠讓模型更具彈性,並降低過度學習的風險。

由自動化 ML 實作的最佳做法

正規化和超參數微調

正規化是將成本函式最小化以抑制複雜且過度學習模型的程序。 正規化函式的類型有許多種,但在一般情況下,這類函式會抑制模型的係數大小、變異數和複雜度。 自動化 ML 會以不同的組合使用 L1 (Lasso)、L2 (Ridge) 以及 ElasticNet (同時使用 L1 和 L2) 的不同組合,並搭配不同模型超參數設定來控制過度學習。 自動化 ML 會因模型受管制的程度而有所不同,並選擇最佳的結果。

模型複雜性限制

自動化 ML 也會實作明確的模型複雜性限制來避免過度學習。 在大部分情況下,此實作專門用於決策樹或樹系演算法,其中個別樹狀結構的最大深度會受到限制,而樹系或整體技術所使用的樹狀結構總數亦會受到限制。

交叉驗證

交叉驗證 (CV) 是採納完整定型資料中的許多子集,並在個別子集上定型模型的程序。 其概念是,模型可能會「幸運地」在其中一個子集取得絕佳的正確性,但使用許多子集時,模型並不會每次都達到如此高的正確性。 執行 CV 時,您會提供驗證用的鑑效組資料集、指定 CV 摺疊 (子集數目),然後自動化 ML 將定型模型並微調超參數,以將驗證集的錯誤降至最低。 單一 CV 摺疊可能會出現過度學習,但藉由使用許多摺疊,即可減少最終模型過度學習的機率。 其缺點是,CV 的定型時間較長而產生較高的成本,因為您在 CV 子集中針對每個 n 要定型模型一次。

注意

交叉驗證並非預設啟用項目;其必須在自動化機器學習設定中進行設定。 不過,在設定交叉驗證並提供驗證資料集之後,便能夠將程序自動化。

識別具有不平衡資料的模型

不平衡資料通常會在機器學習分類案例的資料中被發現,這代表在每個類別中包含不成比例的觀察資料。 不平衡資料可能會造成對模型正確性判斷錯誤,因為輸入的資料偏向同一種類別,導致定型的模型針對該偏差進行模擬。

此外,自動化 ML 作業會自動產生下列圖表。 這些圖表可協助您了解模型分類的正確程度,並識別可能受到不平衡資料影響的模型。

圖表​​ 描述
混淆矩陣 根據資料的實際標籤,評估正確分類的標籤。
精確度與重新叫用率 根據資料中所找到標籤執行個體的比率,評估正確標籤的比率
ROC 曲線 根據誤判標籤的比例,評估正確標籤的比率。

處理不平衡的資料

自動化 ML 在簡化機器學習工作流程的目標過程中,具備內建的功能,可協助處理不平衡資料,例如,

  • 加權資料行:自動化 ML 會建立加權資料行做為輸入,讓資料中的資料列向上或向下加權,以用來增加或減少類別的「重要性」。

  • 當少數類別中的樣本數目等於或少於多數類別中樣本數目的 20% 時,自動化 ML 所使用的演算法會偵測到不平衡的情況,其中少數類別指的是樣本數最少的類別,多數類別指的是樣本數最多的類別。 接著,自動化機器學習會使用子樣本資料來執行實驗,以檢查使用類別加權是否可解決此問題並改善效能。 如果其發現透過此實驗可獲得更好的效能,便會套用此補救措施。

  • 使用效能指標來更適當地處理不平衡資料。 例如,AUC_weighted 這個主要計量會根據代表該類別的樣本相對數目來計算每個類別的比重,因此更能防止不平衡的情況。

下列技術是在自動化 ML 以外處理不平衡資料的其他選項。

  • 重新取樣以平衡類別 (將較少類別向上取樣或將較多類別向下取樣)。 這些方法需要專業知識來處理和分析。

  • 檢閱不平衡資料的效能計量。 例如,F1 分數是精確度和重新叫用率的調和平均數。 精確度會測量分類器的精確程度 (精確度越高表示誤判為真的情形越少),而重新叫用率則會測量分類器的完整性 (重新叫用率越高表示誤判為否的情形越少)。

下一步

查看範例並了解如何使用自動化 ML 來建置模型: