代價敏感的學習方法


代價敏感的學習方法是機器學習領域中的一種新方法,它主要考慮在分類中,當不同的分類錯誤會導致不同的懲罰力度時如何訓練分類器。例如在醫療中,“將病人誤診為健康人的代價”與“將健康人誤診為病人的代價”不同;在金融信用卡盜用檢測中,“將盜用誤認為正常使用的代價”與將“正常使用誤認為盜用的代價”也不同。通常,不同的代價被表示成為一個N×N的矩陣Cost中,其中N 是類別的個數。Cost[i, j]表示將一個i 類的對象錯分到j 類中的代價
按照對問題的解決方法的不同,對代價敏感學習的算法研究可以分成三類
第一類代價敏感的學習方法關注於如何直接構造一個代價敏感的學習模型,對不同的分類器模型研究者們提出了不同的解決辦法,它們包括
(1)決策樹:Knoll 等和Bradford 等為決策樹提出了代價敏感的剪枝方
法,Bradford 等研究了在代價敏感的條件下如何對決策樹進行剪枝使得
損失達到最小,研究表明基於拉普拉斯方法的剪枝方法能夠取得最好的
效果,Drummond 和Holte 研究了代價敏感學習的決策樹的節點分裂
方法。
(2) Boosting:Fan 等研究着提出了代價敏感的Boosting 算法Ada-Cost
(3)神經網絡:Geibel 和Wysotzki 提出了基於Perceptron 分類算法的代價敏感的學習方法,在文章中作者對不可分的類提出了代價敏感的參數更新規則。例如Kukar 和Kononenko 為神經網絡提出了新的后向傳播算
法,使之能夠滿足代價敏感學習的要求。
(4) Fumera 和Roli[37]以及Bradford 等從結構風險最小的角度來看代價敏感問題,提出了代價敏感的支持向量機分類算法。
第二類代價敏感的學習方法基於對分類結果的后處理,即按照傳統的學習方法學習一個分類模型,然后對其分類結果按照貝葉斯風險理論對結果進行調整,以達到最小的損失。和第一類代價敏感學習方法相比,這種方法的優點在於其不依賴於所使用的具體的分類器。Domingos 提出了一種叫做MetaCost 的過程,它把底層的分類器看成一個黑箱子,不對分類器做任何的假設和改變,MetaCost可以應用到任何個數的基分類器和任何形式的代價矩陣上。給定一個樣例x,基分類器得出它屬於第j 個類的概率為Pr(j|x),這樣,認為x 屬於第i個類的貝葉斯最優預測的風險為:
R(i|x) = ΣP(j|x)C(i,j)(C(i,j)是把屬於類別j的分為類別i的代價)
第三種代價敏感的學習方法基於傳統的學習模型,通過改變原始訓練數據的分布來訓練得到代價敏感的模型。Chan 和Stolfo 提出了層次化模型(Stratification),把分布不均勻的訓練數據調整為正負例均勻分布的數據。Zadrozny 等研究者基於cost-proportionate 的思想,對訓練數據調節權值,在實際應用中,其類似於Boosting 算法,可以通過為分類模型調節權值來進行實現,又可以通過采樣(subsampleing)來實現[150]。Abe 等提出了對多類分類問題中如何實現代價敏感的學習進行了探討,提出了一種新的迭代學習方法。

[深度學習] 不平衡樣本的處理
https://blog.csdn.net/siyue0211/article/details/80318999
不平衡樣本的處理
機器學習中經典假設中往往假定訓練樣本各類別是同等數量即各類樣本數目是均衡的,但是真實場景中遇到的實際問題卻常常不符合這個假設。一般來說,不平衡樣本會導致訓練模型側重樣本數目較多的類別,而“輕視”樣本數目較少類別,這樣模型在測試數據上的泛化能力就會受到影響。一個例子,訓練集中有99個正例樣本,1個負例樣本。在不考慮樣本不平衡的很多情況下,學習算法會使分類器放棄負例預測,因為把所有樣本都分為正便可獲得高達99%的訓練分類准確率。
下面將從“數據層面“和”算法層面“兩個方面介紹不平衡樣本問題。

數據層面處理辦法
數據層面處理方法多借助數據采樣法使整體訓練集樣本趨於平衡,即各類樣本數基本一致。

數據重采樣
簡單的數據重采樣包括上采樣和下采樣。由於樣本較少類,可使用上采樣,即復制該圖像直至與樣本最多類的樣本數一致。當然也可以由數據擴充方式替代簡單復制。對於樣本較多的類別,可采用下采樣,注意,對深度學習而言,下采樣並不是直接隨機丟棄一部分圖像,因為那樣做會降低訓練數據多樣性而影響模型泛化能力。正確的下采樣方式為,在批處理訓練時對每批隨機抽取的圖像嚴格控制其樣本較多類別的圖像數量。以二分為例,原數據的分布情況下每次批處理訓練正負樣本平均數量比例為5:1,如僅使用下采樣,可在每批隨機挑選啊訓練樣本時每5個正例只取1個放入該批訓練集的正例,負例選取按照原來的規則,這樣可使每批選取的數據中正負比例均等。此外,僅僅將數據上采樣有可能會引起模型過擬合。更保險有效的方式是上采樣和下采樣結合使用。

