Una guía completa para impulsar los algoritmos de aprendizaje automático



Este blog se centra completamente en cómo funciona Boosting Machine Learning y cómo se puede implementar para aumentar la eficiencia de los modelos de Machine Learning.

Con tantos avances en el campo de la atención médica, el marketing, los negocios, etc., se ha convertido en una necesidad para desarrollar tecnologías más avanzadas y complejas. . Impulsar el aprendizaje automático es una de esas técnicas que se puede utilizar para resolver problemas complejos del mundo real basados ​​en datos. Este blog está completamente enfocado en cómo funciona Boosting Machine Learning y cómo se puede implementar para aumentar la eficiencia de los modelos de Machine Learning.

Para obtener un conocimiento profundo de la inteligencia artificial y el aprendizaje automático, puede inscribirse en vivo de Edureka con soporte 24/7 y acceso de por vida.





Aquí hay una lista de temas que se cubrirán. en este blog:

  1. ¿Por qué se usa el impulso?
  2. ¿Qué es impulsar?
  3. ¿Cómo funciona el algoritmo de impulso?
  4. Tipos de impulso
  5. Manifestación

¿Por qué se usa el impulso?

Para resolver problemas complicados, necesitamos técnicas más avanzadas. Supongamos que dado un conjunto de datos de imágenes que contienen imágenes de gatos y perros, se le pidió que creara un modelo que pueda clasificar estas imágenes en dos clases separadas. Como cualquier otra persona, comenzará identificando las imágenes utilizando algunas reglas, como se indica a continuación:



  1. La imagen tiene orejas puntiagudas: gato

  2. La imagen tiene ojos en forma de gato: Gato

  3. La imagen tiene extremidades más grandes: perro



  4. La imagen tiene garras afiladas: Gato

  5. La imagen tiene una estructura de boca más ancha: Perro

Todas estas reglas nos ayudan a identificar si una imagen es un perro o un gato; sin embargo, si clasificamos una imagen en función de una regla individual (única), la predicción sería errónea. Cada una de estas reglas, individualmente, se denominan aprendices débiles porque estas reglas no son lo suficientemente fuertes como para clasificar una imagen como un gato o un perro.

Por lo tanto, para asegurarnos de que nuestra predicción sea más precisa, podemos combinar la predicción de cada uno de estos estudiantes débiles utilizando la regla de la mayoría o el promedio ponderado. Esto lo convierte en un modelo de aprendizaje sólido.

En el ejemplo anterior, hemos definido a 5 alumnos débiles y la mayoría de estas reglas (es decir, 3 de cada 5 alumnos predicen la imagen de un gato) nos dan la predicción que la imagen es un gato. Por tanto, nuestra salida final es un gato.

Entonces esto nos lleva a la pregunta,

¿Qué es impulsar?

El impulso es una técnica de aprendizaje conjunto que utiliza un conjunto de algoritmos de aprendizaje automático para convertir a los estudiantes débiles en estudiantes fuertes con el fin de aumentar la precisión del modelo.

What-Is-Boosting-Boosting-Machine-Learning-Edureka

Qué es impulsar - Impulsar el aprendizaje automático - Edureka

Como mencioné, Boosting es un método de aprendizaje en conjunto, pero ¿qué es exactamente el aprendizaje en conjunto?

¿Qué es el conjunto en el aprendizaje automático?

El aprendizaje por conjuntos es un método que se utiliza para mejorar el rendimiento del modelo de aprendizaje automático mediante la combinación de varios alumnos. Cuando se compara con un solo modelo, este tipo de aprendizaje crea modelos con mayor eficiencia y precisión. Esta es exactamente la razón por la que se utilizan métodos conjuntos para ganar competencias líderes en el mercado, como la competencia de recomendación de Netflix, las competencias de Kaggle, etc.

¿Qué es el aprendizaje por conjuntos? Impulsar el aprendizaje automático - Edureka

A continuación también he discutido la diferencia entre Boosting y Bagging.

Impulso vs embolsado

El aprendizaje en conjunto se puede realizar de dos formas:

  1. Conjunto secuencial, popularmente conocido como impulsando , aquí los estudiantes débiles se producen secuencialmente durante la fase de formación. El rendimiento del modelo se mejora asignando un mayor peso a las muestras anteriores clasificadas incorrectamente. Un ejemplo de refuerzo es el algoritmo AdaBoost.

  2. Conjunto paralelo , popularmente conocido como harpillera , aquí los estudiantes débiles se producen en paralelo durante la fase de formación. El rendimiento del modelo puede aumentarse capacitando paralelamente a un número de estudiantes débiles en conjuntos de datos de arranque. Un ejemplo de ensacado es Random Forest algoritmo.

En este blog, me centraré en el método de impulso, por lo que en la siguiente sección entenderemos cómo funciona el algoritmo de impulso.

¿Cómo funciona el algoritmo de impulso?

