59 votos

Alternativas a la regresión logística en R

Me gustaría tantos algoritmos que realicen la misma tarea que la regresión logística. Es decir, algoritmos / modelos que pueden dar una predicción a una respuesta binaria (Y) con alguna variable explicativa (X).

Me alegraría si después de nombrar el algoritmo, también mostrara cómo implementarlo en R. Aquí hay un código que se puede actualizar con otros modelos:

 set.seed(55)
n <- 100
x <- c(rnorm(n), 1+rnorm(n))
y <- c(rep(0,n), rep(1,n))
r <- glm(y~x, family=binomial)
plot(y~x)
abline(lm(y~x), col='red', lty=2)
xx <- seq(min(x), max(x), length=100)
yy <- predict(r, data.frame(x=xx), type='response')
lines(xx, yy, col='blue', lwd=5, lty=2)
title(main='Logistic regression with the "glm" function')

30voto

Chris Carruthers Puntos 1441

Los más populares en este momento son randomForest y gbm (llamado MART o Gradient Boosting en la literatura de aprendizaje automático), rpart para árboles simples. También es popular bayesglm, que utiliza MAP con antecedentes para la regularización.

 install.packages(c("randomForest", "gbm", "rpart", "arm"))

library(randomForest)
library(gbm)
library(rpart)
library(arm)

r1 <- randomForest(y~x)
r2 <- gbm(y~x)
r3 <- rpart(y~x)
r4 <- bayesglm(y ~ x, family=binomial)

yy1 <- predict(r1, data.frame(x=xx))
yy2 <- predict(r2, data.frame(x=xx))
yy3 <- predict(r3, data.frame(x=xx))
yy4 <- predict(r4, data.frame(x=xx), type="response")

15voto

Jon Galloway Puntos 28243

Estoy de acuerdo con Joe y agregaría:

En principio, se podría utilizar cualquier método de clasificación, aunque dependerá de los datos / situación. Por ejemplo, también podría utilizar una SVM, posiblemente con el popular modelo C-SVM. Aquí hay un ejemplo de kernlab usando una función de kernel de base radial:

 library(kernlab)
x <- rbind(matrix(rnorm(120),,2),matrix(rnorm(120,mean=3),,2))
y <- matrix(c(rep(1,60),rep(-1,60)))

svp <- ksvm(x,y,type="C-svc")
plot(svp,data=x)

8voto

IEORTools Puntos 23

Naive Bayes es un buen método simple de entrenamiento de datos para encontrar una respuesta binaria.

 library(e1071)
fitNB <- naiveBayes(y~x)
predict(fitNB, x)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X