Saltar al contenido

Algoritmo de Perceptrón para la clasificación en Python

11 de diciembre de 2020

El Perceptron es un algoritmo de aprendizaje de máquina lineal para tareas de clasificación binaria.

Puede considerarse uno de los primeros y más simples tipos de redes neuronales artificiales. Definitivamente no es un aprendizaje «profundo», pero es un importante elemento constitutivo.

Al igual que la regresión logística, puede aprender rápidamente una separación lineal en el espacio de las características para tareas de clasificación de dos clases, aunque a diferencia de la regresión logística, aprende utilizando el algoritmo de optimización de descenso de gradiente estocástico y no predice probabilidades calibradas.

En este tutorial, descubrirá el algoritmo de aprendizaje de la máquina de clasificación de Perceptrón.

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

  • El Clasificador de Perceptrón es un algoritmo lineal que puede aplicarse a tareas de clasificación binaria.
  • Cómo encajar, evaluar y hacer predicciones con el modelo Perceptron con Scikit-Learn.
  • Cómo sintonizar los hiperparámetros del algoritmo de Perceptrón en un determinado conjunto de datos.

Empecemos.

Algoritmo de Perceptrón para la clasificación en Python

Algoritmo de Perceptrón para la clasificación en Python
Foto de Belinda Novika, algunos derechos reservados.

Resumen del Tutorial

Este tutorial está dividido en 3=tres partes; son:

  1. Algoritmo de Percepción
  2. Perceptrón con Scikit-Learn
  3. Sintonizar los hiperparámetros del Perceptrón

Algoritmo de Percepción

El algoritmo del Perceptrón es un algoritmo de aprendizaje de máquina de clasificación de dos clases (binarias).

Es un tipo de modelo de red neuronal, quizás el tipo más simple de modelo de red neuronal.

Consiste en un único nodo o neurona que toma una fila de datos como entrada y predice una etiqueta de clase. Esto se consigue calculando la suma ponderada de las entradas y un sesgo (establecido en 1). La suma ponderada de la entrada del modelo se denomina activación.

  • Activación = Pesos * Entradas + Sesgo

Si la activación está por encima de 0,0, el modelo dará 1,0; de lo contrario, dará 0,0.

  • Predicción 1: Si la activación > 0.0
  • Predecir 0: Si la activación <= 0.0

Dado que las entradas se multiplican por los coeficientes del modelo, como la regresión lineal y la regresión logística, es una buena práctica normalizar o estandarizar los datos antes de utilizar el modelo.

El Perceptrón es un algoritmo de clasificación lineal. Esto significa que aprende un límite de decisión que separa dos clases utilizando una línea (llamada hiperplano) en el espacio de características. Como tal, es apropiado para aquellos problemas en los que las clases pueden ser bien separadas por una línea o un modelo lineal, lo que se conoce como linealmente separable.

Los coeficientes del modelo se denominan pesos de entrada y se entrenan utilizando el algoritmo de optimización de descenso de gradiente estocástico.

Los ejemplos del conjunto de datos de entrenamiento se muestran al modelo de uno en uno, el modelo hace una predicción y se calcula el error. Luego se actualizan los pesos del modelo para reducir los errores del ejemplo. Esto se llama la regla de actualización del Perceptrón. Este proceso se repite para todos los ejemplos del conjunto de datos de entrenamiento, llamado una época. Este proceso de actualización del modelo usando ejemplos se repite entonces para muchas épocas.

Los pesos de los modelos se actualizan con una pequeña proporción del error de cada lote, y la proporción se controla mediante un hiperparámetro llamado tasa de aprendizaje, que suele fijarse en un valor pequeño. Esto es para asegurar que el aprendizaje no ocurra demasiado rápido, lo que da como resultado un modelo de habilidad posiblemente menor, lo que se denomina convergencia prematura del procedimiento de optimización (búsqueda) de los pesos del modelo.

  • pesos(t + 1) = pesos

El entrenamiento se detiene cuando el error cometido por el modelo cae a un nivel bajo o ya no mejora, o se realiza un número máximo de épocas.

