一.評估改進模型
1.爲什麼要對模型進行評估?
對模型的好壞做出評價是爲了瞭解我們的模型能否很好解決實際問題,當出現模型沒有達到預期效果的情況,我們需要找到問題所在,採取正確的方法高效的解決問題。
2.怎樣對模型進行評估?
當一個模型表現不好時通常是出現過擬合或欠擬合,我們需要弄清楚究竟是那種情況,才能採用有效的方法改進我們的模型。首先我們需要弄清楚什麼是過擬合和欠擬合。
過擬合
就是模型過度擬合我們的數據,通常出現在特徵量多,數據少的情況,導致訓練誤差在訓練集上很低,但在測試集上很高。
欠擬合
就是模型對我們的數據擬合程度很低,通常出現在特徵量少的情況,導致訓練誤差在訓練集和測試集都很低。
解決方案
1.在前面的博客吳恩達系列視頻筆記1–迴歸與分類中我們提到了正則化方法,公式如下
我們的優化目標是最小化上訴公式,其中正則項表示最小化所有參數之和。當參數最小化爲0時,參數所對應的特徵值爲0,相當於減少了特徵值數量,也就是說正則項可以控制特徵數量。我們可以通過控制正則化係數lambda來控制特徵數量,通過調大lambda數值,來減少特徵值數量,可以有效緩解過擬合。通過調小lambda數值,增加特徵數,提高模型複雜度,可以有效解決欠擬合。
2.當數據集數量發生變化時,過擬合和欠擬在訓練集和測試集表現也不同。我們也可以通過增加數據集的方法解決欠擬合問題。
欠擬合時
過擬合時
正則係數以及數據集數量的改變都可以看出模型的情況
3.訓練過程中的技巧
劃分訓練集測試集驗證集
先介紹劃分成三份的數據集應該在什麼情況下使用,當我們訓練一個模型時,假設有正則化係數lambda需要確定,我們設定不同的lambda值在訓練集上進行訓練,再選取在測試集上表現最優的lambda數值作爲lambda的真實值。最後驗證集上進行驗證,評估模型的泛化能力。
其中我們選擇在驗證集上評估模型泛化能力而不是在測試集上直接評估,是因爲在測試集上我們選擇的是最優的lambda,因此我們的參數在訓練集上很可能對泛化誤差過於樂觀,它所展現出來的效果並不能很好的表現模型的泛化誤差。
二.誤差分析
我們評價模型的好壞,一般研究損失函數在訓練集測試集上的表現。當我們對模型做出改進時,損失函數的評價方法可能會失效。面對偏斜類數據,當在模型中增加了一個變量,使精確度從99.2%增加到了99.5%,雖然精確度增加了0.3%,由於樣本不平衡,其中一類樣本佔大多數,所以不能確定增加的0.3%,是因爲模型直接把所有結果評價爲同一類得出來的,還是因爲模型精確度真的提高了。這時我們需要一個評價指標來評價改進是否對模型有用,並且,使用合適的誤差度量值,有時會對我們的模型產生微妙的影響。
對於樣本不平衡的數據可以通過精確率和召回率來評價模型。
精確度的意義是,預測結果爲1,有多大機率真實類別是1。
召回率的意義是,已知類別是1,有多大機率預測類別是1。
符號含義:TP-正預測爲真,FN-正預測爲假,FP-反預測爲真,TN-反預測爲假。
精確度公式:
召回率公式:
一般來說,召回率和精確率是矛盾的,所以引入F1-Score作爲綜合指標,進行綜合評價。
F1-Score公式: