Regresión lineal y ejemplo
En Weka, el algoritmo de regresión lineal se utiliza para predecir una variable dependiente continua a partir de una o más variables independientes. La regresión lineal asume que la relación entre las variables independientes y la dependiente es lineal.
¿Qué es la regresión lineal?
La regresión lineal busca modelar la relación entre una variable dependiente ( y ) y una o más variables independientes ( x_1, x_2,…, x_n ) mediante una ecuación lineal del tipo:
[ y = β_0 + β_1 x_1 + \β_2 x_2 + … +β_n x_n ]
Donde:
( β_0 ) es el intercepto (constante).
( β_1, β_2, …, β_n ) son los coeficientes de las variables independientes.
El objetivo es encontrar los valores de (β_0, β_1, ….) que minimicen el error entre los valores predichos y los reales.
Aplicar Regresión Lineal en Weka
Pasos para aplicar Regresión Lineal en Weka:
Cargar el Dataset:
Ve a la pestaña Preprocess y carga tu dataset en formato ARFF o CSV.
Seleccionar el Atributo Clase:
Define el atributo que quieres predecir (la variable dependiente) seleccionándolo como Clase en la parte inferior derecha de la ventana de Weka.
Seleccionar el Algoritmo:
En la pestaña Classify, selecciona el algoritmo Linear Regression. Puedes encontrarlo en:
Classify -> Choose -> functions -> LinearRegression
Configurar Opciones:
Antes de ejecutar el algoritmo, puedes ajustar las opciones de Linear Regression. Haz clic en el botón de opciones al lado de LinearRegression para personalizarlas.
Opciones del Algoritmo de Regresión Lineal en Weka
ridge (default: 1.0E-8):
Establece el valor de regularización Ridge para evitar sobreajuste (overfitting).
Un valor mayor introduce mayor regularización y puede reducir el efecto de colinealidad (variables altamente correlacionadas).
Ejemplo de uso: Un valor de 0 desactiva la regularización. Valores pequeños como 1E-8 o 1E-6 se usan comúnmente.
Ejemplo:
ridge = 0.01
eliminateColinearAttributes (default: False):
Si se establece en True, elimina automáticamente las variables que son altamente correlacionadas (colineales). Esto ayuda a evitar problemas como la multicolinealidad, que puede causar que los coeficientes sean inestables.
Ejemplo:
eliminateColinearAttributes = True
attributeSelectionMethod (default: M5 method):
Elige el método para la selección de atributos. Los valores pueden ser:
No selection: No se eliminan atributos, se utilizan todos.
Greedy: Selección basada en un criterio de eliminación.
M5: Selección basada en el método de árboles M5, que busca las mejores variables predictoras.
Ejemplo:
attributeSelectionMethod = M5 method
debug (default: False):
Si se activa, muestra más información sobre el proceso de ajuste de la regresión lineal.
Ejemplo:
debug = True
Interpretación de los Resultados
Después de ejecutar el algoritmo, Weka mostrará una serie de resultados, como:
Coeficientes: Muestra los coeficientes de cada variable independiente. Estos coeficientes indican cuánto cambia la variable dependiente por cada unidad de cambio en la variable independiente.
Intercepto: Es la constante ( \beta_0 ), que indica el valor de ( y ) cuando todas las variables independientes son 0.
Error Cuadrático Medio (MSE): Es una medida de la calidad del modelo. Un MSE más bajo indica un mejor ajuste.
Coeficiente de Determinación (R²): Indica qué tan bien las variables independientes explican la variabilidad de la variable dependiente. Un valor cercano a 1 indica un buen ajuste.
Ejemplo en Weka
Supongamos que estás usando el dataset Auto MPG para predecir el consumo de combustible (MPG) a partir de varias características del automóvil.
Carga el dataset en Weka.
Selecciona MPG como la clase.
Elige el algoritmo de LinearRegression.
Configura las opciones según el contexto de tu problema (puedes dejar las opciones por defecto si no hay multicolinealidad en tus datos).
Ejecuta el modelo.
Ejemplo de salida:
Linear Regression Model:
MPG = 37.2855 – 0.1564 * cylinders – 0.0066 * displacement – 0.0166 * horsepower – 0.0076 * weight + 0.1022 * acceleration
Veamos un ejemplo.
Descargamos el dataset fish market de aquí:
https://www.kaggle.com/datasets/vipullrathod/fish-market?select=Fish.csv
Lo abrimos en weka. Vamos a intentar determinar el peso del pez a partir de otros atributos.
Primero en edit ponemos el atributo ‘Weight’ como clase. Después vamos a Classify y seleccionamos LinearRegression. Calculamos el modelo. Obtenemos lo siguiente:
Weight =
-250.6132 * Species=Roach,Parkki,Perch,Whitefish,Bream,Pike +
-314.7224 * Species=Pike +
39.1374 * Length1 +
9.269 * Height +
-449.8751Time taken to build model: 0 seconds
=== Cross-validation ===
=== Summary ===Correlation coefficient 0.9565
Mean absolute error 72.7793
Root mean squared error 104.1572
Relative absolute error 24.4841 %
Root relative squared error 29.0304 %
Total Number of Instances 159
Interpretación General:
- El coeficiente de correlación alto (0.9565) indica que las variables predictoras (especie, longitud y altura) están fuertemente correlacionadas con el peso, lo que sugiere que el modelo es bueno para predecir el peso de los peces.
- Tanto el MAE como el RMSE sugieren que, aunque el modelo tiene un buen ajuste, aún hay una desviación promedio significativa (en torno a 72-104 unidades).
- Los errores relativos (RAE y RRSE) bajos indican que el modelo es bastante preciso en comparación con predicciones simples como el promedio.
Si utilizamos el algoritmo RandomForest observamos que tiene mejro rendimiento aún:
Correlation coefficient 0.9872
Mean absolute error 36.2702
Root mean squared error 57.8764
Relative absolute error 12.2019 %
Root relative squared error 16.1311 %
Total Number of Instances 159
RandomForest es de los pocos algoritmos que podemos usar tanto para realizar clasificaciones de clases nominales como numéricas