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
C=[04290318120]

b.根據混淆矩陣指定

混淆矩陣(Confusion Matrix)

混淆矩陣的每一列代表一個類的實例預測,每一行代表真實類別

e.g.

類別a 類別b 類別c
類別a 4 1 3
類別b 2 3 4
類別c 3 2 21

根據各類樣本錯分樣本數設置代價敏感矩陣取值

一種方式是直接以錯分樣本數爲矩陣取值

e.g.

C=[013204320]

更優方案:考慮各類的錯分比例,調整權重

a類錯分比例 50%
b類錯分比例 67%
c類錯分比例 19%
總錯分比例 136%

a類錯分佔比:36.76%
b類錯分佔比:49.26%
c類錯分佔比:13.97%

以此爲權重乘原代價矩陣,取整,得到新的代價矩陣:

C=[03611099019742280]

參考文獻:解析卷積神經網絡—深度學習實踐手冊

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章