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

  1. 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.

  1. 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.

  1. 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.

  1. 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

  1. Cargar un conjunto de datos de su elección.
  2. Seleccionar características y etiquetas.
  3. Dividir los datos en conjuntos de entrenamiento y prueba.
  4. Entrenar un modelo de regresión logística.
  5. 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

Módulo 2: Fundamentos de Estadística y Probabilidad

Módulo 3: Preprocesamiento de Datos

Módulo 4: Algoritmos de Machine Learning Supervisado

Módulo 5: Algoritmos de Machine Learning No Supervisado

Módulo 6: Evaluación y Validación de Modelos

Módulo 7: Técnicas Avanzadas y Optimización

Módulo 8: Implementación y Despliegue de Modelos

Módulo 9: Proyectos Prácticos

Módulo 10: Recursos Adicionales

© Copyright 2024. Todos los derechos reservados