Index
數據采樣的原因
常見的采樣算法
失衡樣本的采樣
0 2 數據采樣的原因
其實我們在訓練模型的過程,都會經常進行數據采樣,為了就是讓我們的模型可以更好的去學習數據的特征,從而讓效果更佳。但這是比較淺層的理解,更本質上,數據采樣就是對隨機現象的模擬,根據給定的概率分布從而模擬一個隨機事件。另一說法就是用少量的樣本點去近似一個總體分布,並刻畫總體分布中的不確定性。
因為我們在現實生活中,大多數數據都是龐大的,所以總體分布可能就包含了無數多的樣本點,模型是無法對這些海量的數據進行直接建模的(至少目前而言),而且從效率上也不推薦。
因此,我們一般會從總體樣本中抽取出一個子集來近似總體分布,這個子集被稱為“訓練集”,然后模型訓練的目的就是最小化訓練集上的損失函數,訓練完成后,需要另一個數據集來評估模型,也被稱為“測試集”。
采樣的一些高級用法,比如對樣本進行多次重采樣,來估計統計量的偏差與方法,也可以對目標信息保留不變的情況下,不斷改變樣本的分布來適應模型訓練與學習(經典的應用如解決樣本不均衡的問題)。
0 3
常見的采樣算法
采樣的原因在上面已經闡述了,現在我們來了解一下采樣的一些算法:
0 1
逆變換采樣
有的時候一些分布不好直接采樣,可以用函數轉換法,如果存在隨機變量x和u的變換關系:u=ϕ(x),則它們的概率密度函數如下所示:
p(u)|ϕ′(x)|=p(x)
因此,如果從目標分布p(x)中不好采樣x,可以構造一個變換u=ϕ(x),使得從變換后地分布p(u)中采樣u比較容易,這樣可以通過對u進行采樣然后通過反函數來間接得到x。如果是高維空間地隨機變量,則ϕ′(x)對應Jacobian行列式。
而且,如果變換關系ϕ(·)是x的累積分布函數的話,則就是我們說的 逆變換采樣(Inverse Transform Sampling), 我們假設待采樣的目標分布的概率密度函數為p(x), 它的累積分布函數為:

逆變換采樣法的過程:
1. 從均勻分布U(0,1)產生一個隨機數 Ui
2. 計算逆函數
來間接得到x

但並不是所有的目標分布的累積分布函數的逆函數都是可以求解的(or容易計算),這個時候逆變換采樣法就不太適用,可以考慮拒絕采樣(Rejection Sampling)和重要度采樣(Importance Sampling)。
0 2 拒絕采樣(Rejection Sampling)
拒絕采樣,也被稱為接受采樣(Accept Sampling),對於目標分布p(x),選取一個容易采樣的參考分布q(x),使得對於任意的x都有:

其采樣過程如下:
1)從參考分布q(x)中隨機抽取一個樣本xi
2)從均勻分布U(0,1)產生一個隨機ui
3)如果
,則接受樣本xi,否則拒絕,一直重復1-3步驟,直到新產生的樣本量滿足要求。
其實,拒絕采樣的關鍵就是為我們的目標分布p(x)選取一個合適的包絡函數
,如下圖所示的正態分布的函數:

可以知道,包絡函數越“緊”,
的大小越接近,那么
就越接近1,那么更容易接受采樣樣本,這樣子采樣的效率就越高。
除了上面的形式,還有一種叫自適應拒絕采樣(Adaptive Rejection Sampling),在目標分布是對數凹函數時,用分段的線性函數來做包絡函數,如下圖所示:

0 3
重要性采樣(Importance Sampling)
還有一種采樣方法,是計算函數f(x)在目標分布p(x)上的積分(函數期望),即:

我們先找一個比較容易抽樣的參考分布q(x),並令
則存在:

這里的w(x)我們可以理解為權重,我們就可以從參考分布q(x)中抽取N個樣本xi,並且利用如下公式來估計E[f]:

下圖就是重要性采樣的示意圖:

0 4 馬爾科夫蒙特卡洛采樣法
在高維空間中,拒絕采樣和重要性采樣很難尋找到合適參考分布,而且采樣的效率是很低的,這個時候是可以考慮一下馬爾科夫蒙特卡洛(Markov Chain Monte Carlo,MCMC)采樣法。
可能有一些同學對這個名詞還是比較陌生,那么先來講解一下MCMC。
1. 主要思想
MCMC采樣法主要包括兩個MC,即Monte Carlo和Markov Chain。Monte Carlo是指基於采樣的數值型近似求解方法,Markov Chain則是用於采樣,MCMC的基本思想是:針對待采樣的目標分布,構造一個馬爾科夫鏈,使得該馬爾科夫鏈的平穩分布就是目標分布,然后從任何一個初始狀態出發,沿着馬爾科夫鏈進行狀態轉移,最終得到的狀態轉移序列會收斂到目標分布,由此得到目標分布的一系列樣本。
MCMC有着不同的馬爾科夫鏈(Markov Chain),不同的鏈對應不用的采樣法,常見的兩種就是Metropolis-Hastings采樣法和吉布斯采樣法。

2. Metropolis-Hastings采樣法
對於目標分布p(x),首先選擇一個容易采樣的參考條件分布
,並令

