Saltar al contenido principal
InicioBlogAprendizaje automático

Clasificación en machine learning: Introducción

Aprende sobre la clasificación en machine learning viendo qué es, cómo se utiliza y algunos ejemplos de algoritmos de clasificación.
mar 2024  · 14 min leer

Hoy en día, muchos sectores trabajan con conjuntos de datos muy grandes de distintos tipos. Procesar manualmente toda esa información puede llevar mucho tiempo e incluso puede no añadir valor a largo plazo. Se están aplicando muchas estrategias, desde la simple automatización a las técnicas de machine learning, para obtener un mayor rendimiento de la inversión. Este blog conceptual tratará uno de los conceptos más importantes: la clasificación en machine learning. 

Empezaremos definiendo qué es la clasificación en machine learning antes de aclarar los dos tipos de aprendices de machine learning y la diferencia entre clasificación y regresión. A continuación, abordaremos algunos casos del mundo real en los que se puede utilizar la clasificación. Después, presentaremos los distintos tipos de clasificación y profundizaremos en algunos ejemplos de algoritmos de clasificación. Por último, realizaremos prácticas sobre la implementación de algunos algoritmos. 

¿Qué es la clasificación en machine learning?

La clasificación es un método de machine learning supervisado en el que el modelo intenta prever la etiqueta correcta de unos datos de entrada dados. En la clasificación, el modelo se entrena completamente con los datos de entrenamiento y, luego, se evalúa con los datos de prueba antes de utilizarse para realizar previsiones con nuevos datos no vistos.

Por ejemplo, un algoritmo puede aprender a prever si un determinado correo electrónico es spam o no, como se muestra a continuación. 

Ilustración de clasificación de machine learning para el correo electrónicoAntes de sumergirnos en el concepto de clasificación, comprenderemos la diferencia entre los dos tipos de aprendices de la clasificación: los aprendices vagos y los ansiosos. A continuación aclararemos la diferencia entre clasificación y regresión. 

Aprendices vagos frente a aprendices ansiosos

En la clasificación del machine learning hay dos tipos de aprendices: los vagos y los ansiosos. 

Los aprendices ansiosos son algoritmos de machine learning que primero crean un modelo a partir del conjunto de datos de entrenamiento y, luego, hacen previsiones con conjuntos de datos futuros. Dedican más tiempo al proceso de entrenamiento porque están ansiosos por tener una mejor generalización durante el entrenamiento a partir del aprendizaje de los pesos, pero requieren menos tiempo para hacer previsiones. 

La mayoría de los algoritmos de machine learning son aprendices ansiosos. A continuación te damos algunos ejemplos: 

  • Regresión logística. 
  • Máquina de vectores de soporte. 
  • Árboles de decisión. 
  • Redes neuronales artificiales. 

En cambio, los aprendices vagos o basados en instancias no crean ningún modelo inmediatamente a partir de los datos de entrenamiento, y de ahí viene lo de vagos. Se limitan a memorizar los datos de entrenamiento y, cada vez que es necesario hacer una previsión, buscan al vecino más próximo en todos los datos de entrenamiento, lo que los hace muy lentos durante la previsión. Algunos ejemplos de este tipo son: 

  • K vecino más próximo. 
  • Razonamiento basado en casos. 

Sin embargo, algunos algoritmos, como BallTrees y KDTrees, pueden utilizarse para mejorar la latencia de la previsión. 

Clasificación de machine learning frente a regresión

Hay cuatro categorías principales de algoritmos de machine learning: aprendizaje supervisado, no supervisado, semisupervisado y por refuerzo. 

Aunque tanto la clasificación como la regresión pertenecen a la categoría de aprendizaje supervisado, no son lo mismo. 

  • La tarea de previsión es una clasificación cuando la variable objetivo es discreta. Una aplicación es la identificación del sentimiento subyacente de un texto. 
  • La tarea de previsión es una regresión cuando la variable objetivo es continua. Un ejemplo puede ser la previsión del salario de una persona dados su nivel de estudios, su experiencia laboral, su ubicación geográfica y su antigüedad.

Si te interesa saber más sobre clasificación, los cursos Aprendizaje supervisado con scikit-learn y Aprendizaje supervisado en R pueden serte útiles. Te permiten comprender mejor cómo aborda las tareas cada algoritmo y las funciones de Python y R necesarias para implementarlos. 

En cuanto a la regresión, Introducción a la regresión en R e Introducción a la regresión con statsmodels en Python te ayudarán a explorar distintos tipos de modelos de regresión, así como su implementación en R y Python.

Diferencia entre clasificación y regresiónEjemplos de clasificación de machine learning en la vida real 

La clasificación de machine learning supervisado tiene distintas aplicaciones en varios dominios de nuestra vida cotidiana. Aquí tienes algunos ejemplos. 

Sanidad 

Entrenar un modelo de machine learning con datos históricos de pacientes puede ayudar a los especialistas sanitarios a analizar con precisión sus diagnósticos:

  • Durante la pandemia de COVID, se implementaron modelos de machine learning para prever con eficiencia si una persona tenía COVID o no. 
  • Los investigadores pueden utilizar modelos de machine learning para prever qué nuevas enfermedades es más probable que aparezcan en el futuro. 

Educación 

La educación es uno de los dominios que más datos textuales, de vídeo y de audio maneja. Esta información no estructurada puede analizarse con ayuda de las tecnologías del lenguaje natural para realizar distintas tareas, como:

  • La clasificación de los documentos por categoría. 
  • Identificación automática de la lengua subyacente de los documentos de los estudiantes durante su solicitud. 
  • Análisis de las opiniones de los alumnos sobre un profesor.  

Transporte

El transporte es el componente clave del desarrollo económico de muchos países. Por ello, los sectores utilizan modelos de machine learning y aprendizaje profundo: 

  • Para prever qué lugar geográfico tendrá un aumento del volumen de tráfico. 
  • Prever posibles problemas en lugares concretos debido a las condiciones meteorológicas. 

Agricultura sostenible

La agricultura es uno de los pilares de la supervivencia humana. Introducir la sostenibilidad puede ayudar a mejorar la productividad de los agricultores a otro nivel sin dañar el medioambiente:

  • Utilizando modelos de clasificación para prever qué tipo de terreno es adecuado para un determinado tipo de semilla.
  • Prever el tiempo para ayudarles a tomar las medidas preventivas adecuadas. 

Diferentes tipos de tareas de clasificación en machine learning 

Hay cuatro tareas principales de clasificación en machine learning: clasificaciones binarias, multiclase, multietiqueta y desequilibradas. 

Clasificación binaria

En una tarea de clasificación binaria, el objetivo es clasificar los datos de entrada en dos categorías mutuamente excluyentes. En tal situación, los datos de entrenamiento se etiquetan con formato binario: verdadero y falso; positivo y negativo; O y 1; spam y no spam, etc., según el problema que se aborde. Por ejemplo, podríamos querer detectar si una imagen dada es un camión o un barco. 

Tarea de clasificación binaria

Los algoritmos de regresión logística y máquinas de vectores de soporte están diseñados nativamente para clasificaciones binarias. Sin embargo, para la clasificación binaria también pueden utilizarse otros algoritmos, como K vecinos más próximos y árboles de decisión. 

Clasificación multiclase

La clasificación multiclase, por otra parte, tiene al menos dos etiquetas de clase mutuamente excluyentes, donde el objetivo es prever a qué clase pertenece un ejemplo de entrada dado. En el caso siguiente, el modelo clasificó correctamente la imagen como avión. 

Tarea de clasificación de 3 clases

La mayoría de los algoritmos de clasificación binaria también pueden utilizarse para la clasificación multiclase. Estos algoritmos incluyen, entre otros:

  • Bosque aleatorio
  • Ingenuo Bayes 
  • K vecinos más próximos 
  • Potenciación del gradiente 
  • SVM
  • Regresión logística.

Pero, ¡espera! ¿No decías que SVM y regresión logística no admiten la clasificación multiclase por defecto? 

→ Correcto. Sin embargo, podemos aplicar enfoques de transformación binaria, como uno contra uno y uno contra todos, para adaptar los algoritmos nativos de clasificación binaria a las tareas de clasificación multiclase.

Uno contra uno: esta estrategia entrena tantos clasificadores como pares de etiquetas haya. Si tenemos una clasificación de 3 clases, tendremos tres pares de etiquetas y, por tanto, tres clasificadores, como se muestra a continuación. 

Ilustración de uno contra uno

En general, para N etiquetas, tendremos N × (N - 1)/2 clasificadores. Cada clasificador se entrena con un único conjunto de datos binarios, y la clase final se prevé por la mayoría de los votos entre todos los clasificadores. El enfoque uno contra uno funciona mejor para SVM y otros algoritmos basados en kernel. 

Uno contra el resto: en esta fase, empezamos considerando cada etiqueta como una etiqueta independiente y consideramos el resto combinado como una sola etiqueta. Con 3 clases, tendremos tres clasificadores. 

En general, para N etiquetas, tendremos N clasificadores binarios.

