Saltar al contenido
Aprendizaje Automático Supervisado

Introducción al Aprendizaje Automático Supervisado

Introducción

El aprendizaje automático supervisado es una rama del aprendizaje automático que se ocupa de la predicción de variables etiquetadas o clasificación de variables categóricas. En este enfoque, se proporciona un conjunto de datos de entrenamiento que coadyuvará al algoritmo a aprender a predecir valores objetivos a partir de un nuevo conjunto de datos. El objetivo principal del aprendizaje automático supervisado es crear modelos precisos y robustos que sean capaces de generalizar el comportamiento de un sistema en tiempo real.

El proceso de aprendizaje comienza con la extracción de características o atributos, los cuales deben ser seleccionados cuidadosamente para maximizar la precisión del modelo. Luego, se entrena un algoritmo de aprendizaje supervisado utilizando un conjunto de datos de entrenamiento para aprender a hacer predicciones precisas. Una vez entrenado, el modelo se puede utilizar para predecir valores objetivos a partir de nuevos datos, lo que permite una automatización efectiva de muchas tareas, incluyendo la clasificación de correos electrónicos, el diagnóstico médico y la detección de fraudes.

En términos generales, el aprendizaje automático supervisado es un enfoque poderoso para el análisis de datos y permite encontrar patrones y relaciones en grandes conjuntos de datos, como la inteligencia artificial, la robótica y el procesamiento del lenguaje natural.

Resumen

El Aprendizaje Automático Supervisado es una rama de la inteligencia artificial que se enfoca en enseñar a una computadora a aprender a partir de un conjunto de datos previamente etiquetados. El objetivo principal es entrenar al modelo de aprendizaje automático para realizar predicciones precisas sobre nuevos datos que se le presenten. Para llevar a cabo esta tarea, se utilizan algoritmos y técnicas matemáticas que permiten detectar patrones y correlaciones dentro de los datos de entrenamiento. El proceso de entrenamiento se realiza a través de la retroalimentación: el modelo genera predicciones para un conjunto de datos de prueba y las comparaciones con los valores de etiquetas correctos ayudan al algoritmo a aprender y mejorar su capacidad predictiva.

En el Aprendizaje Automático Supervisado, los datos de entrenamiento se dividen en dos categorías: variables independientes o características (también llamados "predictores" o "atributos") y variables dependientes o respuestas (también conocidos como "objetivos" o "etiquetas"). Hay una variedad de técnicas de Aprendizaje Automático Supervisado, incluyendo la regresión lineal, la regresión logística, los árboles de decisión, las redes neuronales artificiales y los algoritmos de clasificación. Cada técnica tiene sus propias ventajas y desventajas, y la elección del algoritmo depende del tipo de datos y del objetivo de la predicción. En resumen, el Aprendizaje Automático Supervisado es una técnica poderosa que permite a las computadoras aprender a partir de ejemplos etiquetados y realizar predicciones precisas sobre nuevos datos.

Es ampliamente utilizado en una variedad de aplicaciones, incluyendo la clasificación de correos electrónicos no deseados, la detección de fraudes en tarjetas de crédito, la identificación de objetos en imágenes y muchas otras aplicaciones.

Aplicación teórica

El aprendizaje automático supervisado es una de las ramas más importantes y ampliamente utilizadas dentro del aprendizaje automático. En esencia, consiste en entrenar un modelo para que aprenda una relación funcional entre las entradas (features) y las salidas (targets), a partir de ejemplos etiquetados.

Definición General

En el aprendizaje supervisado, se nos proporciona un conjunto de datos de entrenamiento \(\mathcal{D} = \{(x_i, y_i)\}_{i=1}^{n}\), donde cada \(x_i \in \mathbb{R}^d\) es un vector de características, y \(y_i \in \mathbb{R}\) (o \(y_i \in \{1, \dots, k\}\) en el caso de clasificación) es la etiqueta asociada o variable objetivo.

El objetivo es aprender una función \(f(x)\), que puede ser paramétrica o no paramétrica, tal que dada una nueva entrada \(x\), se pueda predecir \(y\) con una alta precisión. Formalmente, buscamos una función que minimice la diferencia entre las predicciones y los valores reales:

\[
f: \mathbb{R}^d \rightarrow \mathbb{R} \quad \text{o} \quad f: \mathbb{R}^d \rightarrow \{1, \dots, k\}
\]

Dependiendo de la naturaleza del problema, podemos estar en dos grandes tipos de tareas:

- Regresión: Cuando la salida es continua (\(y_i \in \mathbb{R}\)).
- Clasificación: Cuando la salida es discreta (\(y_i \in \{1, \dots, k\}\)).

Enfoque Matemático

Matemáticamente, el objetivo principal en el aprendizaje supervisado es estimar una función \(f_\theta(x)\), donde \(\theta\) representa los parámetros del modelo (como los pesos de una red neuronal o los coeficientes en la regresión lineal). Esto se puede expresar como la siguiente ecuación:

\[
y = f_\theta(x) + \epsilon
\]

Donde:

- \(f_\theta(x)\) es la predicción del modelo.
- \(\epsilon\) es el término de error o ruido que puede provenir de la aleatoriedad o de factores que no hemos capturado en \(x\).

El objetivo es encontrar los parámetros \(\theta\) que minimicen una función de pérdida, que cuantifica el error de las predicciones del modelo. Para ello, utilizamos algún algoritmo de optimización que ajuste los parámetros.

Función de Pérdida

La función de pérdida (o loss function) mide el grado de error en las predicciones del modelo respecto a las salidas reales. Para problemas de regresión, una de las funciones de pérdida más comunes es el error cuadrático medio (MSE):

\[
L(\theta) = \frac{1}{n} \sum_{i=1}^{n} \left( y_i - f_\theta(x_i) \right)^2
\]

