LightGbm:如何使用eval_sample_weight

LightGbm: how to use eval_sample_weight

我正在研究 LightGbm (Scikit-learn API) 中的二元分类问题,并且无法理解如何包含样本权重。我的代码目前看起来像这样

classifier = LGBMClassifier(n_estimators=100, learning_rate = 0.1, num_leaves = 15)    
classifier.fit(X_train, y_train, sample_weight = w_train, eval_set = (X_val, y_val))

这里w_train是一个与y_train维度相同的numpy数组。但是我需要 LightGbm 在验证集上也使用 sample_weights,所以我在 fit 函数中设置了 eval_sample_weight。我希望这也是一个数组 w_val(与 y_val 具有相同的维度),但我从文档中看到这是一个数组列表。我找不到任何使用这个的例子,所以我很难理解为什么。据我了解,这应该只是验证集中每个元素的权重。数组列表:这是否意味着每个样本有多个权重?谁能解释一下?

我自己想出来了。 LightGbm 接受验证集列表。因此,它当然也接受权重列表。每个验证集的一组权重。

Petter T是对的,应该是数组列表,每个数组对应每个eval_set。 所以代码应该如下所示:

classifier.fit(X_train, y_train, sample_weight = w_train, eval_set = (X_val, y_val), eval_sample_weight = [w_val])

其中,如前所述,w_val 形状等于 y_val 的形状。