然后根據如下過程進行采樣:
1)隨機選取一個初始樣本
2)For t =1, 2, 3, ...:
{ 根據參考條件分布
抽取一個樣本
根據均勻分布U(0,1)產生隨機數u

上面的圖是Metropolis-Hastings的示意過程圖,其中紅線代表被拒絕的移動(維持舊樣本),綠線代表被接受的移動(采納新樣本)。
3. 吉布斯采樣法
吉布斯采樣法是Metropolis-Hastings的一個特例,其核心是每次只對樣本的一個維度進行采樣和更新,對於目標分布p(x),其中
是多維向量,按如下的過程進行采樣:

同樣的上述過程得到的樣本序列會收斂到目標分布p(x),另外步驟2中對樣本每個維度的抽樣和更新操作,不是必須要按照下標順序進行的,可以是隨機進行的。
在拒絕采樣中,如果在某一步得到的樣本被拒絕,則該步不會產生新樣本,需要重新進行采樣,如在MCMC中,每一步都是會產生一個樣本的,只是有的時候是保留舊樣本罷了,而且MCMC是會在不斷迭代過程中逐漸收斂到平穩分布的。
0 4
失衡樣本的采樣
我們在實際的建模中總會遇到很多失衡的數據集,比如點擊率模型、營銷模型、反欺詐模型等等,往往壞樣本(or好樣本)的占比才千分之幾。雖然目前有些機器學習算法會解決失衡問題,比如XGBoost,但是很多時候還是需要我們去根據業務實際情況,對數據進行采樣處理,主要還是分兩種方式:
過采樣(over-sampling):從占比較少的那一類樣本中重復隨機抽樣,使得最終樣本的目標類別不太失衡;
欠采樣(under-sampling):從占比較多的那一類樣本中隨機抽取部分樣本,使得最終樣本的目標類別不太失衡;
科學家們根據上述兩類,衍生出了很多方法,如下:
0 1 Over-Sampling類
1. Random Oversampling
也就是隨機過采樣,我們現在很少用它了,因為它是從樣本少的類別中隨機抽樣,再將抽樣得來的樣本添加到數據集中,從而達到類別平衡的目的,這樣子做很多時候會出現過擬合情況。
2. SMOTE
SMOTE,全稱是Synthetic Minority Oversampling Technique,其思想就是在少數類的樣本之間,進行插值操作來產生額外的樣本。對於一個少數類樣本,使用K-Mean法(K值需要人工確定)求出距離。距離最近的k個少數類樣本,其中距離定義為樣本之間n維特征空間的歐式距離,然后從k個樣本點中隨機抽取一個,使用下面的公式生成新的樣本點:

其中,
為選出的k近鄰點,
是一個隨機數。下圖就是一個SMOTE生成樣本的例子,使用的是3-近鄰,可以看出SMOTE生成的樣本一般就在
相連的直線上:

從圖中可以看出Xnew就是我們新生成樣本點,但是,SMOTE算法也是有缺點的:
(1)如果選取的少數類樣本周圍都是少數類樣本,那么新合成的樣本可能不會提供太多有用的信息;
(2)如果選取的少數類樣本周圍都是多數類樣本,那么這可能會是噪聲,也無法提升分類效果。
其實,最好的新樣本最好是在兩個類別的邊界附近,這樣子最有利於分類,所以下面介紹一個新算法——Border-Line SMOTE。
3. Border-Line SMOTE
這個算法一開始會先將少數類樣本分成3類,分別DANGER、SAFE、NOISE,如下圖:

而Border-line SMOTE算法只會在“DANGER”狀態的少數類樣本中去隨機選擇,然后利用SMOTE算法產生新樣本。
4. ADASYN
ADASYN名為自適應合成抽樣(Adaptive Synthetic Sampling),其最大的特點是采用某種機制自動決定每個少數類樣本需要產生多少合成樣本,而不是像SMOTE那樣對每個少數類樣本合成同數量的樣本。ADASYN的缺點是易受離群點的影響,如果一個少數類樣本的K近鄰都是多數類樣本,則其權重會變得相當大,進而會在其周圍生成較多的樣本。
0 2 Under-Sampling類
1. Random Undersampling
這類也是比較簡單的,就是隨機從多數類中刪除一些樣本,這樣子的缺失也是很明顯,那就是造成部分信息丟失,整體模型分類效果不理想。
2. EasyEnsemble 和 BalanceCascade
這兩個算法放在一起的原因是因為都用到了集成思想來處理隨機欠采樣的信息丟失問題。
1. EasyEnsemble :將多數類樣本隨機划分成n份,每份的數據等於少數類樣本的數量,然后對這n份數據分別訓練模型,最后集成模型結果。
2. BalanceCascade:這類算法采用了有監督結合boosting的方式,在每一輪中,也是從多數類中抽取子集與少數類結合起來訓練模型,然后下一輪中丟棄此輪被正確分類的樣本,使得后續的基學習器能夠更加關注那些被分類錯誤的樣本。
3. NearMiss
NearMiss本質上是一種原型選擇(prototype selection)方法,即從多數類樣本中選取最具代表性的樣本用於訓練,主要是為了緩解隨機欠采樣中的信息丟失問題。NearMiss采用一些啟發式的規則來選擇樣本,根據規則的不同可分為3類:
NearMiss-1: 選擇到最近的K個少數類樣本平均距離最近的多數類樣本
NearMiss-2: 選擇到最遠的K個少數類樣本平均距離最近的多數類樣本
NearMiss-3: 對於每個少數類樣本選擇K個最近的多數類樣本,目的是保證每個少數類樣本都被多數類樣本包圍
NearMiss-1和NearMiss-2的計算開銷很大,因為需要計算每個多類別樣本的K近鄰點。另外,NearMiss-1易受離群點的影響,如下面第二幅圖中合理的情況是處於邊界附近的多數類樣本會被選中,然而由於右下方一些少數類離群點的存在,其附近的多數類樣本就被選擇了。相比之下NearMiss-2和NearMiss-3不易產生這方面的問題。

