簡體   English   中英

數據高度不平衡時,我應該平衡測試集嗎?

[英]Should I balance the test set when i have highly unbalanced data?

將Sklearn GridSearchCv應用於4類(建築物,植被,水和道路)的遙感數據時,我正在使用隨機森林找到最佳參數,問題是我的“植被”類比其他類別多得多(按我的意思是從數千到幾百萬不等。 我應該平衡測試數據集以獲得指標嗎?

在進行訓練和測試之前,我已經平衡了整個集合,這意味着兩個數據集以相同的方式分配了相同的類。 恐怕這不能代表算法在實際數據上的性能,但可以讓我深入了解每個類的性能。 如果我使用不平衡數據,則“植被”類最終可能會與其他平均值混淆。

這是我做的余額示例,如您所見,我直接在X和y上做余額。 完整的數據和標簽。

if balance:
    smt = RandomUnderSampler(sampling_strategy='auto')
    X, y = smt.fit_sample(X, y)
    print("Features array shape after balance: " + str(X.shape))

我想對真實數據上模型的性能有最好的了解,但是我還沒有找到最終的答案!

處理不平衡數據的經驗法則是“永遠不要平衡測試數據”。 處理不平衡數據的管道:

  1. 做預處理
  2. 應用火車測試拆分(分層)。
  3. 平衡訓練數據(通常SMOTE效果更好)
  4. 火車模型
  5. 測試不平衡測試數據(顯然使用f-scorePrecision和Recall等指標

這樣您將獲得實際的性能。

這里出現的問題是為什么在火車測試分裂之前不平衡數據?

當您在現實世界中進行部署時,您不能期望現實世界中的數據能夠平衡...

更好的方法是在第2步使用K折,然后每折進行3、4、5步

請參閱文章了解更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM