Pregunta

Mi conjunto de datos contiene una serie de atributos numéricos y una categórica.

Say, NumericAttr1, NumericAttr2, ..., NumericAttrN, CategoricalAttr,

donde CategoricalAttr toma uno de los tres valores posibles:. CategoricalAttrValue1, CategoricalAttrValue2 o CategoricalAttrValue3

Estoy usando por defecto k-means clustering algoritmo para la aplicación Octave https://blog.west.uni-koblenz.de/2012-07-14/a-working-k-means-code-for-octave/ . Funciona con sólo datos numéricos.

Así que mi pregunta: ¿Es correcto para dividir la CategoricalAttr atributo en variables categóricas tres numérico (binario), como IsCategoricalAttrValue1, IsCategoricalAttrValue2, IsCategoricalAttrValue3

¿Fue útil?

Solución

El algoritmo de k-medias estándar no es directamente aplicable a los datos categóricos, por diversas razones. El espacio muestral para los datos categóricos es discreta, y no tiene un origen natural. Una función de la distancia euclídea en un espacio tan no es realmente significativa. Como alguien dijo, "El hecho de una serpiente posee ni ruedas ni piernas nos permite decir nada sobre el valor relativo de las ruedas y las piernas." (De aquí )

Hay una variación de k-medias conocidos como k-modos, introducido en este papel por Zhexue Huang, que es adecuado para datos categóricos. Tenga en cuenta que las soluciones que dan son sensibles a las condiciones iniciales, como se discute aquí (PDF), por instancia.

papel de Huang (vinculado anteriormente) también tiene una sección en "K-prototipos" que se aplica a los datos con una mezcla de características categóricos y numéricos. Se utiliza una medida de la distancia que las mezclas de la distancia de Hamming para características categóricas y la distancia euclídea para las características numéricas.

Una búsqueda en Google de "k-medias mezcla de datos categóricos" resulta un buen número de trabajos más recientes sobre diversos algoritmos para la k-medias-como la agrupación con una mezcla de datos numéricos y categóricos. (Todavía no he leído, así que no puedo comentar sobre sus méritos.)


En realidad, lo que sugieres (conversión de atributos categóricos en valores binarios, y luego hacer k-medias como si fueran valores numéricos) es otro enfoque que se ha intentado antes (anterior a k-modos). (Ver Ralambondrainy, H. 1995. Una versión conceptual del algoritmo de k-medias Pattern Recognition Letters, 16:.. 1147-1157) pero creo que el k-modos de enfoque es preferido por las razones que se ha indicado anteriormente

.

Otros consejos

