【機器學習】Bootstrap詳解

分類:技術 時間:2017-01-13

Boostrap簡介

Bootstrap方法是非常有用的一種統計學上的估計方法,是斯坦福統計系的教授Bradley Efron(我曾有幸去教授辦公室約談了一次)在總結、歸納前人研究成果的基礎上提出一種新的非參數統計方法。Boostrap是一類非參數Monte Carlo方法,其實質是對觀測信息進行再抽樣,進而對總體的分布特性進行統計推斷。

因為該方法充分利用了給定的觀測信息,不需要模型其他的假設和增加新的觀測,并且具有穩健性和效率高的特點。1980年代以來,隨著計算機技術被引入到統計實踐中來,此方法越來越受歡迎,在機器學習領域應用也很廣泛。

首先,Bootstrap通過重抽樣,可以避免了Cross-Validation造成的樣本減少問題,其次,Bootstrap也可以用于創造數據的隨機性。比如,我們所熟知的隨機森林算法第一步就是從原始訓練數據集中,應用bootstrap方法有放回地隨機抽取k個新的自助樣本集,并由此構建k棵分類回歸樹。

具體講解

下面我們用一個例子具體介紹bootstrap的原理和用法:

假設我們有兩個金融資產X和Y,我們現在想要合理配置這兩個資產,使得其資產組合的風險最小。也就是找到一個 ,使得 最小。這個問題幾十年前馬爾可維茨已經在其投資組合理論里給出了解答,最優的 表達式如下:

但是現實生活中實際上我們并不知道 , 以及 的值,故而只能通過X和Y的一系列樣本對其進行估計。并用估計值 , 以及 代替 , 以及 插入公式:

所以我們唯一的任務就是合理地估計 , 以及 ,傳統方法中我們一般會考慮直接使用樣本方差(sample variance)去估計 , 以及 的值, 然而自從有了Bootstrap之后,我們有了另一種方法與途徑,可以更好地去做估計總體的分布特性,即不僅可以估計 ,還可以估計 的方差、中位數等值。 下面就講講Bootstrap究竟是如何做到這一點的:

Bootstrap步驟:

1. 在原有的樣本中通過重抽樣抽取一定數量(比如100)的新樣本,重抽樣(Re-sample)的意思就是有放回的抽取,即一個數據有可以被重復抽取超過一次。

2. 基于產生的新樣本,計算我們需要估計的統計量。

在這例子中,我們需要估計的統計量是 ,那么我們就需要基于新樣本的計算樣本方差、協方差的值作為 , 以及 ,然后通過上面公式算出一個

3. 重復上述步驟n次(一般是ngt;1000次)。

在這個例子中,通過n次(假設n=1000),我們就可以得到1000個 。也就是

4. 最后,我們可以計算被估計量的均值和方差(不用關注最后的具體數值,這與原本的樣本有關):

我們發現,通過Bootstrap方法我們竟然不僅可以估計 的值( 這點普通方法也可以很容易做到),還可以估計 的accuracy也就是其Standard Error。這可是只利用原有的樣本進行一次估計所做不到的。那么Bootstrap對于分布特性的估計效果究竟如何呢?請看下圖:

左邊是真實的 分別,右邊則是基于bootstrap方法得到的1000個 的分布,可以看到,二者是比較相近的,也就是說Bootstrap有著不錯的估計效果。而且當重復次數增多,Bootstrap的估計效果會更好。

不僅是 的標準差,如果我們想要估計 的中位數、分位數等統計量,也是可以通過Boostrap方法做到的,其整個流程可以用下面一張圖詮釋:

本質上,Bootstrap方法,是將一次的估計過程,重復上千次上萬次,從而便得到了得到上千個甚至上萬個的估計值,于是利用這不止一個的估計值,我們就可以估計

均值以外的其他統計量:比如標準差、中位數等。

本文部分圖片來源:《An Introduction to Statistical Learning with Applications in R》

說在后面

關于機器學習的內容還未結束,請持續關注該專欄的后續文章。

更多內容請關注我的專欄: R Language and Data Mining

或者關注我的知乎賬號:溫如


Tags: Bootstrap 數據挖掘

文章來源:https://zhuanlan.zhihu.com/p/24851814


ads
ads

相關文章
ads

相關文章

ad