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方法做到的,其整個流程可以用下面一張圖詮釋:

均值以外的其他統計量:比如標準差、中位數等。
本文部分圖片來源:《An Introduction to Statistical Learning with Applications in R》
說在后面
關于機器學習的內容還未結束,請持續關注該專欄的后續文章。
更多內容請關注我的專欄: R Language and Data Mining
或者關注我的知乎賬號:溫如
Tags: Bootstrap 數據挖掘
文章來源:https://zhuanlan.zhihu.com/p/24851814