原博客:https://daya-jin.github.io/2018/12/11/Model_Assessment_and_Selection/
模型評估與選擇
Bias
偏差爲模型對於觀測數據的擬合程度,可以理解爲射箭時的準心與靶心的偏差。
Variance
方差能表徵模型的穩定程度,可以理解多次射箭時各準心的分散程度。
Model Complexity
一般來說,越簡單的模型具有偏差高方差低的特點,而複雜模型則恰好相反。
假設有訓練集以及模型的評估方法,那麼模型的泛化誤差(generalization error)可表示爲:
給定訓練集下訓練得到的模型在整個羣體上的期望誤差,除此之外,在訓練集上還可以得到一個訓練誤差(training error):
可惜因爲variance的存在,訓練誤差並不能很好地作爲泛化誤差的估計。雖然更復雜的模型能夠捕獲到數據中更深層次的結構(同時也需要更多的數據),但會有過擬合的風險,就像做閱讀理解的時候過度解讀了一樣。所以,對模型的有效評估很重要。
在數據充足的情況下,辦法很簡單,將已有數據進行劃分,一部分作爲訓練集(training set)用於訓練模型,另一部分用作驗證集(validation set)用於檢驗模型在未知數據上的泛化性能。不過怎麼劃分數據並沒有一個統一準則,一般來講,原有數據的信噪比越大,訓練集的比例可以降低;模型越簡單,訓練集的比例也可以降低。
偏差-方差分解
對於真實分佈,其中,那麼一個模型在某個樣本上的期望誤差爲:
此處有上式的推導,個人沒看懂,如果有懂的請指導一下,謝謝。
下面的圖詮釋了偏差與方差的問題:
上圖的藍色範圍表示的是數據真實分佈;紅色範圍表示的是模型空間,紫色範圍表示受限模型空間,模型空間由模型的擬合能力決定,模型越複雜擬合空間就越大,如神經網絡理論上能擬合任意形狀的函數。在選定一個特定的模型後,該模型理論上能達到的最優解爲羣體最優解(closest fit in population),但是由於觀測樣本與整體分佈之間的不一致,,模型只能在已有的觀測數據上進行擬合,這樣的到的最優解叫做觀測最優解(closest fit in realization)。某一個模型的羣體最優解與真實數據分佈之間的誤差叫做模型偏差(model bias),這是由模型決定的,想要減小模型偏差只能換模型。另一方面,原有模型空間的複雜度與模型預測的波動性會因模型本身而改變,如圖中黃色空間所示;在之前的文章中提到,一般會使用一定的誤差增加來換取更高的穩定性,這就是圖中的紫色空間。在受限模型空間內的最優解與原有模型空間內的最優解的距離就叫做估計偏差(estimation bias),這跟之前說的正則化等同於偏差換方差是一致的。
交叉驗證
爲了實現對測試誤差的有效估計,最常用的方法就是做交叉驗證(cross validation)。交叉驗證的思想很簡單,將已有數據劃分成份,每次將其中的一份作爲驗證集(validation set),而用剩下的份數據作爲訓練集訓練得到模型,這樣就可以重複訓練次,可以得到個驗證誤差(validation error),將其平均作爲對測試誤差的估計。
的取值通常爲5或10,特別的,當時叫做留一驗證法(leave-one-out)。值得一提的是,當越大,驗證誤差與測試誤差之間的偏差就越小,但是方差越大,反之亦然。
Bootstrap
Bootstrap是指有放回的抽樣,假設現在有觀測數據,進行輪有放回的抽樣會得到個有重疊的子樣本。有了這些數據子集之後就可以根據這些子集來估計原本觀測數據的任意統計變量,如利用bootstrap來估計整體的方差:
其中,爲使用子樣本對整體的均值估計。
現在每一輪bootstrap都是對已有數據做等體量的採樣,即對有個樣本的數據集,每一輪bootstrap採出個樣本作爲數據子集,那麼容易得到,每一個樣本被採到的概率爲:
由此可以看出,每一輪bootstrap得到的樣本子集大概只包含了原觀測數據的63.2%,因此原數據中未被抽到的36.8%可以用作模型驗證,前面的文章也提到過,這叫包外誤差估計。但是包外誤差估計有一個問題,就是在驗證模型中只用了大約2/3的數據去訓練模型,這樣得出的誤差估計值差不多相當於使用3折交叉驗證或2折交叉驗證。如果該模型關於該數據的學習曲線在到區間有很明顯的提升的話,那麼包外誤差估計得到的驗證效果只是測試誤差的一個悲觀估計(Pessimistic estimate)。
爲了提升包外估計的準確性,引入訓練誤差,並賦以權重,得到改進的**.632估計**:
.632估計在過擬合的情況下表現會很糟糕。比如現在有一個二分類問題,模型在訓練集上過擬合導致,而在驗證集上表現我們取一個最低值,那麼.632估計給出的驗證誤差爲:
可以看到,.632估計在過擬合的情況下會給出一個樂觀估計。
.632+估計,待補充。