Linear Algebra·Unidad 1

LA-01 — Vectors

Un vector es la unidad atómica del ML: cada ejemplo de datos (una casa, un usuario, una imagen) es un vector de features. La similitud entre dos ejemplos, la distancia entre una predicción y la verdad, la magnitud de un error — todo son operaciones con vectores. Sin esto, nada.

Why this matters for ML

Un vector es la unidad atómica del ML: cada ejemplo de datos (una casa, un usuario, una imagen) es un vector de features. La similitud entre dos ejemplos, la distancia entre una predicción y la verdad, la magnitud de un error — todo son operaciones con vectores. Sin esto, nada.

Concepts covered

  • Vector como punto, como flecha y como dato
  • Suma de vectores y multiplicación por escalar (scaling)
  • Dot product (producto punto / inner product)
  • Norms: L2 (euclídea), L1 (Manhattan), L∞
  • Unit vectors y normalización
  • Distancia entre vectores
  • Ángulo entre vectores y cosine similarity

Intuition first

🎬 3Blue1Brown Essence of Linear Algebra, cap. 1 ("Vectors, what even are they?") y cap. 2 (combinaciones lineales). Objetivo: ver el vector como flecha desde el origen y la suma como "poner flechas punta con cola".

Theory & key results

Un vector xRn\mathbf{x} \in \mathbb{R}^n es una lista ordenada de nn números: x=(x1,,xn)\mathbf{x} = (x_1, \dots, x_n). Tres lecturas: un punto en el espacio, una flecha desde el origen, o una fila de datos.

Operaciones:

  • Suma (componente a componente): x+y=(x1+y1,,xn+yn)\mathbf{x} + \mathbf{y} = (x_1+y_1, \dots, x_n+y_n).
  • Scaling: cx=(cx1,,cxn)c\mathbf{x} = (cx_1, \dots, cx_n) estira (c>1|c|>1), encoge (c<1|c|<1) o voltea (c<0c<0) la flecha.

Dot product (el más importante): xy=xy=i=1nxiyi.\mathbf{x} \cdot \mathbf{y} = \mathbf{x}^\top \mathbf{y} = \sum_{i=1}^n x_i y_i. Es un escalar. Geométricamente xy=xycosθ\mathbf{x}\cdot\mathbf{y} = |\mathbf{x}|,|\mathbf{y}|\cos\theta. Mide cuánto "apuntan en la misma dirección". Si es 0, son ortogonales (perpendiculares).

Norms (tamaño de un vector): x2=ixi2=xx,x1=ixi,x=maxixi.|\mathbf{x}|_2 = \sqrt{\textstyle\sum_i x_i^2} = \sqrt{\mathbf{x}\cdot\mathbf{x}}, \quad |\mathbf{x}|1 = \textstyle\sum_i |x_i|, \quad |\mathbf{x}|\infty = \max_i |x_i|. La L2 es la longitud "de regla". En ML: L2 aparece en el error cuadrático y en regularización ridge; L1 en regularización lasso (induce sparsity).

Unit vector: x^=x/x2\hat{\mathbf{x}} = \mathbf{x}/|\mathbf{x}|_2 tiene norma 1 (misma dirección, tamaño estandarizado).

Distancia: d(x,y)=xy2d(\mathbf{x}, \mathbf{y}) = |\mathbf{x} - \mathbf{y}|_2.

Cosine similarity (clave en NLP/embeddings): cosθ=xyxy[1,1].\cos\theta = \frac{\mathbf{x}\cdot\mathbf{y}}{|\mathbf{x}|,|\mathbf{y}|} \in [-1, 1]. 1 = misma dirección, 0 = ortogonales, −1 = opuestos. Compara dirección ignorando magnitud — por eso se usa para medir similitud de significado entre embeddings.

Worked example

x=(3,4)\mathbf{x} = (3, 4), y=(4,0)\mathbf{y} = (4, 0).

  • xy=34+40=12\mathbf{x}\cdot\mathbf{y} = 3\cdot4 + 4\cdot0 = 12.
  • x=9+16=5|\mathbf{x}| = \sqrt{9+16} = 5, y=4|\mathbf{y}| = 4.
  • cosθ=12/(54)=0.6θ53.13°\cos\theta = 12/(5\cdot4) = 0.6 \Rightarrow \theta \approx 53.13°.
  • x^=(3/5,4/5)=(0.6,0.8)\hat{\mathbf{x}} = (3/5, 4/5) = (0.6, 0.8), con norma 0.36+0.64=1\sqrt{0.36+0.64}=1. ✓
  • d(x,y)=(1,4)=174.12d(\mathbf{x},\mathbf{y}) = |(-1,4)| = \sqrt{17}\approx 4.12.

