如果你在數(shù)據(jù)科學(xué)領(lǐng)域還只是個新手,那么建議你先看看——《五本書帶你入門數(shù)據(jù)科學(xué)》,入門后,再學(xué)習(xí)《R語言案例實戰(zhàn)》。 目前在連載《概率圖模型》,已發(fā)布的有: 在這篇文章里,我們來了解一下,蒙特卡羅抽樣方法。之前也寫過一些蒙特卡羅方法的應(yīng)用場景,如下: 然后,下面我給大家介紹一下,蒙特卡羅抽樣方法。 蒙特卡羅抽樣 蒙特卡羅(Monte Carlo)方法是二十世紀四十年代中期由于科學(xué)技術(shù)的發(fā)展和電子計算機的發(fā)明,而被提出的一種以概率統(tǒng)計理論為基礎(chǔ)的數(shù)值計算方法。它的核心思想就是使用隨機數(shù)(或更常見的偽隨機數(shù))來解決一些復(fù)雜的計算問題。 當所求解問題可以轉(zhuǎn)化為某種隨機分布的特征數(shù)(比如隨機事件出現(xiàn)的概率,或者隨機變量的期望值等)時,往往就可以考慮使用蒙特卡洛方法。 通過隨機抽樣的方法,以隨機事件出現(xiàn)的頻率估計其概率,或者以抽樣的數(shù)字特征估算隨機變量的數(shù)字特征,并將其作為問題的解。這種方法多用于求解復(fù)雜的高維積分問題。 實際應(yīng)用中,我們所要面對的第一個問題就是如何抽樣?在統(tǒng)計學(xué)中, 抽樣(或稱采樣)是指從目標總體中抽取一部分個體作為樣本的過程。 在計算機模擬時,所謂的抽樣,是指從一個概率分布中生成觀察值(observations)的方法。而這個分布通常使用其概率密度函數(shù)(PDF)來表示。其實,在已知PDF的情況下,讓計算機自動生成觀測值也不是一件容易的事情,因為從本質(zhì)上來說,計算機只能實現(xiàn)對均勻分布(Uniform distribution)的采樣。 逆變換采樣(Inverse Transform Sampling) 比較簡單的一種情況是,我們可以通過PDF與CDF之間的關(guān)系,求出相應(yīng)的CDF?;蛘呶覀兏揪筒恢繮DF,但是知道CDF。此時就可以使用Inverse CDF的方法來進行采樣。這種方法又稱為逆變換采樣(Inverse Transform Sampling)。 如果你對PDF和CDF的概念有點模糊,我們不妨先來一起回顧一下它們的定義。對于隨機變量 X,如下定義的函數(shù) F: F(x)=P{X≤x},?∞<x<∞ 稱為 X 的累積分布函數(shù)(CDF,Cumulative Distribution Function)。 對于連續(xù)型隨機變量 X 的累積分布函數(shù) F(x),如果存在一個定義在實數(shù)軸上的非負函數(shù) f(x),使得對于任意實數(shù) x,有下式成立: 則稱 f(x) 為 X 的概率密度函數(shù)(PDF,Probability Density Function)。 顯然,當概率密度函數(shù)存在的時候,累積分布函數(shù)是概率密度函數(shù)的積分。如下圖所示,左邊的圖形,就是標準正態(tài)分布的PDF,右邊的圖形,就是根據(jù)標準正態(tài)分布函數(shù)進行積分得到的CDF。 得到CDF的函數(shù) F(u) 后,對 F(u) 求反函數(shù) F?1(u)。如果想得到 m 個觀察值,那么重復(fù)下面的步驟 m 次即可:
逆變換采樣案例 假設(shè)現(xiàn)在我們希望從下面這個PDF中抽樣: 可以算得相應(yīng)的CDF為: 對于 u∈[0,1],它的反函數(shù)為: 下面使用 R 來實現(xiàn)這個過程。 先來隨機生成 10000 個 0 到 1 范圍內(nèi)均勻分布的值。 然后,畫出上面 f(x) 的圖形。 最后,繪畫出模擬抽樣的數(shù)據(jù): 可以看到,模擬抽樣的數(shù)據(jù),和原始數(shù)據(jù)的分布,是非常接近的。 拒絕采樣(Reject Sampling) 我們已經(jīng)看到 Inverse CDF 方法確實有效,但其實它的缺點也是很明顯的,那就是有些分布的 CDF 可能很難通過對 PDF 的積分得到,再或者 CDF 的反函數(shù)也很不容易求。這時我們就需要用到拒絕采樣的方法。 下面這張圖很好地闡釋了拒絕采樣的基本思想。 假設(shè)我們想對 PDF 為 p(x) 的函數(shù)進行采樣,但是由于種種原因(例如這個函數(shù)很復(fù)雜),對其進行采樣是相對困難的。但是另外一個 PDF 為 q(x) 的函數(shù)則相對容易采樣,例如采用 Inverse CDF 方法可以很容易對對它進行采樣,甚至 q(x) 就是一個均勻分布。 那么,當我們將 q(x) 與一個常數(shù) M 相乘之后,可以實現(xiàn)上圖所示之關(guān)系,即 Mq(x) 將 p(x) 完全“罩住”。 拒絕采樣的步驟如下:
拒絕采樣案例 按照拒絕采樣的步驟,實現(xiàn)拒絕采樣的代碼,如下所示: 接著,通過繪圖來驗證,拒絕采樣的結(jié)果,是否符合原來數(shù)據(jù)的分布。 執(zhí)行代碼,即可得到拒絕抽樣與原來的數(shù)據(jù)分布的擬合情況,如下圖所示。 |
|