El primer documento que me viene a la mente es éste: Clustering Via Decision Tree Construction https://pdfs.semanticscholar.org/8996/148e8f0b34308e2d22f78ff89bf1f038d1d6.pdf
Como ya se ha mencionado, tanto la "jerárquica" (de arriba abajo) como la "aglomeración jerárquica" (de abajo arriba) son técnicas bien conocidas que utilizan árboles para realizar la agrupación. Scipy tiene esto.
Si estás 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 son técnicamente agrupación debido a la mecánica que se basan en. Usted podría llamar a esto pseudo clustering.
1) Supervisado: Esto es algo similar a la ponencia (vale la pena leerla). Construir un único modelo de árbol de decisión 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 "cluster", ya que los puntos que caen a través de esa serie de ramas son técnicamente similares con respecto al objetivo. Esto sólo funciona bien en algunos problemas, pero es eficiente a gran escala. Al final se obtienen K clusters (véase más abajo).
2) Semisupervisado (algo así como no supervisado, pero supervisado mecánicamente), utilizando #1: puede intentar construir árboles para predecir columnas en un patrón de dejar una fuera. Es decir, si el esquema es [A,B,C], construya 3 modelos [A,B] -> C, [A,C] -> B, [B,C]->A. Se obtienen clusters KN (véase 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 utilice como objetivos.
Resumen: El modelo seleccionará las características por orden en función de la información o la pureza y las agrupaciones se basarán en unas pocas características en lugar de en todas. No existe el concepto de distancia en estos conglomerados, pero sin duda se podría idear uno basado en los centros.
Pros: fácil de entender y explicar, formación e inferencia rápidas, funciona bien con pocas características fuertes, funciona con categorías. Cuando las características son esencialmente heterogéneas y se dispone de muchas características, no hay que dedicar tanto tiempo a decidir cuáles utilizar en la función de distancia.
Contras: no es estándar, debe ser escrito, 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ántas agrupaciones tienes? Debe, absolutamente debe restringir el modelo DT para que no crezca demasiado. Por ejemplo, establezca muestras mínimas por hoja, nodos de hoja máximos (preferido) o profundidad máxima. Opcionalmente, establezca restricciones de pureza o entropía. Debe comprobar cuántos clusters le da y evaluar si este método es mejor que el clustering real.
¿Le han funcionado bien las técnicas y los parámetros? ¿Cuál fue el mejor? Para averiguarlo, hay que hacer una evaluación por conglomerados: Métricas de rendimiento para evaluar el aprendizaje no supervisado