類別均衡采樣
把樣本按類別分組,每個類別生成一個樣本列表,訓練過程中先隨機選擇1個或幾個類別,然后從各個類別所對應的樣本列表里選擇隨機樣本。這樣可以保證每個類別參與訓練的機會比較均等。
上述方法需要對於樣本類別較多任務首先定義與類別相等數量的列表,對於海量類別任務如ImageNet數據集等此舉極其繁瑣。海康威視研究院提出類別重組的平衡方法。
類別重組法只需要原始圖像列表即可完成同樣的均勻采樣任務,步驟如下:

首先按照類別順序對原始樣本進行排序,之后計算每個類別的樣本數目,並記錄樣本最多那個類的樣本數目。之后,根據這個最多樣本數對每類樣本產生一個隨機排列的列表, 然后用此列表中的隨機數對各自類別的樣本數取余,得到對應的索引值。接着,根據索引從該類的圖像中提取圖像,生成該類的圖像隨機列表。之后將所有類的隨機列表連在一起隨機打亂次序,即可得到最終的圖像列表,可以發現最終列表中每類樣本數目均等。根據此列表訓練模型,在訓練時列表遍歷完畢,則重頭再做一遍上述操作即可進行第二輪訓練,如此往復。 類別重組法的優點在於,只需要原始圖像列表,且所有操作均在內存中在線完成,易於實現。

算法層面的處理方法
對於不平衡樣本導致樣本數目較少的類別”欠學習“這一現象,一個很自然的解決辦法是增加小樣本錯分的懲罰代價,並將此代價直接體現在目標函數里。這就是代價敏感的方法,這樣就可以通過優化目標函數調整模型在小樣本上的注意力。算法層面處理不平衡樣本問題的方法也多從代價敏感的角度出發。
代價敏感方法
代價敏感的方法可概括為兩種, 一則基於代價敏感矩陣,一則基於代價敏感向量

 

代價敏感向量
另一種代價敏感的反映方式則針對樣本級別:對某樣本 (xn,yn),有對應的一個 K維的代價敏感向量cn∈[0,+∞)K,其中cn的第k維表示該樣本被錯分為第k類的懲罰。基於代價敏感向量的方法在模型訓練階段是將樣本級別的代價敏感向量與樣本以 (xn,yn,cn) 三元組形式一同作為輸入數據送入學習算法。細心的讀者不難發現,代價敏感矩陣法實際上是代價敏感向量法的一種特殊形式,即對於某類的所有樣本其錯分懲罰向量為同一向量。

代價敏感法中權重的指定方式
代價敏感方法的處理前提是先指定代價敏感矩陣或向量。其中關鍵是錯分懲罰或錯分權重的設定。實際使用中可根據樣本的比例,分類結果的混淆矩陣等信息指定代價敏感矩陣或向量中錯分權重的具體取值。

按照比例指定
假設訓練樣本的標記共有3類:a類, b類, c類。它們的樣本數目比例是3:2:1,則代價敏感矩陣為:

可以在矩陣基礎上乘以類別最小公倍數6。
根據混淆矩陣指定
混淆矩陣(confusion matrix)是人工智能中一種算法分析工具, 用來度量模型或學習算法在監督學習中預測能力的優劣。 在機器學習領域,混淆矩陣通常也被稱之為”聯列表“ 或 ”誤差矩陣“。混淆矩陣的每一列代表一個類的實例預測,而每一行代表其真實類別,如下表,仍以a, b, c三類分類為例。

矩陣對角線為正確分類樣本數,各分類為4, 3, 21。矩陣其它位置為錯分樣本數,如a錯分b類的樣本數為1, 錯分c類的樣本數為3。
雖然各類錯分樣本數的絕對數值接近(均錯分3)但是相對而言,樣本數較少的a類b類有50%和66.67%的樣本被錯分,比例相當高,但是c類只有19%。該情況用代價敏感法處理時,可根據各類分錯樣本數設置代價敏感矩陣的取值。
一種方法直接以錯分樣本數為矩陣取值。

不過更優的方案還需考慮各類的錯分比例,並以此比例調整錯分權重。對a類而言,a類錯分比例50%,占所有比例的136%(50%+67%+19%)的百分之36.76%,

小結
數據層面采用數據重采樣處理解決樣本不平衡問題,其操作簡單,不過該類方法會改變數據原始分布,有可能產生過擬合
算法層面采用代價敏感法處理樣本不平衡問題,通過指定代價敏感矩陣或代價敏感向量的錯分權重,可緩解樣本不平衡帶來的影響。

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

blog:https://blog.csdn.net/siyue0211/article/details/80318999

blog:https://blog.csdn.net/sinat_23971513/article/details/103209051


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM