復習一下bootstrapping。
統計中我們常常需要做參數估計,具體問題可以描述為:
給定一系列數據,假設它們是從分布
中采樣得到的,參數估計就是希望估計分布
中的
。
bootstrapping算法的目的就是為了估計從而得到
的分布的預測。具體地,它的思想對已有的觀測值
進行多次重復的抽樣,每次抽樣都可以得到一個預測的經驗分布函數,根據這些不同抽樣得到的經驗分布函數,可以得到一個更好的關于統計量分布的估計。
打個比方,如果現在有N個學生的身高數據,需要估計的統計量是學生的平均身高。bootstraping的方法可以替我們確定身高平均值的置信區間。步驟大致如下:
- 從N個數據中隨機抽取N個數據(有放回)構成一個樣本
- 計算每個樣本的均值
- 重復步驟1,2知道計算足夠多的次數(如100次)
根據這些步驟得到的100次結果,我們可以得出95%的置信區間,即覆蓋了95%的樣本均值的區間。換言之,超出這個范圍的身高均值,出現的次數都小于5%,也可以說它的p值<0.05。
以上所說的可以理解為bootstrapping百分位法,它假設樣本均值與總體均值的分布大致相似,但這個假設在現實中很難保證成立。一個更好的方法是bootstrapping經驗法。具體的核心思想可以概括為:
計算總體均值
的置信區間的本質是回答這樣一個問題:樣本均值
的分布是如何圍繞總體均值
變化的。換言之,我們想知道殘差
的分布。
就是當我們使用
來估計
的誤差。雖然我們不知道
的分布,但是它可以由
如何圍繞
變化(即
的分布)來近似。這里
是利用 Bootstrap 樣本計算的均值與原始樣本均值之間的差:
。
傳統的區間估計往往需要先知道的分布,但這有點陷入雞生蛋蛋生雞的困境了。相反的,bootstrapping方法則無需已知
分布,提供了一種靈活的判斷統計量的方法。
在做機器學習或者深度學習實驗室,往往有些實驗結果會被要求提供p值。一個可行的方法就是使用bootstrapping。將測試集中的數據做隨機抽樣得到一些樣本,通過模型預測得到每個樣本關于某metric的平均值,這樣就能計算出其p值了。
參考:
https://zhuanlan.zhihu.com/p/146438101
https://www.cnblogs.com/wangprince2017/p/9973114.html
https://zhuanlan.zhihu.com/p/41099219