Notebook exercises (by hand)

  1. Con a=(1,2,2)\mathbf{a}=(1,2,2): calcula a2|\mathbf{a}|_2, a1|\mathbf{a}|1, a|\mathbf{a}|\infty.
  2. Normaliza a\mathbf{a} y verifica que la norma del resultado es 1.
  3. u=(1,0)\mathbf{u}=(1,0), v=(1,1)\mathbf{v}=(1,1): ¿ángulo entre ellos?
  4. Demuestra que x22=xx|\mathbf{x}|_2^2 = \mathbf{x}\cdot\mathbf{x}.
  5. ¿Para qué valor de kk son (2,k)(2, k) y (3,6)(3, -6) ortogonales?
  6. Da dos vectores con cosine similarity = 1 pero distinta norma. ¿Qué dice eso de la diferencia entre dirección y magnitud?
  7. Interpreta: si dos embeddings tienen cosine similarity 0.95, ¿qué significa "de negocio"?

Python lab

import numpy as np

def norm2(v): return np.sqrt(v @ v)          # implementa L2 a mano
def cosine(u, v): return (u @ v) / (norm2(u) * norm2(v))

x = np.array([3.0, 4.0]); y = np.array([4.0, 0.0])
assert np.isclose(norm2(x), np.linalg.norm(x))         # verifica vs NumPy
print("dot:", x @ y, " cos:", cosine(x, y))
print("unit x:", x / np.linalg.norm(x))
print("dist:", np.linalg.norm(x - y))

# Tarea: dibuja x, y, x+y con matplotlib (plt.quiver) y confirma "punta con cola".

Reto: escribe l1, linf y una función angle_deg(u, v); compáralas con numpy.linalg.norm(v, 1) y np.inf.

Examen final 📝

Intenta cada nivel antes de abrir las soluciones.

🟡 Medio

  1. Para a=(2,1,2)\mathbf{a}=(2,-1,2) y b=(1,0,2)\mathbf{b}=(1,0,-2): calcula ab\mathbf{a}\cdot\mathbf{b}, a2|\mathbf{a}|_2 y la cosine similarity.
  2. Encuentra un vector unitario en la dirección de (6,8)(6,8) y otro en la dirección opuesta.

🟠 Medio-difícil

  1. Demuestra la ley del coseno vectorial: ab2=a2+b22ab|\mathbf{a}-\mathbf{b}|^2=|\mathbf{a}|^2+|\mathbf{b}|^2-2,\mathbf{a}\cdot\mathbf{b}.
  2. Para x=(1,2,3)\mathbf{x}=(1,2,3): verifica numéricamente xx2x1|\mathbf{x}|_\infty\le|\mathbf{x}|_2\le|\mathbf{x}|_1 y argumenta por qué esas desigualdades siempre se cumplen.

🔴 Difícil

  1. Demuestra la desigualdad de Cauchy–Schwarz abab|\mathbf{a}\cdot\mathbf{b}|\le|\mathbf{a}|,|\mathbf{b}| (pista: analiza atb20|\mathbf{a}-t\mathbf{b}|^2\ge0 como cuadrática en tt).
  2. En un sistema de recomendación, dos usuarios se representan por vectores de ratings. Argumenta por qué la cosine similarity suele preferirse a la distancia euclídea, y da un ejemplo numérico de dos usuarios "iguales en gusto" pero lejanos en distancia.
✅ Soluciones
  1. ab=2+04=2\mathbf{a}\cdot\mathbf{b}=2+0-4=-2; a2=3|\mathbf{a}|_2=3; b2=5|\mathbf{b}|_2=\sqrt5; cosθ=2350.298\cos\theta=\frac{-2}{3\sqrt5}\approx-0.298.
  2. (6,8)=10u^=(0.6,0.8)|(6,8)|=10\Rightarrow \hat{\mathbf u}=(0.6,0.8); opuesto (0.6,0.8)(-0.6,-0.8).
  3. ab2=(ab)(ab)=aa2ab+bb|\mathbf a-\mathbf b|^2=(\mathbf a-\mathbf b)\cdot(\mathbf a-\mathbf b)=\mathbf a\cdot\mathbf a-2\mathbf a\cdot\mathbf b+\mathbf b\cdot\mathbf b.
  4. x=3|\mathbf x|_\infty=3, x2=143.74|\mathbf x|_2=\sqrt{14}\approx3.74, x1=6|\mathbf x|_1=6. El máximo componente ≤ raíz de la suma de cuadrados ≤ suma de valores absolutos (cada término aporta más al ir "acumulando").
  5. Sea q(t)=atb2=a22t(ab)+t2b20q(t)=|\mathbf a-t\mathbf b|^2=|\mathbf a|^2-2t(\mathbf a\cdot\mathbf b)+t^2|\mathbf b|^2\ge0 para todo tt. Una cuadrática siempre ≥0 tiene discriminante ≤0: 4(ab)24a2b204(\mathbf a\cdot\mathbf b)^2-4|\mathbf a|^2|\mathbf b|^2\le0, i.e. (ab)2a2b2(\mathbf a\cdot\mathbf b)^2\le|\mathbf a|^2|\mathbf b|^2.
  6. La cosine similarity mide dirección (patrón de gustos) ignorando magnitud (cuánto puntúa alguien en general). Ej.: u=(1,2,3)\mathbf u=(1,2,3) y v=(2,4,6)\mathbf v=(2,4,6) tienen cosine=1 (gustos idénticos) pero distancia uv=140|\mathbf u-\mathbf v|=\sqrt{14}\neq0; el usuario 2 solo puntúa "más alto" en todo.