Contenido del curso
Operaciones con Vectores y Matrices
Multiplicación de Matrices
Construcción de un Modelo de Regresión Lineal
Regresión lineal desde cero con álgebra lineal
Resumen
Construir un modelo de regresión lineal desde cero usando álgebra lineal es la mejor forma de entender qué pasa dentro de un algoritmo de machine learning. Aquí vas a ver cómo predecir el precio de una vivienda a partir de sus características, aplicando la ecuación normal y la notación matricial que ya conoces.
Esto te sirve si estás dando tus primeros pasos en machine learning y quieres conectar la teoría del álgebra lineal con un proyecto real en Python.
¿Qué busca un modelo de regresión lineal?
La idea es simple: encontrar la línea o el plano que mejor se ajusta a tus datos. Imagina una nube de puntos azules con precios reales de casas. El modelo traza una línea roja que pasa lo más cerca posible de todos esos puntos, aunque no toque ninguno con precisión absoluta.
Para predecir el precio de una casa según sus metros cuadrados y número de habitaciones, la hipótesis se ve así:
precio = θ₀ + θ₁ · metros_cuadrados + θ₂ · habitaciones
Ese vector theta con tres elementos es el conocimiento del modelo. Son los pesos que queremos descubrir [01:05].
¿Qué es el vector theta en regresión lineal? Es el vector de pesos que el modelo aprende. Cada peso multiplica una característica de los datos y define la inclinación de la línea de mejor ajuste.
¿Cómo se traduce la regresión lineal a notación matricial?
En el curso de Fundamentos de Álgebra Lineal aprendiste la forma Ax = b. Aquí la adaptamos al contexto de machine learning: X · θ = Y, donde Y son los precios reales, X es la matriz de características y θ son los pesos buscados [01:45].
El problema es que casi nunca existe una solución exacta. Los datos del mundo real no caen en una línea perfecta. Por eso necesitas una aproximación, y para eso existe la ecuación normal:
Aᵀ · A · θ = Aᵀ · b
En nuestro caso queda: Xᵀ · X · θ = Xᵀ · Y. Esa es la fórmula que minimiza el error entre lo que predice tu línea y los precios reales [02:30].
¿Por qué se añade una columna de unos a la matriz X?
Antes de armar la ecuación normal, debes modificar la matriz original. Se agrega una columna de unos al inicio con np.c_[np.ones((4,1)), X]. Esto permite que la línea no esté forzada a pasar por el origen del plano y le da libertad al modelo para encontrar el intercepto θ₀ [06:30].
¿Cómo se construye el proyecto en Google Colab?
Trabajamos con un conjunto de datos pequeño y manejable: cuatro casas con dos características cada una. Esto te permite ver cada paso del álgebra sin perderte en la complejidad.
Los datos son:
- Casa 1: 80 metros cuadrados, 3 habitaciones, 310.000 dólares.
- Casa 2: 120 metros cuadrados, 3 habitaciones, 390.000 dólares.
- Casa 3: 100 metros cuadrados, 2 habitaciones, 325.000 dólares.
- Casa 4: 150 metros cuadrados, 4 habitaciones, 530.000 dólares.
Al graficar estos puntos con matplotlib usando plt.scatter, queda claro que ninguna línea recta pasa exactamente por los cuatro. La nube de puntos casi forma una curva, así que toca buscar la mejor aproximación posible [05:30].
python import numpy as np import matplotlib.pyplot as plt
X = np.array([[80, 3], [120, 3], [100, 2], [150, 4]]) Y = np.array([310, 390, 325, 530])
X_bias = np.c_[np.ones((4, 1)), X] A = X_bias.T @ X_bias B = X_bias.T @ Y
¿Qué es la matriz de Gram y por qué importa?
La matriz A que obtienes con Xᵀ · X tiene un nombre propio: matriz de Gram. Es un resumen concentrado de las características de tus datos [08:45].
Esta matriz te cuenta dos cosas:
- La importancia individual de cada característica, es decir, cuánta fuerza tienen los metros cuadrados o las habitaciones por sí solos.
- Cómo se relacionan las características entre sí, por ejemplo si las casas con más metros cuadrados también tienden a tener más habitaciones.
Al imprimir A vas a ver un número enorme en el centro: 53300 o similar. Ese valor representa los metros cuadrados, una característica con rango amplio (de 80 a 150). El número de habitaciones, en cambio, va solo de 2 a 4, por lo que aporta valores mucho más pequeños. Numéricamente, los metros cuadrados dominan el modelo.
¿Qué hace la matriz de Gram? Comprime toda la estructura interna de tus datos en una sola matriz cuadrada. Eso te permite resolver el sistema de la ecuación normal de forma directa.
¿Qué información guarda el vector B?
El vector B, que sale de Xᵀ · Y, resume la relación entre cada característica y el precio final. Cada número te dice qué tan fuertemente conectada está una característica con lo que quieres predecir [10:30].
El primer valor corresponde a la columna de unos y no es muy informativo. El segundo, asociado a metros cuadrados, será el más grande, porque esa característica tiene una relación numérica directa con los precios. El tercero, ligado a habitaciones, será mucho menor.
¿Cuál es el siguiente paso después de plantear el sistema?
Ya tienes la matriz A y el vector B listos. Tu sistema A · θ = B está perfectamente ordenado para resolverse. Lo único que falta es despejar theta y obtener los pesos óptimos que definen la línea de mejor ajuste.
Antes de seguir, observa la matriz A que generaste. ¿Qué shape tiene? ¿Es cuadrada? ¿Por qué eso es clave para el siguiente paso de resolver el sistema? Cuéntame en los comentarios qué encontraste.