1. 程式人生 > >教你簡單解決過擬合問題(附公式)

教你簡單解決過擬合問題(附公式)

640?wx_fmt=png

作者:Ahmed Gad

翻譯:韓海疇

校對:丁楠雅

本文約2000字,建議閱讀5分鐘
本文帶大家認識了什麼是過擬合,並且示範了用正則化的方法來避免過擬合的問題。

640?wx_fmt=png

多項式迴歸&過擬合

你可能訓練過這樣的機器學習模型,它在訓練樣本上表現得無可挑剔,卻在新樣本預測上一塌糊塗。你可曾想過為什麼會發生這種問題嗎?本文解釋了作為其中原因之一的過擬合,並用簡單步驟示範了基於迴歸的正則化方法來避免過擬合問題。

機器學習就是用資料和演算法訓練一個模型來對從未見過的資料(測試資料)進行準確預測。舉個例子,為了得到一個分類器,專家需要蒐集機器學習演算法所需的訓練資料。專家負責找到最佳的、能夠將不同類別的事物區分開來的特徵。這些特徵將被用於訓練機器學習演算法。比方說我們準備用下面的訓練資料建立一個識別圖片裡是否有貓的機器學習模型。

640?wx_fmt=png

我們首先要回答的問題是:最佳特徵是什麼?,這是機器學習中的關鍵問題,選擇的特徵越正確,模型將來給出的預測就會越準確,反之亦然。讓我們試著觀察上述圖形並找出貓的若干代表性特徵,比如兩個黑色瞳孔和兩隻對角線方向的耳朵。假設我們設法從上面的訓練影象提取了這些特徵並建立了一個機器學習模型。這個模型得到了存在於大部分貓身上的特徵,所以能夠處理各種各樣關於貓的影象。我們可以在新的資料上對這個模型進行測試。假設模型對測試資料的分類準確性是x%

640?wx_fmt=png

人們希望提高分類的準確性時,第一個想到的辦法是使用比原來更多的特徵。因為有區分度的特徵越多,模型準確率就越高。通過再次檢查訓練資料我們能發現更多的特徵,比如影象的整體顏色,訓練資料中的所有貓都是白色的、眼睛虹膜是黃色的。特徵向量會有如下所示的四個特徵,這些特徵將被用來再次訓練機器學習模型。

特徵

黑色瞳孔

對角線耳朵

白色毛色

黃色虹膜

把模型訓練好後接著測試它。加入新的特徵向量後,預期的分類準確性測試結果比x%變小了。為什麼會這樣?因為訓練資料中的部分特徵並不是在所有貓的圖片中都存在。測試資料裡有黑貓和黃貓,訓練資料中只有白貓。有的貓也沒有黃色的虹膜。

這種選用特徵在訓練樣本中表現出色但在測試樣本中表現糟糕的情況被稱為過擬合。模型所使用的一些特徵只在訓練資料中出現,但在測試資料中並不存在。

上文用一個複雜的案例通俗地解釋了過擬合的概念。但為了詳細說明,使用簡單的例子會更好。因此下文的討論將以迴歸為例。

通過一個迴歸案例理解正則化

假如我們想建立一個契合下圖所示資料的迴歸模型。我們可以用多項式迴歸。

640?wx_fmt=png

640?wx_fmt=png

我們可以從一次線性模型開始,這是最簡單的模型。

640?wx_fmt=png

其中640?wx_fmt=png640?wx_fmt=png是模型引數,x是唯一使用的特徵,該模型的影象如下

640?wx_fmt=png

640?wx_fmt=png

基於下面給出的損失函式,我們可以看到該模型和資料擬合得不是很好。

640?wx_fmt=png

其中640?wx_fmt=png是樣本640?wx_fmt=png的模型輸出值,640?wx_fmt=png該樣本的期望輸出值

640?wx_fmt=png

上面的模型太過簡單,有許多預測數值都不準確。因此,我們應該找一個更復雜的、能和資料有較好擬合的模型。為此,我們可以將方程的次方從一次提升到二次。如下:

640?wx_fmt=png

當把特徵640?wx_fmt=png提升至二次方640?wx_fmt=png後,我們建立了一個新的特徵。同時,我們不僅捕捉到了資料中的線性部分,也捕捉到了部分非線性的資料。新的模型圖如下所示:

640?wx_fmt=png

640?wx_fmt=png

從上圖可看出二項式對資料的擬合度好於一項式。但是二次方程在某些資料樣本上仍擬合得不太好。於是我們建立了一個更復雜的三次多項式模型,如下:

640?wx_fmt=png

模型圖會變成這樣:

640?wx_fmt=png

640?wx_fmt=png

可以看出新的模型在加上新的特徵後捕捉到了更多的三次方資料,對資料的擬合度更好。為了進一步提升擬合度,我們將方程提升到四次方,如下:

640?wx_fmt=png

模型圖變成這樣:

640?wx_fmt=png

看起來多項式方程的方次越高模型的擬合度越好。但是有些重要的問題需要回答。如果通過增加特徵數量來增加多項式的次方數就能得到更好的結果,為什麼不用一個非常高次方的方案,比如100次方?解決一個問題所用的方程最佳次方數應該是多少?

模型載荷/複雜度

有一個術語叫“載荷”或“複雜度”。模型的載荷/複雜度指的是模型可處理的變數數量。載荷越大,則模型能處理的變數數越多。第一個模型的載荷就比第四個模型的載荷要小。在我們的案例中,載荷是隨多項式次方數的增加而增加的。

毫無疑問,多項式方程的次方數越大,對資料的擬合度就越好。但需要記住增加多項式的次方也會增加模型的複雜性。如果模型的載荷過高可能會導致過擬合。這種情況下,模型會變得非常複雜,與訓練資料擬合得很好,但是在新的資料上表現很差。而機器學習的目標不僅僅是建立一個在訓練資料上表現強勁的模型,還期望模型在新的資料樣本上同樣出色。

四次方模型是非常複雜的。的確,它與舊有的資料契合度很好,但在未見過的資料上就未必了。在這個情況下,該方程中新選用的特徵抓取了過量的細節。因新的特徵將模型變得過於複雜,我們需要將其剔除。

在這個例子中,我們已經知道哪個特徵需要被剔除。於是,我們可以將模型恢復到原有的三次模型()。但在實際工作中,我們不知道具體該剔除哪個特徵。同時,假如新的特徵不是特別糟糕,我們只想削弱它而非完全剔除它。我們該怎麼做呢?

640?wx_fmt=png

回顧損失函式,它唯一的目標就是將預測錯誤值最小化/削弱。我們可以設定一個將640?wx_fmt=png的影響最小化的新目標。損失函式經調整以削弱640?wx_fmt=png後會變成下面這樣:

640?wx_fmt=png

640?wx_fmt=png

我們現在的目標是將損失函式最小化。我們現在只對將其中的項“”最小化感興趣。顯而易見,為了將最小化,我們應該將最小化,因為這是我們唯一能改變的自由引數。如果這個特徵非常糟糕,我們可以將引數設為零從而完全將其剔除,如下:

640?wx_fmt=png

通過將其剔除,我們回到了原來的三次多項式方程640?wx_fmt=png640?wx_fmt=png在已有資料上的表現不如640?wx_fmt=png,但總的來說,它在新資料上的表現會比640?wx_fmt=png好。

但如果640?wx_fmt=png是一個比較好的特徵,我們只是想減弱它的影響而非完全剔除它,我們可以將它的值設得接近0(比如0.1),如下。通過這樣,我們限制了640?wx_fmt=png的效用。因此,新模型不會像原先那樣複雜。

640?wx_fmt=png

640?wx_fmt=png

回頭看640?wx_fmt=png,看起來它比640?wx_fmt=png要簡單,它在已有的和未見過的資料樣本中都有良好表現。所以,我們應剔除在640?wx_fmt=png中使的新特徵640?wx_fmt=png或在它表現尚可的情況下減弱其影響。我們可以通過調整損失函式來實現這點。

640?wx_fmt=png

正則化

請注意,我們因為有資料影象而確實知道是最契合資料的模型。這是一個我們能手動解決的簡單問題。但是隨著樣本數量和資料的增加,以及我們手頭沒有資料影象一類的資訊時,我們就無法輕易得出相關結論。必須有一個東西自動告訴我們哪個次方的模型最契合資料並告訴我們應對未知資料時應該削弱哪一個特徵。

