我有一些非常不平衡的数据(3% 肯定),我正在使用 xgboost 进行一些学习。该文件很大,我之前尝试过逻辑回归、随机森林和 svm(仅使用整个数据的一些子样本,因为数据太大)。为了解决数据不平衡,我尝试了使用 SMOTE 的类权重和平衡数据(这使得数据超级大)。但这似乎无济于事。当我使用上述任何一种方法时,准确率都会变差。
当我尝试 xgboost 并尝试像文档建议的那样调整 scale-positive-weight 参数时,它只会使准确性更差。总的来说,我所有的模型都比仅仅预测全 0 效果更差。
无论如何我可以解释这种数据不平衡吗?
这是我的 xgboost 代码
x = data[:,3:]
y = data[:,2]
from xgboost import XGBClassifier
model = XGBClassifier(scale_pos_weight = np.sum(y==0)/np.sum(y==1))
model.fit(x, y, eval_metric="auc")
# make predictions for test data
y_pred = model.predict(x)
#predictions = [round(value) for value in y_pred]
# evaluate predictions
accuracy = accuracy_score(y, y_pred)
print("Accuracy: %.2f%%" % (accuracy * 100.0))