Logotipo de Zephyrnet

Clasificador de gradiente de refuerzo de histograma

Fecha:

Este artículo fue publicado como parte del Blogatón de ciencia de datos.

Hola a todos, feliz año nuevo, que tengan un año seguro y lleno de conocimientos por delante. Entonces, en el artículo de hoy, veremos un nuevo algoritmo llamado Histogram Boosting Gradient Classifier (HBG). Quizás muy pocos de ellos se encontraron con este algoritmo en particular. Entonces, ¿qué es un clasificador de gradiente de aumento de histograma? Es un tipo de aprendizaje conjunto y algoritmo de aumento de gradiente en la tecnología de aprendizaje automático.

Aprendizaje automático: comprensión del lego

No vamos a profundizar en el aprendizaje automático, pero ¿qué es el aprendizaje automático en términos simples? Sin una programación explícita, la forma en que las máquinas (especialmente las computadoras) imitan nuestro comportamiento humano (principalmente el dominio de inteligencia de los humanos) en el aprendizaje de datos, lo llamamos aprendizaje automático.

Tipos de aprendizaje automático

Hay tres tipos principales de aprendizaje automático:

  1. Algoritmo de aprendizaje automático supervisado (basado en tareas)
  2. Algoritmo de aprendizaje automático no supervisado (basado en datos)
  3. Algoritmo de aprendizaje automático de refuerzo (Recompensas
    y castigos)
  4. A veces, aprendizaje automático semisupervisado
    algoritmo (basado en tareas y datos)

El algoritmo de Machine Learning supervisado

Entrenamos nuestro modelo en un conjunto de datos etiquetados en aprendizaje supervisado. Tenemos datos de entrada sin procesar (cualquier valor numérico u otro tipo de datos, información) y sus resultados (clase/etiqueta). Dividimos nuestros datos en dos partes: entrenamiento y prueba. El conjunto de datos de entrenamiento se usa para entrenar nuestra red, mientras que el conjunto de datos de prueba se usa para pronosticar resultados o para evaluar la exactitud de nuestro modelo o algoritmo.

Entonces, bajo el aprendizaje automático supervisado, hay dos conceptos críticos:

  1. Clasificación
  2. Regresión

Clasificación

La clasificación es el proceso de determinar un algoritmo que ayuda a categorizar conjuntos de datos en función de varios factores (características, además de la columna de etiquetas). En Clasificación, un algoritmo informático se entrena en conjuntos de datos de entrenamiento y luego organiza los datos en varios grupos en función de ese entrenamiento para un conjunto de datos de prueba.

Como ejemplo, considere las condiciones normales y anormales de un paciente.

Usando algoritmos de aprendizaje automático supervisado, procesaremos cada dato con una etiqueta (2 clases, regulares o no) usando algoritmos de aprendizaje automático supervisado. Cuando damos nuevos datos (datos de prueba) en la sección de prueba, el sistema debe clasificar la etiqueta adecuada (?).

Aprendizaje automático de conjuntos

Como resultado, estamos trabajando con una categoría de clasificación. Entonces, ¿por qué usamos el aprendizaje automático conjunto? Aclaremos esta solución particular en términos sencillos. Considere un paciente llamado PREM, que experimenta algunos problemas de salud y ha decidido buscar consejo médico. Acude a un médico cercano, y tras realizarle unas pruebas de medicación, el médico concluye que se trata de un resfriado típico, pero PREM aún no se convence. Por lo tanto, decide consultar con otro médico, y después de realizar más pruebas, este médico predice que es una fiebre viral, por lo que PREM todavía no está convencido. Debido a que este es un problema de pandemia, consultó en un enfoque diferente. Convenció a los dos médicos para que se reunieran, luego discutió todos los hallazgos y finalmente los convenció de que solo era una fiebre regular. No necesitaban preocuparse por las dificultades de COVID u Omricon. Dicho, el aprendizaje conjunto es el proceso de mezclar varios modelos (aquí modelos débiles) para generar un resultado superior.

Tipos de aprendizaje automático de conjuntos

Ampliamente clasificado en:

  1. Harpillera
  2. Impulso
  3. Apilado

Algoritmo de impulso

Ahora entendemos que impulsar combina un alumno débil, un alumno base para generar una regla estricta. El primer tema que debería venir a la mente es, '¿Cómo identifica el refuerzo las reglas débiles?' Usamos técnicas de aprendizaje automático (ML) con una distribución diferente para descubrir reglas débiles. Cada vez que se utiliza el método de aprendizaje base, se genera una nueva regla de predicción débil. Este es un procedimiento paso a paso. Después de muchas rondas, el enfoque de impulso combina numerosas leyes vulnerables en una sola regla de predicción poderosa.

Algoritmo de impulso | Clasificador de gradiente de refuerzo de histograma
Fuente de la imagen: https://towardsdatascience.com/boosting-algorithms-explained-d38f56ef3f30 

Clasificador de aumento de gradiente

