对采样的理解
1. 什么是采樣
我們知道了一個變量的分布,要生成一批服從這個分布的樣本,這個過程就叫采樣。
聽起來好像很簡單,對一些簡單的分布函數確實如此,比如,均勻分布、正太分布,但只要分布函數稍微復雜一點,采樣這個事情就沒那么簡單了。
2. 為什么要采樣
在講具體的采樣方法之前,有必要弄清楚采樣的目的。為什么要采樣呢?有人可能會這樣想,樣本一般是用來估計分布參數的,現在我都知道分布函數了,還采樣干嘛呢?其實采樣不只是可以用來估計分布參數,還有其他用途,比如說用來估計分布的期望、高階動量等。其實在機器學習中,采樣的主要用途是用來估計某個函數在某個分布上的期望,比如在EM算法中,計算E步的時候,已知隱變量的分布,用采樣的方法估計對數似然的期望。
3.采樣的作用
采樣本質上是對隨機線性的模擬,根據給定的概率分布,來模擬產生一個對應的隨機事件。也可以理解為用較少的樣本點來近似總體分布,可以算是一種信息降維。
可以快速了解總體分布中數據的結構和特性。
通過重采樣可以充分利用已有數據集,挖掘更多信息,如自助法,刀切法。
4. 常用的采樣方法
幾乎所有的采樣方法都是以均勻分布隨機數作為基本操作的。
逆變換采樣法:第一步,從均勻分布中產生一個隨機數;第二步,根據一個累計分布函數的逆函數進行計算。如果待采樣的目標分步的累計分布函數的逆函數無法求得或不易求,則不適合使用逆變換采樣法。
拒絕采樣:接受/拒絕采樣,對于目標分布p(x),選取一個容易采樣的參考分布q(x),使得對于任意p(x)都小于等于M*q(x)。第一步,從參考分布q(x)中隨機抽取一個樣本;第二步,從均勻分布中產生一個隨機數;第三步,如果 [公式] 大于隨機數,則接受樣本,如果小于則拒絕樣本。
自適應拒絕采樣:在目標函數是對數凹函數時,用分段函數來覆蓋目標分布的對數。
重要性采樣:就是用于計算函數在目標分布上的積分,如果只想從目標分布中采樣出若干樣本,可以使用重要性重采樣。
在實際應用中,高維空間的隨機向量,拒絕采樣和重要性重采樣經常難以找到合適的參考分布,采樣效率比較低,可以考慮馬爾科夫蒙特卡羅采樣法。
5. 基本采樣方法
首先,最基本的方法是變換法,大概思想是這樣的,比如我們要對分布a采樣,但是只有分布b的采樣器,我們可以通過對b采樣的結果進行一些變換,使變換后的結果服從分布a,舉個例子,對0到1的均勻分布的結果進行tan函數變換得到的結果就服從柯西分布,大家可以試想下怎么變換能得到指數分布和高斯分布。
5.1 高斯分布的采樣
逆變換法:第一步,生成均勻分布隨機數;第二步,把隨機數帶入一個服從正態分布的公式。也可以用Box-Muller算法生成兩個獨立的均勻分布的隨機數,計算三角函數。還可以用Marsaglia polar method加速運算。
拒絕采樣法:先模擬一個均勻分布的隨機數,并得到指數分布樣本;再產生另一個隨機數,進行比較,大于這個隨機數接受,小于拒絕,并回到上一步重新采樣;最后再生產一個隨機數,隨機數小于0.5,轉換為負,大于0.5,保持不變。有時效率會比較低,可以用Ziggurat算法提高效率。
5.2 馬爾科夫鏈蒙特卡洛采樣(Markov Chain Monte Carlo)
馬爾科夫蒙特卡羅MCMC,蒙特卡羅是指基于采樣的數值型近似求解方法,馬爾科夫鏈則用于采樣。
要理解MCMC,有幾個關鍵要點:
MCMC基本思想,針對待采樣目標分布,構造一個馬爾科夫鏈,使得該馬爾科夫鏈的平穩分布就是目標分布,然后從任何一個初始狀態出發,沿著馬爾科夫鏈進行狀態轉移,最終得到的狀態轉移序列會收斂到目標分布,由此可以得到目標分布的一系列樣本。
幾種常見的MCMC
Metropolis-Hastings采樣法:第一步,隨機選一個初始樣本;第二步,比較參考條件分布與隨機數的大小,并進行賦值。
吉布斯采樣法:每次只對樣本的一個維度進行采樣和更新。隨機選擇初始狀態,每次更新一個維度,多次后形成新樣本。
吉布斯采樣的牛逼之處在于只需要知道條件概率的分布,便可以通過采樣得到聯合概率分布的樣本,LDA的求解可以說是吉布斯采樣的一個絕妙應用例子,通過采樣的方法就完成了整個模型的求解,確實很巧妙。另一個很好的例子是玻爾茲曼機的訓練,哪天有時間把這兩個例子展開講講。
MCMC采樣如何得到相互獨立的樣本
可以同時運行多條馬爾科夫鏈,或者在一條馬爾科夫鏈上間隔幾個樣本才選一個。
5.3 貝葉斯網絡的采樣
祖先采樣:根據有向圖的順序,先對祖先節點進行采樣,只有當某個節點的所有父節點都已完成采樣,才對該節點進行采樣。
邏輯采樣:利用祖先采樣的取值,如果這個取值與觀測值相同,則接受,否則拒絕,重新采樣。采樣效率可能很低。實際中參考重要性采樣的思想,不再對觀測變量進行采樣,只對非觀測變量進行采樣。
MCMC采樣法:在隨機向量上選擇一個概率轉移矩陣,按照概率轉移矩陣不斷進行狀態轉移,每次轉移有一定概率接受或拒絕,最終得到的樣本序列會收斂到目標分布。
5.4 不均衡樣本集的重采樣
(1)基于數據的方法
對數據進行重采樣,是原本不均的樣本變得均勻。具體方法:過采樣和欠采樣。
過采樣會造成過擬合,欠采樣會損失部分有用信息。
對此改進,SMOTE算法,對少數類樣本集中的每個樣本,從它到K個近鄰中隨機選一個樣本點,然后在連線上隨機選一個點作為新合成的樣本。可以降低過擬合風險。但可能會增大類間重疊度,并且會生成一些不能提供有益信息的樣本。
再改進,Borderline-SMOTE算法,只給那些處在分類邊界上的少數類樣本合成新樣本;ADASYN算法,給不同的少數類樣本合成不同個數的新樣本。
欠采樣,改進算法有Easy Ensemble算法、Balance Cascade算法、NearMiss、One-sided Selection
(2)基于算法的方法
在樣本不均衡時,可以通過改變模型訓練時的目標函數來矯正不平衡性;當樣本數目極其不平衡時,也可以將問題轉化為單類學習、異常檢測。
https://zhuanlan.zhihu.com/p/46096712
https://zhuanlan.zhihu.com/p/125648419
總結
- 上一篇: Lyapunov and Stabili
- 下一篇: 在电脑上的英文(亮度在电脑上的英文)