原文:http://www.zhihu.com/question/20448464
5 個回答
偏差:描述的是預測值(估計值)的期望與真實值之間的差距。偏差越大,越偏離真實數據,如下圖第二行所示。
方差:描述的是預測值的變化范圍,離散程度,也就是離其期望值的距離。方差越大,數據的分布越分散,如下圖右列所示。參考:Understanding the Bias-Variance Tradeoff
原文:http://www.zhihu.com/question/27068705
最近在學習機器學習,在學到交叉驗證的時候,有一塊內容特別的讓我困惑,Error可以理解為在測試數據上跑出來的
不准確率 ,即為 (1-准確率)。
在訓練數據上面,我們可以進行交叉驗證(Cross-Validation)。
一種方法叫做K-fold Cross Validation (K折交叉驗證), K折交叉驗證,初始采樣分割成K個子樣本,一個單獨的子樣本被保留作為驗證模型的數據,其他K-1個樣本用來訓練。交叉驗證重復K次,每個 子樣本驗證一次,平均K次的結果或者使用其它結合方式,最終得到一個單一估測。
當K值大的時候, 我們會有 更少的Bias(偏差), 更多的Variance。
當K值小的時候, 我們會有 更多的Bias(偏差), 更少的Variance。
我十分不理解上述的描述,求大神來解釋到底什么是Bias, Error,和Variance?
交叉驗證,對於這三個東西到底有什么影響? 修改
在訓練數據上面,我們可以進行交叉驗證(Cross-Validation)。
一種方法叫做K-fold Cross Validation (K折交叉驗證), K折交叉驗證,初始采樣分割成K個子樣本,一個單獨的子樣本被保留作為驗證模型的數據,其他K-1個樣本用來訓練。交叉驗證重復K次,每個 子樣本驗證一次,平均K次的結果或者使用其它結合方式,最終得到一個單一估測。
當K值大的時候, 我們會有 更少的Bias(偏差), 更多的Variance。
當K值小的時候, 我們會有 更多的Bias(偏差), 更少的Variance。
我十分不理解上述的描述,求大神來解釋到底什么是Bias, Error,和Variance?
交叉驗證,對於這三個東西到底有什么影響? 修改
舉報
分享
按投票排序按時間排序
12 個回答
首先 Error = Bias + Variance
Error反映的是整個模型的准確度,Bias反映的是模型在樣本上的輸出與真實值之間的誤差,即模型本身的精准度,Variance反映的是模型每一次輸出結果與模型輸出期望之間的誤差,即模型的穩定性。
舉一個例子,一次打靶實驗,目標是為了打到10環,但是實際上只打到了7環,那么這里面的Error就是3。具體分析打到7環的原因,可能有兩方面:一是瞄准出了問題,比如實際上射擊瞄准的是9環而不是10環;二是槍本身的穩定性有問題,雖然瞄准的是9環,但是只打到了7環。那么在上面一次射擊實驗中,Bias就是1,反應的是模型期望與真實目標的差距,而在這次試驗中,由於Variance所帶來的誤差就是2,即雖然瞄准的是9環,但由於本身模型缺乏穩定性,造成了實際結果與模型期望之間的差距。
在一個實際系統中,Bias與Variance往往是不能兼得的。如果要降低模型的Bias,就一定程度上會提高模型的Variance,反之亦然。造成這種現象的根本原因是,我們總是希望試圖用有限訓練樣本去估計無限的真實數據。當我們更加相信這些數據的真實性,而忽視對模型的先驗知識,就會盡量保證模型在訓練樣本上的准確度,這樣可以減少模型的Bias。但是,這樣學習到的模型,很可能會失去一定的泛化能力,從而造成過擬合,降低模型在真實數據上的表現,增加模型的不確定性。相反,如果更加相信我們對於模型的先驗知識,在學習模型的過程中對模型增加更多的限制,就可以降低模型的variance,提高模型的穩定性,但也會使模型的Bias增大。Bias與Variance兩者之間的trade-off是機器學習的基本主題之一,機會可以在各種機器模型中發現它的影子。
具體到K-fold Cross Validation的場景,其實是很好的理解的。首先看Variance的變化,還是舉打靶的例子。假設我把搶瞄准在10環,雖然每一次射擊都有偏差,但是這個偏差的方向是隨機的,也就是有可能向上,也有可能向下。那么試驗次數越多,應該上下的次數越接近,那么我們把所有射擊的目標取一個平均值,也應該離中心更加接近。更加微觀的分析,模型的預測值與期望產生較大偏差,在模型固定的情況下,原因還是出在數據上,比如說產生了某一些異常點。在最極端情況下,我們假設只有一個點是異常的,如果只訓練一個模型,那么這個點會對整個模型帶來影響,使得學習出的模型具有很大的variance。但是如果采用k-fold Cross Validation進行訓練,只有1個模型會受到這個異常數據的影響,而其余k-1個模型都是正常的。在平均之后,這個異常數據的影響就大大減少了。相比之下,模型的bias是可以直接建模的,只需要保證模型在訓練樣本上訓練誤差最小就可以保證bias比較小,而要達到這個目的,就必須是用所有數據一起訓練,才能達到模型的最優解。因此,k-fold Cross Validation的目標函數破壞了前面的情形,所以模型的Bias必然要會增大。
Error反映的是整個模型的准確度,Bias反映的是模型在樣本上的輸出與真實值之間的誤差,即模型本身的精准度,Variance反映的是模型每一次輸出結果與模型輸出期望之間的誤差,即模型的穩定性。
舉一個例子,一次打靶實驗,目標是為了打到10環,但是實際上只打到了7環,那么這里面的Error就是3。具體分析打到7環的原因,可能有兩方面:一是瞄准出了問題,比如實際上射擊瞄准的是9環而不是10環;二是槍本身的穩定性有問題,雖然瞄准的是9環,但是只打到了7環。那么在上面一次射擊實驗中,Bias就是1,反應的是模型期望與真實目標的差距,而在這次試驗中,由於Variance所帶來的誤差就是2,即雖然瞄准的是9環,但由於本身模型缺乏穩定性,造成了實際結果與模型期望之間的差距。
在一個實際系統中,Bias與Variance往往是不能兼得的。如果要降低模型的Bias,就一定程度上會提高模型的Variance,反之亦然。造成這種現象的根本原因是,我們總是希望試圖用有限訓練樣本去估計無限的真實數據。當我們更加相信這些數據的真實性,而忽視對模型的先驗知識,就會盡量保證模型在訓練樣本上的准確度,這樣可以減少模型的Bias。但是,這樣學習到的模型,很可能會失去一定的泛化能力,從而造成過擬合,降低模型在真實數據上的表現,增加模型的不確定性。相反,如果更加相信我們對於模型的先驗知識,在學習模型的過程中對模型增加更多的限制,就可以降低模型的variance,提高模型的穩定性,但也會使模型的Bias增大。Bias與Variance兩者之間的trade-off是機器學習的基本主題之一,機會可以在各種機器模型中發現它的影子。
具體到K-fold Cross Validation的場景,其實是很好的理解的。首先看Variance的變化,還是舉打靶的例子。假設我把搶瞄准在10環,雖然每一次射擊都有偏差,但是這個偏差的方向是隨機的,也就是有可能向上,也有可能向下。那么試驗次數越多,應該上下的次數越接近,那么我們把所有射擊的目標取一個平均值,也應該離中心更加接近。更加微觀的分析,模型的預測值與期望產生較大偏差,在模型固定的情況下,原因還是出在數據上,比如說產生了某一些異常點。在最極端情況下,我們假設只有一個點是異常的,如果只訓練一個模型,那么這個點會對整個模型帶來影響,使得學習出的模型具有很大的variance。但是如果采用k-fold Cross Validation進行訓練,只有1個模型會受到這個異常數據的影響,而其余k-1個模型都是正常的。在平均之后,這個異常數據的影響就大大減少了。相比之下,模型的bias是可以直接建模的,只需要保證模型在訓練樣本上訓練誤差最小就可以保證bias比較小,而要達到這個目的,就必須是用所有數據一起訓練,才能達到模型的最優解。因此,k-fold Cross Validation的目標函數破壞了前面的情形,所以模型的Bias必然要會增大。
最開始學統計的時候,會覺得R-square (adjusted, AIC, BIC, etc)解釋模型越多越好,但這樣就會有overfitting的的問題。就是說模型解釋training data巨牛啊,但testing data就不行了。overfitting就是字面的意思,模型是無偏了,但variance過大。所以需要把數據分成subset。variance-bias balance之類。具體怎么權衡就可以寫一本書了。。。
那為什么又要cross-validation呢,很大一個好處是避免對test dataset的二次overfitting。每次留一個的那個是LOOCV啦,k-fold一般取k=5/10比較常見,當然也可以根據你的需要(看樣本量怎么可以整除啦之類的),當然再具體選幾又可以探討很多了,也要看電腦和軟件的運算能力。。。
那為什么又要cross-validation呢,很大一個好處是避免對test dataset的二次overfitting。每次留一個的那個是LOOCV啦,k-fold一般取k=5/10比較常見,當然也可以根據你的需要(看樣本量怎么可以整除啦之類的),當然再具體選幾又可以探討很多了,也要看電腦和軟件的運算能力。。。
Danning Wang、路遠之、小感 贊同
Error就像一樓說的 = Bias + Variance
通常而言,機器學習會選一個函數空間,這個函數空間可能並不包含最優的函數,這樣即使學習出來這個函數空間中損失函數最小的那個也會和真正最優的函數存在差別,這個差別就是Bias。此外,由於我們並不知道訓練數據的聯合分布p(x,y),當然,知道了就不用學了,可以直接推導出p(y|x)了。所以我們在學習的時候往往是從存在但未知的p(x,y)中隨機出訓練數據集,因為訓練數據集不能無限,這樣訓練數據的分布和真實的p(x,y)也存在不一致,所以在原來的Bias的基礎上又增加了Variance。
以上就是誤差的兩個來源了。
例如我們要做數據擬合,這里我們假設真實的數據是指數分布,但是我們不知道,所以我們選擇使用線性函數去擬合數據,這樣函數空間中的模型只有線性模型,和真實的指數分布有差距,選擇線性空間的時候帶入了Bias。另外,我們只能通過有限的觀測點去學習線性模型的參數,有限的觀測點來自總體分布的抽樣,並不是完全符合總體數據的p(x,y)分布,這就是Variance的來源了。
為了更形象的說明,我們可以這么理解:假設我們要測量一個物體的長度,我們會選一把尺子去測量,這把尺子可能不是百分之百的准確,選擇尺子不同會帶來Bias。然后我們用尺子測的時候人去估計又會帶來誤差,這就是所謂的Variance了。
不知道這樣解釋你能否理解?
通常而言,機器學習會選一個函數空間,這個函數空間可能並不包含最優的函數,這樣即使學習出來這個函數空間中損失函數最小的那個也會和真正最優的函數存在差別,這個差別就是Bias。此外,由於我們並不知道訓練數據的聯合分布p(x,y),當然,知道了就不用學了,可以直接推導出p(y|x)了。所以我們在學習的時候往往是從存在但未知的p(x,y)中隨機出訓練數據集,因為訓練數據集不能無限,這樣訓練數據的分布和真實的p(x,y)也存在不一致,所以在原來的Bias的基礎上又增加了Variance。
以上就是誤差的兩個來源了。
例如我們要做數據擬合,這里我們假設真實的數據是指數分布,但是我們不知道,所以我們選擇使用線性函數去擬合數據,這樣函數空間中的模型只有線性模型,和真實的指數分布有差距,選擇線性空間的時候帶入了Bias。另外,我們只能通過有限的觀測點去學習線性模型的參數,有限的觀測點來自總體分布的抽樣,並不是完全符合總體數據的p(x,y)分布,這就是Variance的來源了。
為了更形象的說明,我們可以這么理解:假設我們要測量一個物體的長度,我們會選一把尺子去測量,這把尺子可能不是百分之百的准確,選擇尺子不同會帶來Bias。然后我們用尺子測的時候人去估計又會帶來誤差,這就是所謂的Variance了。
不知道這樣解釋你能否理解?
roach sinai 贊同
推薦一篇博文:《
機器學習中的數學(2)-線性回歸,偏差、方差權衡》
方差和偏差一般來說,是從同一個數據集中,用科學的采樣方法得到幾個不同的子數據集,用這些子數據集得到的模型,就可以談他們的方差和偏差的情況了。方差和偏差的變化一般是和模型的復雜程度成正比的,就像本文一開始那四張小圖片一樣,當我們一味的追求模型精確匹配,則可能會導致同一組數據訓練出不同的模型,它們之間的差異非常大。這就叫做方差,不過他們的偏差就很小了,如下圖所示:
上圖的藍色和綠色的點是表示一個數據集中采樣得到的不同的子數據集,我們有兩個N次的曲線去擬合這些點集,則可以得到兩條曲線(藍色和深綠色),它們的差異就很大,但是他們本是由同一個數據集生成的,這個就是模型復雜造成的方差大。模型越復雜,偏差就越小,而模型越簡單,偏差就越大,方差和偏差是按下面的方式進行變化的:
方差和偏差一般來說,是從同一個數據集中,用科學的采樣方法得到幾個不同的子數據集,用這些子數據集得到的模型,就可以談他們的方差和偏差的情況了。方差和偏差的變化一般是和模型的復雜程度成正比的,就像本文一開始那四張小圖片一樣,當我們一味的追求模型精確匹配,則可能會導致同一組數據訓練出不同的模型,它們之間的差異非常大。這就叫做方差,不過他們的偏差就很小了,如下圖所示:


最后還是用數學的語言來描述一下偏差和方差:
E(L)是損失函數,h(x)表示真實值的平均,第一部分是與y(模型的估計函數)有關的,這個部分是由於我們選擇不同的估計函數(模型)帶來的差異,而第二部分是與y無關的,這個部分可以認為是模型的固有噪聲。
對於上面公式的第一部分,我們可以化成下面的形式:
這個部分在PRML的1.5.5推導,前一半是表示偏差,而后一半表示方差,我們可以得出:損失函數=偏差^2+方差+固有噪音。
