Tengo un conjunto de datos que consta de 5 características: A, B, C, D, E. Todos son valores numéricos. En lugar de hacer una agrupación basada en la densidad, lo que quiero hacer es agrupar los datos en forma de árbol de decisión.
El enfoque que quiero decir es algo como esto:
El algoritmo puede dividir los datos en X grupos iniciales basados en la característica C, es decir, los grupos X pueden tener valores pequeños de C, medio C, C grande y C muy grande, etc. A continuación, debajo de cada uno de los nodos del grupo X, el algoritmo se divide aún más los datos en grupos Y basados en la función A. El algoritmo continúa hasta que se usen todas las funciones.
El algoritmo que describí anteriormente es como un algoritmo de árbol de decisión. Pero lo necesito para la agrupación sin supervisión, en lugar de la clasificación supervisada.
Mis preguntas son las siguientes:
- ¿Ya existen tales algoritmos? ¿Cuál es el nombre correcto para tal algoritmo?
- ¿Existe un paquete / biblioteca R / python que tenga una implementación de este tipo de algoritmos?
But I need it for unsupervised clustering, instead of supervised classification
Esta frase clave por sí sola es demasiado breve y no expande claramente lo que quieres. Arriba describiste lo que me parece un árbol de decisiones. ¿Puedes ahora dar un pasaje similar sobre el algo que quieres?CHAID
árbol, por ejemplo. Debe elegir la variable dependiente. Sea A. El algoritmo selecciona entre B, C, D, E la variable más correlacionada con A y agrupa esa variable (digamos, el predictor, sea D) en dos o más categorías "óptimamente", de modo que la correlación (entre la variable categorizada D y la variable A se maximiza. Digamos que dejó 3 grupos, D1, D2, D3. A continuación, el mismo procedimiento se repite dentro de cada categoría (grupo) de D por separado, y el mejor predictor entre B, C , E se busca debajo de binning. Etc. ¿Qué es exactamente lo que no te conviene aquí?Respuestas:
Es posible que desee considerar el siguiente enfoque:
Esto le permitirá probar diferentes algoritmos de agrupamiento, pero obtendrá una aproximación del árbol de decisión para cada uno de ellos.
fuente
El primer artículo que viene a la mente es este: Agrupación a través de la construcción del árbol de decisión https://pdfs.semanticscholar.org/8996/148e8f0b34308e2d22f78ff89bf1f038d1d6.pdf
Como otro mencionado, "jerárquico" (de arriba abajo) y "aglomeración jerárquica" (de abajo hacia arriba) son técnicas bien conocidas diseñadas usando árboles para agrupar. Scipy tiene esto.
Si está de acuerdo con el código personalizado porque no conozco ninguna biblioteca, hay dos técnicas que puedo recomendar. Tenga en cuenta que estos no están técnicamente agrupados debido a la mecánica de la que dependen. Podría llamar a esto pseudo agrupación.
1) Supervisado: Esto es algo similar al documento (vale la pena leer). Cree un modelo de árbol de decisión único para aprender algún objetivo (usted decide lo que tiene sentido). El objetivo podría ser una columna generada aleatoriamente (requiere repetir y evaluar qué iteración fue la mejor, ver más abajo). Defina cada ruta completa del árbol como un "grupo" ya que los puntos que caen a través de esa serie de ramas son técnicamente similares con respecto al objetivo. Esto solo funciona bien en algunos problemas, pero es eficiente a gran escala. Terminas con K grupos (ver más abajo).
2) Semisupervisado (una especie de no supervisado, pero supervisado mecánicamente), utilizando el n. ° 1: puede intentar construir árboles para predecir columnas en un patrón de omisión. es decir, si el esquema es [A, B, C], construya 3 modelos [A, B] -> C, [A, C] -> B, [B, C] -> A. Obtienes grupos KN (ver más abajo). N = len (esquema). Si algunas de estas características no son interesantes o están demasiado desequilibradas (en el caso de las categorías), no las use como objetivos.
Resumen: el modelo seleccionará las características en orden según la información o la pureza y los clústeres se basarán en unas pocas características en lugar de todas. No existe un concepto de distancia en estos grupos, pero ciertamente podría idear uno basado en los centros.
Pros: fácil de entender y explicar, entrenamiento rápido e inferencia, funciona bien con pocas características fuertes, funciona con categorías. Cuando sus funciones son esencialmente heterogéneas y tiene muchas funciones, no tiene que perder tanto tiempo decidiendo cuál usar en la función de distancia.
Contras: no estándar, debe escribirse, sesgo ingenuo, la colinealidad con el objetivo causa malos resultados, tener 1000 características igualmente importantes no funcionará bien (KMeans con distancia euclidiana es mejor aquí).
¿Cuántos racimos obtienes? Debe, absolutamente debe restringir el modelo DT para que no crezca demasiado. Por ejemplo, establecer muestras mínimas por hoja, nodos de hoja máxima (preferido) o profundidad máxima. Opcionalmente, establezca restricciones de pureza o entropía. Debe verificar cuántos clústeres le proporcionó esto y evaluar si este método es mejor que el clúster real.
¿Las técnicas y parámetros funcionaron bien para usted? ¿Cuál fue el mejor? Para averiguarlo, debe realizar una evaluación de clúster: métricas de rendimiento para evaluar el aprendizaje no supervisado
fuente
Lo que está buscando es un algoritmo de agrupamiento divisivo.
Los algoritmos más comunes son aglomerativos, que agrupan los datos de manera ascendente: cada observación comienza cuando su propio grupo y los grupos se fusionan. La agrupación divisiva es de arriba hacia abajo: las observaciones comienzan en un grupo que se divide gradualmente.
El deseo de parecerse a un árbol de decisión limita las opciones ya que la mayoría de los algoritmos operan en distancias dentro del espacio de datos completo en lugar de dividir una variable a la vez.
DIANA es el único algoritmo de agrupamiento divisivo que conozco, y creo que está estructurado como un árbol de decisión. Me sorprendería si no hay otros por ahí.
Podría usar un algoritmo de árbol de decisión estándar si modifica la regla de división a una métrica que no considera una variable dependiente definida, sino que usa una métrica de bondad de clúster.
fuente
Una idea a considerar es suponer que tiene k características yn puntos. Puede construir árboles aleatorios usando la función (k-1) y la función 1 como variable dependiente. Y. Puede seleccionar una altura h después de la cual tendrá puntos de datos en las raíces. Puedes tomar el tipo de árboles diferentes para votar. Solo un pensamiento.
fuente