防止过拟合以及解决过拟合
本文轉載:http://blog.sina.com.cn/s/blog_53c47a2f0102vjyf.html
? ? ? ? ? ? ? ? ? ?
過擬合:為了得到一致假設而使假設變得過度復雜稱為過擬合。“一個過擬合的模型試圖連誤差(噪音)都去解釋(而實際上噪音又是不需要解釋的),導致泛化能力比較差,顯然就過猶不及了。” 這句話很好的詮釋了過擬合產生的原因,但我認為這只是一部分原因,另一個原因是模型本身并不能很好地解釋(匹配)數據,也就是說觀測到的數據并不是由該模型產生的。
“統計學家說:我們讓數據自己說話。言下之意就是要摒棄先驗概率。而貝葉斯支持者則說:數據會有各種各樣的偏差,而一個靠譜的先驗概率則可以對這些隨機噪音做到健壯。事實證明貝葉斯派勝利了,勝利的關鍵在于所謂先驗概率其實也是經驗統計的結果。” 事實上貝葉斯本身就是一個基于統計的模型……然而,文中以樹后的箱子為例,闡述似然也有選擇簡單模型的傾向。我對此有疑義。似然是選擇與觀測最匹配的結果。根據當前的觀測結果,顯然一個箱子的模型是最符合觀測的,也就是說,如果樹兩邊的箱子高矮不一,顏色不同,那么兩個箱子的模型就是最匹配的。因此,似然只是選擇與觀測最匹配的模型,而并沒有選擇簡單模型的傾向。否則,就不會有那么嚴重的過擬合現象發生。文中還提到:“反之,如果背后的模型是一條直線,那么根據該模型生成一堆近似構成直線的點的概率就大得多了。” 這里的表述有問題,既然已經把模型看成是直線了,那么根據直線模型生成一堆近似構成直線的點的概率是接近1的。同理,我們既然已經認為可以用N-1階模型去擬合,那么根據N-1階模型生成的N個點當然就是符合N-1階模型的,而不需要她去符合直線。 那么問題究竟應該怎樣描述呢? 根據作者的意思問題應該這樣來描述,一個多項式在平面上隨機生成的一堆 N 個點偏偏恰好近似構成一條直線的概率很小很小,然而一條直線在平面上隨機生成的一堆N個點(考慮隨機誤差)能擬合成一個N-1階曲線的概率是1(一定能用一個N-1階多項式來擬合)。換句話說,曲線上(N-1階多項式)隨機生成的點能被擬合成直線的概率接近于0,而直線上隨機生成的點能被擬合成曲線的概率接近1。因此,若一堆點即能用直線去擬合,也能用N-1階多項式擬合(必然),那么,他屬于直線模型的概率更大。
二. 過擬合的產生究其原因,產生過擬合是因為:
? ? ? ? ? ?1.由于對樣本數據,可能存在隱單元的表示不唯一,即產生的分類的決策面不唯一.隨著學習的進行, BP算法使權值可能收斂過于復雜的決策面,并至極致.
? ? ? ? ?2.權值學習迭代次數足夠多(Overtraining),擬合了訓練數據中的噪聲和訓練樣例中沒有代表性的特征.
三.過度擬合解決方法
? ? ? ? 1.權值衰減.?在每次迭代過程中以某個小因子降低每個權值,這等效于修改E的定義,加入一個與網絡權值的總量相應的懲罰項,此方法的動機是保持權值較小,避免weight decay,從而使學習過程向著復雜決策面的反方向偏
? ? ? ?2.適當的stopping criterion
? ? ? ?3.驗證數據: ?一個最成功的方法是在訓練數據外再為算法提供一套驗證數據,應該使用在驗證集合上產生最小誤差的迭代次數,不是總能明顯地確定驗證集合何時達到最小誤差.Typically 30% of training patterns;Validation set error is checked each epoch;Stop training if validation error goes up
? ? ?4.Cross-validation with some patterns交叉驗證方法在可獲得額外的數據提供驗證集合時工作得很好,但是小訓練集合的過度擬合問題更為嚴重
? ? k-fold交叉方法:把訓練樣例分成k份,然后進行k次交叉驗證過程,每次使用不同的一份作為驗證集合,其余k-1份合并作為訓練集合.每個樣例會在一次實驗中被用作驗證樣例,在k-1次實驗中被用作訓練樣例;每次實驗中,使用上面討論的交叉驗證過程來決定在驗證集合上取得最佳性能的迭代次數n*,然后計算這些迭代次數的均值,作為最終需要的迭代次數。
? ? 5. 減少特征
? ? 人工選擇,預留一些特征
? ?利用算法選取一些比較好的特征
? ?6. 正則化
這里有點疑問,正則化是為了防止過擬合還是為了解決過擬合。對部分無用的feature,定義其parameter(p3,p4)非常大,這樣會導致訓練結果w3,w4非常小,幾乎為0,降低模型復雜度。這里也有個問題就是lamba很大會導致所有的wi都為0。矩陣分解中經常會用到。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------下面參考?http://www.cnblogs.com/SnakeHunt2012/archive/2013/02/18/2915957.html
訓練模型是需要數據足夠的,我們把訓練數據看作是能量。那對于一個10次多項式的模型來說,在訓練的過程中可以看做其中有10個數據的能量是用來搭建模型 的,然后剩余的數據能量是用來調整這個模型使之優良,也就是使之對訓練樣例全體的誤差合最小。然而如果你所擁有的能量小于十個獨立點的能量,也就是沒有達 到建立模型的那個臨界。那么你訓練出來的根本就不是一個模型,用這個東西進行預測得出的結果也許就是隨機數。
眾 所周知,要猜一個二次多項式,需要至少三個點。要猜一個十次多項式,需要至少十一個點。我認為對于訓練過程來說,每一種模型都需要一個初始的能量來確定模 型,然后剩余的能量才真是用來訓練的。剩余數據越多,訓練的效果越好。如果你所投入的能量不能達到這個所謂初始能量的這個臨界,那么就是過擬合。
光電效應是需要溢出功的。
模 型太復雜,容易過擬合,即使可以達到過擬合臨界,那么數據不足也會使得偏執比較高,但是如果數據足夠的話,足夠把偏執降下來的話,大模型精度是很高的,他 的方差小。如果你數據不足,就不得不使用簡單模型,而簡單的模型確實不容易過擬合,但他的準確度(精度)就是硬傷,偏執再底,方差他的硬傷。
總結
以上是生活随笔為你收集整理的防止过拟合以及解决过拟合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《英雄联盟》2019全明星赛概览:无限火
- 下一篇: 多GPU运行Deep Learning