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 <ihidalgo en jccm.es>
Enviado: viernes, 2 de junio de 2017 11:59
Para: 'Jesús Para Fernández'; 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/
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: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]]
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
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
É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:j.para.fernandez en hotmail.com] 
Enviado el: viernes, 02 de junio de 2017 12:04
Para: Isidro Hidalgo Arellano <ihidalgo en jccm.es>; r-help-es en
r-project.org
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:ihidalgo en jccm.es> ihidalgo en
jccm.es>
Enviado: viernes, 2 de junio de 2017 11:59
Para: 'Jesús Para Fernández';  <mailto: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/> 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:r-help-es-bounces en r-project.org>
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:  <mailto:r-help-es en r-project.org> 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
 <mailto:R-help-es en r-project.org> R-help-es en r-project.org
 <https://stat.ethz.ch/mailman/listinfo/r-help-es>
https://stat.ethz.ch/mailman/listinfo/r-help-es
	[[alternative HTML version deleted]]
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 <ihidalgo en jccm.es>
Enviado: viernes, 2 de junio de 2017 12:28
Para: 'Jesús Para Fernández'; r-help-es en r-project.org
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-cs1156x
[https://www.edx.org/sites/default/files/styles/course_video_banner/public/course/image/featured-card/caltech_data_378x225-1.jpg?itok=UOaP23fl]<https://www.edx.org/course/learning-data-introductory-machine-caltechx-cs1156x>
Learning From Data (Introductory Machine Learning) |
edX<https://www.edx.org/course/learning-data-introductory-machine-caltechx-cs1156x>
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/Winter2016/about
Statistical Learning | Stanford
Lagunita<https://lagunita.stanford.edu/courses/HumanitiesSciences/StatLearning/Winter2016/about>
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:j.para.fernandez en hotmail.com]
Enviado el: viernes, 02 de junio de 2017 12:04
Para: Isidro Hidalgo Arellano <ihidalgo en jccm.es>; r-help-es en
r-project.org
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 <ihidalgo en jccm.es<mailto:ihidalgo en
jccm.es>>
Enviado: viernes, 2 de junio de 2017 11:59
Para: 'Jesús Para Fernández'; r-help-es en
r-project.org<mailto: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/
Inicio | Gobierno de Castilla-La Mancha<http://www.castillalamancha.es/>
www.castillalamancha.es<http://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: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<mailto: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<mailto:R-help-es en r-project.org>
https://stat.ethz.ch/mailman/listinfo/r-help-es
	[[alternative HTML version deleted]]