El principio básico detrás del funcionamiento del algoritmo de impulso es generar múltiples estudiantes débiles y combinar sus predicciones para formar una regla sólida. Estas reglas débiles se generan aplicando algoritmos básicos de aprendizaje automático en diferentes distribuciones del conjunto de datos. Estos algoritmos generan reglas débiles para cada iteración. Después de múltiples iteraciones, los alumnos débiles se combinan para formar un alumno fuerte que predecirá un resultado más preciso.

¿Cómo funciona el algoritmo de impulso? - Impulso del aprendizaje automático - Edureka

Así es como funciona el algoritmo:

Paso 1: El algoritmo base lee los datos y asigna el mismo peso a cada observación de muestra.

Paso 2: Se identifican predicciones falsas hechas por el alumno base. En la siguiente iteración, estas predicciones falsas se asignan al siguiente alumno base con un mayor peso en estas predicciones incorrectas.

Paso 3: Repita el paso 2 hasta que el algoritmo pueda clasificar correctamente la salida.

abstracción en c ++

Por tanto, el principal objetivo de Boosting es para centrarse más en las predicciones mal clasificadas.

Ahora que sabemos cómo funciona el algoritmo de impulso, comprendamos los diferentes tipos de técnicas de impulso.

Tipos de impulso

Hay tres formas principales a través de las cuales se puede llevar a cabo el impulso:

  1. Impulso adaptativo o AdaBoost

  2. Aumento de gradiente

  3. XGBoost

Hablaré de los conceptos básicos de cada uno de estos tipos.

Impulso adaptativo

  • AdaBoost se implementa combinando varios estudiantes débiles en un solo estudiante fuerte.

  • Los estudiantes débiles en AdaBoost toman en cuenta una característica de entrada única y dibujan un único árbol de decisión dividido llamado muñón de decisión. Cada observación se pesa por igual al extraer el primer muñón de decisión.

  • Los resultados del primer muñón de decisión se analizan y, si alguna observación se clasifica incorrectamente, se le asigna un mayor peso.

  • Publique esto, se dibuja un nuevo tope de decisión al considerar las observaciones con pesos más altos como más significativas.

  • Nuevamente, si alguna observación se clasifica erróneamente, se le da mayor peso y este proceso continúa hasta que todas las observaciones caen en la clase correcta.

  • Adaboost se puede utilizar para problemas de clasificación y de regresión, sin embargo, se utiliza más comúnmente para fines de clasificación.

Aumento de gradiente

Gradient Boosting también se basa en el aprendizaje en conjunto secuencial. Aquí, los alumnos base se generan secuencialmente de tal manera que el alumno base actual es siempre más efectivo que el anterior, es decir, el modelo general mejora secuencialmente con cada iteración.

La diferencia en este tipo de refuerzo es que las ponderaciones de los resultados mal clasificados no se incrementan; en cambio, el método Gradient Boosting intenta optimizar la función de pérdida del alumno anterior agregando un nuevo modelo que agrega alumnos débiles para reducir la función de pérdida.

La idea principal aquí es superar los errores en las predicciones del alumno anterior. Este tipo de refuerzo tiene tres componentes principales:

  1. Función de pérdida que necesita ser mejorado.

  2. Aprendiz débil para calcular predicciones y formar aprendices sólidos.

  3. Un Modelo aditivo que regularizará la función de pérdida.

Al igual que AdaBoost, Gradient Boosting también se puede utilizar para problemas de clasificación y regresión.

XGBoost

XGBoost es una versión avanzada del método de aumento de gradiente, literalmente significa eXtreme Gradient Boosting. XGBoost desarrollado por Tianqi Chen, pertenece a la categoría de Comunidad de aprendizaje automático distribuido (DMLC).

El objetivo principal de este algoritmo es aumentar la velocidad y la eficiencia de los cálculos. El algoritmo Gradient Descent Boosting calcula la salida a un ritmo más lento, ya que analizan secuencialmente el conjunto de datos, por lo tanto, XGBoost se utiliza para aumentar o aumentar extremadamente el rendimiento del modelo.

XGBoost - Impulso del aprendizaje automático - Edureka

XGBoost está diseñado para centrarse en la velocidad computacional y la eficiencia del modelo. Las principales características proporcionadas por XGBoost son:

  • Paralelamente crea árboles de decisión.

  • Implementar métodos de computación distribuida para evaluar modelos grandes y complejos.

  • Uso de computación fuera del núcleo para analizar grandes conjuntos de datos.

  • Implementación de la optimización de la caché para aprovechar al máximo los recursos.

Entonces estos fueronlos diferentes tipos de algoritmos de impulso del aprendizaje automático. Para hacer las cosas interesantes, en la siguiente sección ejecutaremos una demostración para ver cómo se pueden implementar los algoritmos de impulso en Python.

Impulsar el aprendizaje automático en Python

Un breve descargo de responsabilidad: usaré Python para ejecutar esta demostración, por lo que si no conoce Python, puede consultar los siguientes blogs:

  1. Cómo aprender Python 3 desde cero: una guía para principiantes

    comenzando con mysql workbench

Ahora es el momento de ensuciarse las manos y empezar a codificar.

