【机器学习】平衡你的数据集的几项技巧
作者 | Praveen Thenraj
編譯 | VK
來源 | Towards Data Science
“如果你被問題的規(guī)模所壓倒,把它分解成更小的部分……”
機器學(xué)習(xí)中的類不平衡是一個重要的問題,也是處理數(shù)據(jù)集時最受關(guān)注的問題之一。類不平衡的數(shù)據(jù)集往往更具欺騙性,如果處理不當(dāng),結(jié)果可能導(dǎo)致錯誤的決策。
最近我碰巧在一個數(shù)據(jù)集中工作,它有一個類不平衡的問題。我不太喜歡數(shù)據(jù)生成技術(shù),并且由于不平衡的嚴(yán)重性,我不想使用像分層K-fold這樣的技術(shù),所以我使用了另一種技術(shù),它幫助模型比傳統(tǒng)技術(shù)更好地學(xué)習(xí)數(shù)據(jù)。
也許我有點晚使用這個技術(shù),但我想在這里分享它。
import?pandas?as?pdtrain=pd.read_csv('/Desktop/Files/train_data.csv') print(train['Top-up?Month'].value_counts())No?Top-up?Service????106677>?48?Months???????????8366 36-48?Months???????????3656 24-30?Months???????????3492 30-36?Months???????????3062 18-24?Months???????????2368 12-18?Months???????????1034 Name:?Top-up?Month,?dtype:?int64以上是訓(xùn)練數(shù)據(jù)中因變量的值計數(shù)。從上面可以清楚地看到,“No Top-up Service”類和其他類之間存在嚴(yán)重的類不平衡。
方法
所以我在這里采用的方法是將大多數(shù)類數(shù)據(jù)分成大小為“n”的小折。每個數(shù)據(jù)塊(折)都有與大多數(shù)類相關(guān)的“k”個數(shù)據(jù)點。所有其他次要類數(shù)據(jù)點都聚集在一起('m')
上面的代碼片段將主要類數(shù)據(jù)劃分為多個折,每個折包含相同數(shù)量的數(shù)據(jù)點。然后大多數(shù)類數(shù)據(jù)的第一個折(在上面的代碼中被引用為fold_n)與次要類(df_topup)的所有數(shù)據(jù)連接在一起。
以上在一個循環(huán)中發(fā)生,循環(huán)將繼續(xù),直到等于折“n”的大小。可以看到,每次,大多數(shù)類數(shù)據(jù)的一個新塊與次要類的完整數(shù)據(jù)連接,從而允許模型在訓(xùn)練階段在比例相同的數(shù)據(jù)下進行訓(xùn)練。
Major?class?initially?-?106677 Fold?size(n)?-?5 Major?class?data(k)?per?fold=106677/5?-?21335 Minor?class(all?minor?classes?combined)?-?21978 Total?data?per?fold(major+minor)?-?43313下面代碼片段中的代碼也可以驗證這一點。
list_data=chunks(df_train_main,5) list_data_shape=[df.shape?for?df?in?list_data] print(list_data_shape)[(43313,?6),?(43313,?6),?(43313,?6),?(43313,?6),?(43313,?6)]現(xiàn)在可以看到,一個具有嚴(yán)重類不平衡問題的大數(shù)據(jù)集被劃分為5個小數(shù)據(jù)集
不過,以下是我從上述方法中認(rèn)識到的兩個問題:
添加到每個折中的大多數(shù)類數(shù)據(jù)的分布。因為我們只是將整個大類數(shù)據(jù)劃分為折(n),折的分布與原有分布不同。
不過,在所有需要解決的問題中,類(12-18個月)和主要類(“No Top-up Service”)之間仍然存在不平衡。但對于二類,這種方法效果更好。
這些折的數(shù)據(jù)然后被傳遞到一個模型,以訓(xùn)練模型使用更少的不平衡數(shù)據(jù)。這是一種通用的方法,不僅可以應(yīng)用于結(jié)構(gòu)化數(shù)據(jù),還可以應(yīng)用于圖像等非結(jié)構(gòu)化數(shù)據(jù)。
我個人在一個Kaggle競賽中應(yīng)用了同樣的方法進行圖像分類,并獲得了更好的準(zhǔn)確度。
往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機器學(xué)習(xí)在線手冊深度學(xué)習(xí)筆記專輯《統(tǒng)計學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載機器學(xué)習(xí)的數(shù)學(xué)基礎(chǔ)專輯溫州大學(xué)《機器學(xué)習(xí)課程》視頻 本站qq群851320808,加入微信群請掃碼:總結(jié)
以上是生活随笔為你收集整理的【机器学习】平衡你的数据集的几项技巧的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鸿蒙系统桌面小艺建议怎么删除?鸿蒙系统小
- 下一篇: 985女研究生连算法都不会,还面试什么大