![](/img/trans.png)
[英]How would I construct my own evaluation metric for minimizing test error for my highly unbalanced class using XGBoost?
[英]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))
我想對真實數據上模型的性能有最好的了解,但是我還沒有找到最終的答案!
處理不平衡數據的經驗法則是“永遠不要平衡測試數據”。 處理不平衡數據的管道:
這樣您將獲得實際的性能。
這里出現的問題是為什么在火車測試分裂之前不平衡數據?
當您在現實世界中進行部署時,您不能期望現實世界中的數據能夠平衡...
更好的方法是在第2步使用K折,然后每折進行3、4、5步
請參閱此文章了解更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.