La regresión logística es un algoritmo de aprendizaje supervisado utilizado principalmente para tareas de clasificación binaria. A diferencia de la regresión lineal, que se utiliza para predecir valores continuos, la regresión logística predice la probabilidad de que una observación pertenezca a una de dos clases posibles.
Conceptos Clave
- Función Sigmoide
La regresión logística utiliza la función sigmoide para mapear cualquier valor real a un rango entre 0 y 1. La función sigmoide se define como:
\[ \sigma(z) = \frac{1}{1 + e^{-z}} \]
Donde \( z \) es una combinación lineal de las características de entrada.
- Probabilidad y Clasificación
La salida de la función sigmoide se interpreta como la probabilidad de que la observación pertenezca a la clase positiva (clase 1). Si la probabilidad es mayor o igual a 0.5, la observación se clasifica como clase 1; de lo contrario, se clasifica como clase 0.
- Función de Costo
La función de costo utilizada en la regresión logística es la entropía cruzada (o log-loss), que mide la diferencia entre las predicciones del modelo y las etiquetas reales. La función de costo se define como:
\[ J(\theta) = -\frac{1}{m} \sum_{i=1}^{m} \left[ y^{(i)} \log(h_\theta(x^{(i)})) + (1 - y^{(i)}) \log(1 - h_\theta(x^{(i)})) \right] \]
Donde:
- \( m \) es el número de ejemplos de entrenamiento.
- \( y^{(i)} \) es la etiqueta real de la \( i \)-ésima observación.
- \( h_\theta(x^{(i)}) \) es la predicción del modelo para la \( i \)-ésima observación.
- Optimización
El objetivo es minimizar la función de costo \( J(\theta) \) para encontrar los parámetros \( \theta \) que mejor ajusten el modelo a los datos. Esto se logra comúnmente mediante el algoritmo de gradiente descendente.
Ejemplo Práctico
Paso 1: Importar Bibliotecas
import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
Paso 2: Cargar y Preprocesar Datos
# Cargar dataset data = pd.read_csv('dataset.csv') # Seleccionar características y etiquetas X = data[['feature1', 'feature2', 'feature3']] y = data['label'] # Dividir en conjunto de entrenamiento y prueba X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Paso 3: Entrenar el Modelo
# Crear el modelo de regresión logística model = LogisticRegression() # Entrenar el modelo model.fit(X_train, y_train)
Paso 4: Evaluar el Modelo
# Realizar predicciones y_pred = model.predict(X_test) # Calcular precisión accuracy = accuracy_score(y_test, y_pred) print(f'Precisión: {accuracy}') # Matriz de confusión conf_matrix = confusion_matrix(y_test, y_pred) print('Matriz de Confusión:') print(conf_matrix) # Reporte de clasificación class_report = classification_report(y_test, y_pred) print('Reporte de Clasificación:') print(class_report)
Ejercicio Práctico
Ejercicio 1: Implementar Regresión Logística
- Cargar un conjunto de datos de su elección.
- Seleccionar características y etiquetas.
- Dividir los datos en conjuntos de entrenamiento y prueba.
- Entrenar un modelo de regresión logística.
- Evaluar el modelo utilizando precisión, matriz de confusión y reporte de clasificación.
Solución
# Paso 1: Importar bibliotecas import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score, confusion_matrix, classification_report # Paso 2: Cargar y preprocesar datos data = pd.read_csv('dataset.csv') X = data[['feature1', 'feature2', 'feature3']] y = data['label'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Paso 3: Entrenar el modelo model = LogisticRegression() model.fit(X_train, y_train) # Paso 4: Evaluar el modelo y_pred = model.predict(X_test) accuracy = accuracy_score(y_test, y_pred) print(f'Precisión: {accuracy}') conf_matrix = confusion_matrix(y_test, y_pred) print('Matriz de Confusión:') print(conf_matrix) class_report = classification_report(y_test, y_pred) print('Reporte de Clasificación:') print(class_report)
Conclusión
La regresión logística es una herramienta poderosa para tareas de clasificación binaria. Al comprender y aplicar los conceptos clave, como la función sigmoide, la función de costo y la optimización, los profesionales pueden construir modelos efectivos para predecir probabilidades y clasificar datos. La práctica con ejemplos y ejercicios refuerza estos conceptos y prepara a los estudiantes para enfrentar problemas del mundo real.
Curso de Machine Learning
Módulo 1: Introducción al Machine Learning
- ¿Qué es el Machine Learning?
- Historia y evolución del Machine Learning
- Tipos de Machine Learning
- Aplicaciones del Machine Learning
Módulo 2: Fundamentos de Estadística y Probabilidad
- Conceptos básicos de estadística
- Distribuciones de probabilidad
- Inferencia estadística
- Teorema de Bayes
Módulo 3: Preprocesamiento de Datos
Módulo 4: Algoritmos de Machine Learning Supervisado
- Regresión lineal
- Regresión logística
- Árboles de decisión
- Máquinas de soporte vectorial (SVM)
- K-Vecinos más cercanos (K-NN)
- Redes neuronales
Módulo 5: Algoritmos de Machine Learning No Supervisado
- Clustering: K-means
- Clustering jerárquico
- Análisis de componentes principales (PCA)
- Análisis de agrupamiento DBSCAN
Módulo 6: Evaluación y Validación de Modelos
Módulo 7: Técnicas Avanzadas y Optimización
- Ensemble Learning
- Gradient Boosting
- Redes neuronales profundas (Deep Learning)
- Optimización de hiperparámetros
Módulo 8: Implementación y Despliegue de Modelos
- Frameworks y bibliotecas populares
- Implementación de modelos en producción
- Mantenimiento y monitoreo de modelos
- Consideraciones éticas y de privacidad
Módulo 9: Proyectos Prácticos
- Proyecto 1: Predicción de precios de viviendas
- Proyecto 2: Clasificación de imágenes
- Proyecto 3: Análisis de sentimientos en redes sociales
- Proyecto 4: Detección de fraudes