Я построил бинарную логистическую c регрессию для прогнозирования оттока в Rstudio. Из-за несбалансированных данных, используемых для этой модели, я также включил веса. Затем я попытался найти оптимальное срезание методом проб и ошибок, однако для завершения своего исследования мне пришлось включить кривые RO C, чтобы найти оптимальное срезание. Ниже я предоставил скрипт, который использовал для построения модели (fit2). Вес сохраняется в «W». Это говорит о том, что стоимость ошибочной идентификации заменителя в 14 раз превышает стоимость ошибочной идентификации заменителя.
#CH1 logistic regression
library(caret)
W = 14
lvl = levels(trainingset$CH1)
print(lvl)
#if positive we give it the defined weight, otherwise set it to 1
fit_wts = ifelse(trainingset$CH1==lvl[2],W,1)
fit2 = glm(CH1 ~ RET + ORD + LVB + REVA + OPEN + REV2KF + CAL + PSIZEF + COM_P_C + PEN + SHOP, data = trainingset, weight=fit_wts, family=binomial(link='logit'))
# we test it on the test set
predlog1 = ifelse(predict(fit2,testset,type="response")>0.5,lvl[2],lvl[1])
predlog1 = factor(predlog1,levels=lvl)
predlog1
confusionMatrix(pred,testset$CH1,positive=lvl[2])
Для этого исследования я также построил кривые RO C для деревьев решений с использованием пакета pRO C. Однако, конечно, тот же сценарий не работает одинаково для регрессии logisti c. Я создал кривую RO C для регрессии logisti c, используя приведенный ниже скрипт.
prob=predict(fit2, testset, type=c("response"))
testset$prob=prob
library(pROC)
g <- roc(CH1 ~ prob, data = testset, )
g
plot(g)
Что привело к приведенной ниже кривой RO C.
Как получить оптимальное сечение по этой кривой RO C?