Planteamiento del problema: Estudiar un conjunto de datos de hongos y construir un modelo de aprendizaje automático que pueda clasificar un hongo como venenoso o no, mediante el análisis de sus características.

Descripción del conjunto de datos: Este conjunto de datos proporciona una descripción detallada de muestras hipotéticas de acuerdo con 23 especies de hongos con branquias. Cada especie se clasifica como hongos comestibles o no comestibles (venenosos).

Lógica: Construir un modelo de aprendizaje automático mediante el uso de uno de los algoritmos de impulso para predecir si un hongo es comestible o no.

Paso 1: importar los paquetes requeridos

de sklearn.ensemble importar AdaBoostClassifier de sklearn.preprocessing importar LabelEncoder de sklearn.tree importar DecisionTreeClassifier importar pandas como pd

Paso 2: importar el conjunto de datos

# Cargar en el conjunto de datos = pd.read_csv ('C: //Users//NeelTemp//Desktop//mushroomsdataset.csv')

Paso 3: procesamiento de datos

#Define los nombres de las columnas dataset.columns = ['target', 'cap-shape', 'cap-surface', 'cap-color', 'moretones', 'odor', 'gill-attach', 'gill-spacing ',' tamaño-branquias ',' color-branquias ',' forma-tallo ',' raíz-tallo ',' superficie-tallo-sobre-anillo ',' superficie-tallo-debajo-anillo ',' color-tallo -above-ring ',' color-tallo-debajo-anillo ',' tipo-velo ',' color-velo ',' número-anillo ',' tipo-anillo ',' color-impresión-esporas ',' población ',' habitat '] para etiqueta en dataset.columns: dataset [label] = LabelEncoder (). fit (dataset [label]). transform (dataset [label]) #Muestra información sobre el conjunto de datos print (dataset.info ( )) Int64Index: 8124 entradas, 6074 a 686 Columnas de datos (total 23 columnas): destino 8124 no nulo int32 forma de tapa 8124 no nulo int32 superficie de tapa 8124 no nulo int32 color de tapa 8124 no nulo int32 contusiones 8124 no nulo int32 olor 8124 no nulo int32 accesorio de branquias 8124 no nulo int32 espaciado de branquias 8124 no nulo int32 tamaño de branquias 8124 no nulo int32 color de branquias 8124 no nulo int32 forma de tallo 8124 no nulo int32 raíz de tallo 8124 no nulo int32 tallo-superficie-sobre-anillo 8124 no nulo int32 tallo-superficie-debajo-anillo 8124 no nulo int32 tallo-color-sobre-anillo 8124 no nulo int32 tallo-color-debajo-anillo 8124 no nulo int32 velo- tipo 8124 no nulo int32 color-velo 8124 no nulo int32 número de anillo 8124 no nulo int32 tipo de anillo 8124 no nulo int32 color de impresión de esporas 8124 no nulo población int32 8124 no nulo int32 hábitat 8124 no nulo int32 dtipos: int32 (23) uso de memoria: 793,4 KB

Paso 4: Empalme de datos

X = dataset.drop (['target'], axis = 1) Y = dataset ['target'] X_train, X_test, Y_train, Y_test = train_test_split (X, Y, test_size = 0.3)

Paso 5: construye el modelo

model = DecisionTreeClassifier (criterio = 'entropía', profundidad_máxima = 1) AdaBoost = AdaBoostClassifier (base_estimator = modelo, n_estimators = 400, learning_rate = 1)

En el fragmento de código anterior, hemos implementado el algoritmo AdaBoost. La función 'AdaBoostClassifier' toma tres parámetros importantes:

  • base_estimator: el estimador base (alumno débil) es árboles de decisión por defecto
  • n_estimator: este campo especifica el número de alumnos base que se utilizarán.
  • learning_rate: este campo especifica la tasa de aprendizaje, que hemos establecido en el valor predeterminado, es decir, 1.
#Ajuste el modelo con datos de entrenamiento boostmodel = AdaBoost.fit (X_train, Y_train)

Paso 6: Evaluación del modelo

#Evaluar la precisión del modelo y_pred = boostmodel.predict (X_test) predictions = metrics.accuracy_score (Y_test, y_pred) #Calcular la precisión en porcentaje de impresión ('La precisión es:', predicciones * 100, '%') La precisión es: 100.0%

Recibimos una precisión del 100%, ¡lo cual es perfecto!

Entonces, con esto, llegamos al final de este Blog de impulso del aprendizaje automático. Si desea obtener más información sobre el aprendizaje automático, puede leer estos blogs:

Si desea inscribirse en un curso completo sobre Inteligencia Artificial y Aprendizaje Automático, Edureka cuenta con un que le permitirá dominar técnicas como el aprendizaje supervisado, el aprendizaje no supervisado y el procesamiento del lenguaje natural. Incluye capacitación sobre los últimos avances y enfoques técnicos en inteligencia artificial y aprendizaje automático, como aprendizaje profundo, modelos gráficos y aprendizaje por refuerzo.