場景描述
對於乙個隨機變數,通常用概率密度函式來刻畫該變數的概率分布特性。具體來說,給定隨機變數的乙個取值,可以根據概率密度函式來計算該值對應的概率(密度)。反過來,也可以根據概率密度函式提供的概率分布資訊來生成隨機變數的乙個取值,這就是取樣。因此,從某種意義上來說,取樣是概率密度函式的逆向應用。與根據概率密度函式計算樣本點對應的概率值不同,取樣過程往往沒有那麼直接,通常需要根據待取樣分布的具體特點來選擇合適的取樣策略。
知識點逆變換取樣,拒絕取樣,重要性取樣
問題 拋開那些針對特定分布而精心設計的取樣方法,說一些你所知道的通用取樣方法或取樣策略,簡單描述它們的主要思想以及具體操作步驟。
難度:★★★☆☆
分析與解答
幾乎所有的取樣方法都是以均勻分布隨機數作為基本操作。均勻分布隨機數一般用線性同餘法來產生,上一小節有具體介紹,這裡不再贅述。
首先假設已經可以生成[0,1]上的均勻分布隨機數。對於一些簡單的分布,可以直接用均勻取樣的一些擴充套件方法來產生樣本點,比如有限離散分布可以用輪盤賭演算法來取樣。然而,很多分布一般不好直接進行取樣,可以考慮函式變換法。一般地,如果隨機變數x和u存在變換關
系
因此,如果從目標分布p(x)中不好取樣x,可以構造乙個變換
使得從變換後的分布p(u)中取樣u比較容易,這樣可以通過先對u進行取樣然後通過反函式
來間接得到x。如果是高維空間的隨機向量,則
對應jacobian行列式。
特別地,在函式變換法中,如果變換關係φ(·)是x的累積分布函式的話,則得到所謂的逆變換取樣(inverse transform sampling)。假設待取樣的目標分布的概率密度函式為p(x),它的累積分布函式為
則逆變換取樣法按如下過程進行取樣:
(1)從均勻分布u(0,1)產生乙個隨機數ui;
(2)計算
是累積分布函式的逆函式。
根據式(8.2)和式(8.3),上述取樣過程得到的xi服從p(x)分布。圖8.2是逆變換取樣法的示意圖。
圖8.2 逆變換取樣示意圖
如果待取樣的目標分布的累積分布函式的逆函式無法求解或者不容易計算,則不適用於逆變換取樣法。此時可以構造乙個容易取樣的參考分布,先對參考分布進行取樣,然後對得到的樣本進行一定的後處理操作,使得最終的樣本服從目標分布。常見的拒絕取樣(rejection sampling)、重要性取樣(importance sampling),就屬於這類取樣演算法,下面分別簡單介紹它們的取樣過程。
拒絕取樣,又叫接受/拒絕取樣(accept-reject sampling)。對於目標分布p(x),選取乙個容易取樣的參考分布q(x),使得對於任意x都有
則可以按如下過程進行取樣:
(1)從參考分布q(x)中隨機抽取乙個樣本xi。
(2)從均勻分布u(0,1)產生乙個隨機數ui。
(3)如果
則接受樣本xi ;否則拒絕,重新進行步驟(1)~(3),直到新產生的樣本xi被接受。
通過簡單的推導,可以知道最終得到的xi服從目標分布p(x)。如圖8.3(a)所示,拒絕取樣的關鍵是為目標分布p(x)選取乙個合適的包絡函式m·q(x):包絡函式越緊,每次取樣時樣本被接受的概率越大,取樣效率越高。在實際應用中,為了維持取樣效率,有時很難尋找乙個解析形式的q(x),因此延伸出了自適應拒絕取樣(adaptive rejection sampling),在目標分布是對數凹函式時,用分段線性函式來覆蓋目標分布的對數ln p(x),如圖8.3(b)所示,這裡不再細述。
圖8.3 拒絕取樣示意圖
很多時候,取樣的最終目的並不是為了得到樣本,而是為了進行一些後續任務,如**變數取值,這通常表現為乙個求函式期望的形式。重要性取樣就是用於計算函式f(x)在目標分布p(x)上的積分(函式期望),即
這裡w(x)可以看成是樣本x的重要性權重。由此,可以先從參考分布q(x)中抽取n個樣本,然後利用如下公式來估計e[f]:
圖8.4是重要性取樣的示意圖。如果不需要計算函式積分,只想從目標分布p(x) 中取樣出若干樣本,則可以用重要性重取樣(sampling-importance re-sampling,sir),先在從參考分布q(x)中抽取n個樣本 ,然後按照它們對應的重要性權重對這些樣本進行重新取樣(這是乙個簡單的針對有限離散分布的取樣),最終得到的樣本服從目標分布p(x)。
在實際應用中,如果是高維空間的隨機向量,拒絕取樣和重要性重取樣經常難以尋找合適的參考分布,取樣效率低下(樣本的接受概率小或重要性權重低),此時可以考慮馬爾可夫蒙特卡洛取樣法,常見的有metropolis-hastings取樣法和吉布斯取樣法。後續會專門介紹馬爾可夫蒙特卡洛取樣法,這裡不再贅述。
·總結與擴充套件·
上述解答中我們只是列舉了幾個最常用的取樣演算法,簡單介紹了它們的具體操作。在實際面試時,面試官可能會讓面試者選擇其最熟悉的某個取樣演算法來回答,然後較深入地問一下該演算法的理論證明、優缺點、相關擴充套件和應用等。例如,為何拒絕取樣或重要性取樣在高維空間中會效率低下而無法使用?如何從乙個不規則多邊形中隨機取乙個點?
'); (window.slotbydup = window.slotbydup || ).push(); })();
'); (window.slotbydup = window.slotbydup || ).push(); })();
常用的取樣方法
今天簡單列舉兩個常用的取樣方法 softmax取樣和gamble取樣。在我們已知資料的概率分布後,想要根據已有的概率值,抽取出適合的資料。此時,就需要特定的取樣函式拿資料。簡要 如下 取樣方法 import numpy as np np.random.seed 1111 隨機種植,固定每次生成相同的...
下取樣方法
x data.loc data.columns class loc 通過行標籤索引資料,print x y data.loc data.columns class 取label print y number records fraud len data data.class 1 class 1的數量...
取樣方法 Sampling Methods
1.基本取樣演算法 basic sampling algorithms 1.1.標準概率分布 standard distributions 1.2.拒絕取樣 rejection sampling 1.3.可調節的拒絕取樣 adaptive rejection sampling 1.4.重要取樣 im...