R:キャレットパッケージ:ブライヤースコア

ビョルンバター:

私はロジスティック回帰を実行したい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を受信する方法を知っています。しかし、私はまた、ブライヤースコアを受け取ってに興味を持っています。ブライヤースコアについての式は、MSEとほぼ同じです。私が直面しています問題は、type中に引数が唯一の「PROB」(または私はに興味がない「クラス」)ONE(例えば0.64)をbeeingて1つの予測の確率を与える、とbeeingての補完性を可能に予測しますZERO(例えば0.37)。ブライヤーしかしスコアのために、私は(例えば、aは0.5以上の値が1と0.5以下の値が0を示すであろう示すであろう)の両方の情報が含まれている各予測するための一つの確率推定値を必要とします。私は中ブライヤースコアを受信するための任意の解決策を見つけていませんcaretパッケージ。私はパッケージにすることを承知しています機能は私の問題を解決する引数「応答」を可能にします。しかし、個人の好みのために私が滞在したいパッケージ。助けてくれてありがとう!cv.glmnetpredictcaret

StupidWolf:

私たちは、ブライヤースコアのwikiの定義で行く場合:

ブライヤースコアの最も一般的な製剤であります

フォーラム

F_Tは、予測された確率、o_t(0または1)の実際の結果であり、Nは、予測インスタンスの数です。

あなたのラベルが要因である場合はRで、その後、ロジスティック回帰は、常にあなただけのものに関して確率と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

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=399661&siteId=1