【機器學習】Bootstrap詳解

Bootstrap簡介

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

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

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

具體講解

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

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

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

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

Bootstrap步驟:

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

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

在這例子中,我們需要估計的統計量是alpha,那麼我們就需要基於新樣本的計算樣本方差、協方差的值作為hat{sigma _X^2},hat{sigma_Y^2}以及hat{sigma_{XY}},然後通過上面公式算出一個hat{alpha}

3. 重複上述步驟n次(一般是n>1000次)。

在這個例子中,通過n次(假設n=1000),我們就可以得到1000個alpha_i。也就是alpha_1,alpha_2,cdots,alpha_{1000}

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

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

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

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

本質上,Bootstrap方法,是將一次的估計過程,重複上千次上萬次,從而便得到了得到上千個甚至上萬個的估計值,於是利用這不止一個的估計值,我們就可以估計alpha均值以外的其他統計量:比如標準差、中位數等。

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

說在後面

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

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

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


推薦閱讀:

Kaggle比賽的終極武器: 模型融合(Model Ensemble)
一篇文章看懂數據挖掘,大數據,機器學習
【機器學習】如何做出一個更好的Machine Learning預測模型
R之方差分析

TAG:机器学习 | 数据分析 | 数据挖掘 |