Aprender los conceptos clave

1

Todo lo que aprenderás sobre MA con Scikit-Learn

2

¿Cómo aprenden las máquinas?

3

Problemas que podemos resolver con Scikit-learn

4

Las matemáticas que vamos a necesitar

Iniciar un proyecto con sklearn

5

Configuración de nuestro entorno Python

6

Instalación de librerías en Python

7

Datasets que usaremos en el curso

Optimización de features

8

¿Cómo afectan nuestros features a los modelos de Machine Learning?

9

Introducción al PCA

10

Preparación de datos para PCA e IPCA

11

Implementación del algoritmo PCA e IPCA

12

Kernels y KPCA

13

¿Qué es la regularización y cómo aplicarla?

14

Implementación de Lasso y Ridge

15

Explicación resultado de la implementación

16

ElasticNet: Una técnica intermedia

Regresiones robustas

17

El problema de los valores atípicos

18

Regresiones Robustas en Scikit-learn

19

Preparación de datos para la regresión robusta

20

Implementación regresión robusta

Métodos de ensamble aplicados a clasificación

21

¿Qué son los métodos de ensamble?

22

Preparación de datos para implementar métodos de ensamble

23

Implementación de Bagging

24

Implementación de Boosting

Clustering

25

Estrategias de Clustering

26

Implementación de Batch K-Means

27

Implementación de Mean-Shift

Optimización paramétrica

28

Validación de nuestro modelo usando Cross Validation

29

Implementación de K-Folds Cross Validation

30

Optimización paramétrica

31

Implementación de Randomized

32

Bonus: Auto Machine Learning

Salida a producción

33

Revisión de nuestra arquitectura de código

34

Importar y exportar modelos con Sklearn

35

Creación de una API con Flask para el modelo

36

Cierre del curso

37

Material adicional para consultar

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Optimización paramétrica

30/37
Recursos

Aportes 12

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Optimización de hiperparametros | Hyperparameter Optimization

Familiarizados con el concepto de Cross Validation vamos a utilizar este mismo principio de fondo para lograr automatizar un poco la selección y optimización de nuestros modelos.

Problema: Parece que encontramos un modelo de aprendizaje que parece funcionar, pero esto puede implicar que ahora tenemos que encontrar la optimización de cada uno de los parámetros de este modelo, encontrar el que mejor se ajuste y el que mejor resultado nos de.

  1. Es facil perderse entre los conceptos de tantos parámetros. Tenemos flexibilidad para algoritmos básicos de Machine Learning, pero facil perderse.
  2. Es difícil medir la sensibilidad de los mismos manualmente.
  3. Es COSTOSO, en tiempo humano y computacionalmente.

Scikit Learn nos ofrece enfoques para automatizar el proceso de optimización paramétrica. Existen 3 enfoques principales, estos son:

  1. Optimización manual

  2. Optimizacion por grilla de parámetros | GridSearchCV

  3. Optimizacion por búsqueda aleatorizada |
    .
    .
    Optimización manual

  4. Escoger el modelo que queremos ajustar.

  5. Buscar en la documentación de Scikit-Learn

  6. Identificar parámetros y ajustes. Parámetros que vamos a necesitar y cuáles son los posibles ajustes que vamos a requerir para cada uno de estos parámetros.

  7. Probar combinaciones una por una iterando a través de listas.
    .
    .
    Optimizacion por grilla de parámetros | GridSearchCV

Es una forma organizada, exhaustiva y sistematica de probar todos los parametros que le digamos que tenga que probar, con los respectivos rangos de valores que le aportemos.

  1. Definir una o varias métricas que queremos optimizar.
  2. Identificar los posibles valores que pueden tener los parámetros.
  3. Crear un diccionario de parámetros.
  4. Usar Cross Validation.
  5. Entrenar el modelo (e ir por un café)

La grilla de parámetros nos define GRUPOS DE PARÁMETROS que serán probados en todas sus combinaciones (Un grupo a la vez)

