什麼是overfitting
從overfitting這個詞的字面上看來就是過度擬合,我們知道的,不管什麼東西,過度了一般都是不好的。
overfitting:如果我們選取了太多太多的特徵,那麼通過學習的模型將會幾乎完美的擬合我們的訓練集,但是同時這將導致模型不能很好的擬合新的樣本。(泛化能力低下)
當然光看概念真的是似懂非懂的,接下來配上兩幅圖你可能就明白了,分別是線性回歸和邏輯回歸中出現overfitting時的情況。
從上面兩幅圖可以看出,當我們過多的選取了特徵之後,模型經過學習之後能夠幾乎完美的擬合我們的訓練資料,但同時我們的曲線變得彎彎曲曲,非常複雜。
我相信有人會問,為什麼複雜的模型就不好呢,如何判斷過擬合,如何判斷所謂的「不能很好的擬合新的樣本」和「泛化能力差」。首先我們需要了解我們訓練模型的目的,我們訓練模型的目的並不在於要去完美fit我們的訓練集,而是在於模型擬合新樣本的能力,因為最終我們訓練出來的模型是要拿去用的,拿去**,拿去分類,拿去面對一些我們不知道的資料。為了模擬這種情況,我們通常會在一開始選取訓練集的時候,同時也選取乙個驗證集(validation set),驗證集並不用來訓練,而是用來模擬新資料,它很像測試集(test set),測試集是模型最終訓練完後,進行測試,評價好壞的資料集,它在乙個流程中只會用到一次。而驗證集是每次完成引數更新,也就是一次學習之後,都要使用的,用來判斷是否過擬合的,如果驗證集的正確率沒有過多小於訓練集,說明沒有過擬合,引數可以更新,如果驗證集的正確率嚴重低於了訓練集(設定閾值),說明過擬合,引數不更新。
那麼我們接下來說說,為什麼複雜的模型不好,其實我覺得這是乙個歸納演繹的過程,一方面前人大牛們在不斷實驗測試中發現,往往簡單的模型在**新資料的時候效果更好,另一方面個人覺得世界上的資料都是大概符合某種規律的,不管是正態分佈,二項分布等,但是不管是什麼分布,資料都會存在或多或少的雜訊和一些小概率資料,那麼模型過度學習,擬合了雜訊和小概率資料,自然就不能很好的**新樣本了。
當然如果我們能過擬合全部資料,那當然是完美的,但是同時這又是不太可能的,畢竟資料隨時在更新和產生,而且在這樣乙個資訊時代,全部的資料,那真是難以想象到底是有多大。
解決overfitting的辦法
有人可能會問,丟棄了特徵就等同於丟棄了或多或少的資訊,這不會對模型的學習造成影響嗎,答案是會的,所以為了避免這種情況,就有了下面的方法
機器學習系列筆記 八
雜訊與錯誤 noise and error 不同錯誤適用於不同的場景 false accpet 錯誤接受 false reject 錯誤拒絕 商場打折 fbi門禁 各種情況下有不同的權重 weighted classification weighted pocket algorithm 權重口袋演算...
機器學習(八) 樹回歸
cart classification and regression trees,分類回歸樹 的樹構建演算法。該演算法既可以用於分類還可以用於回歸,因此非常值得學習。然後利用python來構建並顯示cart樹。會保持足夠的靈活性以便能用於多個問題當中。接著,利用cart演算法構建回歸樹並介紹其中的樹...
機器學習 基礎演算法(八)
聚類就是對大量未知標註的資料集,按資料的內在相似性將資料集劃分為多個類別,使類別內的資料相似度較大 而類別間的資料相似度較小。無監督 口給定乙個有n個物件的資料集,構造資料的k個簇,ksn。滿足下列條件 每乙個簇 至少包含乙個物件 每乙個物件屬於 且僅屬於乙個簇 將滿足上述條件的k個簇稱作乙個合理劃...