缩写:
有没有一种方法可以指示插入符号训练回归模型
完整版:
我有一个数据框
> 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)
我想最大化
sensitivity = precision = A / ( A + C )
在我的情况下,其中
Event
(在图像中)应该是 X1 = action taken
。但是插入符使用 X0 = no action taken
。我可以使用
positive
参数为混淆矩阵设置正类> confusionMatrix(df$PREDICTION, df$TARGET, positive = "X1")
但是在训练时有什么方法可以设置这个值(最大化灵敏度)?
我已经检查了是否有符合我需要的其他指标,但是我无法在documentation中找到一个指标。我是否必须为
summaryFunction
实现自己的trainControl
?谢谢!
最佳答案
据我所知,在培训中没有直接指定此方法的方法(我一段时间以来一直在搜索此方法)。但是,我找到了一种解决方法:您可以在数据框中重新排序目标变量的级别。由于默认情况下训练算法会将遇到的第一个级别作为肯定类,因此可以解决您的问题。只需添加以下简单的代码行即可达到目的:
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)))
TARGET <- relevel(TARGET, "X1")
关于R caret : Maximizing sensitivity for manually defined positive class for training (classification),,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35725591/