8 votos

¿Cómo realizar la clasificación no supervisada de Random Forest utilizando el código de Breiman?

Estoy trabajando con el código de bosque aleatorio de Breiman ( http://stat-www.berkeley.edu/users/breiman/RandomForests/cc_manual.htm#c2 ) para la clasificación de datos de satélite (aprendizaje supervisado). Estoy utilizando un conjunto de datos de entrenamiento y prueba con un tamaño de muestra de 2000 y un tamaño de variable de 10. Los datos se clasifican en dos clases, A y B. Los datos se clasifican en dos clases, A y B. En el modo de aprendizaje supervisado, el algoritmo funciona bien con un error de clasificación muy bajo (<2%). Ahora quiero probar la clasificación no supervisada sin etiquetas de clase en el conjunto de datos de prueba y ver cómo el algoritmo es capaz de predecir las clases. ¿Hay alguna manera de implementar la clasificación no supervisada utilizando el código de Breiman? ¿El error de este método será mayor que el de la clasificación supervisada? Los datos y la configuración de los parámetros de ejecución del algoritmo se indican a continuación

DESCRIBIR DATOS 1 mdim=10,ntrain=2000,nclass=2,maxcat=1, 1 ntest=2000,labelts=1,labeltr=1,

ESTABLECER PARÁMETROS DE EJECUCIÓN 2 mtry0=3,ndsize=1,jbt=500,look=100,lookcls=1, 2 jclasswt=0,mdim2nd=0,mselect=0,

11voto

Grevling Puntos 123

Dudo que el aprendizaje no supervisado funcione mejor, pero podría ser un ejercicio interesante para probar. El aprendizaje no supervisado con el bosque aleatorio se hace construyendo una distribución conjunta basada en tus variables independientes que describe aproximadamente tus datos. Luego se simula un cierto número de observaciones utilizando esta distribución. Por ejemplo, si tienes 1000 observaciones, puedes simular 1000 más. A continuación, se etiquetan, por ejemplo, 1:= observación real, 0:= observación simulada. Después de esto, ejecuta un clasificador de bosque aleatorio habitual tratando de distinguir las observaciones reales de las simuladas. Tenga en cuenta que debe tener activada la opción de calcular la proximidad. La salida realmente útil es exactamente esta, una descripción de la proximidad entre sus observaciones basadas en lo que Random Forest hace al tratar de asignar estas etiquetas. Ahora tiene una descripción de cuán "cercanas" o "similares" son sus observaciones entre sí y podría incluso agruparlas basándose en muchas técnicas. Una sencilla sería seleccionar umbrales para estas "distancias". Es decir, juntar las observaciones que estén más cerca de un determinado umbral. Otra opción fácil es hacer un clustering jerárquico pero utilizando esta matriz de distancias en particular. Si usted puede trabajar con R, la mayoría de los paquetes de clustering jerárquico le permiten alimentar las funciones con matrices de distancia personalizadas. A continuación, se selecciona un punto de corte, se puede visualizar como un dendrograma y así sucesivamente.

Ce site solía ser un muy buen tutorial sobre el clustering de Random Forest y compartían algunas funciones útiles de R que escribieron para este propósito, pero el enlace parece estar muerto ahora. Tal vez vuelva a aparecer más tarde. También escribieron un paquete R random glm (que es análogo a random forest pero basado en duh...glms) si quieres comprobarlo. Siempre se puede escribir a los autores y pedir el material para la clasificación de Random Forest que solía estar disponible en el enlace muerto. Tengo el código de R pero es demasiado grande para pegarlo aquí, te lo puedo enviar si me mandas un mensaje privado.

4voto

Benoit Puntos 1961

Si quiere utilizar el bosque aleatorio en un entorno no supervisado, se centrará en la métrica de distancia obtenida en lo que Breiman llama las "proximidades". Esta debe ser una matriz NxN que represente las veces que las muestras coocurren en los nodos terminales. En el randomForest de R, esto se obtiene a través de (nunca he usado el de Breiman pero estoy seguro de que está disponible):

rf = randomForest( ... )
1 - rf$proximities

Ahora bien, en un entorno no supervisado, el bosque aleatorio no tiene ni idea de cuántas clases debe haber, así que ese será su trabajo. Esto se puede hacer de varias maneras, por ejemplo, KNN, PAM, etc., donde se elige k = 2.

Como puede imaginar, esto es bastante diferente al bosque aleatorio supervisado, por lo que comparar la precisión de la clasificación entre los dos procedimientos puede no ser esclarecedor.

3voto

James Puntos 1294

Si su modelo tiene una buena precisión, puede utilizarlo para predecir las etiquetas de clase de los registros del conjunto de datos sin etiquetar. Sin embargo, no se puede evaluar el rendimiento con datos no etiquetados.

Tenga en cuenta que debe evaluar la calidad de su modelo en los datos etiquetados mediante una validación cruzada. No basta con comprobar la tasa de error de entrenamiento.

Si su modelo no es lo suficientemente preciso, podría pensar en aprendizaje semisupervisado . Los datos no etiquetados se utilizan para mejorar la calidad de su modelo mediante el aprendizaje inductivo. La precisión debe calcularse siempre mediante una validación cruzada con los datos etiquetados.

Echa un vistazo a [ Crimisini et al. Decision Forests: A Unified Framework para la clasificación, la regresión, la estimación de la densidad, el aprendizaje Aprendizaje Semisupervisado] Capítulo 7 sobre el aprendizaje semisupervisado y 7.4 sobre la inducción con el aprendizaje semisupervisado.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X