2

我想对一个误报成本高于误报成本的二进制变量进行分类。

rpart包中,我们使用损失矩阵,将parms = list(loss=matrix(c(0,1,5,0),nrow=2))负例错误分类为正例的成本比将正例误分类为负例的成本高 5 倍。

我该怎么做XGboost

4

2 回答 2

0

你在找scale_pos_weight参数吗?

https://github.com/dmlc/xgboost/blob/master/doc/parameter.md

scale_pos_weight, [default=1] 控制正负权重的平衡,对不平衡的类很有用。需要考虑的典型值:sum(negative cases) / sum(positive cases) 有关更多讨论,请参阅参数调整。另请参阅 Higgs Kaggle 竞赛演示示例:R、py1、py2、py3

你可以像这样使用它:

clf = xgb.XGBRegressor(objective='binary:logistic', 
                       scale_pos_weight= 5,
                       max_depth=3,
                       n_estimators=100)

在 python 中,sklearn api。

于 2017-04-12T22:13:53.463 回答
-1

假设您使用的是xgboost包,您可以使用watchlist参数。它是一个列表xgb.DMatrix,每个都标有一个名称。您可以使用 eval.metric 参数,也允许使用多个评估指标。

watchlist <- list(train=dtrain, test=dtest)

bst <- xgb.train(data=dtrain, max.depth=2, eta=1, nthread = 2,
eval.metric = "error", eval.metric = "logloss", nround=2,
watchlist=watchlist, objective = "binary:logistic")

如果xgboost github 页面中大量的指标列表不能满足您的需要,那么正如他们所说,您可以生成自己的指标,例如误报和误报的加权总和,其中误报的权重是误报的五倍。

于 2016-01-25T13:48:38.193 回答