¿Es importante escalar los datos antes de la agrupación?

44

Encontré este tutorial , que sugiere que debe ejecutar la función de escala en las características antes de la agrupación (creo que convierte los datos en puntuaciones z).

Me pregunto si eso es necesario. Lo pregunto principalmente porque hay un buen punto de codo cuando no escalo los datos, pero desaparece cuando se escala. :)

Jeremy
fuente

Respuestas:

59

El problema es qué representa una buena medida de la distancia entre casos.

Si tiene dos características, una donde las diferencias entre los casos es grande y la otra pequeña, ¿está preparado para tener la primera como casi el único impulsor de la distancia?

Entonces, por ejemplo, si agrupa a las personas en sus pesos en kilogramos y alturas en metros, ¿una diferencia de 1 kg es tan significativa como una diferencia de 1 m en altura? ¿Importa que obtendría diferentes agrupaciones en pesos en kilogramos y alturas en centímetros? Si sus respuestas son "no" y "sí" respectivamente, entonces probablemente debería escalar.

Por otro lado, si estuvieras agrupando ciudades canadienses basadas en distancias este / oeste y distancias norte / sur, entonces, aunque normalmente habrá diferencias mucho más grandes este / oeste, es posible que estés feliz de usar distancias sin escala en kilómetros o millas (aunque es posible que desee ajustar los grados de longitud y latitud para la curvatura de la tierra).

Enrique
fuente
33

Otras respuestas son correctas, pero podría ser útil obtener una comprensión intuitiva del problema al ver un ejemplo. A continuación, genero un conjunto de datos que tiene dos grupos claros, pero la dimensión no agrupada es mucho más grande que la dimensión agrupada (tenga en cuenta las diferentes escalas en los ejes). La agrupación en los datos no normalizados falla. La agrupación en los datos normalizados funciona muy bien.

Lo mismo se aplicaría con los datos agrupados en ambas dimensiones, pero la normalización ayudaría menos. En ese caso, podría ayudar hacer un PCA, luego normalizar, pero eso solo ayudaría si los clústeres son linealmente separables y no se superponen en las dimensiones de PCA. (Este ejemplo solo funciona tan claramente debido al bajo recuento de conglomerados)

datos agrupados sintéticos, con agrupamiento k-means en las versiones normalizadas y no normalizadas

import numpy as np
import seaborn
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

rnorm = np.random.randn

x = rnorm(1000) * 10  
y = np.concatenate([rnorm(500), rnorm(500) + 5])

fig, axes = plt.subplots(3, 1)

axes[0].scatter(x, y)
axes[0].set_title('Data (note different axes scales)')

km = KMeans(2)

clusters = km.fit_predict(np.array([x, y]).T)

axes[1].scatter(x, y, c=clusters, cmap='bwr')
axes[1].set_title('non-normalised K-means')

clusters = km.fit_predict(np.array([x / 10, y]).T)

axes[2].scatter(x, y, c=clusters, cmap='bwr')
axes[2].set_title('Normalised K-means')
nada101
fuente
17

Que depende de sus datos .

Si tiene atributos con un significado bien definido. Digamos, latitud y longitud, entonces no debe escalar sus datos, porque esto causará distorsión. (K-means también podría ser una mala opción, necesita algo que pueda manejar lat / lon naturalmente)

Si tiene datos numéricos mixtos, donde cada atributo es algo completamente diferente (por ejemplo, tamaño y peso del zapato), tiene diferentes unidades adjuntas (lb, toneladas, m, kg ...), entonces estos valores no son realmente comparables de todos modos; Estandarizarlos en z es una práctica recomendada para darles el mismo peso.

Si tiene valores binarios, atributos discretos o atributos categoriales, manténgase alejado de k-means. K-means necesita calcular medias , y el valor medio no es significativo en este tipo de datos.

Anony-Mousse
fuente
5

Como se explica en este artículo , el medio k minimiza la función de error utilizando el algoritmo de Newton, es decir, un algoritmo de optimización basado en gradiente. La normalización de los datos mejora la convergencia de tales algoritmos. Vea aquí para algunos detalles al respecto.

La idea es que si diferentes componentes de datos (características) tienen diferentes escalas, entonces los derivados tienden a alinearse a lo largo de las direcciones con una mayor varianza, lo que conduce a una convergencia más pobre / más lenta.

jpmuc
fuente
4

La estandarización es un paso importante del preprocesamiento de datos.

controla la variabilidad del conjunto de datos, convierte los datos en un rango específico utilizando una transformación lineal que genera agrupaciones de buena calidad y mejora la precisión de los algoritmos de agrupación, consulte el siguiente enlace para ver sus efectos en el análisis de k-means.

https://pdfs.semanticscholar.org/1d35/2dd5f030589ecfe8910ab1cc0dd320bf600d.pdf

gui jun
fuente