[R-es] CV en R

Jesús Para Fernández j.para.fernandez en hotmail.com
Vie Jun 2 12:09:49 CEST 2017


Gracias por las respuestas, pero suponed lo siguiente:


El proceso que genera los datos es estable en el tiempo (siempre genera los mismos) y la respuesta está perfectamente balanceada. Parto de nu conjunto de datos inicial, y un conjunto de datos test del que no se la respuesta.

El conjunto inicial lo parto en train y test como puse antes para ir evaluando los modelos, pero luego me tengo que quedar con un modelo "definitivo" y ese modelo aplicarlo al test inicial que os comento.


Mi pregunta es: ¿Cómo hago para quedarme con ese modelo definitivo?


Os recuerdo mi codigo:


midataset<-import.....


#datos es un dataframe de 1500 filas y 15 variables


for(i in 1:10){

numeros<-sample(1:1500,1500*0.7)

train<-datos[numeros,]

test<-datos[-numeros,]


#modeloRF

modelo.rf<-randomForest(respuesta~,train)

prediccion<-predict(modelo.rf,test)

fp<-table(prediccion,test$respuesta)[2,1]
fn<-table(prediccion,test$respuesta)[1,2]
error<-(fp+fn)/nrow(train.balanceado)
resultado<-rbind(resultado,data.frame(error=error,modelo="rf"))

#modelo SVM


modelo.svm<-svm(respuesta~,train)

prediccion<-predict(modelo.svm,test)

fp<-table(prediccion,test$respuesta)[2,1]
fn<-table(prediccion,test$respuesta)[1,2]
error<-(fp+fn)/nrow(train.balanceado)
resultado<-rbind(resultado,data.frame(error=error,modelo="svm"))

}


modelo.definitivo<-randomForest(respuesta~.,datos)



________________________________
De: Isidro Hidalgo Arellano <ihidalgo en jccm.es>
Enviado: viernes, 2 de junio de 2017 12:05
Para: 'Jesús Para Fernández'; r-help-es en r-project.org
Asunto: RE: [R-es] CV en R

Abundando en mi respuesta anterior, ni siquiera la validación cruzada es una
medida perfecta del comportamiento del modelo a posteriori porque, aunque lo
has construido con validación cruzada, y has escogido el que mejor se
comporta con datos que "no ve", no sabes (quizá en tu caso sí, pero no tiene
por qué ser así) cómo van a evolucionar los datos en la vida real, siendo
muy posible, que tengas que ir renovando el modelo.

Un saludo.


Isidro Hidalgo Arellano
Observatorio del Mercado de Trabajo
Consejería de Economía, Empresas y Empleo
http://www.castillalamancha.es/
Inicio | Gobierno de Castilla-La Mancha<http://www.castillalamancha.es/>
www.castillalamancha.es
Web oficial del gobierno autonómico de Castilla-La Mancha con información sobre actividad administrativa, economía, educación, sanidad, servicios sociales, sede ...







-----Mensaje original-----
De: Isidro Hidalgo Arellano [mailto:ihidalgo en jccm.es]
Enviado el: viernes, 02 de junio de 2017 12:00
Para: 'Jesús Para Fernández' <j.para.fernandez en hotmail.com>;
'r-help-es en r-project.org' <r-help-es en r-project.org>
Asunto: RE: [R-es] CV en R

No, no. Si construyes el modelo con todos los datos, explícame para qué te
ha servido la validación cruzada... ¿Sólo para saber si funciona mejor SVM o
RF con ese conjunto de datos? Eso es insuficiente.
Cuando construyes un modelo, lo haces entrenando con datos que el modelo NO
VE, ahí está la gracia...
Te tienes que quedar con el mejor modelo entrenado. Y después ver cómo te
funciona en la vida real, es decir, con nuevos datos que el modelo NO HA
VISTO.

Un saludo.


Isidro Hidalgo Arellano
Observatorio del Mercado de Trabajo
Consejería de Economía, Empresas y Empleo http://www.castillalamancha.es/



-----Mensaje original-----
De: R-help-es [mailto:r-help-es-bounces en r-project.org] En nombre de Jesús
Para Fernández Enviado el: viernes, 02 de junio de 2017 11:48
Para: r-help-es en r-project.org
Asunto: [R-es] CV en R

Buenas,


Estoy haciendo modelos y comparando cual es mejor. Para ello, uso CV de 10
folds.


Por ejemplo, hago la comparativa entre un svm y un randomForest para una
serie de datos, por ello hago:


midataset<-import.....


#datos es un dataframe de 1500 filas y 15 variables


for(i in 1:10){

numeros<-sample(1:1500,1500*0.7)

train<-datos[numeros,]

test<-datos[-numeros,]


#modeloRF

modelo.rf<-randomForest(respuesta~,train)

prediccion<-predict(modelo.rf,test)

fp<-table(prediccion,test$respuesta)[2,1]
fn<-table(prediccion,test$respuesta)[1,2]
error<-(fp+fn)/nrow(train.balanceado)
resultado<-rbind(resultado,data.frame(error=error,modelo="rf"))

#modelo SVM


modelo.svm<-svm(respuesta~,train)

prediccion<-predict(modelo.svm,test)

fp<-table(prediccion,test$respuesta)[2,1]
fn<-table(prediccion,test$respuesta)[1,2]
error<-(fp+fn)/nrow(train.balanceado)
resultado<-rbind(resultado,data.frame(error=error,modelo="svm"))

}


Mi pregunta es la siguiente. Si el modelo de RF es mejor, como me quedo con
el modelo final? Tengo que crear el modelo de nuevo, sin tener en cuenta el
train?


modelo.final<-randomForest(respuesta~.,datos)


Gracias!!!!




        [[alternative HTML version deleted]]

_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


	[[alternative HTML version deleted]]



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