El término dimensión es un sinónimo de la cantidad de elementos en una vector de atributos Algunos atributos categóricos son de baja dimensión. Por ejemplo:
Nombre de la función | Cant. de categorías | Categorías de muestra |
---|---|---|
snowed_today | 2 | Verdadero, Falso |
skill_level | 3 | Principiante, profesional, experto |
season | 4 | Invierno, primavera, verano, otoño |
day_of_week | 7 | Lunes, martes y miércoles |
planeta | 8 | Mercurio, Venus, la Tierra |
Cuando un atributo categórico tiene un número bajo de categorías posibles, puede codificarlo como un vocabulario. Con una codificación de vocabulario, el modelo trata a cada valor categórico posible como un atributo independiente. Durante el entrenamiento, el y el modelo aprende diferentes pesos para cada categoría.
Por ejemplo, imagina que quieres crear un modelo
para predecir el precio de un automóvil
en parte, en un atributo categórico llamado car_color
.
Quizás los autos rojos valen más que los verdes.
Dado que los fabricantes ofrecen una cantidad limitada de colores para el exterior, car_color
es
un atributo categórico de baja dimensión.
La siguiente ilustración sugiere un vocabulario (valores posibles) para
car_color
Ejercicio: Evalúa tu intuición
"Red"
no es un número de punto flotante. Tú
debe convertir cadenas como "Red"
en números de punto flotante.
Números de índice
Los modelos de aprendizaje automático solo pueden manipular números de punto flotante. Por lo tanto, debes convertir cada cadena en un número de índice único, como la siguiente ilustración:
Comprueba tu intuición
"Black"
(número de índice 5) para que sea 5 veces más significativo
al modelo que "Orange"
(índice número 1).
"Black"
(número de índice 5) es
5 veces más significativo para el modelo que "Orange"
(número de índice 1).
Codificación one-hot
El siguiente paso para crear un vocabulario es convertir cada número de índice en Su codificación one-hot. En una codificación one-hot:
- Cada categoría está representada por un vector (matriz) de N elementos, donde N
es el número de categorías. Por ejemplo, si
car_color
tiene ocho valores posibles categorías, el vector one-hot que representa tendrá ocho elementos. - Exactamente uno de los elementos en un vector one-hot tiene el valor 1.0. todos los demás elementos tienen el valor 0.0.
Por ejemplo, la siguiente tabla muestra la codificación one-hot para cada
car_color
Función | Rojo | Orange | Azul | Amarillo | Verde | Negro | Púrpura | Brown |
---|---|---|---|---|---|---|---|---|
“Rojo” | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
“Naranja” | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
“Azul” | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
“Amarillo” | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
“Verde” | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
“Negro” | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
“Púrpura” | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
“Marrón” | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
Es el vector one-hot, no la cadena ni el número de índice, el que se pasa al vector de atributos. El modelo aprende un peso independiente para cada elemento de el vector de atributos.
En la siguiente ilustración, se sugieren las diversas transformaciones del representación de vocabulario:
Representación dispersa
Un atributo cuyos valores son predominantemente cero (o están vacíos) se denomina
atributo disperso. Muchos
los atributos categóricos, como car_color
, suelen ser atributos dispersos.
Representación dispersa
significa almacenar la posición del estado
en un vector disperso. Por ejemplo, el vector one-hot de "Blue"
es el siguiente:
[0, 0, 1, 0, 0, 0, 0, 0]
Dado que 1
se encuentra en la posición 2 (cuando se inicia el recuento en 0), el
la representación dispersa para el vector one-hot anterior es la siguiente:
2
Ten en cuenta que la representación dispersa consume mucha menos memoria que la vector one-hot de ocho elementos. Es importante destacar que el modelo debe entrenarse en el del vector one-hot, no la representación dispersa.
Valores atípicos en datos categóricos
Al igual que los datos numéricos, los datos categóricos también contienen valores atípicos. Supongamos
car_color
no solo contiene los colores populares, sino también algunos de uso poco frecuente.
y valores atípicos, como "Mauve"
o "Avocado"
.
En lugar de asignar a cada uno de estos colores atípicos una categoría separada,
agruparlos en una única estrategia general categoría llamada fuera de vocabulario
(OOV). En otras palabras, todos los colores con valores atípicos se agrupan en un solo
un bucket de valores atípicos. El sistema aprende un solo peso para ese bucket de valores atípicos.
Codificación de atributos categóricos de alta dimensión
Algunos atributos categóricos tienen una gran cantidad de dimensiones, como los de la siguiente tabla:
Nombre de la función | Cant. de categorías | Categorías de muestra |
---|---|---|
words_in_english | Aprox. 500,000 | "feliz", "caminar" |
US_postal_codes | Aprox. 42,000 | “02114”, “90301” |
last_names_in_Germany | Aprox. 850,000 | "Schmidt", "Schneider" |
Cuando el número de categorías es alto, la codificación one-hot suele ser una mala opción. Incorporaciones, se detallan en una módulo de incorporaciones, por lo general, una opción mucho mejor. Las incorporaciones reducen sustancialmente la cantidad de dimensiones que benefician a los modelos de dos maneras importantes:
- Por lo general, el modelo se entrena más rápido.
- Por lo general, el modelo compilado infiere predicciones más rápido. Es decir, tiene menor latencia.
Hash (también denominado hashing) truco) es una forma menos común de reducir la cantidad de dimensiones.