El objetivo es minimizar \(L(\theta)\) respecto a \(\theta\), lo que se puede hacer mediante técnicas de optimización como el descenso de gradiente. En el caso de clasificación, una función de pérdida común es la entropía cruzada:

\[
L(\theta) = - \frac{1}{n} \sum_{i=1}^{n} \sum_{k=1}^{K} \mathbb{1}\{y_i = k\} \log p_\theta(y_i = k | x_i)
\]

Donde \(p_\theta(y_i = k | x_i)\) es la probabilidad predicha por el modelo para la clase \(k\).

Supuestos y Generalización

En el aprendizaje automático supervisado, hacemos una suposición crítica: la suposición de que los datos de entrenamiento y los datos de prueba provienen de la misma distribución subyacente. Este supuesto se conoce como el supuesto de independencia e idéntica distribución (i.i.d.). Es decir, tanto el conjunto de entrenamiento como los futuros ejemplos con los que el modelo se va a enfrentar en producción son instancias independientes y están distribuidas de manera idéntica.

Riesgo empírico y generalización

Para un modelo que ajusta los datos de entrenamiento, uno de los desafíos principales es garantizar que generalice bien a datos no vistos. Esto se formaliza mediante el concepto de riesgo empírico y riesgo esperado:

- Riesgo empírico: Es la pérdida promedio sobre el conjunto de datos de entrenamiento, \(\mathcal{D}\).

\[
R_{emp}(f) = \frac{1}{n} \sum_{i=1}^{n} L(y_i, f(x_i))
\]

- Riesgo esperado: Es el valor esperado de la pérdida sobre toda la distribución subyacente de los datos.

\[
R(f) = \mathbb{E}_{(x, y) \sim P(x, y)} [L(y, f(x))]
\]

Idealmente, nos gustaría minimizar el riesgo esperado, pero como no conocemos la verdadera distribución \(P(x, y)\), minimizamos el riesgo empírico como un proxy.

Compromiso Sesgo-Varianza

El rendimiento de un modelo supervisado también puede analizarse mediante el compromiso entre sesgo y varianza:

- Sesgo: Representa el error debido a las suposiciones inherentes del modelo. Un modelo con alto sesgo es un modelo que subajusta (underfitting).
- Varianza: Representa la sensibilidad del modelo a pequeñas variaciones en los datos de entrenamiento. Un modelo con alta varianza tiende a sobreajustar (overfitting).

Matemáticamente, el error esperado en una nueva predicción puede descomponerse como:

\[
\mathbb{E} \left[ (y - f(x))^2 \right] = \text{Sesgo}^2 + \text{Varianza} + \text{Ruido}
\]

Algoritmos Clásicos

Algunos de los algoritmos más comunes en el aprendizaje supervisado son:

- Regresión Lineal: Busca una relación lineal entre las características y la variable objetivo. El modelo es \(y = w^T x + b\), y los parámetros \(w\) y \(b\) se estiman minimizando el error cuadrático.
  
- Regresión Logística: Utilizada para problemas de clasificación binaria, donde se modela la probabilidad de pertenencia a una clase como una función logística de una combinación lineal de las características.

- Máquinas de soporte vectorial (SVM): Un algoritmo que encuentra un hiperplano que separa las clases de manera óptima en el espacio de características.

- Árboles de decisión: Algoritmo que divide el espacio de características de manera recursiva para crear un modelo de decisión.

- Redes neuronales: Modelos altamente flexibles que pueden aproximar funciones muy complejas mediante capas de neuronas artificiales y técnicas como el descenso de gradiente para ajustar los pesos.

Evaluación del Modelo

Finalmente, una parte clave del aprendizaje supervisado es la evaluación del modelo. Para esto se utilizan métricas como:

- MSE para regresión.
- Precisión, recall, F1-score y curva ROC para clasificación.
  
También se suelen aplicar técnicas como la validación cruzada para evaluar el rendimiento del modelo en diferentes subconjuntos del conjunto de datos.

 

Aplicación práctica

Te puedo dar un ejemplo práctico de Aprendizaje Automático Supervisado en Python utilizando la biblioteca Scikit-Learn. Imaginemos que tenemos un conjunto de datos que contiene información sobre 50 pacientes con diabetes. La información incluye variables como la edad, el índice de masa corporal, la presión arterial y otros factores relacionados con la salud. También tenemos información sobre si cada paciente fue diagnosticado con diabetes o no (0 para no, 1 para sí). El objetivo es utilizar este conjunto de datos para crear un modelo de aprendizaje automático que pueda predecir si un paciente es diabético o no en función de las variables de entrada.


import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score, confusion_matrix

# Cargar datos
dataset = pd.read_csv('diabetes.csv')

A continuación, dividimos nuestro conjunto de datos en datos de entrenamiento y datos de prueba:


# Dividir datos en entrenamiento y prueba
X = dataset.drop('diabetes', axis=1)
y = dataset['diabetes']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

Luego, creamos nuestro modelo de árbol de decisión y lo entrenamos con los datos de entrenamiento:


# Crear modelo
model = DecisionTreeClassifier()

# Entrenar modelo
model.fit(X_train, y_train)

Finalmente, hacemos predicciones en los datos de prueba y evaluamos la precisión de nuestro modelo:


# Hacer predicciones
y_pred = model.predict(X_test)

# Evaluar precisión
accuracy = accuracy_score(y_test, y_pred)
conf_matrix = confusion_matrix(y_test, y_pred)
print("Precisión:", accuracy)
print("Matriz de confusión:", conf_matrix)

Este es solo un ejemplo básico de Aprendizaje Automático Supervisado en Python. A medida que se realice una práctica más avanzada, se podrán aplicar opciones más diversas de modelos y métricas de evaluación.