一、從機器學習分析兩者的關系
機器學習的基本問題:利用模型對數據進行擬合,學習的目的並非是對有限訓練集進行正確預測,而是對未曾在訓練集合出現的樣本能夠正確預測。
模型對訓練集數據的誤差稱為經驗誤差,對測試集數據的誤差稱為泛化誤差。
模型對訓練集以外樣本的預測能力就稱為模型的泛化能力,追求這種泛化能力始終是機器學習的目標。
過擬合和欠擬合是導致模型泛化能力不高的兩種常見原因,都是模型學習能力與數據復雜度之間失配的結果。
“欠擬合”常常在模型學習能力較弱,而數據復雜度較高的情況出現,此時模型由於學習能力不足,無法學習到數據集中的“一般規律”,因而導致泛化能力弱;
“過擬合”常常在模型學習能力過強的情況中出現,此時的模型學習能力太強,以至於將訓練集單個樣本自身的特點都能捕捉到,並將其認為是“一般規律”,同樣這種情況也會導致模型泛化能力下降。
在神經網絡訓練的過程中,欠擬合主要表現為輸出結果的高偏差,而過擬合主要表現為輸出結果的高方差。
二、過擬合
1、定義
為了得到一致假設而使假設變得過度嚴格稱為過擬合。
這個過度嚴格的假設在訓練數據上能夠獲得比其他假設更好的擬合, 但是在訓練數據外的數據集上卻不能很好地擬合數據,此時認為這個假設出現了過擬合的現象。
圖解:可以看出在a中雖然完全的擬合了樣本數據,但對於b中的測試數據分類准確度很差。而c雖然沒有完全擬合樣本數據,但在d中對於測試數據的分類准確度卻很高。
2、產生原因
(1)樣本選取有誤,比如樣本數量太少,選樣方法錯誤,選樣標簽錯誤,導致選出的樣本不能代表預設的分類規則;
(2)噪聲過大,導致錯誤地將噪聲認為是特征而擾亂了預設的分類規則;
(3)假設成立的條件並不成立;
(4)參數過多,模型復雜度太大;
(5)對於決策樹模型:如果對於生長點沒有限制,讓其自由生長的節點可能只包含單純的事件數據或者非事件數據,雖然可以很好的匹配上訓練數據,但是換成其他數據,該模型就無法適應;
(6)對於神經網絡模型:a)模型過於復雜——對樣本數據可能存在分類決策面不唯一,隨着學習的進行,BP算法使權值可能收斂過於復雜的決策面;b)擬合了噪聲和無用特征——權值學習迭代次數足夠多(Overtraining),擬合了訓練數據中的噪聲和訓練樣例中沒有代表性的特征。
3、解決辦法
(1)選擇合適的停止訓練標准,使得訓練在合適的程度;
(2)獲取額外的數據進行交叉驗證;
(3)保留驗證集對模型進行驗證;
(4)正則化。在目標函數或代價函數優化時,在目標函數或代價函數后面添加一個正則項,一般是L1正則與L2正則。
(5)對於神經網絡模型,進行權值衰減。在每次迭代過程中,都以某個小因子降低每個權值。
知乎答主的優秀形象化解釋:
鏈接:https://www.zhihu.com/question/32246256/answer/83898785
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
好比你想學習追妹子。
先找你表妹問喜歡什么,表妹說她喜歡干凈帥氣的男生,還說她喜歡周傑倫,喜歡火鍋,喜歡酸菜魚,合計一百條規矩。你規規矩矩地按照要求學習,終於符合表妹的一切要求,0 Error,訓練完成,超級自信准備出去試試追個妹子。
可是換了個妹子,發現學到的似乎沒想象中有用。第二個妹子只要你干凈帥氣。后面的九十八條她都不care,她甚至討厭吃火鍋,那后面98條只會增加誤差。這就過擬合了。
怎么防止過擬合呢?應該用cross validation,交叉比對。
解釋起來就是,你在你表妹那兒學到的東西,在你表姐那兒測試一下對不對。在你表姐那兒學到的,在你二姐那測試一下。來來回回用不同的測試對象和訓練對象做交叉比對。這樣學到規律就不會過擬合啦~
鏈接:https://www.zhihu.com/question/32246256/answer/55251597
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
(1)打個形象的比方,給一群天鵝讓機器來學習天鵝的特征,經過訓練后,知道了天鵝是有翅膀的,天鵝的嘴巴是長長的彎曲的,天鵝的脖子是長長的有點曲度,天鵝的整個體型像一個“2”且略大於鴨子.這時候你的機器已經基本能區別天鵝和其他動物了。
(2)然后,很不巧你的天鵝全是白色的,於是機器經過學習后,會認為天鵝的羽毛都是白的,以后看到羽毛是黑的天鵝就會認為那不是天鵝.
(3)好,來分析一下上面這個例子:(1)中的規律都是對的,所有的天鵝都有的特征,是全局特征;然而,(2)中的規律:天鵝的羽毛是白的.這實際上並不是所有天鵝都有的特征,只是局部樣本的特征。機器在學習全局特征的同時,又學習了局部特征,這才導致了不能識別黑天鵝的情況.
--------------------------------------------------理論總結分割線----------------------------------------
(1)對於機器來說,在使用學習算法學習數據的特征的時候,樣本數據的特征可以分為局部特征和全局特征,全局特征就是任何你想學習的那個概念所對應的數據都具備的特征,而局部特征則是你用來訓練機器的樣本里頭的數據專有的特征.
(2)在學習算法的作用下,機器在學習過程中是無法區別局部特征和全局特征的,於是機器在完成學習后,除了學習到了數據的全局特征,也可能習得一部分局部特征,而習得的局部特征比重越多,那么新樣本中不具有這些局部特征但具有所有全局特征的樣本也越多,於是機器無法正確識別符合概念定義的“正確”樣本的幾率也會上升,也就是所謂的“泛化性”變差,這是過擬合會造成的最大問題.
(3)所謂過擬合,就是指把學習進行的太徹底,把樣本數據的所有特征幾乎都習得了,於是機器學到了過多的局部特征,過多的由於噪聲帶來的假特征,造成模型的“泛化性”和識別正確率幾乎達到谷點,於是你用你的機器識別新的樣本的時候會發現就沒幾個是正確識別的.
(4)解決過擬合的方法,其基本原理就是限制機器的學習,使機器學習特征時學得不那么徹底,因此這樣就可以降低機器學到局部特征和錯誤特征的幾率,使得識別正確率得到優化.
(5)從上面的分析可以看出,要防止過擬合,訓練數據的選取也是很關鍵的,良好的訓練數據本身的局部特征應盡可能少,噪聲也盡可能小.
-
增加新特征,可以考慮加入進特征組合、高次特征,來增大假設空間;
-
添加多項式特征,這個在機器學習算法里面用的很普遍,例如將線性模型通過添加二次項或者三次項使模型泛化能力更強;
-
減少正則化參數,正則化的目的是用來防止過擬合的,但是模型出現了欠擬合,則需要減少正則化參數;
-
使用非線性模型,比如核SVM 、決策樹、深度學習等模型;
-
調整模型的容量(capacity),通俗地,模型的容量是指其擬合各種函數的能力;
-
容量低的模型可能很難擬合訓練集;使用集成學習方法,如Bagging ,將多個弱學習器Bagging。