理解高偏差和高方差

2019-06-18 更新
博客已遷移到 https://www.zhihu.com/people/cactusgame/posts


最早接觸高偏差(high bias)和高方差(high variance)的概念,是在學習machine learning的欠擬合(under fitting)和過擬合(over-fitting)時遇到的。Andrew的講解很清晰,我也很容易記住了過擬合-高方差,欠擬合-高偏差的結論。但是有關這兩個概念的具體細節(jié),我還不是很理解,比如

  • 高方差,高偏差和數(shù)學中的方差,偏差是什么關系?
  • 高方差,高偏差的計算公式是什么?
  • 一個糟糕的模型(預測的基本都是錯的),偏差和方差不是應該都很高么?到底哪個高?
    查閱了很多文檔,發(fā)現(xiàn)很多文章都出自此文。這篇文章將的非常通俗易懂,也作為本文的主要參考文獻。

前提

  • 模型與訓練模型
    這個概念如果沒有搞清楚,后面的一切都是空談。我們每次使用一個訓練集訓練出一個“模型”,其實應該叫做訓練模型。因為每次更換訓練集,訓練出的“模型”并不一樣,即各個訓練模型被訓練出來的參數(shù)(系數(shù))是不一樣的。
    舉個例子,我們在擬合一個y=ax+b的模型,第一個訓練集訓練的結果是y=x+0.9,第二個訓練集訓練的結果是y=x+1……因為我們不可能得到用于訓練這個模型的所有數(shù)據(jù),也就無法訓練出使模型y=ax+b理論上100%正確的參數(shù),所以我們只能得到不同的訓練模型。
  • 參數(shù)(parameter)與超參數(shù)(hyperparameter)
    剛剛上面提到了參數(shù),參數(shù)是被數(shù)據(jù)和算法訓練出來的。而超參數(shù)(比如學習速率)不是被訓練出來的,而是人為手工調(diào)整的。調(diào)整超參數(shù)更像是一種藝術,而不是科學。

問題來了

既然我們永遠無法訓練出那個理想的模型,只能訓練出訓練模型,那么訓練模型預測的結果和理論模型(即現(xiàn)實)的結果肯定就存在誤差。我們肯定希望這個誤差越小越好,并且將這個訓練模型應用在其他數(shù)據(jù)集上的誤差也是越小越好。那么問題來了,如果這個誤差很大,我們該如何是好?

  • 要收集更多的訓練數(shù)據(jù)么?
  • 需要抽取更多的數(shù)據(jù)特征么?

舉個栗子

假設我們要訓練一個股票市場的模型,模型的目標是預測某支股票第2天的收益率,如果收益為正則買入,反之則賣出。我們的模型天天都想發(fā)財,它希望能準確預測每一天的漲跌,所以它關注的是第二天的收益,什么一年翻一倍之類的中長線策略它根本不關心。

  • A模型:閱讀了大量的巴菲特,彼得林奇等等各種大師的書籍和數(shù)據(jù),它發(fā)現(xiàn)買入低估值股票的收益很可觀,于是每天滿倉殺入估值最低的N支股票。沒過幾天,它虧成了狗。它去質(zhì)問股神,股神曰:“你把投資想象的太簡單了,除了看估值,我還看很多其他指標”。
  • B模型:吸取A模型的教訓,它羅列了各種稀奇古怪的指標,最終驚喜的發(fā)現(xiàn),模型成功的預測某支股票第二天的收益。萬分驚喜下,它滿倉殺入。第三天,第四天,第N天過去了,模型有時預測的準確,但大多時候謬之千里,還是虧成了??。

上面訓練的2種模型,和我們期待的“神預測”模型有很大誤差。我們要想減少預測誤差,就要分析造成誤差的原因。這里的誤差包含:

  • 偏差(bias):我們要預測第二天的收益,而估值指標經(jīng)常用于長線投資,雖然每次預測都是信誓旦旦,但是模型從本質(zhì)上就把目標搞錯了。
  • 方差(variance):過多的已知條件,導致模型無法給出確定的預測,預測結果和瞎蒙一樣,給人的感覺是不靠譜。
  • 無法消除的誤差:我們都知道,完美預測第二天的情況,是不可能的。這樣的誤差難以消除,我們希望它越小越好,一般就忽略掉了。
    所以,我們可以優(yōu)化的誤差=偏差+方差

引用一個列子,打靶圖

打靶圖

在很多文章里看到過這張圖,其原始出處就在參考文獻中。這個例子很清晰,但是我第一次看的時候,有個問題并沒有理解:

  • 圖中的每一個藍點代表什么?是對不同的輸入x的預測輸出y么?

概念

我第一次看到這張圖時,把圖上的藍點理解成了每次射擊時的結果,即一個訓練模型對不同輸入X作出的不同預測Y。如果是這么理解的話,就沒法解釋后面的高方差了。其實,每一個藍點,都代表了一個訓練模型的預測數(shù)據(jù),即根據(jù)不同的訓練集訓練出一個訓練模型,再用這個訓練模型作出一次預測結果。如果將這個過程重復N次,相當于進行了N次射擊。我們假設真實的函數(shù)關系是Y=f(x),而訓練模型預測的結果是p(x),則

  • 偏差錯誤:偏差是衡量預測值和真實值的關系。即N次預測的平均值(也叫期望值),和實際真實值的差距。所以偏差bias=E(p(x)) - f(x)。
    即bias是指一個模型在不同訓練集上的平均表現(xiàn)和真實值的差異,用來衡量一個模型的擬合能力。
  • 方差錯誤:方差用于衡量預測值之間的關系,和真實值無關。即對于給定的某一個輸入,N次預測結果之間的方差。variance= E((p(x) - E(p(x)))^2)。這個公式就是數(shù)學里的方差公式,反應的是統(tǒng)計量的離散程度。只不過,我們需要搞清楚我們計算的方差的意義,它反應的是不同訓練模型針對同一個預測的離散程度。
    即variance指一個模型在不同訓練集上的差異,用來衡量一個模型是否容易過擬合。

打靶圖解釋

  • 高偏差,低方差:
    每次射擊都很準確的擊中同一個位置,故極端的情況方差為0。只不過,這個位置距離靶心相差了十萬八千里。對于射擊而言,每次都打到同一個點,很可能是因為它打的不是靶心。對于模型而言,往往是因為模型過于簡單,才會造成“準”的假象。提高模型的復雜度,往往可以減少高偏差。
  • 高方差,低偏差:
    是不是偏差越低越好?是不是低偏差時,方差也會低呢?通過對偏差的定義,不難發(fā)現(xiàn),偏差是一個期望值(平均值),如果一次射擊偏左5環(huán),另一次射擊偏右5環(huán),最終偏差是0。但是沒一槍打中靶心,所以方差是巨大的,這種情況也是需要改進的。

參考文檔:

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容