Saltar al contenido
Machine Learning con Python

Modelos de Regresión

Introducción

Los modelos de regresión son una técnica de aprendizaje supervisado en Machine Learning que se utiliza para predecir valores continuos. Se basa en el análisis de la relación entre una variable dependiente y varias variables independientes (o predictoras) para poder hacer una predicción.

En un modelo de regresión, se escoge una función matemática que mejor se ajusta a los datos de entrenamiento para hacer una predicción acerca del valor de la variable dependiente cuando se conoce el valor de las variables predictoras.

Por lo general, se utiliza la regresión lineal que busca la relación lineal entre las variables, pero existen otros tipos de regresión como la regresión polinomial o la regresión logística. Los modelos de regresión se utilizan en una amplia gama de aplicaciones como por ejemplo: predecir los precios de una vivienda, el tiempo de vida de una máquina, la demanda de un producto en función del precio y la temporada, entre otros.

Es esencial elegir la técnica de regresión correcta que se ajuste a los datos y se requiere conocimientos estadísticos para interpretar los resultados.

Resumen

Un modelo de regresión es una técnica estadística utilizada para analizar la relación entre dos o más variables. En el caso de la regresión lineal, se busca establecer una relación lineal entre una variable dependiente (y) y una o más variables independientes (x), utilizando una fórmula matemática que permite predecir el valor de la variable dependiente a partir de los valores de las variables independientes.

La regresión lineal simple considera solamente una variable independiente, mientras que la regresión lineal múltiple considera dos o más variables independientes. Existen diferentes métodos para estimar los parámetros de los modelos de regresión, entre los cuales se encuentran el método de mínimos cuadrados y el método de máxima verosimilitud.

Es importante tener en cuenta que los modelos de regresión pueden ser utilizados tanto para establecer relaciones causales como para realizar predicciones. Por lo tanto, es importante tener una adecuada comprensión del contexto en el que se están utilizando. Otro tipo de modelos de regresión son los modelos no lineales, que permiten modelar relaciones que no pueden ser descritas por una función lineal. Estos modelos pueden ser más complejos y requieren de técnicas específicas para su estimación y validación.

Aplicación teórica

Un ejemplo de un modelo de regresión sería predecir la relación entre la cantidad de horas estudiadas por un estudiante y su puntaje en un examen. En este caso, la variable independiente sería la cantidad de horas estudiadas y la variable dependiente sería el puntaje en el examen.

Para construir un modelo de regresión, se pueden usar datos históricos de estudiantes que hayan tomado el mismo examen.

Por ejemplo, se pueden recolectar datos de 100 estudiantes, incluyendo la cantidad de horas que estudiaron y su puntaje en el examen.0

Luego, se puede usar un modelo de regresión lineal para predecir el puntaje en el examen de un estudiante, dada la cantidad de horas que ha estudiado.

El modelo de regresión lineal relaciona las dos variables en una línea recta, por lo que se puede predecir el puntaje esperado para una cantidad específica de horas.

Finalmente, se puede evaluar la precisión del modelo de regresión usando un conjunto de datos de prueba independiente para determinar qué tan precisas son las predicciones del modelo en comparación con los datos reales.

Aplicación práctica

Un ejemplo práctico en Python utilizando el conjunto de datos de Boston Housing, que es uno de los conjuntos de datos incorporados de scikit-learn.

El objetivo de este ejemplo será ajustar un modelo de regresión lineal múltiple para predecir el precio medio de las viviendas en Boston en función de una serie de características, como la tasa de criminalidad, la cantidad de habitaciones, la proporción de terrenos residenciales, etc.

Para comenzar, importaremos las bibliotecas necesarias, cargaremos el conjunto de datos y lo dividiremos en conjunto de entrenamiento y conjunto de prueba:


# Importamos las bibliotecas necesarias 
import numpy as np 
import pandas as pd 
from sklearn.datasets import load_boston 
from sklearn.model_selection import train_test_split 
from sklearn.linear_model import LinearRegression 
from sklearn.metrics import mean_squared_error 
# Cargamos los datos de Boston Housing 
boston = load_boston() 
# Convertimos los datos en un DataFrame de pandas 
boston_df = pd.DataFrame(boston.data, columns=boston.feature_names) 
# Añadimos la columna de precios 
boston_df['PRICE'] = boston.target 
# Dividimos los datos en conjunto de entrenamiento y conjunto de prueba 
X_train, X_test, y_train, y_test = train_test_split(boston_df[boston.feature_names], boston_df['PRICE'], test_size=0.2, random_state=0)

A continuación, ajustaremos un modelo de regresión lineal múltiple utilizando el conjunto de entrenamiento:


# Creamos un objeto de modelo de regresión lineal 
model = LinearRegression() 
# Ajustamos el modelo al conjunto de entrenamiento 
model.fit(X_train, y_train)

Ahora podemos hacer predicciones utilizando el conjunto de prueba y calcular el error cuadrático medio:


# Hacemos predicciones con el modelo ajustado 
y_pred = model.predict(X_test) 
# Calculamos el error cuadrático medio 
mse = mean_squared_error(y_test, y_pred) 
print(f"El error cuadrático medio es: {mse:.2f}")

Finalmente, podemos analizar los coeficientes de regresión para determinar qué variables tienen la mayor influencia en el precio de las viviendas:


# Analizamos los coeficientes de regresión 
coef_df = pd.DataFrame({'feature': boston.feature_names, 'coef': model.coef_}) 
print(coef_df)

El resultado sería un DataFrame con las características y sus coeficientes:


feature coef 0 
CRIM -0.116039 1 
ZN 0.040669 2 
INDUS 0.012051 3 
CHAS 2.511246 4 
NOX -17.313078 5 
RM 3.859728 6 
AGE 0.000438 7 
DIS -1.493081 8 
RAD 0.244302 9 
TAX -0.008822 10 
PTRATIO -0.975709 11 
B 0.007995 12 
LSTAT -0.489814

Podemos ver que la mayoría de las características tienen un efecto negativo en el precio de las viviendas, mientras que la variable RM (número de habitaciones) tiene un efecto positivo.