Ejemplo:


.
.

Optimizacion por búsqueda aleatorizada | RandomizedSearchCV

Si no tenemos tanto tiempo para una prueba tan exhaustiva o queremos combinaciones aleatorias usaremos este metodo. Es lo mismo que el caso anterior, pero busca de forma aleatoria los parametros y Scikit Learn selecciona los mejores de las combinaciones aleatorias que se hicieron.

En este método, definimos escalas de valores para cada uno de los parámetros seleccionados, el sistema probará varias iteraciones (Configurables según los recursos) y mostrará la mejor combinación encontrada.

Ejemplo:


.
.

GridSearchCV vs RandomizedSearchCV

  • GridSearchCV

    • Cuando se quiera realizar un estudio a fondo sobre las implicaciones de los parámetros.
    • Se tenga tiempo.
    • Se tenga poder de procesamiento.
  • RandomizedSearchCV

    • Cuando se quiera explorar posibles optimizaciones.
    • Haya poco tiempo.
    • Haya poco poder de procesamiento.

Todo super claro! Excelente explicación

También existen las alternativas HalvingGridSearch y HalvingRandomSearch. En resumen, son implantaciones que usan menos recursos al no entrenar con todos los datos en cada iteración. Mas información en: 11 Times Faster Hyperparameter Tuning with HalvingGridSearch.

En la imagen de busqueda por guillas, me parece que el parametro C debe cambiar a 1,10 y 100.

En el uso de GridSearch se puede iterar por distintos modelos y proporciones de Train/Test como en por ejemplo es ente clasificador obteniendo resultados como el siguiente:
.

En ingles, pero es un excelente canal:

https://www.youtube.com/watch?v=Gol_qOgRqfA&t=1182s

Esta genial la clase! Además en recursos hay otras clases relacionadas con este tema. Vale la pena explorar las

Optimización por Grilla de Parámetros (GridSearchCV):

La optimización por parrilla de parámetros es una técnica que automatiza la búsqueda de la mejor combinación de hiperparámetros para un modelo. Se proporciona una cuadrícula de valores posibles para cada hiperparámetro que se desea optimizar, y se realiza una búsqueda exhaustiva de todas las combinaciones posibles mediante validación cruzada para determinar cuál proporciona el mejor rendimiento.

Optimización por Búsqueda Aleatorizada (RandomizedSearchCV):

La optimización por búsqueda aleatoria es una técnica similar a la optimización por grilla de parámetros, pero en lugar de buscar todas las combinaciones posibles, selecciona aleatoriamente un subconjunto de combinaciones para evaluar. Esto es útil cuando la cuadrícula de búsqueda es muy grande y realizar una búsqueda exhaustiva sería costosa en términos de tiempo y recursos computacionales.

  • La optimización manual es un enfoque práctico pero laborioso, mientras que GridSearchCV y RandomizedSearchCV automatizan la búsqueda de hiperparámetros, siendo RandomizedSearchCV más eficiente cuando la búsqueda es costosa. Estas técnicas son esenciales para ajustar los modelos de aprendizaje automático para obtener un rendimiento óptimo.

Una pregunta a la hora de trabajar profesionalmente usando Machine Learning, ¿se deja de lado utilizar el enfoque de Hold-Out y solo nos concentramos en Cross Validation, para aquellos que apenas estamos aprendiendo?

