精简版:
有没有办法指导插入符号训练回归模型
长版:
我有一个数据帧
> 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)
Run Code Online (Sandbox Code Playgroud)
模型训练就像实施一样
> 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)
Run Code Online (Sandbox Code Playgroud)
我想最大化 sensitivity = precision = A / ( A + C )
在Event(在图像中)应该在我的情况下X1 = action taken.但插入符号使用 X0 = no action taken.
我可以使用positive像这样的参数为我的混淆矩阵设置正类
> confusionMatrix(df$PREDICTION, df$TARGET, positive = "X1")
Run Code Online (Sandbox Code Playgroud)
但有没有办法在训练时设置这个(最大化灵敏度)?
我已经检查过是否有其他指标适合我的需要,但我无法在文档中找到一个.我必须实现自己summaryFunction的trainControl吗?
谢谢!
Bar*_*VdW 11
据我所知,在训练中没有直接的方法来指明这一点(我现在一直在寻找这个问题).但是,我找到了一种解决方法:您只需重新排序数据框中目标变量的级别.由于训练算法默认将第一个遇到的级别作为正类,这可以解决您的问题.只需添加这一简单的代码行即可:
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")
Run Code Online (Sandbox Code Playgroud)