機器學習中的過擬合

機器學習中的過擬合

來自專欄人工智慧邂逅量化投資8 人贊了文章

成千上萬的數據科學新手會在不知不覺中犯下一個錯誤,這個錯誤可以一手毀掉你的機器學習模型,這並不誇張。你知道是什麼嗎?

我們現在來討論應用機器學習中最棘手的障礙之一:過擬合(overfitting)

在本文中,我們將詳細介紹過擬合、如何在模型中識別過擬合,以及如何處理過擬合。最後你會學會如何一勞永逸地處理這個棘手的問題。你將讀到下面這些內容:

  1. 過擬合的例子
  2. 信號與噪音
  3. 擬合優度
  4. 過擬合和欠擬合
  5. 如何檢查過擬合
  6. 如何避免過擬合

過擬合的例子

如果我們想根據一個學生的簡歷預測她是否會獲得面試機會。現在,假設我們從10000份簡歷的數據集及其結果中訓練模型。接下來,我們在原始數據集上嘗試這個模型,它預測結果的準確率達到99%……哇!但這是個壞消息。當我們在簡歷的新(「沒見過的」)數據集上運行模型時,我們只能獲得50%的準確度…

我們的模型從訓練數據到新數據的泛化能力並不好。

這被稱為過擬合,也是機器學習和數據科學中的常見問題。事實上,過擬合在現實世界中也一直在發生著。看看這樣的新聞報道:

信號與噪音

您可能聽說過Nate Silver著名的《信號與噪音》一書。在預測建模中,您可以將「信號」視為希望從數據中學習到的真正底層模式。另一方面,「噪音」指的是數據集中無關的信息或隨機性。例如,假設您正在建模兒童身高與年齡的關係。如果您對大部分人口進行抽樣,您會發現一個非常明確的關係:

這就是是信號。然而,如果你只能對當地的一所學校進行抽樣調查,這種關係可能會更加複雜。 它會受到異常值(比如,爸爸是NBA球員的孩子)和隨機性(例如在不同年齡段進入青春期的孩子)的影響。

「噪音干擾了信號」

這成為機器學習的用武之地,一個運行良好的機器學習演算法能將信號從雜訊中分離出來。

如果演算法過於複雜或靈活(例如,它有太多的輸入特性或它沒有適當的正則化),它最終可能「記住噪音」而不是找到信號。

這個過擬合模型將基於這些雜訊進行預測。它將在訓練數據上表現得異常出色……但在新的、未見過的數據上表現得非常糟糕。

擬合優度

在統計學中,擬合優度是指模型的預測值與觀測值(真實)的匹配程度。一個學習了雜訊而不是信號的模型被認為是「過擬合」的,因為它適合訓練數據集,但與新數據集的擬合度較差。

過擬合和欠擬合

通過觀察相反的問題,我們可以更好地理解欠擬合。 當一個模型過於簡單時,因為它的特性太少,或者過於正則化,就會出現欠擬合現象,這使得它在學習數據集時不夠靈活。簡單的模型在預測結果上往往有較小的方差和較大的偏差(見:偏差-方差權衡)。另一方面,複雜的模型往往在預測中有更大的方差。

偏差和方差都是機器學習中預測誤差的兩種形式。

通常,我們可以減少由偏差引起的誤差,但同時可能會增加由方差帶來的誤差,反之亦然。太簡單(高偏差)與過於複雜(高方差)之間的權衡是統計和機器學習中的關鍵概念,也是影響所有監督學習演算法的關鍵概念。

如何檢查過擬合

過擬合以及機器學習的一個關鍵挑戰是,在我們實際測試之前,我們無法知道模型對新數據的執行情況。為了解決這個問題,我們可以將初始數據集拆分為單獨的訓練測試子集。

這種方法可以估計出我們的模型在新數據上的表現。

如果我們的模型在訓練集上比在測試集中表現得好得多,那麼我們很可能會過擬合。

例如,如果我們的模型在訓練集上有99%的準確率,但在測試集上只有55%的準確率,那將是一個很危險的信號。

