¿Cómo realizar una clasificación de bosque aleatorio sin supervisión utilizando el código de Breiman?

8

Estoy trabajando con el código forestal aleatorio de Breiman ( http://stat-www.berkeley.edu/users/breiman/RandomForests/cc_manual.htm#c2 ) para la clasificación de datos satelitales (aprendizaje supervisado). Estoy usando un conjunto de datos de entrenamiento y prueba que tiene un tamaño de muestra de 2000 y un tamaño variable 10. 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 puede predecir las clases. ¿Hay alguna manera de implementar una clasificación no supervisada utilizando el código de Breiman? ¿El error de este método será mayor que la clasificación supervisada? Los datos y la configuración de parámetros de ejecución en el algoritmo se dan a continuación

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

SET RUN PARAMETERS 2 mtry0 = 3, ndsize = 1, jbt = 500, look = 100, lookcls = 1, 2 jclasswt = 0, mdim2nd = 0, mselect = 0,

Bijoy
fuente
1
¿Puedes elaborar más? Si desea predecir las clases, debe utilizar la clasificación supervisada.
Simone
Digamos que tengo dos conjuntos de datos con el mismo número de variables y muestras. el primer conjunto de datos contiene la información de clase (A y B) mientras que el segundo conjunto de datos no tiene ninguna información de clase. Usando el código RF, el primer conjunto de datos se clasificó en las dos clases con muy buena precisión. Los parámetros de ejecución dados anteriormente son para esa clasificación particular donde se requiere la información de clase en el conjunto de datos. Ahora mi pregunta es ¿cómo clasificar el segundo conjunto de datos en dos clases?
Bijoy

Respuestas:

3

Dado que su modelo exhibe una buena precisión, puede usarlo para predecir las etiquetas de clase de los registros en el conjunto de datos sin etiqueta. Sin embargo, no puede evaluar el rendimiento de los datos sin etiquetar.

Tenga cuidado de evaluar la calidad de su modelo en los datos etiquetados mediante validación cruzada. No es suficiente verificar la tasa de error de entrenamiento.

Si su modelo no es lo suficientemente preciso, puede pensar en el aprendizaje semi-supervisado . Los datos sin etiquetar se utilizan para mejorar la calidad de su modelo a través del aprendizaje inductivo. La precisión siempre debe calcularse mediante validación cruzada en sus datos etiquetados.

Echa un vistazo a [Crimisini et al. Los bosques de decisión: un marco unificado para la clasificación, la regresión, la estimación de la densidad, el aprendizaje múltiple y el aprendizaje semi-supervisado] Capítulo 7 sobre aprendizaje semi-supervisado y 7.4 sobre inducción con aprendizaje semi-supervisado.

Simone
fuente
Gracias Simone por los comentarios ... Como mencionó en sus comentarios, mi objetivo es predecir las etiquetas de clase de los registros en el conjunto de datos sin etiquetar utilizando RF. Sin embargo, me gustaría saber si esto es posible utilizando el código RF de Brieman y Cutler.
Bijoy
No estoy tan familiarizado con ese código. También podría estar un poco desactualizado. Pruebe WEKA o R, proporcionan implementaciones forestales aleatorias recientes.
Simone
9

Dudo que sin supervisión funcione mejor, pero podría ser un ejercicio genial para probar. El aprendizaje no supervisado con bosque aleatorio se realiza mediante la construcción de una distribución conjunta basada en sus variables independientes que describe aproximadamente sus datos. Luego simule un cierto número de observaciones usando esta distribución. Por ejemplo, si tiene 1000 observaciones, podría simular 1000 más. Luego los etiqueta, 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. El resultado útil real es exactamente esto, una descripción de la proximidad entre sus observaciones en función de lo que hace Random Forest cuando intenta asignar estas etiquetas. Ahora tiene una descripción de cómo " Me refiero a mantener las observaciones que están más cerca de cierto umbral. Otra opción fácil es hacer agrupamiento jerárquico pero usando esta matriz de distancia particular. Si puede trabajar con R, la mayoría de los paquetes de agrupación jerárquica le permiten alimentar las funciones matrices de distancia personalizadas. Luego selecciona un punto de corte, puede visualizarlo como un dendrograma y así sucesivamente. Me refiero a mantener las observaciones que están más cerca de cierto umbral. Otra opción fácil es hacer agrupamiento jerárquico pero usando esta matriz de distancia particular. Si puede trabajar con R, la mayoría de los paquetes de agrupación jerárquica le permiten alimentar las funciones matrices de distancia personalizadas. Luego selecciona un punto de corte, puede visualizarlo como un dendrograma y así sucesivamente.

Esto solía ser un muy buen tutorial sobre la agrupación Random Forest y compartían algunas funciones útiles de R que escribieron para este propósito, pero el enlace parece estar muerto ahora. Quizás vuelva a aparecer más tarde. También escribieron un paquete glm R aleatorio muy ordenado (que es análogo al bosque aleatorio pero basado en duh ... glms) si quieres comprobarlo. Siempre puede escribir a los autores y solicitar el material para la clasificación de Random Forest que solía estar disponible en el enlace muerto. Tengo el código R pero es demasiado grande para pegarlo aquí, puedo enviárselo si me envía un mensaje privado.

JEquihua
fuente
Este paquete R parece ser también para esto, aunque no lo examiné a
JEquihua
4

Si desea utilizar un bosque aleatorio en un entorno sin supervisión, se centrará en la métrica de distancia obtenida en lo que Breiman llama las "proximidades". Debe ser una matriz NxN que represente los tiempos en que las muestras se producen conjuntamente en los nodos terminales. En randomForest de R, esto se obtiene a través de (nunca he usado Breiman's pero estoy seguro de que está disponible):

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

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

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

jimmyb
fuente