Resumen

Los modelos modernos transforman datos a través de múltiples capas. Esa transformación se basa en el producto matriz matriz, clave para clasificar en lote y calcular similitudes. Aquí verás, paso a paso y con NumPy en Google Colab, cómo validar dimensiones, multiplicar matrices y usar la transpuesta para alinear datos en tareas de machine learning.

¿Qué es el producto matriz matriz y cómo define la forma?

El producto matriz matriz generaliza el producto matriz vector: las dimensiones internas deben coincidir. Si A es M×N y B es N×P, entonces A×B es M×P. Esta regla permite aplicar un conjunto de pesos a muchos ejemplos a la vez y obtener resultados interpretables como scores de clase o matrices de similitud.

  • Dimensiones compatibles: columnas de A = filas de B.
  • Forma o shape: resultado con las dimensiones externas M×P.
  • Transformación por capas: cada multiplicación es una transformación lineal en redes neuronales.

¿Cómo clasificar múltiples ejemplos con una matriz de pesos en NumPy?

Cuando aplicas una matriz de pesos de géneros a una matriz de características de películas, obtienes una matriz de niveles de confianza (scores) por clase para cada ejemplo. Así simulas una clasificación por lotes en una sola operación.

¿Qué representan las matrices películas_features y pesos_géneros?

  • películas_features (3×2): tres películas con dos características numéricas: acción y comedia.
  • pesos_géneros (2×3): importancia de cada característica por género: aventura, familiar y romance.
import numpy as np

peliculas_features = np.array([
    [5, 2],  # mucha acción, algo de comedia
    [1, 5],  # poca acción, mucha comedia
    [4, 4],  # balance acción/comedia
])

pesos_generos = np.array([
    [1.1, 0.4, 0.1],  # pesos desde acción → [aventura, familiar, romance]
    [0.2, 0.5, 1.2],  # pesos desde comedia → [aventura, familiar, romance]
])

print("shape películas_features:", peliculas_features.shape)  # (3, 2)
print("shape pesos_generos:", pesos_generos.shape)          # (2, 3)

scores_prediccion = peliculas_features @ pesos_generos
print("shape scores_prediccion:", scores_prediccion.shape)   # (3, 3)
print(scores_prediccion)

¿Cómo obtener los scores y su interpretación?

  • El resultado es 3×3: tres películas por tres géneros.
  • Cada fila es una película; cada columna, el score para un género.
  • Ejemplo de interpretación: para la primera película, los scores son 5.9 (aventura), 3.0 (familiar), 2.9 (romance). El mayor valor indica aventura, coherente con su alta acción.

Claves que practicas aquí: - Producto matriz matriz para clasificación en lote. - Matriz de pesos como conocimiento del modelo ya entrenado. - Selección por máximo del score para etiquetar la clase.

¿Cómo usar la transpuesta para alinear dimensiones y calcular similitud?

Para una matriz de similitud usuario–película, necesitas el producto punto entre cada usuario y cada película. Si las formas no coinciden, la transpuesta resuelve el alineamiento de dimensiones internas.

¿Por qué falla usuarios × películas?

  • usuarios: 3×4 (acción, comedia, drama, ciencia ficción).
  • peliculas: 2×4 (mismas características).
  • 3×4 @ 2×4 falla porque 4 ≠ 2 en las dimensiones internas.
usuarios = np.array([
    [0.9, 0.2, 0.1, 0.8],
    [0.1, 0.8, 0.7, 0.2],
    [0.8, 0.7, 0.1, 0.1],
])

peliculas = np.array([
    [0.8, 0.1, 0.1, 0.9],  # Blade Runner (original)
    [0.2, 0.9, 0.8, 0.1],  # Superbad / Super Cool
])

print("shape usuarios:", usuarios.shape)   # (3, 4)
print("shape peliculas:", peliculas.shape) # (2, 4)

# usuarios @ peliculas  # → error de forma

¿Cómo corrige la transpuesta y qué significa la matriz resultante?

  • Transponer películas a 4×2 alinea las dimensiones internas: 3×4 @ 4×2 → 3×2.
  • La salida 3×2 contiene afinidades: filas = usuarios, columnas = películas.
peliculas_transpuesta = peliculas.T
print("shape peliculas_transpuesta:", peliculas_transpuesta.shape)  # (4, 2)

matriz_similitud = usuarios @ peliculas_transpuesta
print("shape matriz_similitud:", matriz_similitud.shape)  # (3, 2)
print(matriz_similitud)
  • Afinidad usuario 1 con película 1: 1.47, la mayor por su alta acción y ciencia ficción compartidas.
  • Afinidad usuario 1 con película 2: 0.52, menor por menor coincidencia en sus características.

Habilidades que refuerzas: - Uso de transpuesta (.T) para compatibilidad de dimensiones. - Cálculo de matriz de similitud con producto punto. - Lectura de formas (shapes) para validar operaciones.

¿Te animas a practicar?

  • Crea A de forma 4×3 y B de forma 3×2 con el contexto que prefieras.
  • Calcula A @ B y comparte en los comentarios el shape de tu resultado.

¿Tienes dudas o ideas para extender el ejercicio a más clases o recomendaciones? Deja tu comentario y conversemos.