1蚊惯、偏差和方差
在機(jī)器學(xué)習(xí)中侠鳄,過擬合和欠擬合都會使訓(xùn)練好的機(jī)器學(xué)習(xí)模型在真實(shí)的數(shù)據(jù)中出現(xiàn)錯誤异剥。我們可以將錯誤分為偏差(Bias)和方差(Variance)兩類。下面就來看看偏差和方差的定義济竹、產(chǎn)生原因以及二者之間如何權(quán)衡痕檬。
偏差(bias):偏差衡量了模型的預(yù)測值與實(shí)際值之間的偏離關(guān)系。例如某模型的準(zhǔn)確度為96%送浊,則說明是低偏差梦谜;反之,如果準(zhǔn)確度只有70%罕袋,則說明是高偏差改淑。
方差(variance):方差描述的是訓(xùn)練數(shù)據(jù)在不同迭代階段的訓(xùn)練模型中,預(yù)測值的變化波動情況(或稱之為離散情況)浴讯。從數(shù)學(xué)角度看,可以理解為每個預(yù)測值與預(yù)測均值差的平方和的再求平均數(shù)蔼啦。通常在模型訓(xùn)練中榆纽,初始階段模型復(fù)雜度不高,為低方差捏肢;隨著訓(xùn)練量加大奈籽,模型逐步擬合訓(xùn)練數(shù)據(jù),復(fù)雜度開始變高鸵赫,此時方差會逐漸變高衣屏。
[if !vml]
[endif]
2、偏差和方差的權(quán)衡
有一些算法天生就是高方差的算法辩棒,如kNN算法狼忱。非參數(shù)學(xué)習(xí)算法通常都是高方差,因?yàn)椴粚?shù)據(jù)進(jìn)行任何假設(shè)一睁。
有一些算法天生就是高偏差算法钻弄,如線性回歸。參數(shù)學(xué)習(xí)算法通常都是高偏差算法者吁,因?yàn)閷?shù)據(jù)有跡象窘俺。
關(guān)于解決方差和偏差的問題中:
我們要知道偏差和方差是無法完全避免的,只能盡量減少其影響复凳。
[if !supportLists]1.???[endif]在避免偏差時瘤泪,需盡量選擇正確的模型灶泵,一個非線性問題而我們一直用線性模型去解決,那無論如何对途,高偏差是無法避免的赦邻。
[if !supportLists]2.???[endif]有了正確的模型,我們還要慎重選擇數(shù)據(jù)集的大小掀宋,通常數(shù)據(jù)集越大越好深纲,但大到數(shù)據(jù)集已經(jīng)對整體所有數(shù)據(jù)有了一定的代表性后,再多的數(shù)據(jù)已經(jīng)不能提升模型了劲妙,反而會帶來計(jì)算量的增加湃鹊。而訓(xùn)練數(shù)據(jù)太小一定是不好的,這會帶來過擬合镣奋,模型復(fù)雜度太高币呵,方差很大,不同數(shù)據(jù)集訓(xùn)練出來的模型變化非常大侨颈。
[if !supportLists]3.???[endif]最后余赢,要選擇合適的模型復(fù)雜度,復(fù)雜度高的模型通常對訓(xùn)練數(shù)據(jù)有很好的擬合能力哈垢。
其實(shí)在機(jī)器學(xué)習(xí)領(lǐng)域妻柒,主要的挑戰(zhàn)來自方差。處理高方差的手段有:
[if !supportLists]·???????[endif]降低模型復(fù)雜度
[if !supportLists]·???????[endif]減少數(shù)據(jù)維度耘分;降噪
[if !supportLists]·???????[endif]增加樣本數(shù)
[if !supportLists]·???????[endif]使用驗(yàn)證集
3举塔、模型正則化(未完待續(xù))
其實(shí)還有一個降低方差的重要方法:模型正則化。本文從理論及代碼兩個方面對L1正則求泰、L2正則進(jìn)行了介紹央渣,幫助大家了解其背后的原理以及實(shí)際的使用方法