La clase se centró en la optimización paramétrica en Machine Learning utilizando la biblioteca Scikit-Learn. Se discutieron tres métodos: optimización manual, búsqueda en cuadrícula (Grid Search) y búsqueda aleatorizada (Random Search). La optimización manual implica probar cada combinación de parámetros de forma exhaustiva, lo que puede ser tedioso y costoso. La búsqueda en cuadrícula permite probar sistemáticamente todas las combinaciones definidas en un diccionario, mientras que la búsqueda aleatorizada prueba combinaciones aleatorias dentro de los rangos establecidos, proporcionando una alternativa más rápida.
Dejo estas dos metáforas para que se entienda mejor: * **Grid Search**: Caperucita está muy meticulosa. Decide probar todas las posibles combinaciones de caminos que conoce, y aunque esto es muy exhaustivo y le toma mucho tiempo, ella está segura de que encontrará la mejor ruta. Cada vez que prueba un camino, toma nota de cuántos árboles y flores encuentra y si hay lobos en el trayecto. Al final, elige la mejor ruta basada en todas esas pruebas. * **Random Search**: Esta vez, Caperucita es más pragmática. En lugar de probar todas las rutas posibles, elige caminos de manera aleatoria y anota los resultados de cada uno. Con suerte, encontrará una ruta eficiente sin probar todas, y le llevará menos tiempo que con Grid Search. **Conclusión**: La **optimización paramétrica** es como Caperucita probando diferentes caminos para llegar a casa de su abuela, ajustando su enfoque con cada intento para encontrar la ruta más rápida y segura.
***<u>Validation Cross Concept</u>*** Cross-validation (CV) is a general technique used in machine learning to evaluate the performance of a model and avoid **overfitting**. It involves splitting the available data into training and testing sets in a way that allows you to estimate how well the model will generalize to unseen data. Here's a breakdown of the concept: **The Problem of Overfitting:** Imagine you're training a model to classify handwritten digits (0-9). If you simply train the model on all the available data and then evaluate its performance on the same data, it might achieve very high accuracy. However, this doesn't necessarily mean the model will perform well on completely new digits it hasn't seen before. The model might have simply memorized the training data patterns without truly learning the underlying features that distinguish the digits. This is called overfitting. **How Cross-Validation Helps:** Cross-validation addresses the overfitting problem by introducing a more rigorous evaluation strategy. Here's the general approach: 1. **Data Splitting:** The available data is divided into two or more sets: * **Training Set:** This set is used to train the model. The model learns patterns and relationships from this data. * **Testing Set:** This unseen data is used to evaluate the model's performance on new data it hasn't been trained on specifically. 2. **Iteration (Optional):** Some CV techniques involve multiple rounds of training and evaluation. They split the data further into smaller folds and iterate through these folds, using different folds for training and testing in each round. This provides a more robust estimate of the model's generalizability. 3. **Evaluation Metrics:** After training on the training set, the model makes predictions on the testing set. These predictions are compared to the actual target values in the testing set using an appropriate evaluation metric. Common metrics include: * **Classification:** Accuracy, precision, recall, F1-score * **Regression:** Mean squared error, R-squared **Benefits of Cross-Validation:** * **Reduced Variance:** By using a separate testing set or iterating through multiple folds, CV helps reduce the variance in the model's performance estimate. A single split of the data might be overly optimistic or pessimistic, whereas CV provides a more stable measure. * **Better Generalizability:** The use of unseen data for evaluation allows for a more realistic assessment of how well the model performs on new, unseen data. This helps avoid overfitting and improves the model's ability to generalize. * **Efficient Use of Data:** CV utilizes the entire dataset for both training and validation, maximizing the information extracted from the available data. **Types of Cross-Validation:** There are several variations of cross-validation, each with its own advantages and disadvantages. Here are some common types: * **Holdout:** This is the simplest form, where the data is split into a single training set and a single testing set. It's easy to implement but can be susceptible to variance depending on the specific split. * **K-Fold CV:** This technique splits the data into k folds (e.g., k=5 or k=10) and iterates k times, each time using k-1 folds for training and the remaining fold for validation. The evaluation metrics are then averaged across all folds. * **Stratified K-Fold CV:** This is a variation of K-Fold CV that ensures each fold maintains the same class distribution as the original data, which is important for imbalanced datasets. **In conclusion, cross-validation is a crucial technique in machine learning for evaluating model performance and avoiding overfitting. It allows for a more robust and generalizable assessment of how well a model performs on unseen data.**