導航:首頁 > 數據處理 > 怎麼衡量數據集是否平衡

怎麼衡量數據集是否平衡

發布時間:2024-05-01 16:02:02

⑴ 如何處理數據不平衡問題

基於上一篇文章,面試被虐成渣,所以來整理和記錄下第一個問題,關於數據不平衡的問題。

以下內容參考:

https://www.cnblogs.com/charlotte77/p/10455900.html                                                                     https://www.leiphone.com/news/201706/dTRE5ow9qBVLkZSY.html

數據不平衡也可稱作數據傾斜。在實際應用中,數據集的樣本特別是分類問題上,不同標簽的樣本比例很可能是不均衡的。因此,如果直接使用演算法訓練進行分類,訓練效果可能會很差。

解決實際應用中數據不平衡問題可以從三個方面入手,分別是對數據進行處理、選擇合適的評估方法和使用合適的演算法。

1)過采樣:

    主動獲取更多的比例少的樣本數據。由於樣本比例不均衡,在條件允許的情況下可以嘗試獲取佔比少的類型的樣本數據。(PS:這就是為什麼我幾乎沒有遇到過數據不平衡的問題。每次測試使用的數據集都盡可能的完美均衡) 也可以通過使用 重復 、 自舉 或 合成 少數類過采樣等方法(SMOTE)來生成新的稀有樣品。

    直接簡單復制重復的話,如果特徵少,會導致過擬合的問題。經過改進的過抽樣方法通過在少數類中加入隨機雜訊、干擾數據或通過一定規則產生新的合成樣本 (數據增強)。

2)欠采樣:

    數據量足夠時,可以通過保留比例小的樣本數據和減少比例大的樣本數據來平衡數據集。缺點是會丟失多數類中的一些重要信息。

3)改變權重:

    對不同樣本數量的類別賦予不同的權重(通常會設置為與樣本量成反比)

4)使用K-fold交叉驗證

    值得注意的是,使用過采樣方法來解決不平衡問題時應適當地應用交叉驗證。這是因為過采樣會觀察到罕見的樣本,並根據分布函數應用自舉生成新的隨機數據,如果在過采樣之後應用交叉驗證,那麼我們所做的就是將我們的模型過擬合於一個特定的人工引導結果。這就是為什麼在過度采樣數據之前應該始終進行交叉驗證,就像實現特徵選擇一樣。只有重復采樣數據可以將隨機性引入到數據集中,以確保不會出現過擬合問題。

    K-fold交叉驗證就是把原始數據隨機分成K個部分,在這K個部分中選擇一個作為測試數據,剩餘的K-1個作為訓練數據。交叉驗證的過程實際上是將實驗重復做K次,每次實驗都從K個部分中選擇一個不同的部分作為測試數據,剩餘的數據作為訓練數據進行實驗,最後把得到的K個實驗結果平均。

    此外,還應注意訓練集和測試集的樣本的概率分布問題。若實際數據不平衡,將采樣平衡後的數據集作為訓練集訓練後,模型應用在測試集上效果仍會不好。因此,實際應用中盡可能 保持訓練和測試的樣本的概率分布是一致的。

1)謹慎選擇AUC作為評價指標:對於數據極端不平衡時,可以觀察觀察不同演算法在同一份數據下的訓練結果的precision和recall,這樣做有兩個好處,一是可以了解不同演算法對於數據的敏感程度,二是可以明確採取哪種評價指標更合適。針對機器學習中的數據不平衡問題,建議更多PR(Precision-Recall曲線),而非ROC曲線,具體原因畫圖即可得知,如果採用ROC曲線來作為評價指標,很容易因為AUC值高而忽略實際對少量樣本的效果其實並不理想的情況。

2)不要只看Accuracy:Accuracy可以說是最模糊的一個指標了,因為這個指標高可能壓根就不能代表業務的效果好,在實際生產中更關注precision/recall/mAP等具體的指標,具體側重那個指標,得結合實際情況看。

1)選擇對數據傾斜相對不敏感的演算法。如樹模型等。

2)集成學習。即多模型Bagging。首先從多數類中獨立隨機抽取出若乾子集,將每個子集與少數類數據聯合起來訓練生成多個基分類器,再加權組成新的分類器,如加法模型、Adaboost、隨機森林等。

3)轉化成異常檢測或者一分類問題。(具體內容後續有時間再跟進學習)

補充:什麼是數據增強(Data Augmentation)?

參考鏈接:https://www.jianshu.com/p/3e9f4812abbc

數據增強讓有限的數據產生更多的數據,增加訓練樣本的數量以及多樣性(雜訊數據), 提升模型魯棒性, 一般用於訓練集。神經網路需要大量的參數,許許多多的神經網路的參數都是數以百萬計,而使得這些參數可以正確工作則需要大量的數據進行訓練,但在很多實際的項目中,我們難以找到充足的數據來完成任務。隨機改變訓練樣本可以降低模型對某些屬性的依賴,從而提高模型的泛化能力。

數據增強方法:

例如,我們可以對圖像進行不同方式的裁剪,讓物體以不同的實例出現在圖像的不同位置,這同樣能夠降低模型對目標位置的敏感性。此外,調整亮度、對比度、飽和度和色調 等因素來降低模型對色彩的敏感度。再有,隨機裁剪、隨機反轉、隨機對比度增強、顏色變化等等。一般來講隨機反轉和一個小比例的random resize,再接隨機裁剪比較常用。NLP中將字和詞連接起來就形成了一個新樣本,也屬於數據增強。

數據增強的分類:

數據增強可以分為兩類,一類是離線增強,一類是在線增強。

· 離線增強 : 直接對數據集進行處理,數據的數目會變成增強因子乘以原數據集的數目,這種方法常常用於數據集很小的時候。

· 在線增強 : 這種增強的方法用於,獲得批量(batch)數據之後,然後對這個批量(batch)的數據進行增強,如旋轉、平移、翻折等相應的變化,由於有些數據集不能接受線性級別的增長,這種方法長用於大的數據集,很多機器學習框架已經支持了這種數據增強方式,並且可以使用 GPU 優化計算。

⑵ 如何解決機器學習中數據不平衡問題

首先,數據集不平衡會造成怎樣的問題呢。一般的學習器都有下面的兩個假設:一個是使得學習器的准確率最高,另外一個是學習器應該用在與訓練集有相同分布的
測試集上。如果數據不平衡,那麼學習器使得它的准確率最高肯定是更偏向於預測結果為比例更大的類別。比如說陽性的比例為1%,陰性的比例為99%,很明顯
的是即使不學習,直接預測所有結果為陰性,這樣做的准確率也能夠達到99%,而如果建立學習器也很有可能沒有辦法達到99%。這就是數據比例不平衡所造成
的問題。這樣建立的模型即使准確率再高,在實際應用的時候效果肯定不好,而且也不是我們想要的模型。

明白了數據集的不平衡對於學習過程所造成的問題,相應的解決辦法也有不少。下面是一些常用的兩類方法。
1 從數據集入手。既然數據不平衡,那我們就人為的把數據集給平衡一下。可以通過隨機采樣比例大的類別使得訓練集中大類的個數與小類相當,也可以重復小類
使得小類的個數與大類相當。前者的問題是可能會丟失信息,因為只採用部分樣本。後者的問題是可能造成過擬合,因為有重復樣本。前者的問題可以通過
esemble的方法來解決,即每次形成訓練集的時候包括所有小類樣本,同時從大類樣本中隨機選擇樣本構成訓練集,這樣重復很多次得到很多訓練集和訓練模
型。在測試的時候使用投票的方法來判斷分類結果。
除了平衡數據集外,還可以通過分別在大類和小類中篩選特徵,然後組合起來構成學習器。這樣也可能提高效果。

2 從學習器入手。最簡單的是通過改變判斷類別的cutoff來改變類別樣本比例;也可以只學習一個類別。此外,在學習的時候考慮到誤判不同樣本的不同成本,使得學習器更偏向於預測小類。這樣也能夠改進模型。

閱讀全文

與怎麼衡量數據集是否平衡相關的資料

熱點內容
7HTA63什麼程序 瀏覽:46
交易貓店鋪進貨怎麼賣 瀏覽:330
為什麼電腦運行程序突然變得很慢 瀏覽:559
市場上賣大餅的為什麼好吃又松軟 瀏覽:162
井下技術有哪些 瀏覽:148
nhf是什麼地方的產品 瀏覽:734
哪些金融app推廣代理權 瀏覽:568
水車摩托車如何交易 瀏覽:875
產品還沒生產完叫什麼 瀏覽:920
查錄取狀態顯示數據維護中是什麼意思 瀏覽:134
深圳買房在哪裡搖號小程序 瀏覽:420
如何運行數控程序 瀏覽:379
贛州信息價在哪裡看 瀏覽:460
獸葯什麼時候在哪招代理 瀏覽:731
保時捷水溫數據流怎麼看 瀏覽:80
如何進行建築工程技術鑒定 瀏覽:16
公主家產品有哪些明星代言 瀏覽:191
程序員的朋友圈是什麼樣的 瀏覽:35
小程序如何添加點擊效果 瀏覽:280
外資代理記賬價格多少 瀏覽:444