gpt4 book ai didi

python - XGBOOST:sample_Weights 与 scale_pos_weight

转载 作者:行者123 更新时间:2023-11-28 21:38:34 25 4
gpt4 key购买 nike

我有一个高度不平衡的数据集,想知道在哪里计算权重,因此我试图理解 scale_pos_weight 之间的区别XGBClassifier 中的参数和 sample_weight fit 的参数方法。如果可以同时使用它们或如何选择这两种方法,将不胜感激对两者之间差异的直观解释。

文档表明 scale_pos_weight :

control the balance of positive and negative weights..& typical value to consider: sum(negative cases) / sum(positive cases)

例子:

from xgboost import XGBClassifier
import xgboost as xgb
LR=0.1
NumTrees=1000
xgbmodel=XGBClassifier(booster='gbtree',seed=0,nthread=-1,
gamma=0,scale_pos_weight=14,learning_rate=LR,n_estimators=NumTrees,
max_depth=5,objective='binary:logistic',subsample=1)
xgbmodel.fit(X_train, y_train)

from xgboost import XGBClassifier
import xgboost as xgb
LR=0.1
NumTrees=1000
xgbmodel=XGBClassifier(booster='gbtree',seed=0,nthread=-1,
gamma=0,learning_rate=LR,n_estimators=NumTrees,
max_depth=5,objective='binary:logistic',subsample=1)
xgbmodel.fit(X_train, y_train,sample_weight=weights_train)

最佳答案

sample_weight 参数允许您为每个训练示例指定不同的权重。 scale_pos_weight 参数可让您为整个类别的示例(“正”类别)提供权重。

这些对应于成本敏感型学习的两种不同方法。如果您认为错误分类正面示例(遗漏癌症患者)的成本对于所有正面示例都是相同的(但比错误分类负面示例更多,例如告诉某人他们实际上没有患癌症)那么您可以指定一个通过 scale_pos_weight 对所有正面示例进行加权。

XGBoost 将标签 = 1 视为“正”类。从以下代码可以看出这一点:

if (info.labels[i] == 1.0f) w *= param_.scale_pos_weight

参见 this question .

另一种情况是您有依赖于示例的成本。一个例子是检测欺诈交易。不仅漏报(错过欺诈交易)比漏报(阻止合法交易)的成本更高,而且漏报漏报的成本与被盗金额成正比。因此,您想为具有更高金额的正(欺诈)示例赋予更大的权重。在这种情况下,您可以使用 sample_weight 参数来指定特定于示例的权重。

关于python - XGBOOST:sample_Weights 与 scale_pos_weight,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48079973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com