在训练XGB的时候, xgb.DMatrix()函数里有个weight的参数,可以给样本设置权重,这样xgb就可以在设置了权重的样本集上训练只要DMatrix()函数里设置了weight参数,打印出来的metric都是在加了权重的数据集上计算出来的。先放个代码,放个打印出来的logloss和auc
tain.txt,test.txt 为标准带weight的libsvm格式 label:weight 1:feat1 2:feat2 ……
import os
train = os.path.join(dataset_path, "train.txt")
test = os.path.join(dataset_path, "test.txt")
roc_auc_score函数中有个参数是sample_weight,可以给样本设置权重。
一 DMatrix读取libsvm目录
计算AUC时,不带Weight与 带Weight如果下结果:
二 DMatrix读取X,y,Weight
三 XGBClassifier fit时设置sample_weight
XGBClassifier传入了train的weight在fit时,但是计算AUC时,对train与test都是不带weight计算的
四 XGB训练进使用Weight总结
1.使用Dmatrix方式训练时,因为train test都有weight, 在训练过程中都会打印AUC(带weight)
2. 使用XGBClassifier fit模型时,只传了train的weight,模型训练时会使用weight的信息建树,但是打印metric时, train与test计算AUC 不是不带weight信息
所以如果使用带weight的样本进行训练时,XGB打印的信息因训练方式数据格式区别会有不同的打印结果。但是总体来说,使用XGBClassifier训练更好,因为之后预测样本时,样本不会有weight信息,这时计算预测集的AUC时的信息,与XGBClassifier fit时打印的信息是保持一样的。
文章出处登录后可见!
已经登录?立即刷新