另一個建議是從一個非常簡單的模型開始,以此作為基準。

然後,當您嘗試更複雜的演算法時,您將有一個參考基準來查看額外的複雜性是否值得。這是奧卡姆剃刀試驗。如果兩個模型具有類似的性能,那麼通常應該選擇比較簡單的一個。

如何避免過擬合

檢查過擬合是有用的,但它不能解決問題。幸運的是,有幾個方法您可以嘗試。以下是一些最常用的過擬合解決方案:

1.交叉驗證

交叉驗證是預防過擬合的一個強有力措施。

將您的初始訓練數據拆分成多個數據集(類似於迷你火車),使用這些拆分子集來調整模型,這是一個聰明的想法。在標準的K-fold交叉驗證中,我們將數據劃分為K個子集,稱為「摺疊(folds)」。然後我們迭代地在K-1個摺疊上訓練演算法,同時使用剩餘的摺疊作為測試集。

交叉驗證允許您僅使用原始訓練集來調整超參數。這使您可以將測試集保存為真正「未見過」的數據集,以便選擇最終模型。

2.使用更多數據

它不會每次都有效,但是使用更多數據進行訓練可以幫助演算法更好地檢測到信號。

在早期的兒童身高與年齡建模的例子中,很明顯如何抽樣更多的學校將有助於您的模型。當然,情況並非總是如此。如果我們只是添加更多的雜訊數據,這種技術將無濟於事。這就是為什麼您應該始終確保您的數據是乾淨和相關的。

3.刪除無用特徵

有些演算法有內置的特徵選擇。 您可以通過刪除不相關的輸入特性來手動改進它們的通用性。

一種有趣的方法是通過描述每個特性是如何融入模型的。如果很難證明一些特性的存在合理性,說明這些特徵是沒必要的。

4.及時中止

當您迭代訓練學習演算法時,您可以度量模型的每次迭代的執行情況。

當迭代至一定次數之前,新的迭代會不斷改進模型。然而,在那之後,模型的泛化能力會隨著訓練數據開始過擬合而減弱。

現在,這種方法主要用於深度學習,而其他的方法(如正則化)更適合於經典的機器學習。

5.正則化

正則化是指人為地迫使模型變得更簡單的一系列技術。這個方法將取決於你使用的模型類型。例如,您可以修剪決策樹,在神經網路上使用dropout,或者在回歸中向代價函數添加一個懲罰參數。

通常,正則化方法也是一個超參數,這意味著它可以通過交叉驗證進行調優。

6.集成學習

集成(Ensembling)是一種機器學習方法,用於將多個不同模型的預測組合在一起。

集成有幾種不同的方法,但最常見的兩種是:

Bagging:降低複雜模型過擬合的可能性。

  • 它同時訓練大量「強大」的模型。
  • 一個「強大」的模型是一個相對不受約束的模型。
  • 然後將所有「強大」的模型結合在一起,以「平滑」他們的預測。

Boosting:改進簡單模型的預測能力。

  • 它訓練大量「弱」的模型。
  • 一個「弱」模型是一個受約束的模型(例如,你可以限制每個決策樹的最大深度)。
  • 每個模型都專註於從之前的錯誤中學習。
  • 然後把所有的弱學習者組合成一個強大的學習者。

雖然Bagging和Boosting都是集成方法,但它們從相反的方向解決問題。Bagging使用複雜的基礎模型,試圖「平滑」他們的預測,而Boosting使用簡單的基礎模型,並試圖「提高」他們的總複雜度。

原文鏈接:《機器學習中的過擬合》

u.wechat.com/MM-vsIjPjN (二維碼自動識別)


推薦閱讀:

iForest (Isolation Forest)孤立森林 異常檢測 入門篇
Day6-《The Introduction of Statistical Learning》學習筆記
[貝葉斯九]之EM演算法
談談機器學習與數據分析中的問題定義
一起來學西瓜書! 第二章 模型評估與選擇

TAG:機器學習 | 數據科學 | 數據分析 |