獲得一個模型以後如何評價其性能?算法
- training error & generalization error & test error
- 如何理解generalization error(泛化偏差)分爲 noise 噪聲、Variance 方差、 bias誤差
- 偏差 和 模型複雜度 的關係
- 實際訓練模型過程當中該如何作
training error & generalization error & test error
(1)training error
模型在訓練數據集上的偏差。機器學習
(2)generalization error
Generalization, 通常化,泛化。性能
咱們用訓練數據集(training data)訓練一個模型,而咱們但願這個模型能實際應用於訓練數據集以外的整體學習
數據,因此這個模型真實偏差應該是全部可能的數據的集合上的偏差,但這是沒法實際計算的,咱們可以用來學測試
習的訓練數據集只是所有數據中的一個子集。spa
課程中的例子是房價估計,咱們用已有的數據集訓練一個模型用於房價預測,而除了已有的房屋出售數據之ci
外,還有許多沒沒統計進這個數據集的數據。咱們但願能評估這個模型的真實預測效果,即求得用這個模型對所it
有可能的房屋出售的數據集進行房價預測產生的偏差,這個偏差就是generalization error(泛化偏差)。io
(3)test error
由於generalization error沒法真正計算(得不到全部可能的數據集合),因此能夠用training datasetclass
以外的一個數據子集來近似估計generalization error,這就是test error。
test error是generalization error的近似,故而在算法中應注意Training /test split (訓練/測試數據集分割比例),
訓練數據太少,則模型預測效果差;測試數據太少,則測試數據集不具備普適性,test error不能較好的近似
generalization error。
Noise & Variance & Bias
(1)Noise
Irreducible: 不可減小的
周志華《機器學習》中是這麼解釋的:
泛化偏差可分解爲誤差、方差與噪聲之和。
誤差度量了學習算法的指望預測與真實結果的偏離程度,即刻畫了學習算法自己的擬合能力;方差度量了同
樣大小的訓練集的變更所致使的學習性能的變化,即刻畫了數據擾動所形成的影響;噪聲則表達了在當前任務上
任何學習算法所能達到的指望泛化偏差的下界,即刻畫了學習問題自己的難度。
(2) bias & variance
一張圖理解bias 和variance .
因此一個好的模型應該具備low bias & low variance。如今問題來了,魚與熊掌可兼得嗎?
複雜度較小的狀況下:
Low complexity –> high bias 、 low variance
利用training set訓練模型的過程,就是不斷逼近一個理想的」真實模型」的過程,複雜度較小時,模型對訓練數
據集的擬合程度較低,模型預測值與真實值誤差較大,bias較大,同時因爲擬合程度較低,模型普適性較好,應
用於不一樣的數據集預測結果之間差別不大,variance較小。
複雜度較大的狀況下:
high complexity –> low bias 、 high variance
複雜度較大,模型對訓練集擬合程度很高,bias很小,但模型擬合是針對訓練集這個特定的數據集進行的,
而訓練集只是真實數據的一個子集,獲得的模型過於specific,包含了許多具體的,針對於訓練集的特徵。利用
這個模型對其餘不一樣的數據集進行預測,預測結果會「飄忽不定(erratic)」,variance很大,模型對training set
擬合的很好,而用於預測時效果不佳偏差很大,這種現象稱爲「過擬合」。
訓練數據集對於模型擬合十分重要,考慮一個理想的狀況,複雜度必定的條件下,假如咱們擁有所有
可能的數據,即訓練數據集無限大,此時variance就趨近於0(noise噪聲爲不爲0;training error 和 bias要
考慮複雜度對擬合效果的影響),這種狀況下就不須要bias-variance tradeoff(但顯然這是不現實的)。
errors & complexity
test error 圖同generalization error。
Complexity 不是越大越好,要考慮到 bias-variance tradeoff,當complexity太小,欠擬合,complexity
過大,過擬合。
如何選擇合適的複雜度
(1)根據 使test error最小 的原則肯定複雜度,有什麼問題?
若是根據test error最小肯定複雜度,則以後評價模型的預測結果會過於樂觀。複雜度根據測試數據決定,
這樣測試數據就不能很好的表明整體數據了,test error不能較好的近似generalization error, 真實偏差會大於
測試偏差。
(2)常見可行方法?
再添加一個「test」數據集。
根據使validation error最小,肯定複雜度。
Training set 用於擬合模型,validation set 用於肯定複雜度,test set 用於評價模型偏差。