如何處理不均衡數據?
今天讓我們聊聊在機器學習中遇到了一些不均衡數據的時候,我們應該怎麼做.
不均衡的數據通常來說形式都比較固定,並且也比較好區分.比如說你手頭上現在有蘋果和梨,在這個時候你手中的數據都跟你說,全世界的人都吃梨哦,這個時候你去找一個路人甲,問問他你是不是喜歡吃梨啊,這個時候我們大多數人都會猜測,這個人會吃梨,這個時候梨就可以作為優勢數據變得很驕傲了.
這個時候,讓我們來引入今天的問題,如何處理不均衡數據.
其實不均衡的數據理解預測起來很簡單,永遠都是預測多的數據的那一方,這樣准沒錯,特別是數據多很多的情況的那一方,比如多的佔了90%,少的佔10%.只要每一次都預測多的那一批數據,預測的準確性就可以達到90%了。
沒錯,這樣聽起來是不是有點偷懶的感覺呢?其實機器也懂得這些小伎倆,所以經過訓練以後,機器也變得精明了,每一次都預測多的那部分數據,但是這樣是不可以的!接下來我們來談談解決這個問題的幾種方法
方法1:想辦法獲取更多的數據
首先我們要想一想我們是否可以獲取更多的數據,有的時候我們在獲取數據的前期,通常數據會呈現一個變化的趨勢,這時候表現為某一種數據量偏多,等到數據的後半段的時期,數據的變化的趨勢可能就會不一樣了。
如果沒有獲取後半期的數據,從整體來看,預測就可能不會那麼的精準.所以想辦法獲得更多的數據有可能會改善這個情況~
方法2:換一種評判方式
通常情況下,我們會使用準確率(Accuracy)和誤差(Cost)兩種方式來判斷機器學習的成果.但是在不均衡的數據面前,高的準確率和低的誤差就顯得沒有那麼有用和重要了.
所以我們就可以換個方式去計算,很多時候我們會使用Confusion Matrix去計算Precision&Recall,然後在通過Precision&Recall去計算F1 Score(or F-score).通過這樣的數據,我們可以很大程度上去區分不均衡數據,並且可以給出更好的分數.因為我水平的問題,具體的計算推理過程等我日後會進行推導!(立flag)
方法3:重組數據
第三種方法相對來說最為簡單粗暴,對不均衡的數據進行重新組合,使之均衡。
第一種方式是複製少數數據里的樣本,使其可以達到和多數數據樣本差不多的數量。
第二種方式就是對多數樣本的數據進行開刀,砍掉一些多數樣本的數據,還是使兩者的數量差不多
方法4:使用其他的機器學習方法
在使用一些機器學習的方法中,比如神經網路,在面對不均衡數據的時候都是束手無策的,但是像決策樹這樣的方法就不會受到不均衡數據的影響
方法5:修改演算法
在所有方法中,最具有創造力的方法莫過於這個修改演算法了,如果你使用的是Sigmoid函數,他會有一個預測的門檻,如果低於門檻,預測的結果為梨,如果超過了門檻,預測的結果為蘋果。
不過因為現在梨的數量過多,這個時候我們就需要調解下門檻的位置,使得門檻更加的偏向於蘋果這一邊,只有數據非常準確的情況下,模型才會預測為蘋果,從而使機器學習學習到更好的效果.
好了,這就是這一篇文章的一些簡單概括,如果大家想要學習更多的機器學習的知識,歡迎關注學妹的簡書頻道~雲時之間 - 簡書註:以上方法提供一種思路參考,實際效果可能需要具體分析具體實驗~歡迎交流~
更多文章可以關注個人筆記公眾號自然語言處理與機器學習~
推薦閱讀:
※現在計算機自然語言處理的最高水平是什麼?
※招2000人來審核內容,他們是今日頭條的數據勤雜工還是機器學習的訓練師?
※《Generating Factoid QuestionsWith Recurrent Neural Networks:nThe 30M Factoid Question...》閱讀筆記
※RNN Tutorial(1)
※阿里知識圖譜首次曝光:每天千萬級攔截量,億級別全量智能審核