1. 程式人生 > >CNN筆記(7)---不平衡資料的處理(imbalance)

CNN筆記(7)---不平衡資料的處理(imbalance)

12.不平衡資料的處理(imbalance)

除了常規的分類,迴歸任務,影象語義分割,深度估計等畫素級別任務也不乏不平衡樣本的出現

12.1 資料層面處理方法

資料層面處理方法多借助資料取樣法(sampling)使整體訓練集樣本趨於平衡

即各類樣本數基本一致

12.1.1 資料重取樣

重取樣包括上取樣和下采樣

對於樣本較少的類別,使用上取樣(賦值/資料擴充),增加樣本數

對於樣本較多的類別,使用下采樣,使不同類別資料均等

下采樣時不是隨機丟棄部分樣本,而是在批訓練時,每批隨機挑選樣本進入訓練集

僅使用資料上取樣有可能會引起模型過擬合問題。

保險有效的資料重取樣是將上取樣和下采樣結合使用

12.1.2 類別平衡取樣

  • 類別平衡取樣:

    • 樣本按類別分組,每個類別生成一個樣本列表
    • 訓練過程中,先隨機選擇一個或幾個類別
    • 每個類別對應的樣本列表中隨機選擇樣本

    對於海量類別任務極其繁瑣

  • 類別重組(label shuffling)

    • 按照類別順序,對原始樣本排序,計算每個類別樣本數量,記錄最多樣本數
    • 根據最多樣本數,對每個類別產生一個隨機排列列表
    • 用列表中的隨機數對各自類別的樣本數取餘,得到對應索引值
    • 根據索引提取影象,生成該類影象的影象隨機列表
    • 所有類別的隨機列表連在一起隨機打亂次序,得到最終列表(最終列表中,每類樣本數目均等)
    • 遍歷列表進行訓練,下一輪重複上述操作

    優點:只需要原始影象列表,所有操作在記憶體中線性完成。

    與資料下采樣有異曲同工之意

12.2 演算法層面處理方法

增大小樣本錯分的“懲罰代價”

12.2.1 代價敏感方法

1.基於代價敏感矩陣(類別級別)

假設某訓練集共 N 個樣本,形如:{xn,yn}n=1N,其中樣本標記 y隸屬於K類

代價敏感矩陣方法:利用K×K的矩陣C對不同樣本類別施加錯誤懲罰(權重)

C=[C(1,1)C(1,2)C(1,K)C(2,1)C(2,2)C(
2,K)C(K,1)C(K,2)C(K,K)]

其中,C(yi,yj)[0,]表示類別yi錯分為yj的懲罰\代價,其取值不小於0;而對角線上的C(yi,yi)=0

施加代價後的訓練目標

訓練得到某分類器 g 使得期望代價之和 nC(yn,g(xn))最小。

2.基於代價敏感向量(樣本級別)

對某樣本 (xn,yn),有對應的一個 K 維代價敏感向量 cn[0,)K,其中 cn的第 k 維表示該樣本被錯分為第k 類的懲罰

在模型訓練階段是將樣本級別的代價敏感向量與樣本以 (xn,yn,cn) 三元組形式一同作為輸入資料送入學習演算法

代價敏感矩陣實質上只是代價敏感向量的一種特殊形式

12.2.2 代價敏感法中權重的指定方式

代價敏感方法處理不平衡樣本問題的前提是需要事先指定代價敏感矩陣或向量,關鍵是錯分懲罰錯分權重的設定。

a.按照樣本比例指定

根據不同類別的樣本數量比例,樣本數多的類別的錯分權重低一些,小樣本的類別錯分權重大一些。

e.g. 類別a:b:c=3:2:1
代價敏感矩陣可以指定為:

C=[02/31/33/201/2320]
整體乘上類別樹的最小公倍數6,保證有效懲罰權重不小於1