使用自動化 ML 來防止過度學習與不平衡資料
當建置機器學習模型時,過度學習與不平衡資料是常見的錯誤。 根據預設,Azure Machine Learning 中的自動化 ML 功能會提供圖表和計量,以協助您識別這些風險。 本文說明如何在自動化 ML 中實作最佳做法,以協助減輕常見問題。
識別過度學習
當模型過於適合訓練資料時,就會在機器學習中發生過度學習。 因此,模型無法對看不見的測試資料進行精確的預測。 此模型已記下訓練資料中的特定模式和噪音,但是沒有足夠的靈活性可對實際資料進行預測。
請注意下列已訓練模型及其對應的訓練和測試正確性:
模型 | 定型正確性 | 測試正確性 |
---|---|---|
A | 99.9% | 95% |
B | 87% | 87% |
C | 99.9% | 45% |
模型 A:此模型的測試會產生比模型訓練稍微較低的精確度。 存在普遍的誤解,即認為如果對隱形資料的測試正確性低於訓練正確性,則代表該模型過度學習。 不過,測試精確度應該一律小於訓練精確度。 過度學習與適當調整資料之間的差異歸結於測量精確度的多少。
模型 A 對比模型 B:模型 A 較佳,因為其測試精確度較高。 雖然測試精確度稍微低於 95%,但沒有明顯差異,表明存在過度學習。 模型 B 不是理想選擇,因為訓練和測試的正確性類似。
模型 C:此模型是表示過度學習的清晰案例。 訓練正確性很高,但測試正確性很低。 這是一項主觀的區別,但其來自對於問題和資料的了解,以及錯誤的可接受程度。
防止過度學習
在最糟糕的情況下,過度學習的模型會假設在訓練期間所出現特徵值組合,一律會產生與目標完全相同的輸出。 為了避免資料過度學習,建議遵循機器學習最佳做法。 可供您在模型實作中的數種設定方法。 根據預設,自動化 ML 也會提供其他選項,以協助防止過度學習。
下表摘要說明一般最佳做法:
最佳做法 | 實作 | 自動化 ML |
---|---|---|
使用更多訓練資料,並消除統計偏差 | X | |
防止目標洩漏 | X | |
納入較少的功能 | X | |
支援正規化和超參數最佳化 | X | |
套用模型複雜性限制 | X | |
使用交叉驗證 | X |
套用最佳做法以防止過度學習
下列各節說明您可以在機器學習模型實作中使用的最佳做法,以防止過度學習。
使用更多資料
使用更多資料是避免過度學習的最簡單且最佳方式,並且此方法通常還能夠提高正確性。 當您使用更多資料,模型更難記住確切的模式。 模型會被迫達成更靈活的解決方案,以適應更多條件。 也請務必辨識統計偏差,以避免定型資料包含不存在於即時預測資料中的偏差模式。 此案例可能難以解決,因為相較於即時測試資料,可能會出現過度學習。
防止目標洩漏
目標外洩是類似的問題。 您可能不會看到訓練集和測試集之間的過度學習,但洩漏問題會在預測期間出現。 當模型在訓練期間存取通常在預測階段不應該擁有的資料而「作弊」時,就會發生目標洩漏。 例如,模型在週一時預測到週五的商品價格。 如果您的功能意外性的包括週四的資料,模型無法在預測期間存取資料,因為模型無法看到未來。 目標洩漏是容易遺漏的錯誤。 通常,您會在正確性異常高的情況下看見此問題。 如果您嘗試預測股票價格,而定型的模型具有 95% 正確性,則特徵中便可能存在目標洩漏。
納入較少的功能
移除特徵也可以讓模型不會使用太多欄位來記住特定模式,藉此避免過度學習,使其更具彈性。 很難以量化的方式測量。 如果您可以移除功能並保留相同的正確性,您的模型可能會更有彈性,並降低過度學習的風險。
檢閱自動化 ML 功能以防止過度學習
下列各節說明自動化 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 分數是精確度和重新叫用率的調和平均數。 精確度測量分類器的精確性,其精確度越高表示錯誤越少。 召回測量分類器的完整性,其中召回率越高表示錯誤越高。