Так что я заинтересован в создании модели, которая оптимизирует PPV. Я создал модель RF (ниже), которая выводит мне путаницу, для которой я затем вручную вычисляю чувствительность, специфичность, ppv, npv и F1. Я знаю, что в настоящее время точность оптимизирована, но я готов к чувствительности и специфичности go, чтобы получить гораздо более высокое PPV.
data_ctrl_null <- trainControl(method="cv", number = 5, classProbs = TRUE, summaryFunction=twoClassSummary, savePredictions=T, sampling=NULL)
set.seed(5368)
model_htn_df <- train(outcome ~ ., data=htn_df, ntree = 1000, tuneGrid = data.frame(mtry = 38), trControl = data_ctrl_null, method= "rf",
preProc=c("center","scale"),metric="ROC", importance=TRUE)
model_htn_df$finalModel #provides confusion matrix
Результаты:
Call:
randomForest(x = x, y = y, ntree = 1000, mtry = param$mtry, importance = TRUE)
Type of random forest: classification
Number of trees: 1000
No. of variables tried at each split: 38
OOB estimate of error rate: 16.2%
Confusion matrix:
no yes class.error
no 274 19 0.06484642
yes 45 57 0.44117647
Мой ручной расчет: sen = 55.9% spe c = 93.5%, ppv = 75.0%, npv = 85.9% (матрица путаницы переключается мои нет и да как результаты, поэтому я также переключаю числа при расчете метрик производительности.)
Так что мне нужно сделать, чтобы получить PPV = 90%?
Это подобный вопрос , но я на самом деле не слежу за ним.