缩写:

有没有一种方法可以指示插入符号训练回归模型

  • 使用用户定义的标签作为“正类标签”吗?
  • 是否在训练过程中(而不是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)
    

    我想最大化sensitivity = precision = A / ( A + C )
    R caret : Maximizing sensitivity for manually defined positive class for training (classification),-LMLPHP

    在我的情况下,其中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/

    10-12 16:43