No me has parecido para nada borde.

 

Ok. Centr�monos en RF y bajemos el n� de par�metros a 2: ntree y nodesize.

Te haces una parrilla de ntree: 100, 200, 300, 400, 500

Otra de nodesize: 3, 6, 10

Con esto tienes 15 combinaciones.

Vamos al c�digo. Simplemente crea una lista donde metes los resultados (y
tienes que a�adir los par�metros, que has omitido)

Despu�s graficas usando un mapa de calor para ver qu� combinaci�n de
par�metros te da el mejor resultado (en abscisas ntree y en ordenadas
nodesize). Una vez que veas los intervalos de par�metros que mejor se
comportan, afinas el resultado con otra validaci�n cruzada:

 

for(i in 1:15){

 

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

 

train<-datos[numeros,]

 

test<-datos[-numeros,]

 

 

#modeloRF

 

resultadoRF <- list()

 

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)

resultadoRF[[i]]<-rbind(resultado,data.frame(error=error,modelo="rf"))

 

#modelo SVM

 

resultadoSVM <- list()

 

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)

resultadoSVM[[i]]<-rbind(resultado,data.frame(error=error,modelo="svm"))

 

}

 

Un saludo

 

Isidro Hidalgo Arellano

Observatorio del Mercado de Trabajo

Consejer�a de Econom�a, Empresas y Empleo

http://www.castillalamancha.es/

 

 

 

De: Jes�s Para Fern�ndez [mailto:[email protected]] 
Enviado el: viernes, 02 de junio de 2017 12:50
Para: Isidro Hidalgo Arellano <[email protected]>; [email protected]
Asunto: Re: [R-es] CV en R

 

Buenas, 

 

Puse los modelos lo mas simplificados, para centrar el tiro en el tema que
me preocupa. 

 

Es una pena no poder hablar cara a cara, porque por email puedo sonar algo
borde, pero no es as�, al contrario estoy enormemente agradecido por tu
ayuda, pero le veo un problema. 

Me dices que use un list para ir guardando el modelo, pero tal y como he
propuesto en el bucle for, el modelo se crea 10 veces, es decir, que
entiendo que si es un randomForest, tendria que entonces hacer una
combinacion de esos 10 modelos con la funcion combine de RF para unir esos
modelos, verdad?? Porque sino estaria en el mismo problema, generando un
modelo generalista de una simple submuestra de los datos. 

 

Gracias por todo!!!

Jes�s

 

  _____  

De: Isidro Hidalgo Arellano <[email protected] <mailto:[email protected]> >
Enviado: viernes, 2 de junio de 2017 12:28
Para: 'Jes�s Para Fern�ndez'; [email protected]
<mailto:[email protected]> 
Asunto: RE: [R-es] CV en R 

 

No me hab�a fijado en el c�digo, te hab�a he contestado te�ricamente.

A ver, en ese c�digo tienes varios problemas:

-          No especificas los par�metros del modelo (para eso es la
validaci�n cruzada). En RF tendr�as que especificar el n�mero de �rboles, la
cantidad de puntos con los que acotar la regresi�n, etc. En SVM el tipo de
kernel que vas a usar, la sensibilidad� NO SE TRATA S�LO de hacer modelos
con diferentes conjuntos de entrenamiento, sino de buscar los par�metros que
mejor ajustan los datos.

Te pongo un ejemplo: imag�nate que tienes mucho ruido, en ese caso, en cada
punto de regresi�n, tendr�s que tomar un n�mero de puntos mayor (par�metro
"nodesize")

-          Respecto a no guardar los modelos, es muy f�cil con una lista.
Cada modelo que hagas, gu�rdalo en un lista, junto con los datos de
resultados que quieras (incluyendo los par�metros de especificaci�n del
modelo)

Te recomiendo 2 cosas:

-          Usa el paquete caret

-          Lee este libro:
https://link.springer.com/book/10.1007/978-1-4614-6849-3

Con el libro matas varios p�jaros de un tiro:

-          Aprendes algo de teor�a (poca), que siempre viene bien

-          El autor es el creador del paquete caret

Si tienes tiempo, yo buscar�a un curso del MIT que es muy bueno, aunque de
los duros, te lo tienes que programar casi todo desde 0, pero cuando acabas,
la teor�a (con �ste s�) la has machacado bastante bien, y sabes lo que hace
un SVM, un RF. Es �ste:
https://www.edx.org/course/learning-data-introductory-machine-caltechx-cs115
6x


 
<https://www.edx.org/course/learning-data-introductory-machine-caltechx-cs11
56x> 

 
<https://www.edx.org/course/learning-data-introductory-machine-caltechx-cs11
56x> Learning From Data (Introductory Machine Learning) | edX

www.edx.org <http://www.edx.org> 

Introductory Machine Learning course covering theory, algorithms and
applications. Our focus is on real understanding, not just "knowing."

 

Tiene un libro asociado que est� muy bien tambi�n.

Si te da miedito, hay otro m�s suave, de los cl�sicos Hastie y Tibshirani:
https://lagunita.stanford.edu/courses/HumanitiesSciences/StatLearning/Winter
2016/about


 
<https://lagunita.stanford.edu/courses/HumanitiesSciences/StatLearning/Winte
r2016/about> Statistical Learning | Stanford Lagunita

lagunita.stanford.edu

StatLearning now self paced! The active course run for Statistical Learning
has ended, but the course is now available in a self paced mode. You are
welcome to join ...

 

�stos tambi�n tienen 2 libros muy buenos. El resumido es en el que se basa
el curso anterior.

 

De: Jes�s Para Fern�ndez [mailto:[email protected]] 
Enviado el: viernes, 02 de junio de 2017 12:04
Para: Isidro Hidalgo Arellano <[email protected] <mailto:[email protected]> >;
[email protected] <mailto:[email protected]> 
Asunto: Re: [R-es] CV en R

 

Es que es justo ahi donde no se como hacerlo. 

Es decir, dentro del bucle for hago las comprobaciones train test, y me da
que de media el mejor es randomForest, pero claro, no me estoy quedando con
el modelo, ya que no se va guardando....Entonces es cuando no se como seguir
para quedarme con ese modelo....

 

 

 

 

  _____  

De: Isidro Hidalgo Arellano < <mailto:[email protected]> [email protected]>
Enviado: viernes, 2 de junio de 2017 11:59
Para: 'Jes�s Para Fern�ndez';  <mailto:[email protected]>
[email protected]
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/> http://www.castillalamancha.es/ 


 <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: R-help-es [ <mailto:[email protected]>
mailto:[email protected]] En nombre de Jes�s
Para Fern�ndez
Enviado el: viernes, 02 de junio de 2017 11:48
Para:  <mailto:[email protected]> [email protected]
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
 <mailto:[email protected]> [email protected]
 <https://stat.ethz.ch/mailman/listinfo/r-help-es>
https://stat.ethz.ch/mailman/listinfo/r-help-es


        [[alternative HTML version deleted]]

_______________________________________________
R-help-es mailing list
[email protected]
https://stat.ethz.ch/mailman/listinfo/r-help-es

Responder a