Ilustración de uno contra el resto

Clasificación multietiqueta

En las tareas de clasificación multietiqueta, intentamos prever 0 o más clases para cada ejemplo de entrada. En este caso, no hay exclusión mutua porque el ejemplo de entrada puede tener más de una etiqueta. 

Este caso puede observarse en distintos dominios, como el autoetiquetado en el procesamiento de lenguaje natural, donde un texto dado puede contener varios temas. De forma similar a la visión artificial, una imagen puede contener varios objetos, como se ilustra a continuación: el modelo previó que la imagen contendría: un avión, un barco, un camión y un perro.

Tarea de clasificación de 4 etiquetas

No es posible utilizar modelos de clasificación multiclase o binaria para realizar una clasificación multietiqueta. Sin embargo, la mayoría de los algoritmos utilizados para esas tareas de clasificación estándar tienen sus versiones especializadas para la clasificación multietiqueta. Podemos citar: 

  • Árboles de decisión multietiqueta
  • Potenciación del gradiente multietiqueta
  • Bosques aleatorios multietiqueta

Clasificación desequilibrada

En la clasificación desequilibrada, el número de ejemplos se distribuye de forma desigual en cada clase, lo que significa que podemos tener más de una clase que de las demás en los datos de entrenamiento. Consideremos el siguiente caso de clasificación de 3 clases en el que los datos de entrenamiento contienen: 60 % de camiones, 25 % de aviones y 15 % de barcos. 

tarea de clasificación desequilibrada

El problema de la clasificación desequilibrada podría darse en el siguiente supuesto:

  • Detecciones de transacciones fraudulentas en sectores financieros
  • Diagnóstico de enfermedades raras 
  • Análisis de la cancelación de clientes

El uso de modelos predictivos convencionales como árboles de decisión, regresión logística, etc., podría no ser eficaz cuando se trata de un conjunto de datos desequilibrado, porque podrían estar sesgados hacia la previsión de la clase con mayor número de observaciones y considerar ruido las clases que tienen menor número de observaciones. 

¿Significa eso que esos problemas quedan excluidos?

¡Por supuesto que no! Podemos utilizar varios enfoques para abordar el problema del desequilibrio en un conjunto de datos. Los enfoques más utilizados son las técnicas de muestreo o el aprovechamiento de la potencia de los algoritmos sensibles al coste. 

Técnicas de muestreo 

El objetivo de estas técnicas es equilibrar la distribución del original mediante: 

  • Sobremuestreo basado en clústeres:
  • Submuestreo aleatorio: eliminación aleatoria de ejemplos de la clase mayoritaria. 
  • Sobremuestreo SMOTE: réplica aleatoria de ejemplos de la clase minoritaria. 

Algoritmos sensibles al coste 

Estos algoritmos tienen en cuenta el coste de una clasificación errónea. Su objetivo es minimizar el coste total generado por los modelos.

  • Árboles de decisión sensibles al coste.
  • Regresión logística sensible al coste. 
  • Máquinas de vectores de soporte sensibles al coste.

Métricas para evaluar los algoritmos de clasificación de machine learning

Ahora que tenemos una idea de los distintos tipos de modelos de clasificación, es crucial elegir las métricas de evaluación adecuadas para esos modelos. En esta sección, trataremos las métricas más utilizadas: exactitud, precisión, recuerdo, puntuación F1 y área bajo la curva ROC (Receiver Operating Characteristic) y AUC (Area Under the Curve). 

Metrics to Evaluate Machine Learning Classification Algorithms 1updated.pngMétricas para evaluar los algoritmos de clasificación de machine learning 3

Inmersión profunda en los algoritmos de clasificación  

Ahora tenemos todas las herramientas para proceder a la implementación de algunos algoritmos. En esta sección se tratarán cuatro algoritmos y su implementación en el conjunto de datos de préstamos para ilustrar algunos de los conceptos tratados anteriormente, sobre todo para los conjuntos de datos desequilibrados con una tarea de clasificación binaria. Nos centraremos solo en cuatro algoritmos para simplificar. 

El objetivo no es tener el mejor modelo posible, sino ilustrar cómo entrenar cada uno de los algoritmos siguientes. El código fuente está disponible en DataCamp Workspace, donde puedes ejecutarlo todo con un solo clic.

Distribución de los préstamos en el conjunto de datos 

  • Veamos las cinco primeras observaciones del conjunto de datos. 
import pandas as pd
loan_data = pd.read_csv("loan_data.csv")
loan_data.head()

Las 5 primeras filas del conjunto de datos de préstamos

  • Perfil de los prestatarios en el conjunto de datos. 