Este es uno de los algoritmos más poderosos en el aprendizaje automático. GB es una técnica que está ganando popularidad debido a su alta velocidad y precisión de predicción, principalmente cuando se trata de conjuntos de datos grandes y complicados, ya que sabemos que los errores en los algoritmos de aprendizaje automático se clasifican ampliamente en dos categorías, es decir, error de sesgo y error de varianza. Como el aumento de gradiente es uno de los algoritmos de aumento, se utiliza para minimizar el error de sesgo del modelo.

Importancia del error de sesgo

El grado de sesgo en el que la predicción de un modelo se aparta del valor objetivo en comparación con los datos de entrenamiento. El error de sesgo ocurre al reducir las suposiciones empleadas en un modelo para aproximar las funciones objetivo de manera más eficiente. La selección del modelo podría inducir sesgo.

Aumento de gradiente: trabajo

Se basa en la suposición de que el mejor modelo siguiente minimiza el error de predicción total cuando se fusiona con modelos anteriores. El concepto central es definir los resultados deseados para este próximo modelo para reducir el error. ¿Cómo se determinan los objetivos? El resultado de la meta para cada instancia en los datos está determinado por cuánto altera el pronóstico de ese caso afecta el error de predicción total,

Supongamos que una ligera modificación en la predicción de un caso da como resultado una reducción sustancial del error; el siguiente resultado objetivo del caso es un valor alto. Las predicciones del nuevo modelo que está cerca de sus objetivos ayudarán a disminuir el error.

Si un ligero ajuste en la predicción de un caso no produce ningún cambio en el error, el resultado objetivo subsiguiente del caso es cero. Cambiar esta predicción no afecta el error.

El aumento de gradiente deriva su nombre del hecho de que los resultados de los objetivos para cada instancia se determinan según el aumento del error sobre el pronóstico. En el espacio de predicciones factibles para cada ejemplo de entrenamiento, cada nuevo modelo da un paso hacia la minimización del error de predicción.

Algoritmo basado en histograma

Un histograma se usa para contar o ilustrar la frecuencia de los datos (número de ocurrencias) durante períodos discretos llamados contenedores. Cada contenedor representa la frecuencia del valor de píxel asociado, y el algoritmo del histograma es conceptualmente bastante simple.

Algoritmo basado en histograma | Clasificador de gradiente de refuerzo de histograma
Fuente de la imagen: https://www.researchgate.net/figure/Histogram-algorithm_fig3_346577317

Aumento de gradiente basado en histogramas

HGB estará disponible si tenemos scikit-learn v0.21.0 o una versión posterior. En términos simples, todos sabemos que el agrupamiento es un concepto utilizado en el preprocesamiento de datos, lo que significa considerar la universidad VIT y dividir a los estudiantes según el estado de nuestro país, como Tamil Nadu, Kerala, Karnataka, etc. Después de que la segmentación se convierta en datos numéricos, de manera similar, el mismo concepto de agrupación se aplica al algoritmo del árbol de decisiones (DT). Al reducir el número de funciones, se utilizará para aumentar la velocidad del algoritmo. Como resultado, la misma noción se emplea en DT al agrupar con histogramas, lo que se conoce como clasificador HGB.

Parámetros en el aumento de gradiente basado en histogramas

En general, para todas las clasificaciones, tenemos varios parámetros para ajustar nuestros algoritmos específicos para lograr los mejores resultados. Lo mismo es cierto para el clasificador HBG; si bien hay muchos factores, algunos son críticos, y esos parámetros sobre el clasificador HBG son,

learning_rate, max_iter, max_ depth, l2_regularization, cada uno tiene un propósito específico para ajustar el modelo,

learning_rate se ocupa de la reducción, max_iter se ocupa del número de iteraciones necesarias para obtener un buen resultado, max_ depth se ocupa de varios árboles (conceptos de árboles de decisión) y l2_regularization, que se ocupa del concepto de regularización para evitar problemas de sobreajuste.

Implementación de Python del clasificador de gradiente de aumento de histograma

