gpt4 book ai didi

R:插入符号包:Brier Score

转载 作者:行者123 更新时间:2023-12-05 03:54:26 25 4
gpt4 key购买 nike

我想用 train() 执行逻辑回归来自 caret 的功能包裹。我的模型看起来像这样:

model <- train(Y ~.,
data = train_data,
family = "binomial",
method = "glmnet")

使用生成的模型,我想做出预测:

pred <- predict(model, newdata = test_data, s = "lambda.min", type = "prob")

现在,我想评估模型预测与实际测试数据相比的好坏程度。为此,我知道如何接收 ROC 和 AUC。不过,我也有兴趣获得 BRIER SCORE。 Brier Score 的公式几乎与 MSE 相同。我面临的问题是 type predict 中的参数只允许“prob”(或我不感兴趣的“class”),它给出一个预测为 ONE 的概率(例如 0.64),以及为零的补充概率(例如 0.37)。然而,对于 Brier 分数,我需要为每个包含两者信息的预测提供一个概率估计(例如,高于 0.5 的值表示 1,低于 0.5 的值表示 0)。我没有在 caret 中找到任何接收 Brier 分数的解决方案。包裹。我知道包裹 cv.glmnet predict函数允许参数“响应”来解决我的问题。但是,出于个人喜好,我想留在 caret包裹。感谢您的帮助!

最佳答案

如果我们按照 brier 分数的 wiki 定义:

Brier 分数最常见的公式是

forumla

其中 f_t 是预测的概率,o_t 是(0 或 1)的实际结果,N 是预测实例的数量。

在 R 中,如果您的标签是一个因素,那么逻辑回归将始终根据第 2 级进行预测,这意味着您只需计算概率和 0/1。例如:

library(caret)
idx = sample(nrow(iris),100)
data = iris
data$Species = factor(ifelse(data$Species=="versicolor","v","o"))
levels(data$Species)
[1] "o" "v"

在这种情况下,o 为 0,v 为 1。

train_data = data[idx,]
test_data = data[-idx,]

model <- train(Species ~.,data = train_data,family = "binomial",method = "glmnet")

pred <- predict(model, newdata = test_data)

所以我们可以看到类的概率:

head(pred)
o v
1 0.8367885 0.16321154
2 0.7970508 0.20294924
3 0.6383656 0.36163437
4 0.9510763 0.04892370
5 0.9370721 0.06292789

计算分数:

f_t = pred[,2]
o_t = as.numeric(test_data$Species)-1
mean((f_t - o_t)^2)
[1] 0.32

关于R:插入符号包:Brier Score,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61014688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com