過擬合
通俗一點地來說過擬合就是模型把資料學習的太徹底,以至於把雜訊資料的特徵也學習到了,這樣就會導致在後期測試的時候不能夠很好地識別資料,即不能正確的分類,模型泛化能力太差。例如下面的例子。
上面左圖表示size和prize的關係,我們學習到的模型曲線如右圖所示,雖然在訓練的時候模型可以很好地匹配資料,但是很顯然過度扭曲了曲線,不是真實的size與prize曲線。
解決方法:
1)重新清洗資料,導致過擬合的乙個原因也有可能是資料不純導致的,如果出現了過擬合就需要我們重新清洗資料。
2)增大資料的訓練量,還有乙個原因就是我們用於訓練的資料量太小導致的,訓練資料佔總資料的比例過小。
3)採用正則化方法。正則化方法包括l0正則、l1正則和l2正則,而正則一般是在目標函式之後加上對於的範數。但是在機器學習中一般使用l2正則,下面看具體的原因。
l0範數是指向量中非0的元素的個數。l1範數是指向量中各個元素絕對值之和,也叫「稀疏規則運算元」(lasso regularization)。兩者都可以實現稀疏性,既然l0可以實現稀疏,為什麼不用l0,而要用l1呢?個人理解一是因為l0範數很難優化求解(np難問題),二是l1範數是l0範數的最優凸近似,而且它比l0範數要容易優化求解。所以大家才把目光和萬千寵愛轉於l1範數。
l2範數是指向量各元素的平方和然後求平方根。可以使得w的每個元素都很小,都接近於0,但與l1範數不同,它不會讓它等於0,而是接近於0。l2正則項起到使得引數w變小加劇的效果,但是為什麼可以防止過擬合呢?乙個通俗的理解便是:更小的引數值w意味著模型的複雜度更低,對訓練資料的擬合剛剛好(奧卡姆剃刀),不會過分擬合訓練資料,從而使得不會過擬合,以提高模型的泛化能力。還有就是看到有人說l2範數有助於處理 condition number不好的情況下矩陣求逆很困難的問題(具體這兒我也不是太理解)。
4)採用dropout方法。這個方法在神經網路裡面很常用。dropout方法是imagenet中提出的一種方法,通俗一點講就是dropout方法在訓練的時候讓神經元以一定的概率不工作。具體看下圖:
如上圖所示,左邊a圖是沒用用dropout方法的標準神經網路,右邊b圖是在訓練過程中使用了dropout方法的神經網路,即在訓練時候以一定的概率p來跳過一定的神經元。
解決訓練過擬合的方法
解決過擬合的方法 1.正則化,但是它為什麼可以解決過擬合問題呢?首先它是在代價函式中加入了一項函式,如下公式 你們可以看到加入的是w的範數,可能有的人有疑問,為什麼不加入b範數,其中也是可以的,主要是w是個高危向量,b是個單純的數值,所以我們在這裡為了簡單,暫時忽略它。為什麼正則化有利於消除過擬合呢...
過擬合 欠擬合及其解決辦法
1.什麼是過擬合?過擬合 overfitting 是指在模型引數擬合過程中的問題,由於訓練資料報含抽樣誤差,訓練時,複雜的模型將抽樣誤差也考慮在內,將抽樣誤差也進行了很好的擬合。具體表現就是最終模型在訓練集上效果好 在測試集上效果差。模型泛化能力弱。2 產生過擬合根本原因 1 觀察值與真實值存在偏差...
過擬合以及解決辦法
過擬合 為了得到一致假設而使假設變得過度複雜稱為過擬合。乙個過配的模型試圖連誤差 噪音 都去解釋 而實際上噪音又是不需要解釋的 導致泛化能力比較差,顯然就過猶不及了。這句話很好的詮釋了過擬合產生的原因,但我認為這只是一部分原因,另乙個原因是模型本身並不能很好地解釋 匹配 資料,也就是說觀測到的資料並...