En mi opinión, hay soluciones para hacer frente a los datos categóricos en la agrupación. R viene con una distancia específica para los datos categóricos. Esta distancia se llama Gower ( http: //www.rdocumentation .org / paquetes / StatMatch / versiones / 1.2.0 / temas / gower.dist ) y funciona bastante bien.

(Además de la excelente respuesta por Tim Goodman)

La elección de k-modos es definitivamente el camino a seguir para la estabilidad de la agrupación algoritmo utilizado.

  1. El algoritmo de agrupamiento es libre de elegir cualquier puntuación / similitud distancia métrica. Euclidiana es el más popular. Sin embargo, cualquier otra métrica se puede utilizar que las escalas de acuerdo con la distribución de datos en cada dimensión / atributo, por ejemplo el Mahalanobis métrica. Ilustrando la distancia de puntos de datos desde el centro en base a la distancia usada métrica.

  2. En cuanto a la mixta (numérica y categórica) La agrupación de un papel de buena que podría ayudar es: INCONCO: Interpretables La agrupación de objetos numéricos y categóricos

  3. Más allá de k-medias: Desde plain vanilla k-medias ya ha sido descartado como una aproximación adecuada a este problema, voy a aventurarse más allá de la idea de pensar en la agrupación como un modelo apropiado problema. Diferentes medidas, como la teoría de la información métrica: Kullback-Liebler así el trabajo de divergencia cuando se trata de un modelo paramétrico converger hacia la distribución de datos. (Por supuesto técnicas de agrupamiento paramétricas como GMM son más lentos que Kmeans, por lo que hay inconvenientes a tener en cuenta)

  4. Fuzzy k-Modos de la agrupación también suena atractivo ya que las técnicas de lógica difusa se han desarrollado para hacer frente a algo así como datos categóricos. Ver agrupación difusa de los datos categóricos mediante los centroides difusos para obtener más información .

También puedes ver: Rock: Un robusto algoritmo de clústeres para categórica Atributos

Esta pregunta parece realmente acerca de la representación, y no tanto sobre la agrupación.

Los datos categóricos es un problema para la mayoría de los algoritmos de aprendizaje automático. Supongamos, por ejemplo, tiene alguna variable categórica llamada "color" que podrían asumir los valores de rojo, azul o amarillo. Si nos limitamos a codifican estas numéricamente como 1,2, y 3, respectivamente, nuestro algoritmo va a pensar que el rojo (1) es en realidad más cerca de azul (2) de lo que es amarillo (3). Tenemos que utilizar una representación que permite que el equipo entiende que todas estas cosas son en realidad igualmente diferente.

Una forma sencilla es utilizar lo que se llama una representación uno en caliente, y es exactamente lo que pensó que debe hacer. En lugar de tener una variable como "color" que puede tomar tres valores, la separamos en tres variables. Estos serían "color-rojo", "color azul", y "color amarillo", que todo sólo puede tomar el valor 1 ó 0.

Esto aumenta la dimensionalidad del espacio, pero ahora se podría utilizar cualquier algoritmo de agrupamiento te gusta. Se hace a veces tiene sentido para Zscore o blanquear los datos después de realizar este proceso, pero la idea es que su duda razonable.

También se puede dar el algoritmo de agrupamiento Expectativa Maximización de un intento. Se puede trabajar en los datos categóricos y le dará una probabilidad estadística de los cuales categórica valor (o valores) es más probable que un cúmulo de asumir.

Depende de su variable categórica se utiliza. Para las variables ordinales, como dicen mal, el promedio y bueno, tiene sentido sólo para usar una variable y tienen valores 0,1,2 y distancias tienen sentido aquí (Avarage está más cerca de bueno y malo). Sin embargo, si no hay un orden, lo ideal sería utilizar una codificación caliente como se mencionó anteriormente.

No use k-means clustering en un conjunto de datos que contiene los tipos de datos mixtos. Más bien, hay un número de algoritmos de agrupación que pueden manejar apropiadamente los tipos de datos mixtos. Algunas posibilidades incluyen lo siguiente:

1) algoritmos basados-Partitioning: k-prototipos, Squeezer
2) los algoritmos jerárquicos: Rock, Aglomerativo sola, media y completa vinculación
3) algoritmos basados ??en densidad: HIERDENC, Mulic, Camarilla
algoritmos 4) basadas en modelos: agrupación SVM, mapas auto-organización

Si desea obtener más información sobre estos algoritmos, el manuscrito 'Encuesta de Clustering Algoritmos' escrito por Xu Rui ofrece una amplia introducción al análisis de conglomerados.

objetivo K-medias es reducir la varianza dentro del cluster, y porque calcula los centroides como el punto medio de un clúster, que es necesario para utilizar la distancia euclídea con el fin de converger correctamente. Por lo tanto, si desea utilizar absolutamente K-medias, es necesario asegurarse de que sus datos funciona bien con ella.

Representación

K-medias, y la agrupación en general, los intentos para dividir los datos en grupos significativos, asegurándose de que los casos en los mismos grupos son similares entre sí. Por lo tanto, se necesita una buena manera de representar los datos de manera que se puede calcular fácilmente una medida de similitud significativa.

