[英]Which should I use, oversampling or undersampling?
我的数据不平衡。
大概是45000:1500的失衡,但是在使用oversampling、smote、smotetomek的时候,得到了97%以上的结果。
然而,当实际进行测试时,所有1500个案例的结果都相反。
欠采样时,准确率在85%左右,1500个case中,有300个不一样,但是准确率差异很大
当然,我检查了recall和precision,但是和accuracy没有显着差异,那么你能解释一下为什么会出现这些结果吗?
sm = SMOTE(random_state=42)
X, y = sm.fit_resample(X, y)
得到这个混淆矩阵
精度:0.9784
精度:0.9718
召回:0.9854
F1:0.9786
AUC:0.9784
但是实际上当我运行包含 class 1 数据的测试时得到了这个结果
test_result = model.predict(test_x)
pd.DataFrame(test_result).value_counts()
0 1589
数据类型:int64
所有 class 1 预测 0,,,
使用过采样、smote、smotetomek 时也相等
欠采样
准确度:86%
0 354
1 1235
数据类型:int64
不知道哪种情况最好? 还有什么我可以尝试的吗?
添加了我发现并引用了 imbalanced-learn.org
from sklearn.metrics import balanced_accuracy_score
balanced_accuracy_score(y_test, y_pred)
我应该检查这个准确度分数吗? 如果我有不平衡的数据集?
当我检查有关过采样和欠采样的准确性评估时
过采样:50%
欠采样:84%
对于不知道答案的人
Random Oversampling is problem 因为是从少数class重复插入数据的随机方法,所以会因为数据重复插入而出现过拟合问题。
而且,当输入测试数据时,当然会获得不同的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.