Regresión lineal
Contenido del curso
- 1. ¿Qué es la IA? — Historia y panorama
- 2. Matemáticas mínimas: vectores, derivadas y gradiente
- 3. Regresión lineal
- 4. Clasificación y regresión logística
- 5. Redes neuronales desde cero
- 6. Entrenamiento: backpropagation, sobreajuste y regularización
- 7. Visión por computadora y redes convolucionales (CNNs)
- 8. Procesamiento de lenguaje natural (NLP) y embeddings
- 9. Transformers y modelos de lenguaje (LLMs)
- 10. Prompt engineering y agentes — proyecto final
El modelo más simple que aprende
La regresión lineal predice un valor numérico continuo (precio, temperatura, tiempo de entrega) como una combinación lineal de las variables de entrada. En su versión más simple, con una sola variable , el modelo es una recta:
donde es la pendiente (cuánto cambia por cada unidad que cambia ) y es la ordenada al origen (el valor de cuando ). Entrenar el modelo significa encontrar los valores de y que mejor describen un conjunto de puntos observados .
Medir el error: el error cuadrático medio
Para saber si una recta es "buena" necesitamos una forma de medir cuánto se equivoca. La métrica estándar es el error cuadrático medio (MSE, mean squared error): para cada punto, se calcula la diferencia entre el valor real y la predicción , se eleva al cuadrado (para que los errores positivos y negativos no se cancelen y para penalizar más los errores grandes) y se promedia:
Entrenar la regresión lineal es, literalmente, buscar los valores de y que minimizan el MSE. Esto se puede hacer con descenso de gradiente (lección 2) o, para este caso particular, con una fórmula cerrada llamada mínimos cuadrados, que calcula directamente la pendiente óptima a partir de las medias y varianzas de los datos:
donde y son las medias de e . Experimenta ajustando la recta a una nube de puntos y observa cómo cambia el MSE:
Regresión lineal por mínimos cuadrados
Error cuadrático medio: 11.4864
Implementación en Python puro
El siguiente ejemplo calcula la pendiente y la ordenada al origen de la recta de mínimos cuadrados usando solo listas y el módulo estándar math — sin librerías externas como NumPy, para que puedas ejecutarlo tal cual en el sandbox del navegador: