在機器學習模型的訓練過程中,經常會發生過擬合(overfitting)、欠擬合(underfitting)的現象。那這二者究竟為何物呢?
過擬合,通俗點說,就是我們的模型對資料模擬的太好了,訓練集中的資料幾乎都被完美**。有人就說了,我**的完美也有錯嗎?是的,你有錯。因為我們的目標並不是看你訓練集中的資料**得有多好,而是要看在測試集中的表現。也就是說,把這個模型放到新環境中,測試**效果。同時,我們的訓練集中資料有雜訊,如果你連雜訊都完美**,那麼放到測試集中,模型的表現一定不是很好。專業點說,就是模型的泛化能力差。
欠擬合,正好跟過擬合相反,我們的模型在訓練集中表現的太差了,幾乎很少能**正確的。放到測試集中同樣不會有很好的效果。
那出現這兩種情況該如何解決呢?對於欠擬合來說,我們可以增加模型的複雜度,增加資料量等等手段。而對於過擬合呢,今天的主角——正則化(regularization)就派上用場了。
也就是說,對於我們之前的線性回歸模型,給它加乙個正則化項,它就不那麼容易發生過擬合。根據正則化項的不同,一般分為ridge regression(嶺回歸)和lasso regression(拉索回歸)。我們先來看應用廣泛的嶺回歸。
嶺回歸的代價函式如下:
從上式可以看出,正則化項其實就是引數w的平方和再乘以個係數λ。對於加了正則化項的代價函式來說,我們要想求得最小值,從而得到w的解,還是要對j(w)求導。
而正則化項的導數為λw/m,把這兩個加到一起,就得到
令其等於0,得到:
注意到,w的係數乙個為矩陣,乙個為標量λ,我們想將w提出來,該怎麼辦呢?事實上,只要讓λ乘以單位矩陣就可以了:
這是我們利用求導直接得到了引數w的值,當然我們也可以用梯度下降法來進行計算,只需要在梯度下降公式後面加上『λm』這一項即可,這裡就不再推導了。
推導完之後,我們再來回顧下嶺回歸的代價函式,重點觀察它的正則化項,思考為什麼加入它之後就能避免過擬合了呢?
注意我們的引數λ,如果它比較大,那要想j(w)取小值,那麼係數w就必須減小,這就降低了模型的複雜度,過擬合現象得以緩解。但λ也不能過大,過大會導致係數被「懲罰」得很厲害,模型反而會過於簡單,可能欠擬合;同時,λ也不能過小,當λ趨近於0的時候,相當於我們沒有新增正則化項,同樣不能緩解過擬合。
最後我們來簡單了解下lasso回歸,與嶺回歸想比,它的正則化項就是引數w的絕對值的和,用公式表示為:
如果我們用梯度下降法,求得j(w)的梯度為:
其中,sign(w)叫做符號函式。它的含義是:當w>0時,sign(w)=1;當w<0時,sign(w)=-1;當w=0時,sign(w)=0。
最後,我們把lasso回歸叫做l1正則化,嶺回歸叫做l2正則化。因為它們的正則化項分別是l1範數和l2範數。l-p範數的定義如下:
什麼是欠擬合現象 什麼是過擬合?什麼是欠擬合?
過擬合 1 簡單理解就是訓練樣本的得到的輸出和期望輸出基本一致,但是樣本輸出和測試樣本的期望輸出相差卻很大 2 為了得到一致假設而使假設變得過度複雜稱為過擬合。想像某種學習產生了乙個過擬合的分類器,這個分類器能夠百分之百的正確分類樣本資料 即再拿樣本中的文件來給它,它絕對不會分錯 但也就為了能夠對樣...
欠擬合與過擬合
在用機器學習搭建模型時,經常會碰到這樣一種情況,你的模型演算法在樣本資料中匹配的非常完美。但用新資料測試,發現模型結果和實際差距非常大。那麼恭喜你!你掉進了機器學習中常見的乙個大坑 過擬合。什麼是過擬合呢?機器學習本質上是通過建立資料模型,使其和現有資料相吻合,從而找到資料中內在的規律。如下面三張圖...
欠擬合與過擬合
一 1.欠擬合 訓練集上表現很差 這種情況在測試集上也不會好 高偏差 bias 解決辦法 選擇更複雜的網路 有正則項就減小正則項引數等。2.過擬合 訓練集上表現很好,但測試集上表現很差,高方差 variance 解決辦法 採用更多資料 如果有正則化就增加正則化引數,沒有就加上正則化 dropout等...