La agrupación (también llamada agrupamiento) es un
ingeniería de atributos
técnica que agrupa diferentes subrangos numéricos en discretizaciones o
buckets.
En muchos casos, la discretización convierte datos numéricos en datos categóricos.
Por ejemplo, considera un atributo
llamado X
cuyo valor más bajo es 15 y
el valor más alto es 425. Con la discretización, podrías representar X
con el
siguientes cinco discretizaciones:
- Bandeja 1: 15 a 34
- Bandeja 2: 35 a 117
- Bandeja 3: 118 a 279
- Bandeja 4: 280 a 392
- Bandeja 5: 393 a 425
La discretización 1 abarca el rango de 15 a 34, por lo que cada valor de X
se extiende entre 15 y 34.
termina en la bandeja 1. Un modelo entrenado con estos discretizaciones no reaccionará de manera diferente
a valores X
de 17 y 29, ya que ambos valores están en la bandeja 1.
El vector de atributos representa las cinco discretizaciones de la siguiente manera:
Número de bandeja | Rango | Vector de atributos |
---|---|---|
1 | 15-34 | [1.0, 0.0, 0.0, 0.0, 0.0] |
2 | 35-117 | [0.0, 1.0, 0.0, 0.0, 0.0] |
3 | 118-279 | [0.0, 0.0, 1.0, 0.0, 0.0] |
4 | 280-392 | [0.0, 0.0, 0.0, 1.0, 0.0] |
5 | 393-425 | [0.0, 0.0, 0.0, 0.0, 1.0] |
Aunque X
es una sola columna en el conjunto de datos, la discretización causa un modelo
para tratar a X
como cinco atributos independientes. Por lo tanto, el modelo aprende
pesos separados para cada discretización.
La discretización es una buena alternativa al escalamiento o recorte cuando cualquiera de los se cumplen las siguientes condiciones:
- La relación lineal general entre el atributo y el label es débil o inexistente.
- Cuando los valores de los atributos se agrupan en clústeres.
La discretización puede parecer contradictoria, dado que el modelo del el ejemplo anterior trata los valores 37 y 115 de manera idéntica. Pero cuando un atributo parece más torpe que el lineal, la discretización es una manera mucho mejor de representan los datos.
Ejemplo de discretización: cantidad de compradores frente a temperatura
Supongamos que creas un modelo que predice la cantidad de compradores por la temperatura exterior de ese día. Aquí hay un diagrama temperatura frente a la cantidad de compradores:
![Figura 9: Un diagrama de dispersión de 45 puntos. Los 45 puntos de forma natural
se agrupan en tres grupos.](https://developers.google.cn/static/machine-learning/crash-course/images/binning_temperature_vs_shoppers.png?authuser=6&hl=es-419)
El gráfico muestra, como es lógico, que la cantidad de compradores fue mayor cuando la temperatura era la más cómoda.
Podrías representar el atributo como valores sin procesar: una temperatura de 35.0 en el sería 35.0 en el vector de atributos. ¿Es esa la mejor idea?
Durante el entrenamiento, un modelo de regresión lineal aprende un solo peso para cada . Por lo tanto, si la temperatura se representa como una única función, un temperatura de 35.0 tendría cinco veces la influencia (o un quinto influencia) en una predicción como una temperatura de 7.0. Sin embargo, el diagrama no mostrar algún tipo de relación lineal en el valor del atributo.
El gráfico sugiere tres clústeres en los siguientes subrangos:
- La discretización 1 es el rango de temperatura de 4 a 11.
- La discretización 2 es el rango de temperatura de 12 a 26.
- La discretización 3 es el rango de temperatura de 27 a 36.
![Figura 10: El mismo diagrama de dispersión de 45 puntos que en el ejemplo anterior
pero con líneas verticales para que las discretizaciones sean más evidentes.](https://developers.google.cn/static/machine-learning/crash-course/images/binning_temperature_vs_shoppers_divided_into_3_bins.png?authuser=6&hl=es-419)
El modelo aprende pesos separados para cada discretización.
Si bien es posible crear más de tres discretizaciones, incluso una independiente para cada medición de temperatura, esto suele ser una mala idea por las siguientes razones:
- Un modelo solo puede aprender la asociación entre una discretización y una etiqueta si hay hay suficientes ejemplos en esa bandeja. En el ejemplo dado, cada una de las 3 discretizaciones contiene al menos 10 ejemplos, que podrían ser suficientes para el entrenamiento. Con 33 bandejas separadas, ninguna de las discretizaciones contendrá suficientes ejemplos para que el modelo se entrene.
- Un depósito separado para cada temperatura da como resultado 33 funciones de temperatura separadas. Sin embargo, por lo general, debes minimizar la cantidad de atributos en un modelo.
Ejercicio: Comprueba tus conocimientos
El siguiente gráfico muestra la mediana del precio de una casa para cada 0.2 grados de del país mítico de Freedonia:
![Figura 11: Un trazado de los valores de viviendas por latitud La casa más baja
es de aproximadamente 327 y el más alto es 712. Las latitudes abarcan 41.0
hasta 44.8, donde un punto representa el valor medio de una casa para cada
0.2 grados de latitud. El patrón es muy irregular, pero
dos clústeres distintos (uno entre 41.0 y 41.8),
y otro clúster entre 42.6 y 43.4).](https://developers.google.cn/static/machine-learning/crash-course/images/MedianHouseValueByLatitude.png?authuser=6&hl=es-419)
El gráfico muestra un patrón no lineal entre el valor de la casa y la latitud, por lo que es poco probable que representar la latitud como valor de punto flotante ayude que un modelo haga buenas predicciones. Quizás agrupar latitudes sería una mejor idea?
- 41.0 a 41.8
- 42.0 a 42.6
- 42.8 a 43.4
- 43.6 a 44.8
Agrupamiento en cuantiles
El agrupamiento en cuantiles crea límites de agrupamiento, de modo que la cantidad de ejemplos en cada bucket es exacta o casi igual. Agrupamiento en cuantiles principalmente oculta los valores atípicos.
Para ilustrar el problema que resuelve el agrupamiento en cuantiles, considera buckets espaciados igual que se muestra en la siguiente figura, donde cada de los diez buckets representa un intervalo de exactamente 10,000 dólares. Observa que el bucket de 0 a 10,000 contiene decenas de ejemplos pero el bucket de 50,000 a 60,000 contiene solo 5 ejemplos. Por lo tanto, el modelo tiene suficientes ejemplos para entrenar en el rango de 0 a 10,000 pero no hay suficientes ejemplos para entrenar en el bucket de 50,000 a 60,000.
![Figura 13. Una representación del precio de un automóvil versus la cantidad de autos vendidos a
ese precio. El máximo de la cantidad de automóviles vendidos es de 6,000.
Por encima del precio de 6,000, la cantidad de automóviles que se vende en general
y disminuye, con muy pocos automóviles vendidos entre un precio de 40,000 a
60,000. El diagrama está dividido en 6 categorías de igual tamaño, cada una con
un rango de 10,000. El primer bucket contiene todos los autos vendidos
entre un precio de 0 y un precio de 10,000, la segunda
contiene todos los automóviles vendidos entre un precio de 10 001 y
20,000, y así sucesivamente. El primer bucket contiene muchos ejemplos. que las
bucket siguiente contiene menos ejemplos.](https://developers.google.cn/static/machine-learning/crash-course/images/NeedsQuantileBucketing.png?authuser=6&hl=es-419)
En cambio, la siguiente figura utiliza el agrupamiento en cuantiles para dividir los precios de los automóviles en discretizaciones con aproximadamente la misma cantidad de ejemplos en cada intervalo. Ten en cuenta que algunas discretizaciones abarcan un intervalo de precios limitado, mientras que otras abarcan un intervalo de precios muy amplio.
![Figura 14. Igual que la figura anterior, excepto con buckets de cuantiles.
Es decir, los buckets ahora tienen diferentes tamaños. El primer bucket
contiene los automóviles vendidos entre 0 y 4,000, el segundo bucket contiene
se vendieron entre 4,001 y 6,000. El sexto bucket contiene las
de automóviles vendidos entre 25,001 y 60,000. La cantidad de autos en cada bucket
ahora es casi lo mismo.](https://developers.google.cn/static/machine-learning/crash-course/images/QuantileBucketing.png?authuser=6&hl=es-419)