Victoria o diferencia de puntos, ahora con "random forests"
Después de hablar con tirios y troyanos sobre mi entrada sobre los efectos de binarizar una variable objetivo continua, he decidido tomarme la justicia por mi mano y llamar a la caballería. Es decir, utilizar random forests.
Aquí va el código:
library(randomForest)
set.seed(1234)
my.coefs <- -2:2
n <- 200
train.n <- floor(2*n/3)
test.error <- function(){
X <- matrix(rnorm(n*5), n, 5)
Y <- 0.2 + X %*% my.coefs + rnorm(n)
Y.bin <- factor(Y>0)
train <- sample(1:n, train.n)
X <- as.data.frame(X)
X$Y <- Y
modelo <- randomForest(Y ~ .,
data = X[train,])
pred <- predict(modelo, X[-train,])
error.cont <- length(pred) -
sum(diag(table(pred >0, Y[-train]>0)))
X$Y <- Y.bin
modelo <- randomForest(Y ~ .,
data = X[train,])
pred <- predict(modelo, X[-train,])
error.bin <- length(pred) -
sum(diag(table(pred, Y.bin[-train])))
data.frame(error.cont = error.cont,
error.bin = error.bin)
}
errores <- do.call(rbind,
replicate(1000, test.error(), simplify = F))
sapply(errores, fivenum)
El resultado, si te interesa, en tu pantalla.