原文:Accurately Measuring Model Prediction Error
在機器學(xué)習(xí)模型的效果評估中案腺,預(yù)測誤差的分析是重中之重啰脚。對于現(xiàn)有的各種誤差測量技術(shù)缕贡,如果使用不當(dāng),會得出極具誤導(dǎo)性的結(jié)論拣播。這些結(jié)論會誤導(dǎo)模型設(shè)計者設(shè)計出過擬合的模型晾咪,過擬合是指訓(xùn)練出的模型對于訓(xùn)練集擬合的很好,但是對于新的樣本集則預(yù)測效果極差贮配。這篇文章描述了如何正確的測量模型誤差谍倦,以避免此類問題。
誤差測量
對于一個預(yù)測模型來說泪勒,最重要的是要能對新出現(xiàn)的數(shù)據(jù)樣本準(zhǔn)確進行預(yù)測昼蛀。所以在測量誤差時,必須著重考慮這一點圆存。但是實際中很多模型設(shè)計者往往用訓(xùn)練數(shù)據(jù)的誤差而不是新數(shù)據(jù)的誤差來評估模型叼旋。這種錯誤的誤差測量方式往往是導(dǎo)致模型質(zhì)量不高的根源。
一般來說沦辙,模型總是傾向于更好的擬合訓(xùn)練數(shù)據(jù)夫植。一個模型對于新數(shù)據(jù)的誤差期望總是高于在訓(xùn)練數(shù)據(jù)上的誤差期望。打個比方油讯,例如我們抽取100個人详民,通過回歸模型來預(yù)測財富高低對幸福程度的影響。如果我們記下模型對于訓(xùn)練數(shù)據(jù)進行預(yù)測的平方誤差(squared error)陌兑。然后我們將模型應(yīng)用于100個新的人進行預(yù)測沈跨,模型對于新樣本的平方誤差一般會高于在訓(xùn)練數(shù)據(jù)上的平方誤差。
下面我們通過公式來更明確的表述這一事實兔综。我們可以建立模型對于新數(shù)據(jù)的預(yù)測誤差(我們應(yīng)該真正關(guān)心的指標(biāo)饿凛,也叫實際誤差)和模型對于訓(xùn)練數(shù)據(jù)的預(yù)測誤差(被很多模型設(shè)計者誤用的指標(biāo))之間的關(guān)系。
實際誤差=訓(xùn)練集誤差+樂觀率
這里樂觀率表示相對于訓(xùn)練數(shù)據(jù)來說软驰,模型在新數(shù)據(jù)上的表現(xiàn)要糟糕多少涧窒。這個指標(biāo)越高,就表明我們的模型對于訓(xùn)練數(shù)據(jù)的誤差在實際誤差中所占的比率越小碌宴。
過擬合風(fēng)險
或許我們可以認為對于一組固定的訓(xùn)練集杀狡,樂觀率是一個常數(shù)。如果這個假設(shè)正確贰镣,那么我們就可以通過最小化訓(xùn)練集誤差來最小化實際誤差呜象。也就是說膳凝,雖然訓(xùn)練集誤差過于樂觀,但是如果將其最小化我們?nèi)钥梢缘玫揭粋€實際誤差最小的模型恭陡。因此我們可以忽略實際誤差與訓(xùn)練集誤差的差異蹬音。
不幸的是上面只是我們一廂情愿的想法。實際情況上樂觀率是模型復(fù)雜度的函數(shù):隨著模型復(fù)雜度的增加休玩,樂觀率也會隨之上升著淆。因此上面的公式可以重新寫成:
實際誤差=訓(xùn)練集誤差+f(模型復(fù)雜度)
為什么會這樣呢?因為隨著模型復(fù)雜程度的提高(例如在線性回歸中加入越來越多的參數(shù))模型會更傾向于較好的擬合訓(xùn)練數(shù)據(jù)拴疤。這是統(tǒng)計學(xué)習(xí)模型的基本性質(zhì)之一1永部。在我們的幸福指數(shù)預(yù)測模型中,如果我們將人的姓氏也當(dāng)做一個特征呐矾,那么訓(xùn)練數(shù)據(jù)的誤差相比之前就會下降苔埋。如果我們將一個已破產(chǎn)公司在1990年1月1日不同時段的股票價格作為特征加入,訓(xùn)練集誤差也會下降蜒犯。甚至我們通過擲骰子隨機生成一列數(shù)據(jù)作為特征加入也可以降低訓(xùn)練集誤差组橄。無論增加的特征列與模型有沒有關(guān)系,訓(xùn)練集誤差總會隨著特征的增加而下降罚随。
同時玉工,隨著模型復(fù)雜度的增加,實際誤差也會隨之變化(我們實際關(guān)心的)淘菩。如果我們在幸福指數(shù)預(yù)測模型中加入了一個公司上世紀(jì)某一天的股票價格波動遵班,那么可以預(yù)計模型的實際質(zhì)量將降低。雖然股票價格可以降低訓(xùn)練集誤差瞄勾,但同時拉高了模型對于新數(shù)據(jù)的預(yù)測誤差费奸,因為加入股票價格特征后模型的穩(wěn)定性變差了,因此在新數(shù)據(jù)上的預(yù)測表現(xiàn)隨之下降进陡。甚至就算你加入了一個與模型相關(guān)的預(yù)測變量,如果這個變量的信噪比較低微服,模型的實際誤差依然會變大趾疚。
讓我們通過一個實際的例子來直觀感受一下上面的討論。假設(shè)我們用線性回歸模型來做幸福指數(shù)預(yù)測模型以蕴。剛開始我們可以使用最簡單的模型:
Happiness=a+b Wealth+?Happiness=a+b Wealth+?糙麦,然后我們逐漸增加多項式項,使得模型可以擬合非線性數(shù)據(jù)丛肮。每增加一項多項式項赡磅,模型復(fù)雜度也隨之提高。通過這個過程宝与,我們可以得到二次模型焚廊,如Happiness=a+b Wealth+c Wealth2+?Happiness=a+b Wealth+c Wealth2+?冶匹,或者更復(fù)雜的高階多項式模型:Happiness=a+b Wealth+c Wealth2+d Wealth3+e Wealth4+f Wealth5+g Wealth6+?Happiness=a+b Wealth+c Wealth2+d Wealth3+e Wealth4+f Wealth5+g Wealth6+?。
下圖展示了在不同復(fù)雜度下咆瘟,模型的訓(xùn)練集誤差嚼隘、實際誤差及樂觀率間的關(guān)系。上面的散點圖展示了不同復(fù)雜度下模型曲線對訓(xùn)練數(shù)據(jù)的擬合程度袒餐。
可見隨著模型復(fù)雜度上升飞蛹,訓(xùn)練集誤差會隨之下降。當(dāng)模型復(fù)雜度很高時灸眼,我們的模型可以完美擬合訓(xùn)練集中的所有數(shù)據(jù)卧檐,訓(xùn)練集誤差接近0。類似的焰宣,實際誤差在開始的時候也是在下降泄隔。這是因為當(dāng)模型沒有引入高階多項式項時看起來過于簡單,不能很好的擬合訓(xùn)練數(shù)據(jù)宛徊。但是當(dāng)復(fù)雜度到達一個臨界點后佛嬉,隨著復(fù)雜度繼續(xù)增加模型對訓(xùn)練數(shù)據(jù)的擬合越來越好,但是模型對于新數(shù)據(jù)的預(yù)測效果卻在變差闸天。
這種現(xiàn)象叫做過擬合(overfitting)暖呕。在這種情況下,模型過于關(guān)注那些訓(xùn)練數(shù)據(jù)的細節(jié)變動苞氮,而這些細節(jié)變動并不是所有數(shù)據(jù)共性的東西湾揽。從圖中可以看出,此時曲線在盡力擬合每一個訓(xùn)練數(shù)據(jù)笼吟,這樣的模型顯然與訓(xùn)練數(shù)據(jù)太過緊密的库物。
避免過擬合現(xiàn)象是構(gòu)建精準(zhǔn)、魯棒模型的關(guān)鍵之一贷帮。當(dāng)只關(guān)注訓(xùn)練數(shù)據(jù)時戚揭,過擬合現(xiàn)象非常容易發(fā)生。為了檢測是否存在過擬合撵枢,應(yīng)該將模型應(yīng)用于新數(shù)據(jù)上以檢測效果民晒。當(dāng)然了,一般不可能得到真正的實際誤差(除非你能得到數(shù)據(jù)空間的全部數(shù)據(jù))锄禽,但是有諸多方式可以幫助我們對實際誤差進行準(zhǔn)確估計潜必。本文的第二章節(jié)將介紹一些相關(guān)的誤差估計方法。
實例:不合理的誤差測量導(dǎo)致的悲劇
我們通過一個常見的建模流程展示使用訓(xùn)練集誤差作為實際誤差所帶來的陷阱2沃但。我們首先隨機生成100個樣本數(shù)據(jù)磁滚。每個樣本數(shù)據(jù)有一個目標(biāo)字段和50個特征字段。例如宵晚,目標(biāo)字段是一種樹的生長速率垂攘,而特征字段包括降水量维雇、濕度、氣壓搜贤、經(jīng)緯度等等谆沃。在這個例子中,每個樣本數(shù)據(jù)都是完全獨立隨機生成的仪芒,因此這份數(shù)據(jù)的字段間毫無關(guān)系唁影。
然后我們建立一個線性回歸模型來預(yù)測生長速率。因為我們知道特征和目標(biāo)字段沒有相關(guān)性掂名,所以我們期望得到的結(jié)果是
R2為0据沈。不幸的是我們的模型最后報告R2為0.5。這不科學(xué)敖让铩锌介!我們的數(shù)據(jù)明明只是一些噪聲數(shù)據(jù)。不過別急猾警,我們還可以通過F檢驗來對模型進行確認孔祸。這個可以衡量模型的顯著性,用以識別回歸出的相關(guān)關(guān)系是不是只是因為偶然性得到的发皿。F檢驗的p值為0.53崔慧,這表明回歸模型不顯著。
如果到此為止穴墅,一切看起來沒有問題惶室;我們應(yīng)該丟棄這個模型,因為模型并不顯著(當(dāng)然了玄货,這只不過是一些噪聲數(shù)據(jù);食)。不過很多人通常接下來不會徹底丟棄這個模型松捉,而是丟棄那些不顯著的特征夹界,然后保留相對顯著的特征再次做回歸。讓我們假設(shè)留下顯著性水平低于25%的特征惩坑,在這個例子中有21個掉盅。接著我們再次訓(xùn)練回歸模型。
在第二次訓(xùn)練后以舒,我們得到:
在第二次訓(xùn)練后,我們得到:
- R2為0.36
- p值為5?10?45?10?4
- 6個參數(shù)的顯著性水平達到5%
再強調(diào)一下慢哈,我們的數(shù)據(jù)完全是噪聲蔓钟;不可能有任何相關(guān)性。但是我們第二次卻得到了一個高顯著性的模型卵贱,證據(jù)就是有意義的
R2值(在社會科學(xué)領(lǐng)域這個值相對較高)和6個顯著的參數(shù)滥沫!
這是一個令人困惑的結(jié)果侣集,我們建模的過程似乎并無不妥,但是卻得到了一個匪夷所思的錯誤結(jié)論兰绣。這個例子展示了在統(tǒng)計過程中如果不能準(zhǔn)確測量誤差世分,則會得到具有嚴(yán)重缺陷的模型。
誤差的測量方法
使用Adjusted R2
優(yōu)點
- 便于應(yīng)用
- 內(nèi)建于許多分析程序中
- 計算速度快
- 解釋性好3
缺點
- 通用性不高
- 仍然有過擬合風(fēng)險
信息論方法
有一些方法可以用于評估相對于真實模型來說我們的模型丟失了多少信息缀辩。當(dāng)然我們是無法獲知真實模型的(真正產(chǎn)生訓(xùn)練數(shù)據(jù)的實際模型)臭埋,但是在一些前提下我們?nèi)匀挥修k法估計模型的信息丟失程度。信息丟失越多臀玄,則模型誤差越高瓢阴,效果越差。
信息論方法假設(shè)模型是一個參數(shù)模型(parametric model)健无。在這個前提下荣恐,我們可以根據(jù)參數(shù)和數(shù)據(jù)來定義訓(xùn)練數(shù)據(jù)的似然率(likelihood),不嚴(yán)格的說累贤,似然率是指觀測到的這組訓(xùn)練數(shù)據(jù)出現(xiàn)的概率4叠穆。如果我們調(diào)整參數(shù)使得這組數(shù)據(jù)的似然率最大,則得到這組參數(shù)的最大似然估計臼膏。于是我們就可以利用信息論的方法來比較不同模型和它們的復(fù)雜度硼被,以此確定哪個模型最接近真實模型。
最常用的信息論方法是Akaike信息準(zhǔn)則(Akaike's Information Criteria讶请,簡稱AIC)祷嘶。AIC被定義為一個關(guān)于模型似然率及模型參數(shù)的函數(shù):
)可視為對模型樂觀性的懲罰。
除了AIC外還有許多基于信息論的判定準(zhǔn)則夺溢。下面列舉兩個其它信息準(zhǔn)則论巍,與AIC相比其區(qū)別在于對樂觀性的懲罰方式不同,下面兩個準(zhǔn)則對樂觀性的懲罰還與樣本容量n有關(guān)风响。
如何選擇合適的信息準(zhǔn)則是非常復(fù)雜的嘉汰,涉及大量理論、實踐甚至是哲學(xué)因素状勤。實際中決定選用哪個準(zhǔn)則要具體情況具體分析鞋怀,甚至帶有一定信仰成分。
優(yōu)點
- 便于應(yīng)用
- 內(nèi)建于許多高級分析程序中
缺點
- 需要具體情況具體分析
- 需要模型能夠計算似然率5
- 學(xué)術(shù)界對于這種方法的理論基礎(chǔ)還存在諸多爭議
測試集
上面提到的方法都只能用于參數(shù)模型持搜,并且對模型有一些理論假設(shè)密似。如果這些假設(shè)不成立,則上面的方法效果將會很查葫盼。還好残腌,實踐中還有一些其它類型的方法,這些方法對模型沒有任何假設(shè),僅僅通過對數(shù)據(jù)集做處理來估計實際誤差抛猫。
其中最簡單的方法便是測試集方法蟆盹。我們首先將樣本數(shù)據(jù)集分為兩份。一份用于模型訓(xùn)練闺金;另一份用于效果評測逾滥。例如我們有1000個數(shù)據(jù),我們可以用700個訓(xùn)練模型败匹,剩下的300個評估模型寨昙。
[圖片上傳中...(image-5a9f24-1511750500364-1)]
這個方法可以說是測量模型誤差的標(biāo)準(zhǔn)方法。模型實際誤差被定義為模型對于新數(shù)據(jù)的預(yù)測誤差哎壳。而通過預(yù)留測試集毅待,我們可以直接測量這個誤差。
測試集方法的代價是要減少一部分訓(xùn)練數(shù)據(jù)归榕。例如上面我們從訓(xùn)練集中移除了30%的數(shù)據(jù)尸红。這意味著相比于使用全量集合訓(xùn)練來說,我們的模型會存在更大的偏差刹泄。在標(biāo)準(zhǔn)的流程中外里,評價完模型效果后,我們會用全量數(shù)據(jù)重新訓(xùn)練來得到最終的模型特石。因此在這種情流程下盅蝗,測試集的誤差評價結(jié)果是偏保守的,因為模型的實際誤差要比報告的誤差低一些姆蘸。在實際中這種保守的誤差估計要比樂觀的誤差估計更有效墩莫。
這種技術(shù)的一個要點是在得到最終模型前不能以任何方式分析或使用測試集。一個常見錯誤是在效果評估后重新調(diào)整模型然后再次訓(xùn)練評估逞敷。如果在一次建模中你重復(fù)使用一份測試集狂秦,這份測試集就被污染了。由于測試集參與了模型調(diào)整推捐,它就不能再給出模型誤差的一個無偏估計了裂问。
優(yōu)點
- 對模型沒有假設(shè)
- 數(shù)據(jù)足夠多時,準(zhǔn)確度較高
- 易于實現(xiàn)和使用
- 易于理解
缺點
- 估計偏保守
- 一次使用即被污染
- 需要確定測試集比例(一般在70%-30%之間)
交叉驗證及重新取樣
有時牛柒,對于模型訓(xùn)練來說保留一部分數(shù)據(jù)作為測試集的方式有些代價過高堪簿。這時一些基于重新取樣的方法如交叉驗證就比較有用了。
交叉驗證將數(shù)據(jù)集平均分成n份皮壁。例如我們將100個數(shù)據(jù)分成5份椭更,每份20個數(shù)據(jù)點。然后我們重復(fù)做5輪誤差測量蛾魄。在每輪中甜孤,取其中4份(共80個數(shù)據(jù)點)訓(xùn)練模型协饲,剩下的1份檢驗?zāi)P臀吠蟆H缓髮?輪測得的誤差取平均值缴川,最為對實際誤差的估計。
[圖片上傳中...(image-1f7b5f-1511750500363-0)]
可以看到描馅,交叉驗證與測試集方法很類似把夸。不同之處在于交叉驗證中每個數(shù)據(jù)既參與模型訓(xùn)練又參與模型檢測,只不過不在同一輪里铭污。當(dāng)數(shù)據(jù)集不是很大時恋日,交叉驗證比測試集方法要更值得推薦一些,因為交叉驗證不需要移除訓(xùn)練數(shù)據(jù)嘹狞。交叉驗證同時還能給出誤差估計的穩(wěn)定性度量岂膳,這是一個非常有用的指標(biāo)。不過如果主要目標(biāo)是衡量估計的穩(wěn)定性磅网,一些其它的重新取樣方法如Bootstrapping更值得一試谈截。
交叉驗證的一個最大問題是確定分組數(shù)。一般來說涧偷,分組數(shù)越小則估計偏差越大(往往偏保守簸喂,也就是報告的誤差比實際誤差要大)但是方差越小。極端情況下燎潮,你可以每一個樣本點分一個組喻鳄,這叫做Leave-One-Out-Cross-Validation。此時對誤差的估計基本沒有偏差确封,但是方差會很大除呵。理解偏差-方差權(quán)衡對于確定分組數(shù)是非常重要的。另一個需要關(guān)注的點是計算效率爪喘。對于每一個分組颜曾,你都要訓(xùn)練一個新的模型,所以如果訓(xùn)練過程比較慢的話腥放,還是分少點組為好泛啸。最后說一下,根據(jù)經(jīng)驗一般把分組數(shù)定為5或10是比較合適的選擇秃症。
優(yōu)點
- 對模型沒有假設(shè)
- 數(shù)據(jù)足夠多時候址,準(zhǔn)確度較高
- 易于理解
缺點
- 計算效率低
- 需要確定分組數(shù)
- 估計偏保守
做出選擇
總結(jié)一下,我們一共討論了下列測量模型誤差的技術(shù):
- Adjusted
- 信息論方法
- 測試集方法
- 交叉驗證及重新取樣
作為模型設(shè)計者种柑,首先要決定是否依賴前面兩個方法對模型的假設(shè)條件岗仑。如果不是的話,則可以選擇后面兩個模型聚请。
一般來說荠雕,基于假設(shè)條件的模型更便于使用稳其,不過選擇這種易用性的同時要付出一些代價。首先就是炸卑,對于實際情況來說這些假設(shè)都不是完全成立的既鞠。至于是否近似成立要具體情況具體分析。很多時候這些假設(shè)基本是成立的盖文,不過一旦實際情況與假設(shè)出入較大嘱蛋,那么這些方法所得出的結(jié)論就完全不可信了。
就我個人的經(jīng)驗來說五续,我更偏好交叉驗證洒敏。因為交叉驗證不需要對模型的假設(shè),而且估計效果較好疙驾。對于交叉驗證來說最主要的消耗是計算資源凶伙,不過隨著現(xiàn)在計算機計算能力越來越強,這一點可以不用過多擔(dān)心它碎。對于需要假設(shè)的模型來說函荣,雖然實際中很多模型都是參數(shù)模型,但是并沒有一個有效的方法去判斷模型是否符合假設(shè)链韭。因此使用這些方法時心里總是存在一點疑慮偏竟。而交叉驗證雖然計算資源消耗多一點,但是其結(jié)論總是更讓人放心敞峭。
Footnote
- 僅對于損失函數(shù)是凸的(沒有局部最大值和最小值)統(tǒng)計模型來說是這樣踊谋。如果損失函數(shù)存在局部最大值或最小值,增加參數(shù)會令模型無法收斂到全局最優(yōu)值旋讹,從而導(dǎo)致訓(xùn)練集誤差也會變大殖蚕。不過對于一些常見的模型(如線性回歸及邏輯回歸)其損失函數(shù)都是凸函數(shù)。
- 這個例子取自Freedman, L. S., & Pee, D. (1989). Return to a note on screening regression equations. The American Statistician, 43(4), 279-282沉迹。
- 雖然adjusted
可以是負數(shù)(表示這個模型比零模型效果更差)睦疫。
- 這個定義是不嚴(yán)格的,因為對于連續(xù)隨機變量鞭呕,獲得這組數(shù)據(jù)的概率為0蛤育。如果讓你從0到1之間隨機取一個數(shù),則你取到0.724027299329434...的幾率為0葫松。你無法準(zhǔn)確寫出這個數(shù)因為其小數(shù)部分是無窮的瓦糕。似然率是通過讓模型的概率密度函數(shù)取特定值計算出來的。要獲得真正的概率腋么,你需要對概率密度函數(shù)在一個區(qū)間上求積分咕娄。因為似然率不是一個概率值,所以它可能大于1珊擂。盡管如此圣勒,將似然率看做“給定數(shù)據(jù)集出現(xiàn)的概率”對于直觀理解其意義是有幫助的费变;不過心里要清楚意識到,這在數(shù)學(xué)上是不準(zhǔn)確的圣贸!
- 這一點限制了信息論方法的適用范圍挚歧,諸如隨機森林與人工神經(jīng)網(wǎng)絡(luò)等模型均無法應(yīng)用此方法。
更多評價指標(biāo)見
分類算法中的ROC與PR指標(biāo)
Recall(召回率) Precision(準(zhǔn)確率) F-Measure E值 sensitivity(靈敏性) specificity(特異性)漏診率 誤診率 ROC AUC
參考文獻
準(zhǔn)確測量機器學(xué)習(xí)模型的誤差
Accurately Measuring Model Prediction Error