[R-es] Fórmula con variables al azar

Carlos Ortega co| @end|ng |rom qu@||tyexce||ence@e@
Jue Ene 7 22:43:29 CET 2021


Hola,

Las diferencias con respecto a un random forest (no sé si usaste
randomForest o ranger) pueden venir del resto de parámetros (los valores
por defecto de rpart están en rpart.control() ) son diferentes a los de
random forest (al menos para los de ranger), por ejemplo número de
elementos a considerar en el split.

Gracias,
Carlos.


El jue, 7 ene 2021 a las 22:12, Manuel Mendoza (<mmendoza using fulbrightmail.org>)
escribió:

> Gracias José Luis, y también a Carlos y a Juan. Respecto a lo que dices,
> José Luis, de usar un random forest, es que es eso lo que estoy
> programando, un RF. Tenía ya hecho el programa del bootstrap con árboles, y
> a partir de él he programado un RF. He solucionado el problema que tenía
> con lo que me ha dicho Carlos. Funciona bien, aunque me extraña que la
> correlación sobre las muestras OOB no mejore respecto al bootstrap,
> mientras que hecho con el paquete randomForest mejoraba sustancialmente.
> Os lo pongo aquí, tal cual, por si queréis echarle un ojo.
> Un saludo
>
> set.seed(5)
> data <- read.table(file="Data.csv",header=T,sep=",")
>
> colnames(data)
> p=19
> nreps<- 1000
>
> # Creamos una matriz vacía para guardar las predicciones de cada árbol:
> OOBpreds<- matrix(NA, nrow=nrow(data),
> ncol=nreps,dimnames=list(rownames(data)))
>
> target <- c('IFd')
> vars   <- setdiff(names(data), target)
>
> for (i in 1:nreps){
>   selected<-sample(1:nrow(data),size=floor((2/3)*nrow(data)),replace=T)
>   training<- data[selected,]
>   OOB<-data[-selected,]        # El out of bag incluye las que no están en
> el training data set
>   num_vars <- floor(p/3)
>   vars_samp <- vars[ sample(1:length(vars), num_vars)]
>   fmla <- as.formula(paste(target, " ~ ", paste(vars_samp, collapse= "+")))
>   fit <- rpart(fmla, data = training)
>   OOBpreds[-selected, i]<-predict(fit, OOB)
>   if(i%%10==0){print(paste("Iteración ",i))} # i%%10==0 significa: el
> resto de dividir i entre 10 es 0
>   }
>
> ResOOB<-rowMeans(OOBpreds, na.rm=T) # se obtiene la media de todas las
> predicciones para cada muestra
> OOBBagging<-lm(data$IFd ~ ResOOB) # para calcular la correlación entre la
> predicción y la observación
> rsqOOBRT<-summary(OOBBagging)$adj.r.squared# R2
>
> windows();plot(data$IFd ~
> ResOOB,main=paste("R2=",round(rsqOOBRT,2)));abline(0,1,lty=2,col=2)
>
>
>
>
>
>
> El jue, 7 ene 2021 a las 11:03, José Luis Cañadas (<canadasreche using gmail.com>)
> escribió:
>
>> Hola Manuel.
>> ¿No has pensado en hacer un randomforest, poniendo qeu use todos los
>> datos en cada muestra bootstrap y un porcentaje de las variables?
>>
>> El jue, 7 ene 2021 a las 1:42, Carlos Ortega (<cof using qualityexcellence.es>)
>> escribió:
>>
>>> Hola Manuel,
>>>
>>> Esta es una forma, uso el conjunto de datos "car90" que viene incluido en
>>> "rpart".
>>>
>>> #-----------------
>>> library(rpart)
>>>
>>> data(car90)
>>> target <- c('Mileage')
>>> vars   <- setdiff(names(car90), target)
>>>
>>> num_loops <- 10
>>> for( i in 1:num_loops) {
>>>    num_vars <- 6
>>>    vars_samp <- vars[ sample(1:length(vars), num_vars)]
>>>    fmla <- as.formula(paste(target, " ~ ", paste(vars_samp, collapse=
>>> "+")))
>>>    fit <- rpart(fmla, data = car90)
>>>    print(fit)
>>> }
>>>
>>> #-----------------
>>>
>>> Se puede sofisticar esto, para capturar incluso la salida de cada
>>> iteración... :-).
>>>
>>> Gracias,
>>> Carlos Ortega
>>> www.qualityexcellence.es
>>>
>>> El mié, 6 ene 2021 a las 22:44, Manuel Mendoza (<
>>> mmendoza using fulbrightmail.org>)
>>> escribió:
>>>
>>> > Muy buenas, hago un árbol de regresión (aunque podría ser cualquier
>>> otro
>>> > análisis) dentro de un loop y quiero que en cada vuelta coja un
>>> conjunto
>>> > distinto de variables. En la df hay 19 predictores pero quiero que
>>> utilice
>>> > solo 6 de ellos, al azar, cada vez. ¿Qué debería poner donde hay un
>>> > interrogante?
>>> >
>>> >   fit<- rpart(IFd ~ ? , data=training)
>>> >
>>> > Gracias, como siempre,
>>> > Manuel
>>> >
>>> >         [[alternative HTML version deleted]]
>>> >
>>> > _______________________________________________
>>> > R-help-es mailing list
>>> > R-help-es using r-project.org
>>> > https://stat.ethz.ch/mailman/listinfo/r-help-es
>>> >
>>>
>>>
>>> --
>>> Saludos,
>>> Carlos Ortega
>>> www.qualityexcellence.es
>>>
>>>         [[alternative HTML version deleted]]
>>>
>>> _______________________________________________
>>> R-help-es mailing list
>>> R-help-es using r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>
>>

-- 
Saludos,
Carlos Ortega
www.qualityexcellence.es

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es