抽樣是解決樣本分佈不均衡相對簡單且常用的方法,包括過抽樣和欠抽樣兩種。
過抽樣過抽樣(也叫上取樣、over-sampling)方法通過增加分類中少數類樣本的數量來實現樣本均衡,最直接的方法是簡單複製少數類樣本形成多條記錄,這種方法的缺點是如果樣本特徵少而可能導致過擬合的問題;經過改進的過抽樣方法通過在少數類中加入隨機雜訊、干擾資料或通過一定規則產生新的合成樣本,例如smote演算法。
欠抽樣欠抽樣(也叫下取樣、under-sampling)方法通過減少分類中多數類樣本的樣本數量來實現樣本均衡,最直接的方法是隨機地去掉一些多數類樣本來減小多數類的規模,缺點是會丟失多數類樣本中的一些重要資訊。
總體上,過抽樣和欠抽樣更適合大資料分布不均衡的情況,尤其是第一種(過抽樣)方法應用更加廣泛。
通過正負樣本的懲罰權重解決樣本不均衡的問題的思想是在演算法實現過程中,對於分類中不同樣本數量的類別分別賦予不同的權重(一般思路分類中的小樣本量類別權重高,大樣本量類別權重低),然後進行計算和建模。
使用這種方法時需要對樣本本身做額外處理,只需在演算法模型的引數中進行相應設定即可。很多模型和演算法中都有基於類別引數的調整設定,以scikit-learn中的svm為例,通過在class_weight : 中針對不同類別針對不同的權重,來手動指定不同類別的權重。如果使用其預設的方法balanced,那麼svm會將權重設定為與不同類別樣本數量呈反比的權重來做自動均衡處理,計算公式為:n_samples / (n_classes * np.bincount(y))。
如果演算法本身支援,這種思路是更加簡單且高效的方法。
組合/整合方法指的是在每次生成訓練集時使用所有分類中的小樣本量,同時從分類中的大樣本量中隨機抽取資料來與小樣本量合併構成訓練集,這樣反覆多次會得到很多訓練集和訓練模型。最後在應用時,使用組合方法(例如投票、加權投票等)產生分類**結果。
例如,在資料集中的正、負例的樣本分別為100和10000條,比例為1:100。此時可以將負例樣本(類別中的大量樣本集)隨機分為100份(當然也可以分更多),每份100條資料;然後每次形成訓練集時使用所有的正樣本(100條)和隨機抽取的負樣本(100條)形成新的資料集。如此反覆可以得到100個訓練集和對應的訓練模型。
這種解決問題的思路類似於隨機森林。在隨機森林中,雖然每個小決策樹的分類能力很弱,但是通過大量的「小樹」組合形成的「森林」具有良好的模型**能力。
如果計算資源充足,並且對於模型的時效性要求不高的話,這種方法比較合適。
上述幾種方法都是基於資料行的操作,通過多種途徑來使得不同類別的樣本資料行記錄均衡。除此以外,還可以考慮使用或輔助於基於列的特徵選擇方法。
一般情況下,樣本不均衡也會導致特徵分布不均衡,但如果小類別樣本量具有一定的規模,那麼意味著其特徵值的分布較為均勻,可通過選擇具有顯著型的特徵配合參與解決樣本不均衡問題,也能在一定程度上提高模型效果。
提示 上述幾種方法的思路都是基於分類問題解決的。實際上,這種從大規模資料中尋找罕見資料的情況,也可以使用非監督式的學習方法,例如使用one-class svm進行異常檢測。分類是監督式方法,前期是基於帶有標籤(label)的資料進行分類**;而採用非監督式方法,則是使用除了標籤以外的其他特徵進行模型擬合,這樣也能得到異常資料記錄。所以,要解決異常檢測類的問題,先是考慮整體思路,然後再考慮方法模型。
機器學習中如何解決樣本不均衡的問題?
1.上取樣和下取樣 上取樣 通過增加分類中少數類樣本的數量來實現樣本均衡,最直接的方法是簡單複製少數類樣本形成多條記錄,這種方法的缺點是如果樣本特徵少而可能導致過擬合的問題 經過改進的過抽樣方法通過在少數類中加入隨機雜訊 干擾資料或通過一定規則產生新的合成樣本。下取樣 通過減少分類中多數類樣本的樣本...
正負樣本不均衡的解決辦法
問題定義 資料集中,每個類別下的樣本數目相差很大 數量級上的差距 以下以二分類問題為例說明。1.smote synthetic minority over sampling technique 過取樣小樣本 擴充小類,產生新資料 即該演算法構造的資料是新樣本,原資料集中不存在的。該基於距離度量選擇小...
機器學習中的正負樣本
在機器學習中經常會遇到正負樣本的問題,花了一點時間查詢資料,基本上弄明白了一點到底是怎麼回事,記錄在這裡以便以後檢視,也希望能夠幫助到有疑惑的人,當然也希望理解的比較透徹的人看到之後對於理解的不對的地方能夠予以指點。首先我將這個問題分為分類問題與檢測問題兩個方面進行理解。在分類問題中,這個問題相對好...