Коэффициент выхода в двоичной Логистическая регрессия в R - PullRequest
1 голос
/ 11 апреля 2019

Я тренируюсь по логистической регрессии в R. Я использую набор поездов и набор тестов. У меня есть некоторые данные и двоичный вывод. В файле данных выводятся целые числа 1 или 0 без пропущенных значений. У меня больше 1, чем 0 (пропорция 70/30).

Результат LR сильно различается в зависимости от того, изменяю ли я выходные данные или нет, а именно, сохраняю ли я выходную переменную в виде числового 0-1 и пишу

m1 <- glm(output~.,data=dt_tr,family=binomial())

тогда я получаю что-то без предупреждений и ошибок, и если я пишу

dt$output<-as.factor(ifelse(dt$output == 1, "Good", "Bad"))
m1 <- glm(output~.,data=dt_tr,family=binomial())

У меня совершенно другая производительность! Что бы это могло быть?

Если быть более точным, после обучения LR я делаю следующее:

score <- predict(m1,type='response',dt_test)
m1_pred <- prediction(m1_score, dt_test$output)
m1_perf <- performance(m1_pred,"tpr","fpr")
#ROC
plot(m1_perf, lwd=2, main="ROC")

Я получаю очень разные ROC и AUC.

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

Это была моя глупая ошибка.Я просто забыл установить семена.Единственное, что я хотел бы добавить, что если вы имеете дело со случайным лесом, то вы должны факторизовать вывод, иначе R будет воспринимать его как числовые данные.

0 голосов
/ 11 апреля 2019

Не видя ваших данных, я бы предположил, что изменение переменной результата на фактор вызывает проблему.

Ваши исходные данные являются двоичными 1/0, то есть, когда они обрабатываются как числа во время регрессии, они обрабатываются как буквально 1 и 0. Но когда вы превращаете их в факторы, факторы численно обрабатываются как 1 и 2:

x <- c(0, 1, 1, 0, 0, 1, 1)
y <- as.factor(ifelse(x == 1, "Good", "Bad"))
as.numeric(y)
[1] 1 2 2 1 1 2 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...