import matplotlib.pyplot as plt
# Helper function for data distribution
# Visualize the proportion of borrowers
def show_loan_distrib(data):
  count = ""
  if isinstance(data, pd.DataFrame):
      count = data["not.fully.paid"].value_counts()
  else:
      count = data.value_counts()


  count.plot(kind = 'pie', explode = [0, 0.1], 

              figsize = (6, 6), autopct = '%1.1f%%', shadow = True)
  plt.ylabel("Loan: Fully Paid Vs. Not Fully Paid")
  plt.legend(["Fully Paid", "Not Fully Paid"])
  plt.show()


# Visualize the proportion of borrowers
show_loan_distrib(loan_data)

Distribución de los prestatarios en el conjunto de datos

En el gráfico anterior, observamos que el 84 % de los prestatarios devolvieron sus préstamos, y solo el 16 % no los devolvieron, lo que hace que el conjunto de datos esté realmente desequilibrado.

Tipos de variables

Antes de seguir adelante, tenemos que comprobar el tipo de las variables para poder codificar las que deban codificarse. 

Observamos que todas las columnas son variables continuas, excepto el atributo purpose, que debe codificarse. 

Tipo de las variables de los datos de préstamo antes de la codificación

# Check column types
print(loan_data.dtypes)

Tipo de las variables de los datos de préstamo después de la codificación

encoded_loan_data = pd.get_dummies(loan_data, prefix="purpose",   

                                   drop_first=True)
print(encoded_loan_data.dtypes)

Separar los datos en datos de entrenamiento y de prueba

X = encoded_loan_data.drop('not.fully.paid', axis = 1)
y = encoded_loan_data['not.fully.paid']


X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, 

                                           stratify = y, random_state=2022)

Aplicación de las estrategias de muestreo 

Exploraremos aquí dos estrategias de muestreo: el submuestreo aleatorio y el sobremuestreo SMOTE.

Submuestreo aleatorio 

Submuestrearemos la clase mayoritaria, que corresponde a "fully paid" (clase 0). 

X_train_cp = X_train.copy()
X_train_cp['not.fully.paid'] = y_train
y_0 = X_train_cp[X_train_cp['not.fully.paid'] == 0]
y_1 = X_train_cp[X_train_cp['not.fully.paid'] == 1]
y_0_undersample = y_0.sample(y_1.shape[0])
loan_data_undersample = pd.concat([y_0_undersample, y_1], axis = 0)


# Visualize the proportion of borrowers
show_loan_distrib(loan_data_undersample)

Distribución de los prestatarios tras submuestrear a la mayoría

Sobremuestreo SMOTE

Realiza un sobremuestreo en la clase minoritaria

smote = SMOTE(sampling_strategy='minority')
X_train_SMOTE, y_train_SMOTE = smote.fit_resample(X_train,y_train)
# Visualize the proportion of borrowers
show_loan_distrib(y_train_SMOTE)

Tras aplicar las estrategias de muestreo, observamos que el conjunto de datos se distribuye por igual entre los distintos tipos de prestatarios.

Aplicación de algunos algoritmos de clasificación de machine learning

En esta sección aplicaremos estos dos algoritmos de clasificación al conjunto de datos muestreado con smote SMOTE. El mismo enfoque de entrenamiento puede aplicarse también a los datos submuestreados. 

Regresión logística 

Se trata de un algoritmo explicable. Clasifica un punto de datos modelando su probabilidad de pertenecer a una clase determinada mediante la función sigmoide. 

X = loan_data_undersample.drop('not.fully.paid', axis = 1)
y = loan_data_undersample['not.fully.paid']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.15, stratify = y, random_state=2022)
logistic_classifier = LogisticRegression()
logistic_classifier.fit(X_train, y_train)
y_pred = logistic_classifier.predict(X_test)
print(confusion_matrix(y_test,y_pred))
print(classification_report(y_test,y_pred))

Informe de clasificación para la regresión logística

Máquinas de vectores de soporte 

Este algoritmo puede utilizarse tanto para la clasificación como para la regresión. Aprende a trazar el hiperplano (límite de decisión) utilizando el principio de maximización del margen. Este límite de decisión se traza a través de los dos vectores de soporte más cercanos. 

SVM proporciona una estrategia de transformación llamada trucos del kernel que se utiliza para proyectar datos separables no lineales en un espacio de dimensión superior para hacerlos linealmente separables. 

from sklearn.svm import SVC
svc_classifier = SVC(kernel='linear')
svc_classifier.fit(X_train, y_train)


