ScikitLearn
Tutorial ScikitLearn: Introducción a la regresión
Scikit Learn: Introducción a la regresión. Aprende a usar Scikit Learn para modelos de regresión en Python, comprendiendo aplicaciones y evaluando rendimiento con métricas clave.
Aprende ScikitLearn GRATIS y certifícate¿Qué es la regresión?
La regresión es un tipo de aprendizaje automático supervisado que se utiliza para modelar y analizar la relación entre una variable dependiente (también conocida como variable objetivo) y una o más variables independientes o predictores. El objetivo principal es predecir el valor continuo de la variable dependiente basándose en los valores de las variables independientes.
En el contexto del machine learning, la regresión permite entender cómo cambia la variable objetivo cuando se modifican los predictores. Esto es esencial para tareas donde se necesita realizar predicciones cuantitativas, como estimar precios inmobiliarios, pronosticar ventas futuras o predecir temperaturas.
Existen diversos modelos de regresión, cada uno con sus propias características y supuestos. Algunos de los más comunes incluyen:
- Regresión lineal: asume una relación lineal entre las variables independientes y la dependiente.
- Regresión polinómica: extiende la regresión lineal al considerar términos polinómicos de las variables independientes.
- Árboles de decisión para regresión: utilizan estructuras arbóreas para modelar relaciones no lineales entre variables.
- Máquinas de soporte vectorial (SVR): emplean funciones de núcleo para manejar relaciones complejas.
En Scikit Learn, una biblioteca ampliamente utilizada en Python para aprendizaje automático, se implementan múltiples algoritmos de regresión. Estos algoritmos permiten ajustar modelos a los datos y realizar predicciones de forma eficiente. A continuación, se presenta un ejemplo básico de cómo entrenar un modelo de regresión lineal simple:
from sklearn.linear_model import LinearRegression
import numpy as np
# Datos de ejemplo
X = np.array([[1], [2], [3], [4], [5]]) # Variable independiente
y = np.array([2, 4, 6, 8, 10]) # Variable dependiente
# Crear y entrenar el modelo
modelo = LinearRegression()
modelo.fit(X, y)
# Realizar una predicción
prediccion = modelo.predict([[6]])
print(f'La predicción para X=6 es {prediccion[0]}')
En este ejemplo, se crea un modelo de regresión lineal utilizando LinearRegression
de Scikit Learn. Se ajusta el modelo a datos sencillos y se realiza una predicción para un nuevo valor. Este proceso es fundamental en tareas de regresión, donde el objetivo es generalizar a partir de datos conocidos para predecir valores desconocidos.
Es importante destacar que la elección del modelo de regresión adecuado depende de la naturaleza de los datos y de la relación entre las variables. Por ello, es esencial entender las suposiciones y limitaciones de cada modelo antes de aplicarlo.
Además, durante el proceso de modelado, es habitual realizar preprocesamiento de datos, como la normalización o el manejo de valores atípicos, para mejorar el rendimiento del modelo. Scikit Learn proporciona herramientas para facilitar estas tareas y construir pipelines eficientes.
¿Qué es un valor continuo a predecir con regresión?
En el ámbito del aprendizaje automático supervisado, un valor continuo es una variable numérica que puede tomar un número infinito de valores dentro de un rango determinado. A diferencia de las variables categóricas, que pertenecen a clases o categorías discretas, las variables continuas representan medidas cuantitativas que pueden ser fraccionadas indefinidamente.
La regresión es la técnica utilizada para modelar y predecir estos valores continuos. Mediante el análisis de patrones en los datos históricos, los modelos de regresión estiman la relación entre las variables independientes (también conocidas como características o atributos) y la variable dependiente continua que se desea predecir.
Por ejemplo, predecir el precio de una vivienda en función de características como su superficie, número de habitaciones y ubicación es un problema de regresión. El precio es un valor continuo que puede variar ampliamente y no se limita a un conjunto discreto de opciones.
Otro ejemplo común es la estimación de la temperatura para un día específico basándose en datos meteorológicos como la humedad, la presión atmosférica y las condiciones climáticas previas. La temperatura es una variable continua que puede tomar prácticamente cualquier valor dentro de un rango razonable.
Es importante distinguir entre valores continuos y discretos a la hora de seleccionar el modelo adecuado. Los valores discretos, como el resultado de un dado (1 a 6), no requieren técnicas de regresión sino de clasificación. En contraste, los valores continuos requieren modelos capaces de manejar infinitas posibilidades dentro de un rango, lo que hace que la regresión sea la técnica apropiada.
A continuación, se muestra un ejemplo básico de cómo utilizar Scikit Learn para predecir un valor continuo mediante una regresión lineal:
from sklearn.linear_model import LinearRegression
import numpy as np
# Datos de ejemplo
X = np.array([[20], [30], [40], [50], [60]]) # Metros cuadrados de viviendas
y = np.array([150000, 200000, 250000, 300000, 350000]) # Precios correspondientes
# Crear y entrenar el modelo
modelo = LinearRegression()
modelo.fit(X, y)
# Realizar una predicción
nueva_superficie = np.array([[70]])
precio_estimado = modelo.predict(nueva_superficie)
print(f'El precio estimado para una vivienda de {nueva_superficie[0][0]} m² es {precio_estimado[0]:.2f} euros.')
En este código, se utiliza LinearRegression
para crear un modelo que relaciona la superficie de una vivienda con su precio. Tras entrenar el modelo con los datos proporcionados, se puede estimar el precio de una nueva vivienda según su tamaño.
La capacidad de predecir valores continuos es fundamental en numerosos campos, como la economía, la ingeniería y las ciencias naturales. Los modelos de regresión permiten realizar estimaciones precisas que apoyan la toma de decisiones informadas.
Es esencial preparar adecuadamente los datos antes de entrenar un modelo de regresión. Esto implica tareas como la normalización o estandarización de las variables, especialmente cuando se utilizan algoritmos sensibles a la escala de los datos. Además, la detección y manejo de valores atípicos pueden mejorar significativamente el rendimiento del modelo.
¿En qué casos se aplica regresión?
La regresión se utiliza cuando es necesario predecir valores numéricos continuos o comprender las relaciones cuantitativas entre variables. A continuación, se detallan algunos ámbitos donde la regresión es fundamental:
- En economía, es esencial para pronosticar indicadores como el PIB, la inflación o los tipos de cambio. Por ejemplo, los economistas emplean modelos de regresión para estimar el crecimiento económico basándose en variables como el consumo, la inversión y las exportaciones.
- En el ámbito de la salud, ayuda a predecir medidas como la presión arterial, niveles de glucosa o riesgos de enfermedades. Un investigador podría utilizar regresión para analizar cómo factores como la edad, el índice de masa corporal y hábitos de vida influyen en el riesgo cardiovascular.
- En ingeniería, permite modelar y predecir el comportamiento de sistemas físicos. Por ejemplo, un ingeniero puede usar regresión para estimar la vida útil de un componente en función de variables como la carga y las condiciones ambientales.
- En marketing y ventas, es común utilizar regresión para predecir las ventas futuras basándose en datos históricos, inversión publicitaria y tendencias del mercado. Esto permite a las empresas optimizar sus estrategias y maximizar el retorno de inversión.
- En finanzas, la regresión se aplica para valorar activos, analizar riesgos y predecir rendimientos. Un analista financiero podría emplear regresión logística para calcular la probabilidad de impago de un préstamo, considerando variables como historial crediticio e ingresos.
- En el campo de la meteorología, ayuda a predecir condiciones climáticas como temperatura, humedad o precipitaciones. Los meteorólogos utilizan modelos de regresión para mejorar la precisión de los pronósticos y emitir alertas tempranas.
- En ciencias sociales, se utiliza para estudiar relaciones entre variables en demografía, psicología o sociología. Por ejemplo, analizar cómo el nivel educativo y la situación socioeconómica afectan al empleo mediante modelos de regresión.
En Scikit Learn, es posible implementar estos modelos de manera eficiente. La biblioteca ofrece algoritmos como regresión lineal, regresión polinómica, árboles de decisión y máquinas de vectores soporte, adaptables a diferentes problemas y tipos de datos.
Es crucial seleccionar el modelo de regresión adecuado según las características de los datos y el objetivo del análisis. Si la relación entre variables no es lineal, métodos como los árboles de decisión o los modelos de ensamble pueden ofrecer mejores resultados que una regresión lineal simple.
A continuación, se muestra un ejemplo práctico utilizando Scikit Learn para predecir el precio de viviendas en función de varias características:
import pandas as pd
from sklearn.linear_model import LinearRegression
# Datos de ejemplo
datos = pd.DataFrame({
'superficie': [50, 60, 70, 80, 90],
'habitaciones': [1, 2, 2, 3, 3],
'antigüedad': [5, 10, 15, 20, 25],
'precio': [200000, 250000, 280000, 300000, 320000]
})
# Variables independientes y dependiente
X = datos[['superficie', 'habitaciones', 'antigüedad']]
y = datos['precio']
# Crear y entrenar el modelo
modelo = LinearRegression()
modelo.fit(X, y)
# Realizar una predicción
nueva_vivienda = pd.DataFrame([[75, 2, 10]], columns=['superficie', 'habitaciones', 'antigüedad'])
precio_estimado = modelo.predict(nueva_vivienda)
print(f'El precio estimado de la vivienda es {precio_estimado[0]:.2f} euros.')
En este ejemplo, se emplea un modelo de regresión lineal múltiple para estimar el precio de una vivienda basándose en su superficie, número de habitaciones y antigüedad. Esta aplicación es común en el sector inmobiliario para valorar propiedades y asesorar a clientes.
La regresión es también útil en análisis medioambiental, donde se predicen niveles de contaminación o se evalúa el impacto de variables como emisiones industriales y tráfico en la calidad del aire. Esto permite a las autoridades tomar decisiones informadas para mejorar el medio ambiente.
Además, en sectores tecnológicos, se utiliza para optimizar sistemas y procesos. Por ejemplo, en el desarrollo de software, la regresión puede ayudar a estimar el tiempo de ejecución de algoritmos en función del tamaño de los datos de entrada.
La versatilidad de la regresión la convierte en una herramienta indispensable en múltiples disciplinas. Gracias a bibliotecas como Scikit Learn, los profesionales pueden implementar modelos robustos y adaptados a sus necesidades específicas.
Métricas de evaluación de regresión
En el análisis de regresión, es fundamental disponer de métricas que permitan cuantificar el rendimiento del modelo. Estas métricas de evaluación facilitan la comparación entre diferentes modelos y ayudan a seleccionar el más adecuado para un conjunto de datos específico.
- Una de las métricas más utilizadas es el Error Cuadrático Medio (MSE, por sus siglas en inglés). El MSE calcula la media de los cuadrados de los errores entre los valores predichos y los reales, proporcionando una medida de la precisión global del modelo. Un MSE menor indica un mejor ajuste del modelo a los datos.
- Otra métrica relevante es el Error Absoluto Medio (MAE). A diferencia del MSE, el MAE calcula la media de los valores absolutos de los errores. Esta métrica es útil cuando se desea minimizar el impacto de los valores atípicos, ya que no eleva al cuadrado las diferencias.
- El Error Cuadrático Medio de Raíz (RMSE) es la raíz cuadrada del MSE. El RMSE mantiene las mismas unidades que la variable objetivo, lo que facilita la interpretación de los resultados. Es especialmente útil cuando se quiere entender la magnitud promedio de los errores en el contexto original de los datos.
- El Coeficiente de Determinación (R²) es una métrica que indica la proporción de la varianza de la variable dependiente que es explicada por el modelo. Un valor de R² cercano a 1 sugiere que el modelo explica la mayor parte de la variabilidad de los datos, mientras que un valor cercano a 0 indica lo contrario.
Para calcular estas métricas en Scikit Learn, se utilizan funciones disponibles en el módulo metrics
. A continuación, se presenta un ejemplo de cómo emplear estas métricas en un modelo de regresión:
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
import numpy as np
# Datos de ejemplo
X = np.array([[1], [2], [3], [4], [5], [6], [7], [8], [9], [10]])
y = np.array([3, 4, 2, 5, 7, 8, 7, 9, 10, 12])
# División de los datos en entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Creación y entrenamiento del modelo
modelo = LinearRegression()
modelo.fit(X_train, y_train)
# Predicciones sobre el conjunto de prueba
y_pred = modelo.predict(X_test)
# Cálculo de métricas
mse = mean_squared_error(y_test, y_pred)
mae = mean_absolute_error(y_test, y_pred)
rmse = np.sqrt(mse)
r2 = r2_score(y_test, y_pred)
print(f'Error Cuadrático Medio (MSE): {mse:.2f}')
print(f'Error Absoluto Medio (MAE): {mae:.2f}')
print(f'Raíz del Error Cuadrático Medio (RMSE): {rmse:.2f}')
print(f'Coeficiente de Determinación (R²): {r2:.2f}')
En este ejemplo, se ajusta un modelo de Regresión Lineal y se calculan las principales métricas de evaluación. Es importante destacar que el RMSE se obtiene al aplicar la raíz cuadrada al MSE, proporcionando una interpretación más intuitiva al mantener las unidades originales.
Además de las métricas mencionadas, también es frecuente utilizar el Error Porcentual Absoluto Medio (MAPE). El MAPE expresa el error como un porcentaje, lo que facilita la comprensión del rendimiento del modelo en términos relativos. Sin embargo, es sensible a valores reales cercanos a cero, por lo que debe utilizarse con precaución.
Para calcular el MAPE en Scikit Learn, puede emplearse la función mean_absolute_percentage_error
:
from sklearn.metrics import mean_absolute_percentage_error
# Cálculo del MAPE
mape = mean_absolute_percentage_error(y_test, y_pred)
print(f'Error Porcentual Absoluto Medio (MAPE): {mape*100:.2f}%')
Es esencial seleccionar la métrica de evaluación adecuada según el contexto del problema y las características de los datos. Por ejemplo, si los valores atípicos son frecuentes, el MAE podría ser más representativo que el MSE. Por otro lado, si se desea penalizar más severamente los errores grandes, el MSE o el RMSE serían más apropiados.
El Coeficiente de Determinación (R²) tiene limitaciones cuando se trata de modelos no lineales o cuando se utiliza regresión sin intercepto. En tales casos, se recomienda complementar con otras métricas para obtener una visión más completa del rendimiento del modelo.
Es importante también visualizar los residuos del modelo para identificar patrones no capturados por el mismo. Un análisis de los residuos puede revelar problemas como heterocedasticidad o relaciones no lineales, y puede realizarse mediante gráficos de dispersión o histogramas.
En situaciones donde se desea evaluar la eficiencia explicativa del modelo sin ser afectado por el número de variables independientes, se utiliza el Coeficiente de Determinación Ajustado (R² ajustado). Aunque Scikit Learn no proporciona directamente esta métrica, puede calcularse manualmente:
n = X_test.shape[0] # Número de observaciones
p = X_test.shape[1] # Número de predictores
r2_ajustado = 1 - (1 - r2) * (n - 1) / (n - p - 1)
print(f'Coeficiente de Determinación Ajustado (R² ajustado): {r2_ajustado:.2f}')
El R² ajustado penaliza la inclusión de variables no significativas, lo que es útil en modelos con múltiples predictores. Esta métrica proporciona una evaluación más realista del modelo al considerar el parcial efecto de cada variable independiente.
En contextos donde se trabaja con datos altamente escalados o con unidades diferentes, es recomendable utilizar métricas normalizadas como el Error Cuadrático Medio Normalizado (nMSE). Aunque Scikit Learn no incluye esta métrica directamente, puede calcularse dividiendo el MSE entre la varianza de los valores reales:
nMSE = mse / np.var(y_test)
print(f'Error Cuadrático Medio Normalizado (nMSE): {nMSE:.2f}')
El uso de métricas normalizadas permite comparar el rendimiento del modelo independientemente de las escalas de las variables, lo cual es especialmente útil en comparaciones intermodelos.
Es recomendable también emplear gráficos de validación para complementar las métricas numéricas. Herramientas como matplotlib o seaborn facilitan la visualización de los resultados y la detección de posibles inconsistencias en el modelo.
Finalmente, es esencial validar el modelo utilizando técnicas como la validación cruzada, que permiten obtener estimaciones más robustas de las métricas de evaluación. En Scikit Learn, la función cross_val_score
puede emplearse para este propósito:
from sklearn.model_selection import cross_val_score
# Validación cruzada con 5 particiones
scores = cross_val_score(modelo, X, y, scoring='neg_mean_squared_error', cv=5)
mse_cv = -scores.mean()
rmse_cv = np.sqrt(mse_cv)
print(f'Error Cuadrático Medio en Validación Cruzada (MSE CV): {mse_cv:.2f}')
print(f'Raíz del Error Cuadrático Medio en Validación Cruzada (RMSE CV): {rmse_cv:.2f}')
La validación cruzada ayuda a mitigar problemas de sobreajuste y proporciona una estimación más generalizable del rendimiento del modelo en datos no vistos.
Ejercicios de esta lección Introducción a la regresión
Evalúa tus conocimientos de esta lección Introducción a la regresión con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.
Todas las lecciones de ScikitLearn
Accede a todas las lecciones de ScikitLearn y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.
Aprendizaje Automático
Introducción Y Entorno
Introducción E Instalación
Introducción Y Entorno
Introducción Al Preprocesamiento De Datos
Preprocesamiento De Datos
Identificación Y Tratamiento De Valores Faltantes
Preprocesamiento De Datos
Escalado De Datos
Preprocesamiento De Datos
Normalización De Datos
Preprocesamiento De Datos
Codificación De Variables Categóricas
Preprocesamiento De Datos
Ingeniería De Características
Preprocesamiento De Datos
Selección De Características
Preprocesamiento De Datos
Extracción De Características
Preprocesamiento De Datos
Particionamiento De Datos
Preprocesamiento De Datos
Preprocesamiento De Datos Desbalanceados
Preprocesamiento De Datos
Introducción A La Regresión
Regresión
Regresión Lineal
Regresión
Regresión Knn Kneighborsregressor
Regresión
Regresión Svm Con Svr
Regresión
Regresión Con Árboles Decisiontreeregressor
Regresión
Regresión Con Algoritmos De Conjunto
Regresión
Introducción A La Clasificación
Clasificación
Clasificación Con Regresión Logística
Clasificación
Clasificación Knn Kneighborsclassifier
Clasificación
Clasificación Svm Con Svc
Clasificación
Clasificación Con Árboles Decisiontreeclassifier
Clasificación
Clasificación Con Algoritmos De Conjunto
Clasificación
Reducción De La Dimensionalidad Con Pca
Aprendizaje No Supervisado
Clustering Con Kmeans
Aprendizaje No Supervisado
Clustering Jerárquico
Aprendizaje No Supervisado
Clustering De Densidad Con Dbscan
Aprendizaje No Supervisado
Preprocesamiento De Textos Para Nlp
Nlp
Representación De Texto Y Extracción De Características
Nlp
Clasificación De Texto Con Scikit Learn
Nlp
Análisis De Sentimiento
Nlp
Técnicas Avanzadas De Extracción De Características
Nlp
Introducción Al Análisis De Series Temporales
Series Temporales
Preprocesamiento De Datos De Series Temporales
Series Temporales
Ingeniería De Características Para Series Temporales
Series Temporales
Transformación Y Escalado De Series Temporales
Series Temporales
Validación Y Evaluación De Modelos En Series Temporales
Series Temporales
Validación Y Evaluación De Modelos
Validación De Modelos
Técnicas De Validación Cruzada
Validación De Modelos
Métricas De Regresión
Validación De Modelos
Métricas De Clasificación
Validación De Modelos
Ajuste De Hiperparámetros
Validación De Modelos
Introducción A Pipelines
Pipelines Y Despliegue
Creación De Pipelines Básicos
Pipelines Y Despliegue
Preprocesamiento De Datos Con Pipelines
Pipelines Y Despliegue
Pipelines Y Validación Cruzada
Pipelines Y Despliegue
Pipelines Con Columntransformer
Pipelines Y Despliegue
Exportar E Importar Pipelines
Pipelines Y Despliegue
Objetivos de aprendizaje de esta lección
- Entender el concepto de regresión en aprendizaje automático supervisado.
- Conocer los tipos de modelos de regresión disponibles en Scikit Learn.
- Aprender a implementar modelos de regresión en Python usando Scikit Learn.
- Comprender cómo predecir valores continuos aplicando regresión.
- Identificar casos prácticos donde se aplica la regresión.
- Manejar las métricas de evaluación de modelos de regresión (MSE, MAE, RMSE, R²).