Version viết tắt:R caret: Tối đa hóa sự nhạy cảm cho các lớp học tích cực bằng tay được xác định cho đào tạo (phân loại),
Có cách nào để hướng dẫn caret để đào tạo một hồi quy mô hình
- Sử dụng một người sử dụng nhãn được xác định là "nhãn lớp dương"?
- Tối ưu hóa mô hình cho độ nhạy trong quá trình đào tạo (thay vì ROC)?
dài Version:
Tôi có một dataframe
> 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)
Và mô hình đào tạo được thực hiện như
> 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)
Tôi muốn tối đa hóa sensitivity = precision = A/(A + C)
đâu Event
(trong ảnh) nên trong trường hợp của tôi X1 = action taken
. Nhưng caret sử dụngX0 = no action taken
.
tôi có thể thiết lập các lớp dương tính với ma trận nhầm lẫn của tôi bằng cách sử dụng các lập luận positive
như
> confusionMatrix(df$PREDICTION, df$TARGET, positive = "X1")
Nhưng có cách nào để thiết lập đào tạo trong khi điều này (tối đa hóa sự nhạy cảm)?
Tôi đã kiểm tra xem có số liệu nào khác phù hợp với nhu cầu của tôi hay không, nhưng tôi không thể tìm thấy số liệu trong số documentation. Tôi có phải triển khai summaryFunction
của riêng mình cho trainControl
không?
Cảm ơn!
Trong phân loại, bạn có thể sử dụng dưới dạng 'summaryFunction'' haiClassSummary' bên trong 'trainControl (..., classProbs = TRUE, summaryFunction = twoClassSummary)'. Sau đó sử dụng 'metric' Sens bên trong' train (..., metric = "Sens") '. –