Fundamentos Matemáticos de los Algoritmos de Aprendizaje Automático en Scikit-learn
1. Regresión Lineal
La regresión lineal busca ajustar un modelo lineal a los datos para predecir una variable continua. Matemáticamente se representa como:
\[ y = \mathbf{X} \boldsymbol{\beta} + \epsilon \]
donde:
- \( y \): Vector de valores de la variable dependiente (n x 1).
- \( \mathbf{X} \): Matriz de características (n x p), donde \( n \) es el número de ejemplos y \( p \) el número de características.
- \( \boldsymbol{\beta} \): Vector de coeficientes del modelo (p x 1) que se estima.
- \( \epsilon \): Vector de términos de error (n x 1), que se asume normalmente distribuido con media cero.
Función de pérdida: El **Error Cuadrático Medio (MSE)** mide la calidad del ajuste. La función objetivo a minimizar es:
\[ \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \mathbf{x_i}^T \boldsymbol{\beta})^2 \]
donde:
- \( y_i \): Valor verdadero de la variable dependiente para el \( i \)-ésimo ejemplo.
- \( \mathbf{x_i} \): Vector de características del \( i \)-ésimo ejemplo.
**Solución analítica**: La estimación de \( \boldsymbol{\beta} \) se obtiene mediante la fórmula cerrada:
\[ \hat{\boldsymbol{\beta}} = (\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{y} \]
2. Máquinas de Vectores de Soporte (SVM)
Las Máquinas de Vectores de Soporte (SVM) buscan un hiperplano que separa las clases con el margen máximo. Para un problema de clasificación binaria, el objetivo es resolver:
\[ \text{minimize} \quad \frac{1}{2} \| \mathbf{w} \|^2 \]
\[ \text{subject to} \quad y_i (\mathbf{w} \cdot \mathbf{x_i} + b) \geq 1 \]
donde:
- \( \mathbf{w} \): Vector de pesos (p x 1).
- \( b \): Sesgo (escalar).
- \( y_i \): Etiqueta de clase del \( i \)-ésimo ejemplo (+1 o -1).
- \( \mathbf{x_i} \): Vector de características del \( i \)-ésimo ejemplo.
Función de pérdida: La pérdida de margen (hinge loss) penaliza las instancias mal clasificadas:
\[ L(\mathbf{w}, b) = \sum_{i=1}^{n} \max(0, 1 - y_i (\mathbf{w} \cdot \mathbf{x_i} + b)) \]
Kernels: Para problemas no lineales, se utilizan funciones kernel, como el kernel RBF (Radial Basis Function):
\[ K(\mathbf{x_i}, \mathbf{x_j}) = \exp\left(-\frac{\|\mathbf{x_i} - \mathbf{x_j}\|^2}{2\sigma^2}\right) \]
donde \( \sigma \) es el parámetro del kernel que controla la amplitud de la influencia de cada punto de datos.
3. Redes Neuronales
Las redes neuronales consisten en capas de neuronas con funciones de activación. La salida de una neurona se calcula como:
\[ a_j = \phi\left(\sum_{i=1}^{n} w_{ij} x_i + b_j\right) \]
donde:
- \( a_j \): Activación de la \( j \)-ésima neurona.
- \( w_{ij} \): Peso de la conexión entre la \( i \)-ésima entrada y la \( j \)-ésima neurona.
- \( x_i \): Entrada \( i \)-ésima.
- \( b_j \): Sesgo de la \( j \)-ésima neurona.
- \( \phi \): Función de activación (por ejemplo, ReLU o sigmoide).
Propagación hacia adelante: La salida final se obtiene propagando los datos a través de las capas de la red.
Retropropagación: El entrenamiento se realiza minimizando una función de pérdida (como la entropía cruzada para clasificación). La actualización de pesos se realiza utilizando el descenso del gradiente y el cálculo del gradiente de la función de pérdida respecto a los pesos:
\[ \Delta w_{ij} = -\eta \frac{\partial L}{\partial w_{ij}} \]
donde \( \eta \) es la tasa de aprendizaje.
4. Árboles de Decisión
Los árboles de decisión dividen los datos en función de características específicas para tomar decisiones. La división se elige para maximizar la ganancia de información o minimizar la impureza:
- Índice de Gini: Mide la pureza de una partición:
\[ Gini = 1 - \sum_{k=1}^{K} p_k^2 \]
donde:
- \( p_k \): Proporción de ejemplos de la clase \( k \) en el nodo.
- \( K \): Número total de clases.
- Entropía: Mide la cantidad de incertidumbre o desorden en un nodo:
\[ Entropía = -\sum_{k=1}^{K} p_k \log(p_k) \]
Criterio de división: El árbol se construye seleccionando la característica y el umbral que maximicen la ganancia de información o minimicen la impureza.
5. Ensamblajes
Los métodos de ensamblaje combinan varios modelos para mejorar el rendimiento general:
- Random Forest: Consiste en un conjunto de árboles de decisión entrenados en subconjuntos aleatorios de datos y características. La predicción final es un promedio de las predicciones de los árboles individuales.
- Gradient Boosting: Construye un modelo de manera secuencial, donde cada modelo posterior corrige los errores del modelo anterior. La predicción final es una combinación ponderada de todos los modelos.
Función de pérdida: Cada modelo en el ensamblaje se entrena para minimizar la función de pérdida residual, como el error cuadrático medio para regresión o la entropía cruzada para clasificación.
Métodos Matemáticos para la Evaluación y Validación de Modelos en Scikit-learn
La evaluación y validación de modelos en Scikit-learn son procesos críticos para garantizar que un modelo de aprendizaje automático no solo se ajuste bien a los datos de entrenamiento, sino que también generalice efectivamente a datos nuevos. Estos procesos están respaldados por una variedad de métodos matemáticos que proporcionan métricas precisas para medir el rendimiento del modelo. Vamos a explorar estos métodos con un enfoque en los fundamentos matemáticos subyacentes.
Evaluación de Modelos de Regresión
1. Error Cuadrático Medio (MSE)
El Error Cuadrático Medio (MSE) mide la media de los errores al cuadrado entre las predicciones del modelo (\(\hat{y}_i\)) y los valores reales (\(y_i\)). Se calcula mediante:
\[
\text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2
\]
Donde:
- \( y_i \) es el valor real del \(i\)-ésimo ejemplo.
- \( \hat{y}_i \) es el valor predicho para el \(i\)-ésimo ejemplo.
- \( n \) es el número total de ejemplos.
El MSE penaliza más los errores grandes debido al cuadrado de las diferencias. Es útil para evaluar la precisión de las predicciones en términos absolutos, aunque su magnitud depende de la escala de los datos.
2. Raíz del Error Cuadrático Medio (RMSE)
La RMSE se obtiene tomando la raíz cuadrada del MSE, lo que da el error en las mismas unidades que la variable de salida:
\[
\text{RMSE} = \sqrt{\text{MSE}}
\]
Esto facilita la interpretación de los errores del modelo, ya que se expresa en las mismas unidades que la variable dependiente.
3. Error Absoluto Medio (MAE)
El MAE mide la media de los errores absolutos y se calcula como:
\[
\text{MAE} = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i|
\]
Donde el símbolo \( |y_i - \hat{y}_i| \) representa el valor absoluto del error en el \(i\)-ésimo ejemplo. A diferencia del MSE, el MAE no penaliza los errores grandes de manera tan severa, proporcionando una medida más robusta cuando los errores pueden variar en magnitud.
4. Coeficiente de Determinación (R²)
El Coeficiente de Determinación (\( R^2 \)) evalúa la proporción de la variabilidad en la variable dependiente que es explicada por el modelo. Se calcula como:
\[
R^2 = 1 - \frac{\sum_{i=1}^{n} (y_i - \hat{y}_i)^2}{\sum_{i=1}^{n} (y_i - \bar{y})^2}
\]
Donde:
- \( \bar{y} \) es la media de los valores reales.
Un \( R^2 \) de 1 indica un ajuste perfecto, mientras que un valor cercano a 0 sugiere que el modelo no explica bien la variabilidad de los datos.
Evaluación de Modelos de Clasificación
1. Exactitud (Accuracy)
La exactitud mide la proporción de clasificaciones correctas sobre el total de ejemplos. Se calcula como:
\[
\text{Accuracy} = \frac{\text{Número de clasificaciones correctas}}{\text{Número total de ejemplos}}
\]
Esta métrica es útil cuando las clases están equilibradas, pero puede ser engañosa en casos de desequilibrio de clases.
2. Precisión (Precision)
La precisión mide la proporción de verdaderos positivos sobre el total de predicciones positivas. Se define como:
\[
\text{Precision} = \frac{\text{VP}}{\text{VP} + \text{FP}}
\]
Donde:
- VP (Verdaderos Positivos) son las instancias correctamente clasificadas como positivas.
- FP (Falsos Positivos) son las instancias incorrectamente clasificadas como positivas.
La precisión es importante cuando el costo de los falsos positivos es alto.
3. Exhaustividad (Recall)
La exhaustividad mide la proporción de verdaderos positivos sobre el total de casos positivos reales:
\[
\text{Recall} = \frac{\text{VP}}{\text{VP} + \text{FN}}
\]
Donde:
- FN (Falsos Negativos) son las instancias que son positivas pero clasificadas incorrectamente como negativas.
La exhaustividad es crucial cuando el costo de los falsos negativos es alto.
4. F1-Score
El F1-Score combina precisión y exhaustividad en una métrica equilibrada:
\[
F1 = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}}
\]
El F1-Score es útil para obtener una medida equilibrada del rendimiento del modelo cuando se necesita una compensación entre precisión y exhaustividad.
5. Curva ROC y AUC
La Curva ROC (Receiver Operating Characteristic) grafica la Tasa de Verdaderos Positivos (TPR) frente a la Tasa de Falsos Positivos (FPR) a diferentes umbrales. La TPR se calcula como:
\[
\text{TPR} = \frac{\text{VP}}{\text{VP} + \text{FN}}
\]
Y la FPR se calcula como:
\[
\text{FPR} = \frac{\text{FP}}{\text{FP} + \text{TN}}
\]
Donde TN (Verdaderos Negativos) son las instancias correctamente clasificadas como negativas.
El AUC (Área Bajo la Curva) mide el área bajo la curva ROC. Un AUC de 1 indica un modelo perfecto, mientras que un AUC de 0.5 sugiere un rendimiento no mejor que el azar.
Validación Cruzada
La validación cruzada implica dividir los datos en \( k \) pliegues y realizar el entrenamiento y la evaluación del modelo \( k \) veces. En cada iteración, un pliegue diferente se utiliza como conjunto de prueba, mientras que los \( k-1 \) pliegues restantes se utilizan para el entrenamiento. Esto se representa matemáticamente como:
\[
\text{Promedio de Métricas} = \frac{1}{k} \sum_{j=1}^{k} \text{Métrica}_{j}
\]
Donde \( \text{Métrica}_{j} \) es la métrica de evaluación obtenida en la \(j\)-ésima iteración.
Este enfoque proporciona una estimación más robusta del rendimiento del modelo al considerar múltiples particiones de los datos, reduciendo así la varianza en la evaluación.
En resumen, los métodos matemáticos para la evaluación y validación de modelos en Scikit-learn ofrecen herramientas esenciales para medir la efectividad de los modelos, asegurando que no solo se ajusten bien a los datos de entrenamiento, sino que también generalicen adecuadamente a nuevos datos.
Técnicas Matemáticas para el Preprocesamiento de Datos en Scikit-learn
El preprocesamiento de datos es un paso crucial en el flujo de trabajo de aprendizaje automático, ya que prepara los datos para ser utilizados por los modelos. Scikit-learn ofrece una variedad de técnicas matemáticas para transformar y preparar los datos, asegurando que los modelos se ajusten adecuadamente y se comporten de manera óptima. A continuación, exploraremos las principales técnicas matemáticas para el preprocesamiento de datos en Scikit-learn, centrándonos en los fundamentos matemáticos subyacentes.
1. Normalización de Datos
La normalización es el proceso de ajustar los valores de las características para que tengan una escala común. Esto es importante para algoritmos que dependen de distancias, como el k-NN y el SVM.
- Escalado Min-Max
La normalización Min-Max transforma los datos para que estén en un rango específico, típicamente [0, 1]. La fórmula para transformar un valor \(x\) es:
\[
x' = \frac{x - x_{\text{min}}}{x_{\text{max}} - x_{\text{min}}}
\]
Donde:
- \(x_{\text{min}}\) es el valor mínimo de la característica.
- \(x_{\text{max}}\) es el valor máximo de la característica.
- Estandarización
La estandarización transforma los datos para que tengan una media de 0 y una desviación estándar de 1. La fórmula es:
\[
x' = \frac{x - \mu}{\sigma}
\]
Donde:
- \(\mu\) es la media de la característica.
- \(\sigma\) es la desviación estándar de la característica.
Esta técnica es útil cuando los datos no siguen una distribución normal o cuando se utilizan algoritmos sensibles a la escala de los datos.
2. Transformación de Variables
Las transformaciones de variables ayudan a mejorar la distribución de los datos y a hacer que los modelos sean más efectivos.
- Transformación Logarítmica
La transformación logarítmica se aplica para reducir la asimetría y estabilizar la varianza. Se define como:
\[
x' = \log(x + \epsilon)
\]
Donde \(\epsilon\) es un valor pequeño para evitar el logaritmo de cero. Esta transformación es útil cuando los datos tienen una distribución sesgada a la derecha.
- Transformación de Potencia (Box-Cox)
La transformación Box-Cox es una familia de transformaciones que incluyen la logarítmica como un caso especial. Se define como:
\[
x' = \frac{x^\lambda - 1}{\lambda}
\]
para \(\lambda \neq 0\) y \(x' = \log(x)\) para \(\lambda = 0\). Esta transformación ajusta el parámetro \(\lambda\) para encontrar la mejor forma de transformar los datos, mejorando la normalidad de la distribución.
3. Reducción de Dimensionalidad
La reducción de dimensionalidad se utiliza para simplificar el modelo y reducir el riesgo de sobreajuste al eliminar características redundantes o irrelevantes.
- Análisis de Componentes Principales (PCA)
PCA es una técnica matemática que transforma los datos a un nuevo sistema de coordenadas basado en la varianza máxima. Se basa en la descomposición en valores singulares (SVD) de la matriz de datos. La fórmula principal es:
\[
X = U \Sigma V^T
\]
Donde:
- \(U\) es la matriz de vectores singulares izquierdos.
- \(\Sigma\) es una matriz diagonal con los valores singulares.
- \(V^T\) es la matriz de vectores singulares derechos transpuestos.
PCA reduce la dimensionalidad proyectando los datos en los componentes principales, que son combinaciones lineales de las características originales.
- Análisis de Factores
El Análisis de Factores es una técnica similar a PCA pero con un enfoque en identificar las estructuras subyacentes en los datos. Se basa en el modelo:
\[
X = LF^T + E
\]
Donde:
- \(L\) es la matriz de cargas de los factores.
- \(F\) es la matriz de factores latentes.
- \(E\) es el error residual.
Esta técnica es útil cuando se busca entender la relación entre variables observadas y factores latentes.
4. Manejo de Valores Perdidos
Los valores perdidos deben ser manejados de manera efectiva para evitar que afecten la calidad del modelo.
- Imputación por la Media/Mediana/Moda
La imputación reemplaza los valores faltantes con la media, mediana o moda de la característica. Matemáticamente, se define como:
\[
x_i' = \text{media/mediana/moda}
\]
Esta técnica es sencilla y puede ser efectiva si los datos están faltando al azar y no tienen un patrón específico.
- Imputación Basada en el K-Nearest Neighbors (KNN)
La imputación KNN utiliza la similitud entre ejemplos para predecir los valores faltantes. Para un valor faltante en el \(i\)-ésimo ejemplo, se utiliza la fórmula ponderada:
\[
x_i' = \frac{\sum_{j=1}^{k} w_j \cdot x_{ij}}{\sum_{j=1}^{k} w_j}
\]
Donde:
- \(x_{ij}\) es el valor de la característica \(j\) en el \(i\)-ésimo vecino.
- \(w_j\) es el peso del \(j\)-ésimo vecino, generalmente basado en la distancia.
5. Codificación de Variables Categóricas
Las variables categóricas deben ser convertidas en formato numérico para ser utilizadas por los algoritmos de aprendizaje automático.
- Codificación One-Hot
La codificación one-hot convierte cada categoría en una nueva columna binaria. Para una característica con \(k\) categorías, se crean \(k\) columnas donde solo una de ellas tiene el valor 1. La fórmula para la columna \(j\) es:
\[
x_{ij} =
\begin{cases}
1 & \text{si } x_i = j \\
0 & \text{si } x_i \neq j
\end{cases}
\]
- Codificación de Etiquetas
La codificación de etiquetas asigna un número entero a cada categoría. La fórmula para convertir una categoría \(c\) a un número entero es:
\[
x_i = \text{índice}(c)
\]
Donde \(\text{índice}(c)\) es el índice numérico asignado a la categoría \(c\).