La semana pasada dejamos encaminada la clasificación de diferentes objetos estelares haciendo uso de Random Forest. Tras haber analizado detenidamente el dataset de SDSS al que nos enfrentamos, toca finalizar esta breve serie con el preprocesado de datos, elección de hiperparámetros, entrenamiento y testeo de nuestro modelo.
Preprocesado de datos
Para facilitar el entrenamiento de nuestro modelo y evitar posibles problemas numéricos, todas las características numéricas del dataset que van a ser usadas en en entrenamiento son normalizadas en el rango [-1,+1].
En las siguientes secciones del artículo vamos a realizar una validación cruzada y un ajuste de hiperparámetros del árbol para poder exprimir al máximo el comportamiento de nuestro algoritmo.
Optimización de Hiperparámetros (Hyperparameter Tuning)
En Machine Learning, normalmente se realizan dos tareas al mismo tiempo: validación cruzada y ajuste hiperparámetros de los modelos. La validación cruzada es el proceso de capacitar a los modelos un conjunto de datos para que puedan probarlos de manera recursiva con la intención de encontrar la configuración que maximice la precisión del mismo. En esta parte del artículo hacemos uso de una combinación de validación cruzada y el ajuste de parámetros con scikit-learn.
Tuning usando Random Search
Antes de buscar qué combinación de valores de parámetros conduce al modelo más preciso, debemos especificar los diferentes valores candidatos que queremos probar mediante un simple diccionario. En el siguiente código tenemos una serie de valores de parámetros candidatos, que incluyen varias posibilidades para los siguientes hiperparámetros:
- n_estimators: número de estimadores en el Random Forest.
- max_features: número máximo de atributos para la partición de nodos; generalmente < número de características en el dataset.
- max_depth: número de niveles en cada Decision Tree.
- min_samples_split: número mínimo de datos en un nodo antes de que este se parta hacia el siguiente nivel.
- min_samples_leaf: número mínimo de datos en un único nodo.
- criterion: métrica usada para fijar el stopping criteria de los árboles de decisión.
Para limitar la búsqueda, primero se ejecuta una validación cruzada de búsqueda aleatoria. Se realiza una búsqueda aleatoria de parámetros usando k=10 veces la validación cruzada (cv = 10), en 100 combinaciones diferentes (n_iter = 100) y con todos los núcleos disponibles al mismo tiempo (n_jobs = -1). Random Search selecciona una combinación de características al azar en lugar de iterar en cada combinación posible. Una mayor n_iter y cv dan como resultado más combinaciones y menos posibilidad de overfitting respectivamente.
Mediante el siguiente comando podemos visualizar los mejores parámetros tras este proceso combinado de validación cruzada y finetuning de parámetros:
Entrenando el clasificador Random Forest
Con los parámetros óptimos de acuerdo a nuestro dataset, ya podemos definir nuestro estimador de clasificación correctamente.
Testeando y evaluando el modelo
Nos encontramos ante un claro caso de Aprendizaje Desbalanceado (Imbalanced Learning), en el que el número de muestras pertenecientes a alguna(s) clase(s) está menos representado en un determinado dataset. Las clases subrepresentadas crean un problema importante: la precisión (es decir, la proporción de muestras de prueba para las que predijimos la clase correcta) ya no es una buena medida del rendimiento del modelo. Los principales métodos de evaluación son sensibles a los datos desbalanceados cuando las muestras de una clase en un conjunto de datos superan a las muestras de la otra clase o clases:
- La recall, sensitivity o tasa de verdaderos positivos de un clasificador representan las muestras positivas clasificadas correctamente al número total de muestras positivas, y se estima de acuerdo con la siguiente expresión:
R = tp/(tp+fn)
Donde tp son los verdaderos positivos y fn son los falsos negativos.
- Además, los valores predictivos, positivos y negativos, reflejan el rendimiento de la predicción. El valor o la precisión de la predicción positiva representa la proporción de muestras positivas que se clasificaron correctamente según el número total de muestras pronosticadas positivas:
P = tp/(tp+fp)
Donde fp son las muestras clasificadas erróneamente.
- Como se indicó anteriormente, la precisión puede ser contribuida en gran medida por un gran número de verdaderos negativos si el conjunto de datos está desbalanceado. La F1-score es una mejor medida para usar si se busca un equilibrio entre precisión y la recall en caso de que se observe una distribución de clases desequilibrada en el conjunto de datos. La recall, la precisión y la F1-score se consideran métricas que deben usarse como referencia de la bondad de nuestro clasificador.
f1 = 2·(P·R)/(P+R)
sklearn.metrics tiene estas métricas soportadas. El orden de las puntuaciones en la lista F1-score corresponde a la forma en que se codificaron las clases, a las que se puede acceder utilizando el atributo .classes_ del clasificador.
El desempeño de nuestro árbol es bastante bueno sobre nuestro test dataset, con F1-scores superiores al 90% para todas las clases. La tasa más baja de las tres corresponde a de los Quasars, seguramente debido a la subrepresentación de esa clase en el dataset.
Debido al enorme volumen de datos y a la complejidad de los mismos, la astrofísica ha tenido, en los últimos años, al Machine Learning como una herramienta imprescindible para múltiples tareas. En el siguiente enlace se resumen algunos de los algoritmos más usados y su aplicación en este campo.
Figura 2. The Sloan Digital Sky Survey: Mapping the Universe |
Unos de los más llamativos, posiblemente, sean tanto el de la aplicación de algoritmos clásicos de Machine Learning como Deep Learning en la clasificación de galaxias según su morfología (Galaxy Zoo Challenge) o el de la corrección de imágenes astrofísicas haciendo uso de Generative Adversarial Networks (GANs).
Para mantenerte al día con LUCA visita nuestra página web, suscríbete a LUCA Data Speaks o síguenos en Twitter, LinkedIn y YouTube.
The post Machine Learning y astrofísica (II): Clasificación de estrellas, galaxias y quasars con Ramdom Forest appeared first on Think Big.