哪个分类器在使用“class_weight”时表现更好?

数据挖掘 随机森林 逻辑回归 阶级失衡
2021-10-08 03:17:40

我使用了“class_weight”方法来平衡我的多类分类问题,使用逻辑回归、随机森林和 XGBoost 分类器。在这三种方法中,逻辑回归对少数类的表现明显高于其他两种模型。有人可以解释一下为什么 LR 在这种情况下会击败基于决策树的分类器吗?谢谢你。

2个回答

非常好的问题!我认为简单的答案是:不。根据我的经验,这通常取决于数据。即使是不同的提升方法/工具也会有不同的表现。它通常取决于尝试和错误。

可以产生影响的是使用 L1/L2 正则化,因为它可以缩小对做出良好预测“无用”的特征。

我想不出一个理论上的原因。我很好奇是否有人提出了更多基于理论的答案!

似乎我为这种行为找到了一些合理的理由!

LogisticRegression 方法中的 Class_weight 应用于 sample_weight,它用于一些内部函数,如 >_logistic_loss_and_grad、_logistic_loss 等:

#Logistic loss is the negative of the log of the logistic function..
out = -np.sum(sample_weight * log_logistic(yz)) + .5 * alpha * np.dot(w, w)
NOTE: ---> ^^^^^^^^^^^^^

同样,在 RandomForest 和 XGBoosting 等基于决策树的方法中,class_weigh 应用于giniorentropy函数,这会影响nominatordenominator --> 对纯度函数的影响较小!

源代码