【機器學習】Bootstrap詳解
Bootstrap簡介
Bootstrap方法是非常有用的一種統計學上的估計方法,是斯坦福統計系的教授Bradley Efron(我曾有幸去教授辦公室約談了一次)在總結、歸納前人研究成果的基礎上提出一種新的非參數統計方法。Bootstrap是一類非參數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次(一般是n>1000次)。在這個例子中,通過n次(假設n=1000),我們就可以得到1000個。也就是。
4. 最後,我們可以計算被估計量的均值和方差(不用關注最後的具體數值,這與原本的樣本有關):
不僅是的標準差,如果我們想要估計的中位數、分位數等統計量,也是可以通過Boostrap方法做到的,其整個流程可以用下面一張圖詮釋:
本質上,Bootstrap方法,是將一次的估計過程,重複上千次上萬次,從而便得到了得到上千個甚至上萬個的估計值,於是利用這不止一個的估計值,我們就可以估計均值以外的其他統計量:比如標準差、中位數等。本文部分圖片來源:《An Introduction to Statistical Learning with Applications in R》
說在後面
關於機器學習的內容還未結束,請持續關注該專欄的後續文章。
更多內容請關注我的專欄:R Language and Data Mining
或者關注我的知乎賬號:溫如
推薦閱讀:
※Kaggle比賽的終極武器: 模型融合(Model Ensemble)
※一篇文章看懂數據挖掘,大數據,機器學習
※【機器學習】如何做出一個更好的Machine Learning預測模型
※R之方差分析