El uso de la codificación de una sola caliente en las variables categóricas es una idea buena cuando las categorías son equidistantes entre sí. Por ejemplo, si tiene el color azul claro, azul oscuro y amarillo, utilizando la codificación de una sola caliente no podría darle los mejores resultados, ya que de color azul oscuro y azul claro es probable "más estrecha" entre sí de lo que son a amarillo.

En caso de que el valor categórico no son "equidistante" y se puede pedir, también se podría dar la categoría de un valor numérico. Por ejemplo, niño, adolescente, adulto, podrían ser representados como 0, 1 y 2. Esto tendría sentido, porque un adolescente es "más cerca" de ser un niño que un adulto está.

K-medoides

Un enfoque más genérico para K-medias es K-medoides. K-medoides funciona de manera similar como K-medias, pero la diferencia principal es que el centro de gravedad de cada grupo se define como el punto de que reduce la suma dentro de la agrupación de las distancias. Hacer cumplir esta le permite usar cualquier medida de la distancia que desee y, por lo tanto, se podría construir su propia medida a medida que tendrá en cuenta lo que las categorías deben estar cerca o no.

Si consideramos un escenario en el que la variable categórica no puede ser codificado caliente como la variable categórica tiene más de 200 categorías.

En estos casos se puede utilizar un paquete clustMixType

Se puede manejar datos mixtos (numérica y categórica), sólo tiene que alimentar la información, se segrega de forma automática numéricos y categóricos de datos.

Si usted encuentra cualquier problema como un numérico está bajo categórica entonces puede que as.factor () / viceversa as.numeric (), en ese campo y convertir respectiva que a un factor y se alimentan en que los nuevos datos a el algoritmo.

Calcular lambda, de manera que se puede alimentar en la entrada como en el momento de la agrupación.

que incluso puede obtener un WSS (a menos de suma de cuadrados), la trama (tabla codo) para encontrar el número óptimo de las agrupaciones.

Espero que esta respuesta te ayuda a conseguir resultados más significativos.

Muchos de los anteriores en punta que k-medias pueden ser implementadas en las variables que son categórico y continuo, que es mal y los resultados deben tomarse con una pizca de sal.

Como se mencionó anteriormente por @Tim anteriormente, no tiene sentido para calcular la distancia euclidiana entre los puntos que ni tienen una escala ni tienen un orden. Al codificar una sola caliente las variables categóricas se genera una matriz dispersa de 0 y 1.. A medida que el rango de los valores es fijo y entre 0 y 1 que necesitan para ser normalizado de la misma manera como variables continuas. Las puntuaciones Z se utilizan para se utiliza para calcular la distancia entre los puntos. Que sigue siendo, no toda la razón. Voy a explicar esto con un ejemplo. Como las categorías son mutuamente excluyentes la distancia entre dos puntos con respecto a las variables categóricas, toma cualquiera de los dos valores, alta o baja, es decir, cualquiera de los dos puntos pertenecen a la misma categoría o no lo son. Debido a estos valores extremos, el algoritmo termina dando más peso sobre las variables continuas en influir en la formación de agrupaciones. Esto se puede comprobar mediante una simple comprobación por ver qué variables influyen y se sorprenderá al ver que la mayoría de ellos serán variables categóricas. (Maneras de encontrar las variables que influyen en la mayor parte [1])

Un ejemplo: Considere un país variable categórica. Ahora bien, como sabemos la distancia (disimilitud) entre las observaciones de diferentes países son iguales (suponiendo que no hay otras similitudes como países vecinos o países del mismo continente). Pero al contrario de esto, si se calculan las distancias entre las observaciones después de la normalización de los valores de uno codificados calientes que serán inconsistentes (aunque la diferencia es menor de edad), junto con el hecho de que ellos toman valores altos o bajos.

En definitiva, la mejor opción disponible para el pitón es k-prototipos que puede manejar tanto categóricas y las variables continuas.

[1]: Finding variables más influyentes en la formación de agrupaciones: https://stackoverflow.com/a/53081779/8224401

modelos de mezcla se puede utilizar para agrupar un conjunto de datos compuesta de las variables continuas y categóricas.

