[R-es] A modern object-oriented machine learning framework in R

Diego Martín @ko@@|@tem@@ @end|ng |rom gm@||@com
Sab Ene 4 17:54:24 CET 2020


Querido amigo Carlos:

                                   Muchísimas gracias. Efectivamente, ahí
estaba la clave. ¡Qué simple me siento!. Afortunadamente me has orientado y
ahí está. Sin menospreciar tu ejemplo, por supuesto. Solo he instalado y
cargado la librería mlr3learners y corrido mi ejemplo con el método
classif.ranger, sin más problemas. No entrando a valorar los resultados,
puedo decir que todo ha funcionado perfectamente. Luego, era eso, la
librearía.

                                   Ahora voy a estudiar un poco todo esto,
me parece muy interesante estoy haciendo incursiones de R en SIG (qgis,
para ser más exacto) y tengo en mente un tema de clasificación para el que
creo que usar mlr3 (en este caso le vendría muy bien).

                                   Un abrazo muy fuerte y nuevamente
gracias.
                                   Diego Martín-Oliva.
                                   Geógrafo.

El sáb., 4 ene. 2020 a las 14:17, Carlos Ortega (<cof using qualityexcellence.es>)
escribió:

> Hola Diego,
>
> Ya, la nueva versión de "mlr" es mucho más modular que la versión anterior.
> Y para poder usar los diferentes algoritmos ("learners") hay que cargar la
> librería "mlr3learners" que no se invoca por defecto cuando usas "mlr3".
>
> Mira este ejemplo reproducible que adjunto, antes de cargar la librería
> (mlr3learners) y probar con "ranger" tuve el mismo mensaje de error que has
> obtenido.
> Es interesante mirar también la página donde están todos los algoritmos
> que están contemplados ahora mismo.
>
> #--------------------------------------------------------
> #----------------------------------
> #------- RANGER
> # Load available learners
> # https://mlr3learners.mlr-org.com/
> library(mlr3learners)
>
> learner = mlr3::lrn("classif.ranger")
> print(learner)
> # available parameters:
> learner$param_set$ids()
>
> # create learning task
> task_iris = TaskClassif$new(id = "iris", backend = iris, target =
> "Species")
> task_iris
>
> # load learner and set hyperparamter
> learner = lrn("classif.ranger", num.trees = 100)
>
> # train/test split
> train_set = sample(task_iris$nrow, 0.8 * task_iris$nrow)
> test_set = setdiff(seq_len(task_iris$nrow), train_set)
>
> # train the model
> learner$train(task_iris, row_ids = train_set)
>
> # predict data
> prediction = learner$predict(task_iris, row_ids = test_set)
>
> # calculate performance
> prediction$confusion
>
> measure = msr("classif.acc")
> prediction$score(measure)
> #--------------------------------------------------------
>
>
>
>
> Gracias,
> Carlos Ortega
> www.qualityexcellence.es
>
> El sáb., 4 ene. 2020 a las 13:46, Diego Martín (<ako.sistemas using gmail.com>)
> escribió:
>
>> Estimadísimo Carlos:
>>
>>                                 Muchísimas gracias por responderme y
>> hacerlo tan rápido. Contemplé esa posibilidad, es decir, que el
>> hiperparámetro estuviera suponiendo un problema, y probé de esta forma:
>>
>> > learner <- lrn("classif.ranger", num.trees = 5, mtry = NULL)
>>
>> Error: Element with key 'classif.ranger' not found in DictionaryLearner!
>>
>>                                 Pero obtuve el mismo error. Como muestro.
>> Reconozco el error de imprecisión al plantear la duda, por no poner esta
>> experiencia. Este resultado, por decirlo de alguna manera, me mueve a
>> pensar que el problema está en el reposititorio de la librería mlr3, al
>> buscar la técnica de clasificación.
>>
>>                                 No sé si hay algo más que no he hecho,
>> además de cargar las librerías que entiendo deben estar, es decir:
>> library(ranger)
>> library(mlr3)
>>
>>                                 Agradeceré cualquier comentario que me
>> hagáis. Gracias Carlos.
>>
>>                                 Diego Martín-Oliva.
>>                                 Geógrafo.
>>
>> PS. Hoja del libro sobre mlr3, donde estuve buscando los *Learners*
>> integrados en el paquete.
>>
>>
>> El vie., 3 ene. 2020 a las 23:42, Carlos Ortega (<
>> cof using qualityexcellence.es>) escribió:
>>
>>> Hola Diego,
>>>
>>> El problema que estás teniendo es por el hiperparámetro "cp" que has
>>> usado.
>>>
>>> Ese hiperparámetro es propio del algoritmo de árbol de decisión "rpart",
>>> pero no de "ranger".
>>> Mira los hiperparámetros propios de "ranger" y prueba con uno de ellos
>>> (por ejemplo n.trees o también mtry).
>>>
>>> De igual forma, tienes el mismo problema usando xgboost que tampoco
>>> tiene "cp" como hiperparámetro.
>>>
>>> Saludos,
>>> Carlos Ortega
>>> www.qualityexcellence.es
>>>
>>> El vie., 3 ene. 2020 a las 20:00, Diego Martín (<ako.sistemas using gmail.com>)
>>> escribió:
>>>
>>>> Estimados amigos:
>>>>
>>>>                              Esta tarde he estado probando la librería
>>>> mlr3, que me resulta muy interesante para trabajos de clasificación. En
>>>> concreto, para entender su funcionamiento he probado un ejemplo simple
>>>> (viene en CRAN). Sin embargo, cuando cambio el parámetro de
>>>> clasifiación en
>>>> la función de aprendizaje, me aparece el error siguiente:
>>>>
>>>>
>>>> *Error: Element with key 'classif.ranger' not found in
>>>> DictionaryLearner!*
>>>>
>>>>                            La situación es la siguiente:
>>>>
>>>> library(ranger)
>>>> library(mlr3)
>>>> task_iris <- TaskClassif$new(id = "iris",
>>>>                              backend = iris,
>>>>                              target = "Species",
>>>>                              positive = NULL)
>>>> # learner <- lrn("classif.rpart", cp = 0.01)
>>>> learner <- lrn("classif.ranger", cp = 0.01)
>>>>
>>>>                              De forma que, no entiende, no halla,
>>>> "classif.ranger". Lo cual no ocurre con "classif.rpart". Si bien es el
>>>> que
>>>> usa en el ejemplo de CRAN. No veo dónde está el problema. La librería
>>>> "ranger" carga perfectamente, he consultado
>>>> *https://mlr3book.mlr-org.com/list-learners.html
>>>> <https://mlr3book.mlr-org.com/list-learners.html>*, y es una de las
>>>> posibilidades.
>>>>
>>>>                             La ayuda de lrn(), con la que cuento cuando
>>>> hago help("lrn"), en mi opinión no es precisa, y no se trata de que
>>>> esté en
>>>> inglés, se trata de que no va al grano y, de modo muy genéricio, habla
>>>> del
>>>> aprendizaje en esta librería.
>>>>
>>>>                             No corresponde, pero por curiosidad he
>>>> empleado
>>>> también la opción "classif.xgboost", y obtengo el mismo error. No me
>>>> digan,
>>>> por favor, que xgboost, no sirve para variables categóricas, lo sé, se
>>>> trata solo de una prueba para ver si esa sí la encontraba en el
>>>> directorio
>>>> de la librería.
>>>>
>>>>                            Por adelantado agradezco a todos su atención
>>>> a
>>>> mi duda y, por supuesto, la dedicación que le otorguen.
>>>>
>>>>                            Gracias.
>>>>                            Diego Martín-Oliva.
>>>>                            Geógrafo.
>>>>
>>>>         [[alternative HTML version deleted]]
>>>>
>>>> _______________________________________________
>>>> R-help-es mailing list
>>>> R-help-es using r-project.org
>>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>>
>>>
>>>
>>> --
>>> Saludos,
>>> Carlos Ortega
>>> www.qualityexcellence.es
>>>
>>
>
> --
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>

	[[alternative HTML version deleted]]



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