我想将假阳性成本高于假阴性的二元变量分类。
在rpart
包中,我们使用损失矩阵,将parms = list(loss=matrix(c(0,1,5,0),nrow=2))
添加为错误分类反面示例的成本,因为正数比将正面示例错误分类为负数的成本高5倍。
如何使用XGboost
执行此操作?
答案 0 :(得分:1)
您在寻找scale_pos_weight
参数吗?
https://github.com/dmlc/xgboost/blob/master/doc/parameter.md
scale_pos_weight,[default = 1]控制正和平衡 负权重,对非平衡类有用。一个典型的价值 考虑:sum(负数情况)/ sum(正数情况)参见参数 调整更多讨论。另见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。
答案 1 :(得分:-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 pages中的大量列表不足以满足您的需要,那么就像他们所说的那样,您可以生成自己的矩阵,例如假阳性和假阴性的加权和,其中假阳性加权五倍以上假阴性。