[R-es] Random Forests

Manuel Mendoza mmendoza en mncn.csic.es
Lun Ene 22 19:09:42 CET 2018


Gracias Jesús, lo haré.

Quoting Jesús Para Fernández <j.para.fernandez en hotmail.com>:

> Prueba con xgboost tb que funcionan muy bien!
> ________________________________
> De: R-help-es <r-help-es-bounces en r-project.org> en nombre de Manuel  
> Mendoza <mmendoza en mncn.csic.es>
> Enviado: lunes, 22 de enero de 2018 10:44
> Para: Carlos Ortega
> Cc: r-help-es en r-project.org
> Asunto: Re: [R-es] Random Forests
>
> Muchas gracias Carlos, como siempre.
> Es raro que se me pasase. En su momento miré todos los argumentos del
> RF, como hago siempre, pero ese lo había olvidado. La verdad es que
> funcionaba estupendamente, pero me parecía extraño. Aunque dado que
> los RF no sobreajustan, no hay problema con que sus árboles sean todo
> lo grandes que quieras. Lo he testado con una base de datos externa y
> explica un porcentaje de la varianza mayor del que esperaba. Mejor que
> con un simple bagging y mucho mejor que con cualquier árbol o
> regresión múltiple. Ahora estoy probando con gmb, a ver que tal.
> Un saludo.
> Manuel
>
>
> Quoting Carlos Ortega <cof en qualityexcellence.es>:
>
>> Lo defines con el parámetro "maxnodes"... si no lo delimitas, el árbol
>> crece hasta el máximo posible.
>> Y si lo estás usando para un caso de clasificación, el árbol se extiende
>> hasta el límite en el que en el nodo hay un (1) caso.
>>
>> [image: Imágenes integradas 2]
>>
>> Por eso, dependiendo de tu problema, y esto es un caso de optimización.
>> Juega también con el parámetro "nodesize".
>>
>>
>> [image: Imágenes integradas 3]
>>
>> Explora combinaciones de los dos parámetros para ver qué caso es el que
>> mejor respuesta te ofrece sin penalizarte en complejidad.
>>
>> Gracias,
>> Carlos.
>>
>>
>>
>>
>>
>> El 20 de enero de 2018, 18:17, Manuel Mendoza <mmendoza en mncn.csic.es>
>> escribió:
>>
>>> Si, Carlos. Yo hago lo mismo, pero esos mismos numeritos salen enormes.
>>>
>>> treesize(RFfit)
>>>>
>>>
>>>   [1] 4304 4302 4311 4319 4343 4298 4298 4311 4349 4327 4331 4317 4294
>>> 4321 4283 4362
>>>   [17] 4300 4330 4266 4331 4308 4352 4294 4315 4372 4349 4331 4347 4329
>>> 4348 4298 4335
>>>   [33] 4346 4396 4345 4313 4293 4276 4353 4272 4304 4325 4317 4336 4308
>>> 4351 4374 4324
>>>   [49] 4386 4359 4311 4346 4300 4332 4336 4376 4319 4322 4344 4324 4324
>>> 4359 4342 4378
>>>   [65] 4344 4324 4314 4318 4344 4311 4359 4304 4288 .... hasta 1000
>>>
>>> Con mtry le indicas el nº de variables que los árboles utilizarán
>>> (recomendado m=√p para árboles de clasificación, y m = p/3 para los de
>>> regresión), y con ntree el nº de árboles. Pero no encuentro cómo indicarle,
>>> aunque sea, un tamaño máximo para los árboles, y en cualquier caso, me
>>> parece extraño que se generen árboles con tantísimos nodos. Mi df tiene
>>> unas 13.000 entradas y 19 variables, pero eso no es nada especial para que
>>> me hiciese árboles tan grandes.
>>>
>>> No entiendo
>>>
>>>
>>>
>>>
>>> Quoting Carlos Ortega <cof en qualityexcellence.es>:
>>>
>>> Hola,
>>>>
>>>> No. Mira el ejemplo:
>>>>
>>>> data(iris)
>>>>> iris.rf <- randomForest(Species ~ ., iris)
>>>>> hist(treesize(iris.rf))
>>>>> treesize(iris.rf)
>>>>>
>>>>   [1]  7 10 13  7 10  6  9  8  7  9  8  8  6  8  7  9  7 10  6 16  4 13 11
>>>> 10  8 11 10  8  7  9  9  6 11  7  5 10 12 10  7 12 12  8 11 10
>>>>  [45] 10 10  9 11  8  6  7 12  9  9  7  6 10  9 10  7  8  8  8  7  8 12  7
>>>> 11 12  8  7  7  6  9  9  6  6 11  3  9 12 11 13  9  9  7  7 12
>>>>  [89] 11  6  6  8  6 11  9 10 10  6  7 14  7 10  8  7  9 11  7 14  7  7  8
>>>> 9  7  6  9  8  9  8 13  9 10 10  9 11  6  7  9 10  8  9  9  6
>>>> [133]  9  8 10  9 11  8  6  7 13  6  6  9  5 14  8 10 13 10 12 13 11 12 10
>>>> 9 12  9 13 10  9 11  7 10 10  9  9  8  6  5  9  9 11 10  8 10
>>>> [177]  4 10 12 10 10  8 10 11  9  5  7  8  8 15  8  7  7  9 12  9 10  9 12
>>>> 8 10  8 11  9  6  7  9 12  7  8 10 12  6 14 11  4  6  6  7  9
>>>> [221] 10 11 13  5  8 10  7 10 10 12 10 11 11  8  9 11  9  9  9 10  6 10  7
>>>> 10 10 14  9 10  6 10  6  8  6  9  9 10 10 10 10  9 10 10  8 14
>>>> [265]  8 11  6 11  9  9  9  8 11  7  8 11  8  4  9 11  6  8 10  8  9 10  8
>>>> 9  8 11 11  9 12 14  7  9  8  9 10 10 11  8 12 12 12  4 10 11
>>>> [309]  8  8 11  9  9  8 10  9  4 10 10  6 13 10 12  9 10  9  5  9  7  4  7
>>>> 15  7  8  7 11  7 11 12  5 12  7  9  8 13 14  9  9  9  9  6 13
>>>> [353] 13  7 10  6  5  6 10  6  8  8  9 11  9 11  7  7 11  8  6 10 13  7 12
>>>> 11 14  7 10 11  9  8  6  8 10  8  9  6 10 10  6  7  7  7 11 13
>>>> [397]  8  5  7 14 10 14  8  9  6 11  9 11 10  9  8  7 11 10 10 11  8 10 12
>>>> 9  8  8  9  9  9  9  9  5  9  7 13 10 11  8 10  9 10 12  8 12
>>>> [441]  9 10  4  7 11  7 10  4  6 13  8  7 10  9  7  6  8  9  7 11  8  8  9
>>>> 10  5  8 11 12  6  5 10 10  6 10 10  5 10 13  9 13 10 10  6 12
>>>> [485]  8  7  9 12 10  9  7  7 14  6  9  6  6  8 10  6
>>>>
>>>>> vtmp <- treesize(iris.rf)
>>>>> sum(vtmp)
>>>>>
>>>>
>>>> Por defecto al no especificar nada, el "ntrees" de randomForest() es 500.
>>>> Efectivamente generas 500 árboles como ves en el número de elementos que
>>>> devuelve "treesize(iris.rf)".
>>>>
>>>> Y cada árbol, tiene el número de nodos que ves en el valor de cada uno de
>>>> los elementos que igualmente devuelve "treesize(iris.rf)": 7, 10, 13...
>>>>
>>>> Gracias,
>>>> Carlos
>>>>
>>>> El 20 de enero de 2018, 10:36, Manuel Mendoza <mmendoza en mncn.csic.es>
>>>> escribió:
>>>>
>>>>
>>>>> Gracias Carlos y Javier, ntrees es el nº de árboles y treesize sus
>>>>> respectivos tamaños (nº de nodos)
>>>>>
>>>>> ntree: Number of trees to grow. This should not be set to too small
>>>>> ......
>>>>>
>>>>> treesize: Size of trees (number of nodes) in and ensemble.
>>>>>
>>>>>
>>>>> Puse 1000 árboles (ntree=1000), si, pero la función treesize te da el nº
>>>>> de nodos:
>>>>>
>>>>> treesize(RFfit, terminal=TRUE) me da un vector de 1000 elementos (uno por
>>>>> cada árbol), todos ellos mayores que 4000 ????
>>>>>
>>>>> ¿tienen los 1000 árboles más de 4000 nodos cada uno? Parece extraño ¿no?
>>>>>
>>>>> Esa es mi pregunta
>>>>>
>>>>> Gracias nuevamente,
>>>>> Manuel
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Quoting Carlos Ortega <cof en qualityexcellence.es>:
>>>>>
>>>>> Hola,
>>>>>
>>>>>>
>>>>>> A "treesize()" le tienes que pasar como parámetro el objeto randomForest
>>>>>> de
>>>>>> tu modelo.
>>>>>> Y obtiene el número de nodos de cada uno de los árboles que hayas
>>>>>> indicado
>>>>>> en el valor del parámetros "ntrees" de "randomForest". Por defecto
>>>>>> "ntrees"
>>>>>> tiene un valor de 500.
>>>>>> Mira qué valor tiene "ntrees" en tu modelo "randomForest", que
>>>>>> seguramente
>>>>>> le hayas indicado un valor de 1000...
>>>>>>
>>>>>> Saludos,
>>>>>> Carlos Ortega
>>>>>> https://eur03.safelinks.protection.outlook.com/?url=www.qualityexcellence.es&data=02%7C01%7C%7Cde747cae72ad456ee9ad08d5617ccf15%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636522111041521868&sdata=ansndtEpP5a1yruiSLgl%2FLfYDmXCztAL%2FU8fsJiTMGM%3D&reserved=0
>>>>>>
>>>>>> El 17 de enero de 2018, 14:29, Manuel Mendoza <mmendoza en mncn.csic.es>
>>>>>> escribió:
>>>>>>
>>>>>> Buenas tardes a todos. El paquete randomForest tiene la función
>>>>>> treesize,
>>>>>>
>>>>>>> que es el nº de nodos. Me dan valores realmente elevados (en torno a
>>>>>>> 1000),
>>>>>>> y eso me parece extraño. ¿sabéis si es así?
>>>>>>> Gracias,
>>>>>>> Manuel
>>>>>>> --
>>>>>>> Dr Manuel Mendoza
>>>>>>> Department of Biogeography and Global Change
>>>>>>> National Museum of Natural History (MNCN)
>>>>>>> Spanish Scientific Council (CSIC)
>>>>>>> C/ Serrano 115bis, 28006 MADRID
>>>>>>> Spain
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> R-help-es mailing list
>>>>>>> R-help-es en r-project.org
>>>>>>> https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fstat.ethz.ch%2Fmailman%2Flistinfo%2Fr-help-es&data=02%7C01%7C%7Cde747cae72ad456ee9ad08d5617ccf15%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636522111041521868&sdata=4qb729CZ8yuA7IgV%2BLTTaOXPA%2FVWvhDPusdEN8akPy0%3D&reserved=0
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> --
>>>>>> Saludos,
>>>>>> Carlos Ortega
>>>>>> https://eur03.safelinks.protection.outlook.com/?url=www.qualityexcellence.es&data=02%7C01%7C%7Cde747cae72ad456ee9ad08d5617ccf15%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636522111041521868&sdata=ansndtEpP5a1yruiSLgl%2FLfYDmXCztAL%2FU8fsJiTMGM%3D&reserved=0
>>>>>>
>>>>>>
>>>>>
>>>>> --
>>>>> Dr Manuel Mendoza
>>>>> Department of Biogeography and Global Change
>>>>> National Museum of Natural History (MNCN)
>>>>> Spanish Scientific Council (CSIC)
>>>>> C/ Serrano 115bis, 28006 MADRID
>>>>> Spain
>>>>>
>>>>>
>>>>>
>>>>
>>>> --
>>>> Saludos,
>>>> Carlos Ortega
>>>> https://eur03.safelinks.protection.outlook.com/?url=www.qualityexcellence.es&data=02%7C01%7C%7Cde747cae72ad456ee9ad08d5617ccf15%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636522111041521868&sdata=ansndtEpP5a1yruiSLgl%2FLfYDmXCztAL%2FU8fsJiTMGM%3D&reserved=0
>>>>
>>>
>>>
>>> --
>>> Dr Manuel Mendoza
>>> Department of Biogeography and Global Change
>>> National Museum of Natural History (MNCN)
>>> Spanish Scientific Council (CSIC)
>>> C/ Serrano 115bis, 28006 MADRID
>>> Spain
>>>
>>>
>>
>>
>> --
>> Saludos,
>> Carlos Ortega
>> https://eur03.safelinks.protection.outlook.com/?url=www.qualityexcellence.es&data=02%7C01%7C%7Cde747cae72ad456ee9ad08d5617ccf15%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636522111041521868&sdata=ansndtEpP5a1yruiSLgl%2FLfYDmXCztAL%2FU8fsJiTMGM%3D&reserved=0
>
>
> --
> Dr Manuel Mendoza
> Department of Biogeography and Global Change
> National Museum of Natural History (MNCN)
> Spanish Scientific Council (CSIC)
> C/ Serrano 115bis, 28006 MADRID
> Spain
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fstat.ethz.ch%2Fmailman%2Flistinfo%2Fr-help-es&data=02%7C01%7C%7Cde747cae72ad456ee9ad08d5617ccf15%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636522111041521868&sdata=4qb729CZ8yuA7IgV%2BLTTaOXPA%2FVWvhDPusdEN8akPy0%3D&reserved=0


-- 
Dr Manuel Mendoza
Department of Biogeography and Global Change
National Museum of Natural History (MNCN)
Spanish Scientific Council (CSIC)
C/ Serrano 115bis, 28006 MADRID
Spain



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