# Make Prediction & print the result
y_pred = svc_classifier.predict(X_test)

print(classification_report(y_test,y_pred))

Informe de clasificación para SVM en los datos submuestreados

Por supuesto, estos resultados pueden mejorarse con más creación de atributos y ajuste fino. Sin embargo, son mejores que el uso de los datos originales desequilibrados. 

XGBoost

Este algoritmo es una extensión de un conocido algoritmo llamado árboles con potenciación del gradiente. Es un gran candidato no solo para combatir el sobreajuste, sino también por su velocidad y rendimiento.

Para abreviar, puedes consultar Machine learning con modelos basados en árboles en Python y Machine learning con modelos basados en árboles en R. En estos cursos aprenderás a utilizar tanto Python como R para implementar modelos basados en árboles. 

Conclusión

Este blog conceptual ha cubierto el aspecto principal de las clasificaciones en machine learning y también te ha proporcionado algunos ejemplos de diferentes dominios a los que se aplican. Por último, se ha tratado la implementación de regresión logística y máquina de vectores de soporte tras realizar las estrategias de submuestreo y sobremuestreo SMOTE para generar un conjunto de datos equilibrado para el entrenamiento de los modelos. 

Esperamos que te haya ayudado a comprender mejor este tema de la clasificación en machine learning. Puedes ampliar tu aprendizaje siguiendo el programa Científico de machine learning con Python, que abarca el aprendizaje supervisado, no supervisado y profundo. También proporciona una buena introducción al procesamiento del lenguaje natural, el procesamiento de imágenes, Spark y Keras. 

Preguntas frecuentes sobre clasificación

¿Cuáles son los distintos tipos de kernels en SVM?

Los kernels populares en SVM son kernel lineal, kernel polinómico, kernel gaussiano, función de base radial (RBF), kernel RBF de Laplace, kernel sigmoide, kernel Anova y kernel de función de Bessel.

¿Por qué utilizamos la clasificación?

La clasificación es un método de machine learning supervisado que se utiliza para prever la etiqueta correcta de unos datos de entrada dados.

¿Qué algoritmos pueden utilizarse tanto para la regresión como para la clasificación?

Podemos utilizar SVM y redes neuronales.

¿Qué algoritmo es mejor para la clasificación multiclase?

Existen varios algoritmos, pero los más populares son k vecinos más próximos, árboles de decisión, ingenuo Bayes, bosque aleatorio y potenciación del gradiente.

¿Qué algoritmo de clasificación es mejor para un conjunto de datos pequeño?

Cuando se trabaja con conjuntos de datos pequeños,regresión logística, SVM e ingenuo Bayes tienden a tener una mejor generalización.

Temas

Cursos de machine learning

curso

Supervised Learning in R: Classification

4 horas
88.8K
In this course you will learn the basics of machine learning for classification.
See DetailsRight Arrow
Start Course
Ver másRight Arrow
Relacionado
Machine Learning Concept

blog

¿Qué es el machine learning? Definición, tipos, herramientas y más

Descubre todo lo que necesitas saber sobre el machine learning en 2023, incluidos sus tipos, usos, carreras profesionales y cómo iniciarte en el sector.
Matt Crabtree's photo

Matt Crabtree

14 min

blog

8 modelos de machine learning explicados en 20 minutos

Descubre todo lo que necesitas saber sobre los tipos de modelos de machine learning, incluyendo para qué se utilizan y ejemplos de cómo ponerlos en práctica.
Natassha Selvaraj's photo

Natassha Selvaraj

25 min

blog

Machine learning supervisado

Descubre qué es el machine learning supervisado, en qué se diferencia del machine learning no supervisado y cómo funcionan algunos algoritmos esenciales del machine learning supervisado
Moez Ali 's photo

Moez Ali

8 min

blog

¿Qué es un algoritmo?

Aprende algoritmos y su importancia en el machine learning. Comprende cómo los algoritmos resuelven problemas y realizan tareas con pasos bien definidos.
DataCamp Team's photo

DataCamp Team

11 min

Machine Learning

blog

25 proyectos de machine learning para todos los niveles

Proyectos de machine learning para principiantes, estudiantes de último curso y profesionales. La lista consta de proyectos guiados, tutoriales y código fuente de ejemplo.
Abid Ali Awan's photo

Abid Ali Awan

20 min

blog

¿Qué es un modelo generativo?

Los modelos generativos utilizan el machine learning para descubrir patrones en los datos y generar datos nuevos. Conoce su importancia y sus aplicaciones en la IA.
Abid Ali Awan's photo

Abid Ali Awan

11 min

See MoreSee More