简短版:
有没有一种方法可以指示Caret训练回归模型
- 使用用户定义的标签作为“正类标签”?
- 在训练期间优化模型的灵敏度(而不是ROC)?
长版本:
我有一个数据框
> feature1 <- c(1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0)
> feature2 <- c(1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,1)
> feature3 <- c(0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0)
> TARGET <- factor(make.names(c(1,0,1,1,0,0,1,0,1,1,1,0,1,0,0,0,1,0,1,1)))
> df <- data.frame(feature1, feature2, feature3, TARGET)
模型训练的实现方式如下:
> ctrl <- trainControl(
+ method="repeatedcv",
+ repeats = 2)
>
> tuneGrid <- expand.grid(k = c(2,5,7))
>
> tune <- train(
+ TARGET ~ .,
+ metric = '???',
+ maximize = TRUE,
+ data = df,
+ method = "knn",
+ trControl = ctrl,
+ preProcess = c("center","scale"),
+ tuneGrid = tuneGrid
+ )
> sclasses <- predict(tune, newdata = df)
> df$PREDICTION <- make.names(factor(sclasses), unique = FALSE, allow_ = TRUE)
我希望最大化灵敏度=精度=A / ( A + C )
在这张图片中,Event
(应该)在我的情况下是X1 = 执行的操作
。但是caret使用X0 = 未执行操作
。
我可以通过使用positive
参数来设置混淆矩阵的正类。
> confusionMatrix(df$PREDICTION, df$TARGET, positive = "X1")
但是在训练时有没有办法设置这个(最大化灵敏度)呢?
我已经检查过是否有其他适合我的需求的指标,但是我在文档中没有找到任何一个。我需要为trainControl
实现自己的summaryFunction
吗?
谢谢!
trainControl(..., classProbs = TRUE, summaryFunction = twoClassSummary)
内使用summaryFunction
twoClassSummary
作为摘要函数。然后,在train(..., metric = "Sens")
内使用指标Sens
。 - Lluís Ramonusing metric="Sens"
将选择一个灵敏度最高的模型,但这并不是专门为灵敏度进行“优化”的模型。 - Krrr