教你簡單解決過擬合問題
作者:Ahmed Gad
翻譯:韓海疇
校對:丁楠雅
本文約2000字,建議閱讀5分鐘。
本文帶大家認識了什麼是過擬合,並且示範了用正則化的方法來避免過擬合的問題。
多項式回歸&過擬合
你可能訓練過這樣的機器學習模型,它在訓練樣本上表現得無可挑剔,卻在新樣本預測上一塌糊塗。你可曾想過為什麼會發生這種問題嗎?本文解釋了作為其中原因之一的過擬合,並用簡單步驟示範了基於回歸的正則化方法來避免過擬合問題。
機器學習就是用數據和演算法訓練一個模型來對從未見過的數據(測試數據)進行準確預測。舉個例子,為了得到一個分類器,專家需要搜集機器學習演算法所需的訓練數據。專家負責找到最佳的、能夠將不同類別的事物區分開來的特徵。這些特徵將被用於訓練機器學習演算法。比方說我們準備用下面的訓練數據創建一個識別圖片里是否有貓的機器學習模型。
我們首先要回答的問題是:「最佳特徵是什麼?」,這是機器學習中的關鍵問題,選擇的特徵越正確,模型將來給出的預測就會越準確,反之亦然。讓我們試著觀察上述圖形並找出貓的若干代表性特徵,比如兩個黑色瞳孔和兩隻對角線方向的耳朵。假設我們設法從上面的訓練圖像提取了這些特徵並創建了一個機器學習模型。這個模型得到了存在於大部分貓身上的特徵,所以能夠處理各種各樣關於貓的圖像。我們可以在新的數據上對這個模型進行測試。假設模型對測試數據的分類準確性是x%。
人們希望提高分類的準確性時,第一個想到的辦法是使用比原來更多的特徵。因為有區分度的特徵越多,模型準確率就越高。通過再次檢查訓練數據我們能發現更多的特徵,比如圖像的整體顏色,訓練數據中的所有貓都是白色的、眼睛虹膜是黃色的。特徵向量會有如下所示的四個特徵,這些特徵將被用來再次訓練機器學習模型。
把模型訓練好後接著測試它。加入新的特徵向量後,預期的分類準確性測試結果比x%變小了。為什麼會這樣?因為訓練數據中的部分特徵並不是在所有貓的圖片中都存在。測試數據里有黑貓和黃貓,訓練數據中只有白貓。有的貓也沒有黃色的虹膜。
這種選用特徵在訓練樣本中表現出色但在測試樣本中表現糟糕的情況被稱為過擬合。模型所使用的一些特徵只在訓練數據中出現,但在測試數據中並不存在。
上文用一個複雜的案例通俗地解釋了過擬合的概念。但為了詳細說明,使用簡單的例子會更好。因此下文的討論將以回歸為例。
通過一個回歸案例理解正則化
假如我們想創建一個契合下圖所示數據的回歸模型。我們可以用多項式回歸。
我們可以從一次線性模型開始,這是最簡單的模型。
其中和是模型參數,x是唯一使用的特徵,該模型的圖像如下:
基於下面給出的損失函數,我們可以看到該模型和數據擬合得不是很好。
其中是樣本的模型輸出值,是該樣本的期望輸出值。
上面的模型太過簡單,有許多預測數值都不準確。因此,我們應該找一個更複雜的、能和數據有較好擬合的模型。為此,我們可以將方程的次方從一次提升到二次。如下:
當把特徵提升至二次方後,我們創建了一個新的特徵。同時,我們不僅捕捉到了數據中的線性部分,也捕捉到了部分非線性的數據。新的模型圖如下所示:
從上圖可看出二項式對數據的擬合度好於一項式。但是二次方程在某些數據樣本上仍擬合得不太好。於是我們創建了一個更複雜的三次多項式模型,如下:
模型圖會變成這樣:
可以看出新的模型在加上新的特徵後捕捉到了更多的三次方數據,對數據的擬合度更好。為了進一步提升擬合度,我們將方程提升到四次方,如下:
模型圖變成這樣:
看起來多項式方程的方次越高模型的擬合度越好。但是有些重要的問題需要回答。如果通過增加特徵數量來增加多項式的次方數就能得到更好的結果,為什麼不用一個非常高次方的方案,比如100次方?解決一個問題所用的方程最佳次方數應該是多少?
模型載荷/複雜度
有一個術語叫「載荷」或「複雜度」。模型的載荷/複雜度指的是模型可處理的變數數量。載荷越大,則模型能處理的變數數越多。第一個模型的載荷就比第四個模型的載荷要小。在我們的案例中,載荷是隨多項式次方數的增加而增加的。
毫無疑問,多項式方程的次方數越大,對數據的擬合度就越好。但需要記住增加多項式的次方也會增加模型的複雜性。如果模型的載荷過高可能會導致過擬合。這種情況下,模型會變得非常複雜,與訓練數據擬合得很好,但是在新的數據上表現很差。而機器學習的目標不僅僅是創建一個在訓練數據上表現強勁的模型,還期望模型在新的數據樣本上同樣出色。
四次方模型是非常複雜的。的確,它與舊有的數據契合度很好,但在未見過的數據上就未必了。在這個情況下,該方程中新選用的特徵抓取了過量的細節。因新的特徵將模型變得過於複雜,我們需要將其剔除。
在這個例子中,我們已經知道哪個特徵需要被剔除。於是,我們可以將模型恢復到原有的三次模型()。但在實際工作中,我們不知道具體該剔除哪個特徵。同時,假如新的特徵不是特別糟糕,我們只想削弱它而非完全剔除它。我們該怎麼做呢?
回顧損失函數,它唯一的目標就是將預測錯誤值最小化/削弱。我們可以設置一個將的影響最小化的新目標。損失函數經調整以削弱後會變成下面這樣:
我們現在的目標是將損失函數最小化。我們現在只對將其中的項「」最小化感興趣。顯而易見,為了將最小化,我們應該將最小化,因為這是我們唯一能改變的自由參數。如果這個特徵非常糟糕,我們可以將參數設為零從而完全將其剔除,如下:
通過將其剔除,我們回到了原來的三次多項式方程。在已有數據上的表現不如,但總的來說,它在新數據上的表現會比好。
但如果是一個比較好的特徵,我們只是想減弱它的影響而非完全剔除它,我們可以將它的值設得接近(比如0.1),如下。通過這樣,我們限制了的效用。因此,新模型不會像原先那樣複雜。
回頭看,看起來它比要簡單,它在已有的和未見過的數據樣本中都有良好表現。所以,我們應剔除在中使的新特徵或在它表現尚可的情況下減弱其影響。我們可以通過調整損失函數來實現這點。
正則化
請注意,我們因為有數據圖像而確實知道是最契合數據的模型。這是一個我們能手動解決的簡單問題。但是隨著樣本數量和數據的增加,以及我們手頭沒有數據圖像一類的信息時,我們就無法輕易得出相關結論。必須有一個東西自動告訴我們哪個次方的模型最契合數據並告訴我們應對未知數據時應該削弱哪一個特徵。
正則化會幫助我們選擇適合數據的模型複雜度。這在自動削弱那些把模型複雜度搞得過高的特徵方面很有用。當選用的特徵不算太差、多少能幫助我們改善預測結果以至於我們只是想削弱特徵而非移除特徵時,正則化是非常有用的。正則化會削弱所有選用的特徵而非某個選定的子集。我們之前的例子只是削弱了、這兩個特徵。但這種情況在運用正則化時不會發生。
通過運用正則化方法,一個新的項被加入了損失函數以削弱特徵,從而使損失函數變成下面這樣:
也可以在將Λ移出後把式子寫成這樣。
新加入的項用於削弱特徵以控制模型的複雜度。我們在加入正則化的項之前的目標是儘可能減小預測誤差。現在我們的目標是儘可能減小誤差的同時避免模型變得過於複雜、避免過擬合。
正則化參數lambda (λ)控制如何削弱特徵。這是一個沒有固定值的超參數。它的值基於手頭的任務而變化,當它的值上升時,特徵會被削弱得很厲害,其結果是讓模型變得更簡單。反之,特徵被削弱得不那麼厲害,模型複雜度上升。(λ)為零則意味著特徵沒有削弱。
當(λ)為零時,的數值如下面的方程一樣沒有被削弱。這是因為把(λ)的值設為意味著去除正則化項並對誤差放任不管。於是,我們的目標將變成僅把誤差最小化到接近。當最小化誤差成為目標時,模型可能會過擬合。
但是當削弱參數λ的值非常大時(比方說一個億),對參數的削弱將是巨大的,為了將損失控制在其最小值,會造成參數為的結果。模型會有一個如下所示被削弱的。
請注意,正則化的項數是從1而非開始。實際上,我們只用正則化值來削弱特徵()。因為不是一個相關特徵,我們沒有理由去削弱它。在這種情況下,模型將會是如下圖的。
作者簡介:Ahmed Gad於2015年7月獲埃及Menoufia大學計算機與信息學院學士學位及優秀學生榮譽稱號。他作為學院中的第一名在2015年被推薦到埃及的一所學院任助教並在2016年在學院中兼任研究員工作。他目前的研究方向包括深度學習、機器學習、人工智慧、數字信號處理和計算機視覺。
譯者簡介
韓海疇,中國人民大學2014屆市場營銷系本科畢業生,目前在海南工作。對大數據在市場營銷及金融方面的運用感興趣。希望能在數據派THU這個平台上與志同道合的朋友們一起學習和交流。
轉載須知
如需轉載,請在開篇顯著位置註明作者和出處(轉自:數據派ID:datapi),並在文章結尾放置數據派醒目二維碼。有原創標識文章,請發送【文章名稱-待授權公眾號名稱及ID】至聯繫郵箱,申請白名單授權並按要求編輯。
發布後請將鏈接反饋至聯繫郵箱(見下方)。未經許可的轉載以及改編者,我們將依法追究其法律責任。


※一文讀懂FM演算法優勢,並用python實現!
※精選大咖演講乾貨、精華筆記、課件分享
TAG:數據派THU |