回覆列表
  • 1 # 使用者4218311965546

    1 透過過抽樣和欠抽樣解決樣本不均衡

    抽樣是解決樣本分佈不均衡相對簡單且常用的方法,包括過抽樣和欠抽樣兩種。

    過抽樣

    過抽樣(也叫上取樣、over-sampling)方法透過增加分類中少數類樣本的數量來實現樣本均衡,最直接的方法是簡單複製少數類樣本形成多條記錄,這種方法的缺點是如果樣本特徵少而可能導致過擬合的問題;經過改進的過抽樣方法透過在少數類中加入隨機噪聲、干擾資料或透過一定規則產生新的合成樣本,例如SMOTE演算法。

    欠抽樣

    欠抽樣(也叫下采樣、under-sampling)方法透過減少分類中多數類樣本的樣本數量來實現樣本均衡,最直接的方法是隨機地去掉一些多數類樣本來減小多數類的規模,缺點是會丟失多數類樣本中的一些重要資訊。

    總體上,過抽樣和欠抽樣更適合大資料分佈不均衡的情況,尤其是第一種(過抽樣)方法應用更加廣泛。

    2 透過正負樣本的懲罰權重解決樣本不均衡

    透過正負樣本的懲罰權重解決樣本不均衡的問題的思想是在演算法實現過程中,對於分類中不同樣本數量的類別分別賦予不同的權重(一般思路分類中的小樣本量類別權重高,大樣本量類別權重低),然後進行計算和建模。

    使用這種方法時需要對樣本本身做額外處理,只需在演算法模型的引數中進行相應設定即可。很多模型和演算法中都有基於類別引數的調整設定,以scikit-learn中的SVM為例,透過在class_weight : {dict, "balanced"}中針對不同類別針對不同的權重,來手動指定不同類別的權重。如果使用其預設的方法balanced,那麼SVM會將權重設定為與不同類別樣本數量呈反比的權重來做自動均衡處理,計算公式為:n_samples / (n_classes * np.bincount(y))。

    如果演算法本身支援,這種思路是更加簡單且高效的方法。

    3 透過組合/整合方法解決樣本不均衡

    組合/整合方法指的是在每次生成訓練集時使用所有分類中的小樣本量,同時從分類中的大樣本量中隨機抽取資料來與小樣本量合併構成訓練集,這樣反覆多次會得到很多訓練集和訓練模型。最後在應用時,使用組合方法(例如投票、加權投票等)產生分類預測結果。

    例如,在資料集中的正、負例的樣本分別為100和10000條,比例為1:100。此時可以將負例樣本(類別中的大量樣本集)隨機分為100份(當然也可以分更多),每份100條資料;然後每次形成訓練集時使用所有的正樣本(100條)和隨機抽取的負樣本(100條)形成新的資料集。如此反覆可以得到100個訓練集和對應的訓練模型。

    這種解決問題的思路類似於隨機森林。在隨機森林中,雖然每個小決策樹的分類能力很弱,但是透過大量的“小樹”組合形成的“森林”具有良好的模型預測能力。

    如果計算資源充足,並且對於模型的時效性要求不高的話,這種方法比較合適。

    4 透過特徵選擇解決樣本不均衡

    上述幾種方法都是基於資料行的操作,透過多種途徑來使得不同類別的樣本資料行記錄均衡。除此以外,還可以考慮使用或輔助於基於列的特徵選擇方法。

    一般情況下,樣本不均衡也會導致特徵分佈不均衡,但如果小類別樣本量具有一定的規模,那麼意味著其特徵值的分佈較為均勻,可透過選擇具有顯著型的特徵配合參與解決樣本不均衡問題,也能在一定程度上提高模型效果。

    提示 上述幾種方法的思路都是基於分類問題解決的。實際上,這種從大規模資料中尋找罕見資料的情況,也可以使用非監督式的學習方法,例如使用One-class SVM進行異常檢測。分類是監督式方法,前期是基於帶有標籤(Label)的資料進行分類預測;而採用非監督式方法,則是使用除了標籤以外的其他特徵進行模型擬合,這樣也能得到異常資料記錄。所以,要解決異常檢測類的問題,先是考慮整體思路,然後再考慮方法模型。

  • 中秋節和大豐收的關聯?
  • 貔貅的傳說故事都有什麼?