#importación de bibliotecas import numpy as np import pandas as pd import matplotlib.pyplot as plt
#importación de conjuntos de datos normal = pd.read_csv('ptbdb_normal.csv') anormal = pd.read_csv('ptbdb_abnormal.csv')
#ver el conjunto de datos normal normal.head()
#ver conjunto de datos anormales anormal.head()
#dimensión para forma normal normal
#dimensión para forma anormal anormal
#cambiando los nombres de las columnas aleatorias a secuenciales - normal #como tenemos algunos nombres de números como columnas, necesitamos cambiarlos a números como para las normales en normal: normal.columns = list(range(len(normal.columns)))
#ver columnas editadas para datos normales normal.head()
#cambiando los nombres de las columnas aleatorias a secuenciales - anormales #como tenemos algunos nombres de números como columnas, necesitamos cambiarlos a números como anormales en anormales: anormales.columnas = lista(rango(largo(anormal.columnas)))
#ver columnas editadas para datos anormales anormal.head()
conjunto de datos.forma
#información básica del conjunto de datos estadísticos.describe()
#información básica del conjunto de datos dataset.info()
#valores faltantes cualquiera del conjunto de datos print(str('Cualquier dato faltante o NaN en el conjunto de datos:'), conjunto de datos.isnull().valores.cualquier())
#rango de datos en el conjunto de datos: muestra de impresión ("Los valores mínimo y máximo son {}, {}".format(np.min(dataset.iloc[-2,:].values), np.max(dataset.iloc [-2,:].valores)))
#correlación para todas las funciones en el conjunto de datos correlación_datos =conjunto_datos.corr() print(correlación_datos)
importar seaborn como sns #visualización para correlación plt.figure(figsize=(10,7.5)) sns.heatmap(correlation_data, annot=True, cmap='BrBG')
#para el recuento del valor objetivo label_dataset = dataset[187].value_counts() label_dataset
#visualización para la etiqueta objetivo label_dataset.plot.bar()
#división del conjunto de datos en variable dependiente e independiente X = conjunto de datos.iloc[:,:-1].valores #valores/características independientes y = conjunto de datos.iloc[:,-1].valores #valores dependientes/objetivo
#dividir los conjuntos de datos para el proceso de entrenamiento y prueba de sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size =0.3, random_state=42)
#tamaño para los conjuntos print('tamaño de X_train:', X_train.shape) print('tamaño de X_test:', X_test.shape) print('tamaño de y_train:', y_train.shape) print('tamaño de y_test :', y_prueba.forma)
#histograma que aumenta el clasificador de gradiente de sklearn.experimental import enable_hist_gradient_boosting de sklearn.ensemble import HistGradientBoostingClassifier hgb_classifier = HistGradientBoostingClassifier() hgb_classifier.fit(X_train,y_train) y_pred_hgb = hgb_classifier.predict(X_test)
desde sklearn.metrics import confusion_matrix, precision_score, roc_auc_score cm_hgb = confusion_matrix(y_test, y_pred_hgb) print(cm_hgb) from mlxtend.plotting import plot_confusion_matrix fig, ax = plot_confusion_matrix(conf_mat=cm_hgb, figsize=(6, 6), cmap=plt. cm.Greens) plt.xlabel('Predicciones', fontsize=18) plt.ylabel('Actuals', fontsize=18) plt.title('Confusion Matrix', fontsize=18) plt.show()
from sklearn.model_selection import cross_val_score precision_score(y_test, y_pred_hgb) roc_auc_score(y_test, y_pred_hgb)
acc_hgb = cross_val_score(estimator = hgb_classifier, X = X_train, y = y_train, cv = 10) print("Precisión de hgb: {:.2f} %".format(acc_hgb.mean()*100)) print("SD de hgb: {:.2f} %.format(acc_hgb.std()*100))
imprimir (metrics.classification_report (y_test, y_pred_hgb))
de sklearn.model_selection importar GridSearchCV parámetros_hgb = [{'max_iter': [1000,1200,1500], 'learning_rate': [0.1], 'max_ depth': [25, 50, 75], 'l2_regularization': [1.5], 'puntuación': ['f1_micro']}] grid_search_hgb = GridSearchCV(estimador = hgb_classifier, param_grid = parámetros_hgb, puntuación = 'precisión', cv = 10, n_jobs = -1) grid_search_hgb.fit(X_train, y_train) best_accuracy_hgb = grid_search_hgb. best_score_ best_paramaeter_hgb = grid_search_hgb.best_params_ print("Mejor precisión de HGB:
Fuente de la imagen: autor

Puntuación de precisión = 97.15 %

Roc – puntuación Auc = 0.9611

Precisión (CV=10) = 97.56%

Precisión de búsqueda en cuadrícula = 98.16 %

Matriz de confusión | Clasificador de gradiente de refuerzo de histograma
Fuente de la imagen: autor: matriz de confusión para el conjunto de datos

, se puede acceder al código completo desde este sitio junto con la descripción de los datos.

Por lo tanto, a partir de este artículo, podemos obtener algunas ideas sobre qué es el aprendizaje automático y sus tipos, luego el tipo de clasificación en el aprendizaje supervisado. Agregamos que encontramos, por qué el algoritmo de gradiente y cómo funciona, y lo correlacionamos con el concepto de histograma para formar el concepto de aumento de gradiente de histograma. Espero que la parte de codificación de Python explique claramente cuánto ayuda el algoritmo Clasificador de gradiente de aumento de histograma a mejorar la precisión junto con el ajuste de parámetros.

Por favor, deje sus pensamientos/opiniones en el área de comentarios a continuación. Aprender de tus errores es mi cita favorita; si encuentra algo incorrecto, resáltelo; Tengo muchas ganas de aprender de estudiantes como tú.

Sobre mí, en definitiva, soy Premanand. S, Profesor Asistente Jr e investigador en Machine Learning. Me encanta enseñar y me encanta aprender cosas nuevas en Data Science. Por favor envíeme un correo electrónico para cualquier duda o error, GME@dhr-rgv.comy mi LinkedIn https://www.linkedin.com/in/premsanand/.

Los medios que se muestran en este artículo no son propiedad de Analytics Vidhya y se utilizan a discreción del autor. 

Fuente: https://www.analyticsvidhya.com/blog/2022/01/histogram-boosting-gradient-classifier/

punto_img

Información más reciente

punto_img