當前位置:
首頁 > 新聞 > 深度學習中不均衡數據集的處理

深度學習中不均衡數據集的處理

雷鋒網AI科技評論按:在深度學習中,數據是非常重要的。但是我們拿到的數據往往可能由大部分無關數據和少部分我們所關心的數據組成。那麼,如何對這些數據集進行處理,才能得到我們所需要結果呢?工程師 George Seif 認為,可以通過權重平衡法和採樣法來解決這個問題。下面是他的觀點,雷鋒網 AI 科技評論整理。

像薩諾斯一樣給你的數據集帶來平衡

並非所有的數據都是完美的。事實上,如果你得到一個完全平衡的真實世界的數據集,你將是非常幸運的。在大多數情況下,您的數據將具有一定程度的類不平衡,即每個類具有不同數量的樣本。

為什麼我們希望我們的數據集是平衡數據集?

在深度學習項目中,在投入時間到任何可能需要花費很長時間的任務之前,很重要的一點是要理解我們為什麼應該這麼做,以確保它是一項有價值的研究。當我們真正關心少數種類數據時,類平衡技術才是真正必要的。

例如,假設我們試圖根據市場現狀、房子屬性和我們的預算來預測我們是否應該買房。在這種情況下,我們做出正確的購買決定是非常重要的,因為它是一項如此巨大的投資。同時,在我們本該買的時候,模型告訴我們不要買,這並不是什麼大事。如果我們錯過一棟房子,總會有其他房子可以買,但是在如此巨大的資產上做出錯誤的投資是非常糟糕的。

在這個例子中,我們絕對需要產生購買行為的少數類的數據非常精確,而那些不產生購買行為的類的數據,就沒什麼大不了的。然而在當我們觀察實際數據的時候,「購買」類數據比「不購買」類數據少得多,我們的模型傾向於將「不購買」類數據學習的非常好,因為它擁有最多的數據,但在對「購買」類數據的學習上表現不佳。這就需要平衡我們的數據,以便我們能夠對「購買」的預測更加重視。

那麼如果我們真的不關心少數類數據呢?例如,假設我們正在進行圖像分類,並且您的類分布類似於:

乍一看,似乎平衡我們的數據是有幫助的。但是我們可能對那些少數類並不感興趣。也許我們的主要目標是獲得儘可能高的準確率。在這種情況下,做任何平衡都沒有意義,因為我們的大部分準確率都來自於具有更多訓練示例的類。其次,即使數據集不平衡,當目標達到最高百分比準確率時,分類交叉熵損失也往往表現得很好。總之,我們的少數類對我們的目標影響不大,因此平衡不是必須的。

在所有這些情況下,當我們遇到一個我們想要平衡數據的案例時,有兩種技術可以用來幫助我們。

(1)權重平衡法

權重平衡法通過改變每個訓練樣本在計算損失時的權重來平衡我們的數據。通常,我們的損失函數中的每個樣本和類具有相同的權重,即1.0。但是有時候,我們可能希望某些更重要的特定類別或特定訓練實例擁有更大的權重。再次參照我們買房的例子,既然「購買」類的準確率對我們來說是最重要的,那麼該類中的訓練示例應該對損失函數有顯著的影響。

我們可以簡單地通過將每個示例的損失乘以取決於它們的類的某個因子來給類賦權。在Keras,我們可以做這樣的事情:

我們創建了一本字典,基本上說我們的「購買」類應該佔了損失函數重量的75%,因為更重要的是「不購買」類,我們相應地設置為25%。當然,這些值可以很容易地進行調整,以找到應用場景中的最佳設置。如果其中一個類的樣本明顯多於另一個類,我們也可以使用這種方法進行平衡。我們可以嘗試使用權重平衡法來使所有的類都對我們的損失函數產生一樣大的影響,而不必花費時間和資源去收集更多的少數類實例。

另一個我們可以用來平衡訓練實例權重的方法是如下所示的焦距損失法。它的主要思想是:在我們的數據集中,總會有一些比其他示例更容易分類的訓練示例。在訓練期間,這些例子將被有99%的分類準確率,而其它更具挑戰性的示例可能表現不佳。問題在於,那些容易分類的訓練示例仍會引起損失。當存在其他更具挑戰性的數據點時,如果正確分類,那麼這些數據點能夠對我們的總體準確性做出更大的貢獻,為什麼我們仍然給予它們相同的權重?

這正是焦距損失法可以解決的問題!焦距損失不是對所有訓練實例賦予同等的權重,而是對分類良好的實例進行降權。這樣做的直接效果是將更多的訓練重點放在那些難以分類的數據上!在存在數據不平衡的實際環境中,大多數類將很快被很好地分類,因為我們有更多的訓練樣本數據。因此,為了保證我們對少數類的訓練也達到較高的準確度,我們可以利用焦距損失在訓練中給那些少數類更大的相對權重。焦距損失在Keras中可以很容易地實現為自定義損失函數:

(2)過採樣和欠採樣

選擇合適的類權重有時是很複雜的事情。做簡單的反向頻率處理並不總是有用的。焦距損失法是有用的,但是即便這樣,也還是會減少相同程度地減少每個類裡面分類良好的示例的權重。因此,另一種平衡數據的方法是直接通過採樣來實現。下圖就是一個例子。

在上面的圖像的左側和右側,我們的藍色類比橙色類有更多的樣本。在這種情況下,我們有兩個預處理選項,它們可以幫助訓練我們的機器學習模型。

欠採樣意味著我們將只從多數類中選擇其中一些數據,而使用少數類所具有的示例數據。這個選擇可以用來保持類的概率分布。這是很容易的!我們僅僅靠減少示例樣本就平衡了我們的數據!

過採樣意味著我們將給少數類創建數個副本,以便少數類和多數類相同的示例數量。副本的數量要達到使少數類對準確率的影響可以一直維持。我們只是在沒有獲得更多數據的情況下整理了我們的數據集!如果發現很難有效地設置類權重,那麼抽樣可以替代類平衡。

via George Seif"s blog,雷鋒網 AI 科技評論編譯。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

Waymo吹響了入華的進軍號,已在滬成立獨資公司
又欠款又燒車,賈躍亭的法拉第未來要徹底涼涼了?

TAG:雷鋒網 |