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 (<mmend...@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 (<canadasre...@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 (<c...@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 (< >>> mmend...@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@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@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@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es