Los valores iniciales de los pesos del modelo se fijan en pequeños valores aleatorios. Además, el conjunto de datos de entrenamiento se baraja antes de cada época de entrenamiento. Esto es por diseño para acelerar y mejorar el proceso de entrenamiento del modelo. Debido a esto, el algoritmo de aprendizaje es estocástico y puede lograr resultados diferentes cada vez que se ejecuta. Por ello, es una buena práctica resumir el rendimiento del algoritmo en un conjunto de datos utilizando una evaluación repetida e informando de la precisión de la clasificación media.

El ritmo de aprendizaje y el número de épocas de entrenamiento son hiperparámetros del algoritmo que se pueden establecer utilizando la heurística o el ajuste de hiperparámetros.

Para más información sobre el algoritmo Perceptrón, vea el tutorial:

Ahora que estamos familiarizados con el algoritmo de Perceptrón, exploremos cómo podemos usar el algoritmo en Python.

Perceptrón con Scikit-Learn

El algoritmo Perceptron está disponible en la biblioteca de aprendizaje de la máquina Python de scikit-learn a través de la clase Perceptron.

La clase permite configurar el ritmo de aprendizaje (eta0), que por defecto es 1.0.

La implementación también permite configurar el número total de épocas de entrenamiento (max_iter), que por defecto es de 1.000.

La implementación del algoritmo Perceptron de scikit-learn también proporciona otras opciones de configuración que puede querer explorar, como la parada temprana y el uso de una pérdida de penalización.

Podemos demostrar el clasificador Perceptrón con un ejemplo práctico.

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

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

El ejemplo 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 Perceptrón 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 la evaluación del modelo de Perceptrón para la tarea de clasificación binaria sintética se enumera a continuación.

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

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 84,7 por ciento.

Podemos decidir usar el clasificador de Perceptrón como nuestro modelo final y hacer predicciones sobre nuevos datos.

Esto puede lograrse ajustando el conducto del modelo a todos los datos disponibles y llamando a la función predict() que pasa 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 del Perceptrón

Los hiperparámetros del algoritmo del Perceptrón deben ser configurados para su conjunto de datos específico.

Tal vez el hiperparámetro más importante es el ritmo de aprendizaje.

Una gran tasa de aprendizaje puede hacer que el modelo aprenda rápido, pero tal vez a costa de una menor habilidad. Un menor ritmo de aprendizaje puede dar como resultado un modelo de mejor rendimiento, pero puede llevar mucho tiempo entrenar al modelo.

Puede obtener más información sobre la exploración de los índices de aprendizaje en el tutorial:

Es común probar las tasas de aprendizaje en una escala de logaritmo entre un valor pequeño como 1e-4 (o menor) y 1.0. En este caso probaremos los siguientes valores:

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 una tasa de aprendizaje menor que la predeterminada da como resultado un mejor rendimiento con una tasa de aprendizaje de 0,0001 y 0,001, alcanzando ambas una precisión de clasificación de alrededor del 85,7 por ciento, en comparación con la predeterminada de 1,0 que alcanzó una precisión de alrededor del 84,7 por ciento.

Otro importante hiperparámetro es la cantidad de épocas que se utilizan para entrenar el modelo.

Esto puede depender del conjunto de datos de entrenamiento y podría variar enormemente. De nuevo, exploraremos los valores de configuración en una escala de registro entre 1 y 1e+4.

Usaremos nuestro índice de aprendizaje de 0,0001 encontrado en la búsqueda anterior.

El ejemplo completo de la cuadrícula de búsqueda del número de épocas de entrenamiento se enumera a continuación.

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 las épocas de 10 a 10.000 resultan en aproximadamente la misma precisión de clasificación. Una excepción interesante sería explorar la configuración de la tasa de aprendizaje y el número de épocas de entrenamiento al mismo tiempo para ver si se pueden lograr mejores resultados.

Más lecturas

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

Tutoriales

Libros

APIs

Artículos

Resumen

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

Específicamente, aprendiste:

  • El Clasificador de Perceptrón es un algoritmo lineal que puede aplicarse a tareas de clasificación binaria.
  • Cómo encajar, evaluar y hacer predicciones con el modelo Perceptron con Scikit-Learn.
  • Cómo sintonizar los hiperparámetros del algoritmo de Perceptrón 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

Recomendado:  Cómo desarrollar un conjunto de máquinas de gradiente de luz (LightGBM)