正則化會幫助我們選擇適合資料的模型複雜度。這在自動削弱那些把模型複雜度搞得過高的特徵方面很有用。當選用的特徵不算太差、多少能幫助我們改善預測結果以至於我們只是想削弱特徵而非移除特徵時,正則化是非常有用的。正則化會削弱所有選用的特徵而非某個選定的子集。我們之前的例子只是削弱了640?wx_fmt=png640?wx_fmt=png這兩個特徵。但這種情況在運用正則化時不會發生。

640?wx_fmt=png

通過運用正則化方法,一個新的項被加入了損失函式以削弱特徵,從而使損失函式變成下面這樣:

640?wx_fmt=png

640?wx_fmt=png

也可以在將Λ移出後把式子寫成這樣。

640?wx_fmt=png

新加入的項640?wx_fmt=png用於削弱特徵以控制模型的複雜度。我們在加入正則化的項之前的目標是儘可能減小預測誤差。現在我們的目標是儘可能減小誤差的同時避免模型變得過於複雜、避免過擬合。

正則化引數lambda (λ)控制如何削弱特徵。這是一個沒有固定值的超引數。它的值基於手頭的任務而變化,當它的值上升時,特徵會被削弱得很厲害,其結果是讓模型變得更簡單。反之,特徵被削弱得不那麼厲害,模型複雜度上升。(λ)為零則意味著特徵沒有削弱。

(λ)為零時,640?wx_fmt=png的數值如下面的方程一樣沒有被削弱。這是因為把(λ)的值設為0意味著去除正則化項並對誤差放任不管。於是,我們的目標將變成僅把誤差最小化到接近0。當最小化誤差成為目標時,模型可能會過擬合。

640?wx_fmt=png

但是當削弱引數 λ的值非常大時(比方說一個億),對引數640?wx_fmt=png的削弱將是巨大的,為了將損失控制在其最小值,會造成引數640?wx_fmt=png0的結果。模型會有一個如下所示被削弱的640?wx_fmt=png

640?wx_fmt=png

請注意,正則化的項數640?wx_fmt=png是從1而非0開始。實際上,我們只用正則化值來削弱特徵(640?wx_fmt=png)。因為640?wx_fmt=png不是一個相關特徵,我們沒有理由去削弱它。在這種情況下,模型將會是如下圖的640?wx_fmt=png

640?wx_fmt=png

作者簡介Ahmed Gad於2015年7月獲埃及Menoufia大學計算機與資訊學院學士學位及優秀學生榮譽稱號。他作為學院中的第一名在2015年被推薦到埃及的一所學院任助教並在2016年在學院中兼任研究員工作。他目前的研究方向包括深度學習、機器學習、人工智慧、數字訊號處理和計算機視覺。

譯者簡介

640?wx_fmt=jpeg

韓海疇,中國人民大學2014屆市場營銷系本科畢業生,目前在海南工作。對大資料在市場營銷及金融方面的運用感興趣。希望能在資料派THU這個平臺上與志同道合的朋友們一起學習和交流。

翻譯組招募資訊

工作內容:需要一顆細緻的心,將選取好的外文文章翻譯成流暢的中文。如果你是資料科學/統計學/計算機類的留學生,或在海外從事相關工作,或對自己外語水平有信心的朋友歡迎加入翻譯小組。

你能得到:定期的翻譯培訓提高志願者的翻譯水平,提高對於資料科學前沿的認知,海外的朋友可以和國內技術應用發展保持聯絡,THU資料派產學研的背景為志願者帶來好的發展機遇。

其他福利:來自於名企的資料科學工作者,北大清華以及海外等名校學生他們都將成為你在翻譯小組的夥伴。

點選文末“閱讀原文”加入資料派團隊~

轉載須知

如需轉載,請在開篇顯著位置註明作者和出處(轉自:資料派ID:datapi),並在文章結尾放置資料派醒目二維碼。有原創標識文章,請傳送【文章名稱-待授權公眾號名稱及ID】至聯絡郵箱,申請白名單授權並按要求編輯。

釋出後請將連結反饋至聯絡郵箱(見下方)。未經許可的轉載以及改編者,我們將依法追究其法律責任。

640?wx_fmt=jpeg

點選“閱讀原文”擁抱組織