Saltar al contenido

Procesos Gaussianos para la clasificación con Python

2 de octubre de 2020

El Clasificador de Procesos Gaussianos es un algoritmo de aprendizaje de la máquina de clasificación.

Los procesos gausianos son una generalización de la distribución de probabilidad gausiana y pueden utilizarse como base de sofisticados algoritmos no paramétricos de aprendizaje automático para la clasificación y la regresión.

Son un tipo de modelo de núcleo, como los SVM, y a diferencia de éstos, son capaces de predecir probabilidades de pertenencia a una clase altamente calibradas, aunque la elección y configuración del núcleo utilizado en el núcleo del método puede ser un reto.

En este tutorial, descubrirá el algoritmo de aprendizaje de la máquina de clasificación del Clasificador de Procesos Gaussianos.

Después de completar este tutorial, lo sabrás:

  • El Clasificador de Procesos Gaussianos es un algoritmo no paramétrico que puede aplicarse a tareas de clasificación binaria.
  • Cómo encajar, evaluar y hacer predicciones con el modelo del Clasificador de Procesos Gaussianos con Scikit-Learn.
  • Cómo ajustar los hiperparámetros del algoritmo del Clasificador de Procesos Gaussianos en un determinado conjunto de datos.

Empecemos.

Procesos Gaussianos para la clasificación con Python

Procesos Gaussianos para la clasificación con Python
Foto de Mark Kao, algunos derechos reservados.

Resumen del Tutorial

Este tutorial está dividido en tres partes; son:

  1. Procesos Gaussianos de Clasificación
  2. Procesos Gaussianos con Scikit-Learn
  3. Sintonizar los hiperparámetros de los procesos gausianos

Procesos Gaussianos de Clasificación

Los procesos gausianos, o GP para abreviar, son una generalización de la distribución de probabilidad gausiana (por ejemplo, la función en forma de campana).

Las funciones de distribución de probabilidad gaussianas resumen la distribución de las variables aleatorias, mientras que los procesos gaussianos resumen las propiedades de las funciones, por ejemplo, los parámetros de las funciones. Como tal, se puede pensar en los procesos gausianos como un nivel de abstracción o indirecto por encima de las funciones gausianas.

Un proceso gaussiano es una generalización de la distribución de probabilidad gaussiana. Mientras que una distribución de probabilidad describe variables aleatorias que son escalares o vectores (para las distribuciones multivariantes), un proceso estocástico rige las propiedades de las funciones.

– Página 2, Gaussian Processes for Machine Learning, 2006.

Los procesos gausianos pueden utilizarse como un algoritmo de aprendizaje de máquinas para la clasificación de modelos predictivos.

Los procesos gausianos son un tipo de método de núcleo, como los SVM, aunque son capaces de predecir probabilidades altamente calibradas, a diferencia de los SVM.

Los procesos gausianos requieren la especificación de un núcleo que controle la forma en que los ejemplos se relacionan entre sí; concretamente, define la función de covarianza de los datos. Esto se denomina la función latente o la «molestia«…función.

La función latente f desempeña el papel de una función de molestia: no observamos valores de f en sí (observamos sólo las entradas X y las etiquetas de clase y) y no estamos particularmente interesados en los valores de f …

– Página 40, Gaussian Processes for Machine Learning, 2006.

La forma en que se agrupan los ejemplos usando el núcleo controla cómo el modelo «percibe» los ejemplos, dado que asume que los ejemplos que son «cerrar«…tienen la misma etiqueta de clase.

Por lo tanto, es importante tanto probar diferentes funciones del núcleo para el modelo como diferentes configuraciones para funciones sofisticadas del núcleo.

… una función de covarianza es el ingrediente crucial en un predictor de proceso Gaussiano, ya que codifica nuestras suposiciones sobre la función que deseamos aprender.

– Página 79, Gaussian Processes for Machine Learning, 2006.

También requiere una función de enlace que interprete la representación interna y prediga la probabilidad de pertenencia a una clase. Se puede utilizar la función logística, que permite modelar una distribución de probabilidad binomial para la clasificación binaria.

En el caso de la discriminación binaria, una idea sencilla es convertir el resultado de un modelo de regresión en una probabilidad de clase utilizando una función de respuesta (el inverso de una función de enlace), que «aplasta» su argumento, que puede estar en el dominio (-inf, inf), en el rango [0, 1]garantizando una interpretación probabilística válida.

– Página 35, Gaussian Processes for Machine Learning, 2006.

Recomendado:  ¿Es la computación cuántica el futuro de la IA?

Los procesos gausianos y los procesos gausianos de clasificación son un tema complejo.

Para saber más vea el texto:

Procesos Gaussianos con Scikit-Learn

El Clasificador de Procesos Gaussianos está disponible en la biblioteca de aprendizaje de la máquina Python de scikit-learn a través de la clase GaussianProcessClassifier.

La clase le permite especificar el núcleo a utilizar mediante el «núcleo«y por defecto a 1 * RBF(1.0), por ejemplo, un núcleo RBF.

Dado que se especifica un núcleo, el modelo intentará configurar mejor el núcleo para el conjunto de datos de entrenamiento.

Esto se controla mediante el establecimiento de un «optimizador«, el número de iteraciones para el optimizador a través de la «max_iter_predict«, y el número de repeticiones de este proceso de optimización realizado en un intento de superar el óptimo local «n_restarts_optimizer“.

Por defecto, se realiza una sola ejecución de optimización, y ésta puede ser desactivada configurando «Optimizar» a Ninguno.

Podemos demostrar el Clasificador de Procesos Gaussianos con un ejemplo trabajado.

Primero, definamos un conjunto de datos de clasificación sintética.

Usaremos la función make_classification() para crear un conjunto de datos con 100 ejemplos, cada uno con 20 variables de entrada.

El ejemplo que figura a continuación crea y resume el conjunto de datos.

Ejecutando el ejemplo se crea el conjunto de datos y se confirma el número de filas y columnas del conjunto de datos.

Podemos ajustar y evaluar un modelo de Clasificador de Procesos Gaussianos usando la validación cruzada de repetición estratificada k-fold a través de la clase RepeatedStratifiedKFold. Usaremos 10 pliegues y tres repeticiones en el arnés de prueba.

Usaremos la configuración por defecto.

El ejemplo completo de evaluación del modelo del Clasificador de Procesos Gaussianos para la tarea de clasificación binaria sintética se enumera a continuación.

Recomendado:  Deepmind de Google presenta la última IA abierta, Flamingo • The Register

La ejecución del ejemplo evalúa el algoritmo del Clasificador de Procesos Gaussianos en el conjunto de datos sintéticos e informa de la precisión media en las tres repeticiones de validación cruzada de 10 veces.

Sus resultados específicos pueden variar dada la naturaleza estocástica del algoritmo de aprendizaje. Considere ejecutar el ejemplo unas cuantas veces.

En este caso, podemos ver que el modelo alcanzó una precisión media de alrededor del 79,0 por ciento.

Podemos decidir usar el Clasificador de Procesos Gaussianos como nuestro modelo final y hacer predicciones sobre nuevos datos.

Esto puede lograrse ajustando el conducto modelo a todos los datos disponibles y llamando al predecir() función pasando en una nueva fila de datos.

Podemos demostrarlo con un ejemplo completo que se enumera a continuación.

Ejecutando el ejemplo se ajusta al modelo y hace una predicción de etiqueta de clase para una nueva fila de datos.

A continuación, podemos ver la configuración de los hiperparámetros del modelo.

Sintonizar los hiperparámetros de los procesos gausianos

Los hiperparámetros del método del Clasificador de Procesos Gaussianos deben ser configurados para su conjunto de datos específico.

Quizás el hiperparámetro más importante es el núcleo controlado a través de la «núcleo«argumento». La biblioteca de aprendizaje de ciencias proporciona muchos núcleos incorporados que pueden ser utilizados.

Tal vez algunos de los ejemplos más comunes incluyen:

  • RBF
  • DotProduct
  • Matern
  • RationalQuadratic
  • WhiteKernel

Puedes aprender más sobre los núcleos que ofrece la biblioteca aquí:

Evaluaremos el rendimiento del Clasificador de Procesos Gaussianos con cada uno de estos núcleos comunes, usando argumentos por defecto.

El siguiente ejemplo lo demuestra utilizando la clase GridSearchCV con una cuadrícula de valores que hemos definido.

Al ejecutar el ejemplo se evaluará cada combinación de configuraciones utilizando una validación cruzada repetida.

Sus resultados específicos pueden variar dada la naturaleza estocástica del algoritmo de aprendizaje. Intente ejecutar el ejemplo unas cuantas veces.

En este caso, podemos ver que el RationalQuadratic El núcleo alcanzó un aumento en el rendimiento con una precisión de alrededor del 91,3 por ciento en comparación con el 79,0 por ciento alcanzado con el núcleo RBF en la sección anterior.

Más lecturas

Esta sección proporciona más recursos sobre el tema si desea profundizar en él.

Libros

APIs

Artículos

Resumen

En este tutorial, descubriste el algoritmo de aprendizaje de la máquina de clasificación de los procesos gausianos.

Específicamente, aprendiste:

  • El Clasificador de Procesos Gaussianos es un algoritmo no paramétrico que puede aplicarse a tareas de clasificación binaria.
  • Cómo encajar, evaluar y hacer predicciones con el modelo del Clasificador de Procesos Gaussianos con Scikit-Learn.
  • Cómo ajustar los hiperparámetros del algoritmo del Clasificador de Procesos Gaussianos en un determinado conjunto de datos.

¿Tiene alguna pregunta?
Haga sus preguntas en los comentarios de abajo y haré lo posible por responder.

Descubre el aprendizaje rápido de la máquina en Python!

Aprendizaje de la máquina maestra con Python

Desarrolle sus propios modelos en minutos

…con sólo unas pocas líneas de código de aprendizaje científico…

Aprende cómo en mi nuevo Ebook:
Dominio de la máquina de aprendizaje con la pitón

Cubre Tutoriales de auto-estudio y proyectos integrales como:
Cargando datos, visualización, modelado, tuningy mucho más…

Finalmente traer el aprendizaje automático a
Sus propios proyectos

Sáltese los académicos. Sólo los resultados.

Ver lo que hay dentro