Contenido del curso
Operaciones con Vectores y Matrices
Multiplicación de Matrices
Construcción de un Modelo de Regresión Lineal
Producto matriz-vector para inferencia en NumPy
Resumen
Cuando un modelo de machine learning termina su entrenamiento, lo que aprendió queda guardado en un vector de pesos. La pregunta natural es: ¿cómo aplicas ese conocimiento a cientos de ejemplos nuevos al mismo tiempo? La respuesta está en el producto matriz-vector y en una operación que parece menor pero lo cambia todo: la transposición.
¿Qué es el producto matriz-vector en machine learning?
Es la operación que está en el corazón de la fase de inferencia, cuando un modelo ya entrenado genera predicciones sobre datos que nunca ha visto [0:18].
Piénsalo así: tienes una matriz con tus datos, donde cada fila es un ejemplo (un estudiante, un cliente, una imagen) y cada columna es una característica. Tienes también un vector con los pesos que el modelo aprendió. El producto matriz-vector toma cada fila de tu matriz, le aplica un producto punto contra el vector de pesos, y apila todos los resultados en un nuevo vector de predicciones [0:39].
Es, en esencia, una forma de empaquetar y ejecutar múltiples productos punto en paralelo. Así es como los modelos lineales y las redes neuronales hacen predicciones a escala.
¿Qué es la inferencia en un modelo? Es la etapa en la que usas los pesos aprendidos durante el entrenamiento para calcular resultados sobre datos nuevos. También se le llama predicción.
¿Por qué fallan las dimensiones al multiplicar matrices y vectores?
Aquí aparece el problema práctico más común: las formas no encajan. Para que la multiplicación funcione, el número de columnas de la matriz debe ser igual al número de filas del vector [1:09].
El detalle es que, por cómo se cargan o guardan los datos, un vector de pesos a menudo llega como vector fila cuando lo necesitas como vector columna. Si tu matriz tiene forma 3x2 y tu vector llega como 1x2, NumPy te va a lanzar un error de incompatibilidad.
¿Cómo soluciona la transposición este problema?
La transposición intercambia filas por columnas. En NumPy se aplica con .T mayúscula y es una de las operaciones más simples del toolkit [1:39].
Lo que logra es lo siguiente:
- Una matriz de forma 3,2 se convierte en una de forma 2,3.
- Un vector fila de forma 1,5 se convierte en vector columna de 5,1.
- Un vector fila de 1,2 pasa a ser vector columna de 2,1, perfectamente compatible con una matriz de 3,2.
Con esa rotación, las dimensiones quedan alineadas y la multiplicación procede sin errores.
¿Cómo implementar el producto matriz-vector en NumPy paso a paso?
Vamos a construir el ejemplo completo. Imagina que tienes tres estudiantes y dos características por estudiante: horas de estudio y horas de sueño. El objetivo es predecir su rendimiento sobre 10 [2:25].
Crear la matriz de datos y el vector de pesos
Primero defines la matriz X con tres filas (estudiantes) y dos columnas (características):
python import numpy as np
X = np.array([ [10, 8], [5, 7], [12, 4] ])
w_fila = np.array([[0.6, 0.4]])
print(X.shape) # (3, 2) print(w_fila.shape) # (1, 2)
El vector w_fila representa los weights del modelo. El valor 0.6 le da más peso a las horas de estudio y 0.4 a las horas de sueño [3:10]. Al imprimir las formas vemos que la matriz es 3x2 y el vector es 1x2: incompatibles para el producto.
Aplicar la transposición y multiplicar
Al intentar X @ w_fila directamente, NumPy lanza un error porque las dimensiones no coinciden [3:55]. La solución es transponer:
python w_columna = w_fila.T print(w_columna) print(w_columna.shape) # (2, 1)
predicciones = X @ w_columna print(f"Predicciones: {predicciones}, forma: {predicciones.shape}")
Ahora w_columna tiene forma 2,1. El número de columnas de la matriz (2) coincide con el número de filas del vector (2), y la multiplicación funciona [5:15].
El resultado es un vector de predicciones con forma 3,1:
- Estudiante 1: 9.2.
- Estudiante 2: 5.8.
- Estudiante 3: 8.8.
Tiene sentido geométricamente: la forma del resultado es filas de la matriz x columnas del vector, es decir, 3,1 [5:55].
¿Qué hace el operador
.Ten NumPy? Intercambia filas por columnas de una matriz o vector. Es la forma rápida de alinear dimensiones antes de multiplicar.
¿Qué ejercicio puedes hacer para reforzar el concepto?
Modifica el vector w_fila para invertir las prioridades del modelo. Por ejemplo, cambia los valores a 0.3 para horas de estudio y 0.7 para horas de sueño, dándole más importancia al descanso [6:20].
Ejecuta de nuevo todo el código y observa cómo cambian las predicciones. ¿Qué estudiante obtiene ahora el mejor rendimiento sobre 10? Comparte tu resultado en los comentarios y compáralo con el escenario original.
En la siguiente clase vas a dar el salto natural: pasar del producto matriz-vector a la multiplicación entre matrices, la operación que permite encadenar transformaciones y construir modelos más complejos como redes neuronales profundas.