Se puede utilizar el paquete de R VarSelLCM (disponible en CRAN), que los modelos, dentro de cada grupo, las variables continuas por distribuciones gaussianas y las variables ordinal / binarios. Tenga cuidado para almacenar sus datos en un hoja.de.datos donde las variables continuas son "numérico" y las variables categóricas son "factor".

Un tutorial está disponible en: http: //varsellcm.r-forge.r- project.org/

Por otra parte, los valores que faltan pueden ser manejados por el modelo en cuestión.

Me encontré con el mismo problema y trató de trabajar mi cabeza alrededor de ella (sin saber k-prototipos existido) la rica literatura he encontrado mi propia encontró con su origen en la idea de no medir las variables con el al métrica misma distancia todos. Adicionalmente, pueden existir diversas fuentes de información, que pueden implicar diferentes estructuras o "vistas" de los datos. Este es un problema natural, cuando tengan que enfrentarse relaciones sociales tales como los sitios web en Twitter / etc.

Una de las posibles soluciones es abordar cada subconjunto de variables (es decir numérica y categórica) por separado. Es fácilmente comprehandable lo que es una medida de la distancia hace en una escala numérica. Los datos categóricos en su propia lata con la misma facilidad ser entendidas: Considere tener vectores de observación binarios: la tabla de contingencia en 0/1 entre dos vectores de observación contiene gran cantidad de información sobre el simmilarity entre esos dos observaciones. Hay rica literatura sobre las diversas medidas de similitud personalizados sobre vectores binarios -. Más a partir de la tabla de contingencia

Dado ambas matrices distancia / similitud, tanto la descripción de las mismas observaciones, se puede extraer un gráfico en cada uno de ellos (Multi-View-Graph-Clustering) o extraer un único gráfico con múltiples bordes - cada nodo (observación) con como muchos bordes a otro nodo, ya que hay matrices de información (Multi-Edge-Clustering). Cada borde siendo asignado el peso de la medida simmilarity / distancia correspondiente. Comience aquí: Github lista de Clustering Gráfico Algoritmos y sus papeles . Como hay múltiples conjuntos de información disponibles en una sola observación, estos deben ser entrelazan usando, por ejemplo descendientes de análisis espectral o vinculados factorización matriz. El análisis espectral de ser el método predeterminado para la búsqueda de partes altamente conectados o fuertemente ponderados de gráficos individuales. Tener una incrustación espectral de los datos entrelazadas, cualquier algoritmo de agrupamiento de datos numéricos pueden fácilmente el trabajo. Por omisión de la literatura es kmeans para la cuestión de simplicidad, pero mucho más avanzado -. y no como restrictivas algoritmos están ahí fuera, que se pueden utilizar indistintamente en este contexto

Me gusta la belleza y la generalidad de este enfoque, ya que es fácilmente extensible a múltiples conjuntos de información en lugar de meras dtypes y además su respeto a la "medida" específica para cada subconjunto de datos. Esto no le aliviar de puesta a punto del modelo con diferentes medidas de distancia y similitud o escalar sus variables (me encontré escalar las variables numéricas a las escalas de relación en el contexto de mi análisis)

Desde una perspectiva considéré escalabilidad, que existen principalmente dos problemas:

  1. (donde existe una rica literatura de algoritmos también) Eigen problema de aproximación
  2. estimación de matriz de distancia (un problema puramente combinatorical, que crece grande muy rápidamente - no he encontrado una manera eficiente alrededor de él aún)

divertirse con él!

Es posible que desee ver en la ingeniería característica automática: http: //www.orges-leka .de / automatic_feature_engineering.html . El método se basa en Bourgain incrustación y se puede utilizar para características numéricas derivan de categórica mezclado y tramas de datos numéricos o para cualquier conjunto de datos que soporta distancias entre dos puntos de datos. Después de haber transformado los datos a características sólo numéricos, se puede utilizar K-means clustering directamente después

Licenciado bajo: CC-BY-SA con atribución
scroll top