Curso de Matemáticas para IA · Lección 14 de 180
Vectores como datos de IA: cómo las características convierten un documento en números
Aprende a leer vectores fila y columna, a construir a mano y con NumPy un vector de características de un documento y a detectar errores de forma o de orden de características.
“Los modelos de IA usan datos. Los modelos de IA usan vectores.” (traducción) El lector ve una frase. Un modelo numérico necesita un conjunto fijo de posiciones que contengan números. Una codificación sencilla cuenta palabras seleccionadas y produce
Esos cuatro números no se explican por sí solos. Solo resultan útiles cuando una regla de codificación indica que la posición 1 cuenta ai, la posición 2 cuenta model, la posición 3 cuenta data y la posición 4 cuenta vector. Los números ordenados, junto con el significado de sus coordenadas, forman un vector de características.
Al terminar esta lección podrás leer vectores fila y columna, interpretar sus coordenadas como características, codificar a mano y con NumPy un documento pequeño y diagnosticar código cuyos valores son correctos pero cuyo orden de características o forma del array es incorrecto.
Resultado de aprendizaje: Leer vectores fila y columna e interpretar las coordenadas como características.
Esta lección retoma la Lección 5: índices de tensores para IA. Allí, un índice respondía «¿qué posición?». Aquí, las posiciones viajan juntas como una sola representación. El Mathematics for Machine Learning companion oficial desarrolla la notación de vectores fila y columna en la Sección 2.2. El documento, la regla de codificación, el cálculo, el código, el diagrama y las evaluaciones siguientes son originales.
Un vector necesita valores y significado de coordenadas
El superíndice significa transpuesta: cambia una representación fila por una columna o una columna por una fila. La en negrita nombra el vector completo; el símbolo normal nombra una coordenada. Así,
contienen los mismos cuatro valores de coordenadas, pero tienen orientaciones distintas.
En los datos de IA, las coordenadas suelen representar características acordadas y no casillas anónimas. Una característica es una propiedad medible que se entrega a un modelo. Puede ser un recuento de palabras, la intensidad de un píxel, una lectura de temperatura o una señal aprendida. Si nombra la característica , un codificador puede asignar un elemento a
Esta ecuación separa dos trabajos. El codificador decide cómo medir cada característica. El vector conserva las mediciones resultantes en un orden fijo. Cada documento debe usar la misma característica en la misma coordenada para que un modelo posterior pueda comparar o combinar esos valores de forma coherente.
Construir un vector de documento coordenada a coordenada
Codifica este documento:
AI models use data. AI models use vectors.
Usa el vocabulario ordenado
Para este ejemplo deliberadamente pequeño, la regla de normalización convierte el texto a minúsculas, elimina la puntuación, cambia models por model y cambia vectors por vector. Ignora use porque esa palabra no tiene coordenada en el vocabulario fijo. Los sistemas de texto reales necesitan un tokenizador y un vocabulario documentados; esta regla de juguete se muestra para que cada recuento pueda auditarse.
Los tokens normalizados son
ai, model, use, data, ai, model, use, vector
Ahora calcula una coordenada cada vez:
Por tanto,
| Coordenada | Característica | Recuento | Significado |
|---|---|---|---|
| 1 | ai | 2 | El token normalizado ai aparece dos veces. |
| 2 | model | 2 | Las dos apariciones de models se convierten en model. |
| 3 | data | 1 | El token normalizado data aparece una vez. |
| 4 | vector | 1 | El token vectors se convierte en vector. |
El diagrama hace visible el contrato de representación: cada recuento sigue la etiqueta de su característica hasta una coordenada. La columna tiene cuatro entradas, así que su forma es . Sigue representando un documento, no cuatro documentos.
Por qué las coordenadas fijas hacen posible el aprendizaje numérico
Un modelo no puede asociar un comportamiento a la coordenada 3 si para un documento esa coordenada significa data y para otro significa vector. Por eso, un mapa de características fija dos cosas entre ejemplos:
- el número de coordenadas; y
- la característica asignada a cada coordenada.
Para dos documentos cualesquiera y , el valor en la posición debe ser el mismo tipo de medición :
Este es el mecanismo que hay detrás del conocido software de vectorización de texto. La documentación oficial de scikit-learn CountVectorizer describe un vocabulario como un mapeo de términos a índices de características. Su método transform usa ese vocabulario para crear un array de recuentos documento-término con forma (n_samples, n_features): una fila por documento y una columna por característica del vocabulario.
El vector de recuentos es útil precisamente porque es selectivo. Conserva la frecuencia de las características elegidas. Descarta el orden original de las palabras, los límites entre frases y cualquier token ausente del vocabulario. Los dos documentos siguientes
ai model data
data model ai
se asignan ambos a con esta codificación. Los vectores iguales significan recuentos conservados iguales, no prosa ni significado iguales.
Fila y columna son formas, no direcciones de lectura
El vector abstracto pertenece a . Las matemáticas suelen mostrar sus coordenadas como una matriz columna de :
Al transponer esa representación columna se obtiene un vector fila:
La primera forma tiene cuatro filas y una columna; la segunda, una fila y cuatro columnas. Ninguna orientación cambia la asignación de coordenadas a características. La primera entrada sigue perteneciendo a ai, la segunda a model, y así sucesivamente.
| Representación | Forma escrita | Forma | Orientación |
|---|---|---|---|
| Vector columna | cuatro filas, una columna | ||
| Vector fila | una fila, cuatro columnas | ||
| Array NumPy 1-D | np.array([2, 2, 1, 1]) | (4,) | todavía sin eje de fila/columna |
La última línea marca un límite de implementación que conviene recordar. Un array NumPy unidimensional tiene un eje de longitud 4. No es un array fila o columna bidimensional. La documentación oficial de NumPy sobre ndarray define shape como una tupla que contiene el tamaño de cada dimensión del array, mientras que ndim cuenta los ejes. Para shape == (4,) solo hay un eje.
NumPy hace explícita la orientación al añadir un eje
Este ejemplo ejecutable reproduce el cálculo manual:
from collections import Counter
import numpy as np
document = "AI models use data. AI models use vectors."
vocabulary = ("ai", "model", "data", "vector")
raw_tokens = document.lower().replace(".", "").split()
normalization = {"models": "model", "vectors": "vector"}
tokens = [normalization.get(token, token) for token in raw_tokens]
counts = Counter(tokens)
x = np.array([counts[feature] for feature in vocabulary], dtype=np.int64)
column = x.reshape(-1, 1)
row = x.reshape(1, -1)
print("features:", vocabulary)
print("values:", x.tolist())
print("1-D shape:", x.shape)
print("column shape:", column.shape)
print("row shape:", row.shape)
print("x.T shape:", x.T.shape)
La salida verificada es:
features: ('ai', 'model', 'data', 'vector')
values: [2, 2, 1, 1]
1-D shape: (4,)
column shape: (4, 1)
row shape: (1, 4)
x.T shape: (4,)
La documentación oficial de numpy.reshape indica que un reshape compatible devuelve un array con una forma nueva sin cambiar sus datos. Aquí, reshape(-1, 1) pide a NumPy que infiera el número de filas y cree una columna; reshape(1, -1) pide una fila e infiere el número de columnas.
La última salida expone un error frecuente. La documentación oficial de numpy.transpose especifica que transponer un array 1-D devuelve una vista sin cambios. No existe un segundo eje que intercambiar. Usa x[:, np.newaxis] o x.reshape(-1, 1) para crear la forma (4, 1), y usa x[np.newaxis, :] o x.reshape(1, -1) para crear la forma (1, 4).
Tres arrays aparentemente correctos pueden describir datos distintos
La forma es solo la mitad del contrato. El orden de las características aporta la otra mitad. Supón que un pipeline declara
y guarda . Otro pipeline declara
pero pasa la misma secuencia numérica sin reordenarla. Bajo , la primera coordenada afirma que data aparece dos veces, lo cual es falso para el documento. El array tiene la longitud y el dtype esperados, así que la validación de forma por sí sola no detectará el error semántico.
Un cambio correcto de a debe mover cada valor junto con su etiqueta:
Por tanto, el vector en el orden es .
Otros dos casos límite afinan la definición:
- Si un documento no contiene ninguno de los términos del vocabulario, se asigna al vector cero . Su dimensión sigue siendo 4; los ceros son valores de coordenadas, no coordenadas ausentes.
- Cuando , un vector fila y uno columna tienen ambos forma después de transponer. El caso de una sola coordenada oculta la diferencia de orientación visible, por lo que es un mal ejemplo para depurar formas.
La representación está lista solo cuando coinciden los valores, las etiquetas de características y la forma esperada. La Lección 15 sumará vectores componente a componente. Esa operación tendrá sentido porque la coordenada de ambas entradas se refiere al mismo tipo de señal: el invariante establecido aquí.
Comprueba tu comprensión
Pregunta 1
Sea x = [4, 0, −2]ᵀ, con características ordenadas (clicks, purchases, returns). Indica la dimensión del vector e interpreta cada coordenada.
Mostrar la solución paso a paso
Hay tres coordenadas ordenadas, así que y la dimensión del vector es 3.
Relaciona las posiciones con las etiquetas de características en orden:
- significa cuatro clicks;
- significa cero purchases; y
- significa que la característica returns tiene valor según la codificación indicada.
El tercer valor negativo puede requerir contexto del dominio —podría ser una característica centrada o un cambio neto, en lugar de un recuento bruto—, pero no cambia la dimensión ni el orden de coordenadas del vector.
Pregunta 2
Usando el vocabulario ordenado (ai, model, data, vector), codifica «Data guides a model; data helps AI». Cuenta solo los cuatro términos del vocabulario después de pasar a minúsculas y eliminar la puntuación.
Mostrar la solución paso a paso
Después de pasar a minúsculas y eliminar la puntuación, los tokens normalizados relevantes son
data, model, data, aiCuéntalos en el orden del vocabulario, no en el orden del documento:
Por tanto, el vector del documento es . El término del vocabulario ausente aporta un valor cero; su coordenada sigue presente.
Pregunta 3
Un vector [3, 1, 0]ᵀ usa el orden de características (cat, dog, bird). Un segundo servicio espera (bird, cat, dog). ¿Qué valores deben enviarse y por qué es incorrecto enviar [3, 1, 0]ᵀ sin cambios?
Mostrar la solución paso a paso
Primero empareja cada valor original con su etiqueta:
Ahora lee esos valores en el orden del segundo servicio:
Enviar sin cambios afirmaría bird: 3, cat: 1 y dog: 0. La forma pasaría, pero cada coordenada llevaría el significado de característica equivocado.
Pregunta 4
Clasifica las formas (5,), (1, 5) y (5, 1) como array NumPy 1-D, array fila o array columna. Después indica cuáles son bidimensionales.
Mostrar la solución paso a paso
Cuenta las entradas de cada tupla de forma:
(5,)contiene un eje de longitud 5, así que es un array NumPy 1-D sin orientación explícita de fila o columna.(1, 5)contiene dos ejes: una fila y cinco columnas. Es un array fila.(5, 1)contiene dos ejes: cinco filas y una columna. Es un array columna.
Los dos últimos son bidimensionales porque sus tuplas de forma contienen dos tamaños de eje. Los tres contienen cinco valores escalares, así que el número de valores almacenados por sí solo no determina la orientación.
Pregunta 5
¿Por qué x.T no convierte x = np.array([2, 2, 1, 1]) en un array columna? Da una expresión que sí cree la forma (4, 1).
Mostrar la solución paso a paso
El array x tiene forma (4,), lo que significa que solo tiene un eje. La transposición puede reordenar ejes existentes, pero no hay un segundo eje que intercambiar con el primero. Por eso x.T.shape sigue siendo (4,).
Añade un eje de forma explícita:
column = x[:, np.newaxis]
print(column.shape) # (4, 1)El corte selecciona los cuatro valores del eje existente, mientras que np.newaxis crea un segundo eje de longitud 1. x.reshape(-1, 1) es una construcción de forma equivalente para este ejemplo.
Pregunta 6
Dos frases se asignan al mismo vector de recuentos [1, 1, 1, 0]ᵀ con el vocabulario (ai, model, data, vector). ¿Qué puedes concluir y qué no puedes concluir?
Mostrar la solución paso a paso
La igualdad de coordenadas permite concluir que el codificador conservó los mismos cuatro recuentos para ambas frases:
No podemos concluir que las frases originales tengan el mismo orden de palabras, gramática, palabras adicionales o significado. La representación por recuentos descarta esas propiedades. La igualdad de los vectores codificados es igualdad de las características conservadas, no una prueba de que los documentos fuente sean idénticos.
Pregunta 7
Un documento no contiene ninguno de los cuatro términos del vocabulario y se asigna a [0, 0, 0, 0]ᵀ. ¿Ha perdido el vector su dimensión? Explica el resultado y una limitación.
Mostrar la solución paso a paso
No. El vector sigue teniendo cuatro coordenadas ordenadas, por lo que sigue siendo un elemento de . Cada coordenada existe y tiene valor cero:
El resultado solo indica que ninguna de las características seleccionadas del vocabulario apareció según las reglas del codificador. No indica que el documento estuviera vacío o careciera de significado. El documento puede contener muchas palabras fuera del vocabulario, que esta representación ignora deliberadamente.