Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python XGBOOST:样本重量与刻度位置重量_Python_Scikit Learn_Xgboost - Fatal编程技术网

Python XGBOOST:样本重量与刻度位置重量

Python XGBOOST:样本重量与刻度位置重量,python,scikit-learn,xgboost,Python,Scikit Learn,Xgboost,我有一个高度不平衡的数据集,我想知道在哪里计算权重,因此我试图理解XGBClassifier中的scale\u pos\u weight参数和fit方法的sample\u weight参数之间的差异。如果可以同时使用或选择哪种方法,请直观解释两者之间的差异 文件表明,秤位重量: 控制正负权重的平衡。&典型值 考虑:和(负案例)/和(正案例) 例如: from xgboost import XGBClassifier import xgboost as xgb LR=0.1 NumTrees=10

我有一个高度不平衡的数据集,我想知道在哪里计算权重,因此我试图理解
XGBClassifier
中的
scale\u pos\u weight
参数和
fit
方法的
sample\u weight
参数之间的差异。如果可以同时使用或选择哪种方法,请直观解释两者之间的差异

文件表明,
秤位重量

控制正负权重的平衡。&典型值 考虑:和(负案例)/和(正案例)

例如:

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)

sample\u weight
参数允许您为每个训练示例指定不同的权重。
scale\u pos\u weight
参数用于为整个示例类(“正”类)提供权重

这些对应于成本敏感学习的两种不同方法。如果您认为所有阳性样本的错误分类(遗漏癌症患者)成本相同(但比错误分类负面样本的成本要高,例如,告诉某人他们患有癌症,而他们实际上没有),那么您可以通过
scale\u pos\u weight
为所有阳性样本指定一个权重

XGBoost将labels=1视为“肯定”类。从以下代码中可以明显看出这一点:

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


另一种情况是,您有依赖于示例的成本。一个例子是检测欺诈交易。不仅假阴性(错过欺诈性交易)比假阳性(阻止合法交易)的成本更高,而且错过假阴性的成本与被盗金额成正比。因此,您希望对金额较高的正面(欺诈)示例给予更大的权重。在这种情况下,您可以使用
sample\u weight
参数指定示例特定的权重。

Hi,您能告诉我如何计算这两个实例的值吗?另外,在
scale\u pos\u weight
thank中的正实例和负实例是什么?没有“计算”这些权重值的标准方法。在衡量整个正类时,XGBoost文档建议将sum(负实例)/sum(正实例)作为“需要考虑的典型值”。原则上,这是一个需要调整的超参数。对于衡量单个实例,完全由您决定这些实例的错误分类成本。例如,在检测信用卡交易中的欺诈行为时,你可以说,错过欺诈交易的成本与所花的钱成正比。另外,你能告诉我它是什么意思吗?正实例,在这里,类值=到1,负实例,在这里,类值=0?。但是将0和1分配给类可能是任意的,对吗?谢谢你说得对。在XGBoost的情况下,y=1被视为正类。我更新了答案并包含了这个。
if (info.labels[i] == 1.0f) w *= param_.scale_pos_weight