我正在使用插入符号来计算多个 ML 模型并进行比较。然而,我看到模型计算出的 F1-score 似乎并不是我所期望的。
F1-score 的公式应该是这个:2 x [(Precision x Recall) / (Precision + Recall)].
但是,当我运行 caret 时,计算出的 F1 分数似乎不是那样工作的。
我运行的代码如下:
control <- trainControl(method="repeatedcv", number=k_folds_cross_validation, repeats=times_cross_validation, search = "random",
summaryFunction = multiClassSummary, returnResamp = "all", savePredictions = "all", classProbs = TRUE)
set.seed(7)
tuneGrid = expand.grid(alpha = 0, lambda = 10^seq(-4, 0, length.out = 50))
lasso_ML <- train(t(x), y, method = "glmnet", trControl = control, family="binomial", tuneGrid = tuneGrid , metric="F1")
并且在运行时
lasso_ML$results
我看到一个表格如下(我没有放所有列)
alpha lambda F1 Precision Recall
1 0 0.0001000000 0.625 0.55 0.05833333
2 0 0.0001206793 0.625 0.55 0.05833333
3 0 0.0001456348 0.625 0.55 0.05833333
4 0 0.0001757511 0.625 0.55 0.05833333
5 0 0.0002120951 0.625 0.55 0.05833333
6 0 0.0002559548 0.625 0.55 0.05833333
怎么可能?理论上 F1 分数应该是 0.1054794,而不是 0.625。