如何使用 R 预测 xgboost 中的概率?

数据挖掘 机器学习 r 预测建模 决策树 xgboost
2021-10-03 23:01:56

下面的预测函数也给出了 -ve 值,因此它不能是概率。

param <- list(max.depth = 5, eta = 0.01,  objective="binary:logistic",subsample=0.9)
bst <- xgboost(param, data = x_mat, label = y_mat,nround = 3000)

pred_s <- predict(bst, x_mat_s2)

我谷歌并尝试过pred_s <- predict(bst, x_mat_s2,type="response") ,但没有奏效。

问题

如何预测概率?

3个回答

只需使用predict_proba而不是predict. 您可以将目标保留为binary:logistic

知道我有点晚了,但要从xgboost你那里得到概率,应该像这样指定multi:softmax目标:

xgboost(param, data = x_mat, label = y_mat,nround = 3000, objective='multi:softprob')

来自?xgb.train

multi:softprob 和softmax一样,但是输出一个ndata * nclass的向量,可以进一步reshape成ndata,nclass矩阵。结果包含属于每个类的每个数据点的预测概率。

预测后:

pred_s <- predict(bst, x_mat_s2)

您可以通过以下方式获得概率:

pred_s$data

如果这是二元分类,则pred_s$data包括 prob.0、prob.1、响应。

因此,您可以通过以下方式获得 prob.1:

pred_s$data$prob.1