Clasificadores Pasivos Agresivos

Los algoritmos pasivo-agresivos son una familia de algoritmos de aprendizaje automático que no son muy conocidos por los principiantes e incluso los entusiastas intermedios del aprendizaje automático. Sin embargo, pueden ser muy útiles y eficientes para ciertas aplicaciones.

Nota: Esta es una descripción general de alto nivel del algoritmo que explica cómo funciona y cuándo usarlo. No profundiza en las matemáticas de cómo funciona.
Los algoritmos pasivo-agresivos se utilizan generalmente para el aprendizaje a gran escala. Es uno de los pocos algoritmos de aprendizaje en línea.‘. En los algoritmos de aprendizaje automático en línea, los datos de entrada vienen en orden secuencial y el modelo de aprendizaje automático se actualiza paso a paso, a diferencia del aprendizaje por lotes, donde se usa todo el conjunto de datos de entrenamiento a la vez. Esto es muy útil en situaciones en las que hay una gran cantidad de datos y es computacionalmente inviable entrenar todo el conjunto de datos debido al gran tamaño de los datos. Simplemente podemos decir que un algoritmo de aprendizaje en línea obtendrá un ejemplo de entrenamiento, actualizará el clasificador y luego desechará el ejemplo.

Un muy buen ejemplo de esto sería detectar noticias falsas en un sitio web de redes sociales como Twitter, donde se agregan nuevos datos cada segundo. Para leer dinámicamente los datos de Twitter de forma continua, los datos serían enormes y sería ideal usar un algoritmo de aprendizaje en línea.

Los algoritmos pasivo-agresivos son algo similares a un modelo Perceptron, en el sentido de que no requieren una tasa de aprendizaje. Sin embargo, sí incluyen un parámetro de regularización.

Cómo funcionan los algoritmos
pasivo-agresivos: los algoritmos pasivo-agresivos se llaman así porque:

  • Pasivo: si la predicción es correcta, mantenga el modelo y no realice ningún cambio. es decir, los datos del ejemplo no son suficientes para provocar cambios en el modelo. 
  • Agresivo: si la predicción es incorrecta, realice cambios en el modelo. es decir, algún cambio en el modelo puede corregirlo.

Comprender las matemáticas detrás de este algoritmo no es muy simple y está más allá del alcance de un solo artículo. Este artículo proporciona solo una descripción general del algoritmo y una implementación simple del mismo. Para obtener más información sobre las matemáticas detrás de este algoritmo, recomiendo ver este excelente video sobre el funcionamiento del algoritmo del Dr. Victor Lavrenko.

Parámetros importantes:

  • C : este es el parámetro de regularización y denota la penalización que el modelo hará en una predicción incorrecta
  • max_iter: el número máximo de iteraciones que realiza el modelo sobre los datos de entrenamiento.
  • tol : El criterio de parada. Si se establece en Ninguno, el modelo se detendrá cuando ( pérdida > pérdida_anterior – tol ). De forma predeterminada, se establece en 1e-3.

Implementación simple en Python3
Aunque para el uso práctico de este algoritmo, se requieren grandes flujos de datos, pero por el bien de este ejemplo, usaremos el popular conjunto de datos iris. Para obtener más información sobre este conjunto de datos, puede usar este enlace .

Código: implementación de la biblioteca scikit-learn de Python de clasificadores pasivo-agresivos.

# Importing modules
from sklearn.datasets import load_iris
from sklearn.linear_model import PassiveAggressiveClassifier
from sklearn.metrics import classification_report, accuracy_score
from sklearn.model_selection import train_test_split
  
# Loading dataset
dataset = load_iris()
X = dataset.data
y = dataset.target
  
# Splitting iris dataset into train and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.1, random_state = 13)
  
# Creating model
model = PassiveAggressiveClassifier(C = 0.5, random_state = 5)
  
# Fitting model 
model.fit(X_train, y_train)
  
# Making prediction on test set
test_pred = model.predict(X_test)
  
# Model evaluation
print(f"Test Set Accuracy : {accuracy_score(y_test, test_pred) * 100} %\n\n")  
  
print(f"Classification Report : \n\n{classification_report(y_test, test_pred)}")

Hemos utilizado establecer el parámetro de regularización, ‘C’ a 0.5. Ahora veamos la salida.
Producción:

Test Set Accuracy : 93.33333333333333 %


Classification Report : 

              precision    recall  f1-score   support

           0       1.00      1.00      1.00         4
           1       1.00      0.75      0.86         4
           2       0.88      1.00      0.93         7

    accuracy                           0.93        15
   macro avg       0.96      0.92      0.93        15
weighted avg       0.94      0.93      0.93        15

Hemos logrado una precisión del conjunto de pruebas del 93,33 %.
Conclusión:
si desea trabajar con big data, este es un clasificador muy importante y lo animo a seguir adelante e intentar construir un proyecto usando este clasificador y usar datos en vivo de un sitio web de redes sociales como Twitter como entrada. Habrá una gran cantidad de datos ingresando cada segundo y este clasificador podrá manejar datos de este tamaño.

Publicación traducida automáticamente

Artículo escrito por alokesh985 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *