¿Debo elegir el regresor o clasificador Random Forest?

11

Encajo un conjunto de datos con una clase de destino binaria por el bosque aleatorio. En python, puedo hacerlo mediante randomforestclassifier o randomforestregressor.

Puedo obtener la clasificación directamente de randomforestclassifier o podría ejecutar randomforestregressor primero y obtener un conjunto de puntajes estimados (valor continuo). Entonces puedo encontrar un valor de corte para derivar las clases predichas del conjunto de puntajes. Ambos métodos pueden lograr el mismo objetivo (es decir, predecir las clases para los datos de prueba).

También puedo observar que

randomforestclassifier.predict_proba(X_test)[:,1]) 

es diferente de

randomforestregressor.predict(X_test)

Entonces, ¿solo quiero confirmar que ambos métodos son válidos y cuál es mejor en la aplicación aleatoria del bosque?

LUSAQX
fuente
1
Mi reacción inmediata es que deberías usar el clasificador porque esto es precisamente para lo que está diseñado, pero no estoy 100% seguro de que haga mucha diferencia. Usar el regresor sería como usar una regresión lineal en lugar de una regresión logística: funciona, pero no tan bien en muchas situaciones. Podría encontrar una respuesta adecuada, pero no por un día más o menos.
Peter Ellis

Respuestas:

6

Usa el clasificador. No, ambos no son válidos.

Primero, realmente te animo a que te leas en el tema de Regresión vs Clasificación. Porque usar ML sin saber nada al respecto te dará resultados incorrectos de los que no te darás cuenta. Y eso es bastante peligroso ... ( es un poco como preguntar en qué dirección debe sostener su arma o si no importa )

Si usa un clasificador o un regresor solo depende del tipo de problema que esté resolviendo. Tiene un problema de clasificación binaria , así que use el clasificador.

Podría ejecutar aleatoriamente el progreso del bosque primero y recuperar un conjunto de probabilidades estimadas.

NO. No obtienes probabilidades de la regresión. Solo trata de "extrapolar" los valores que le da (en este caso solo 0 y 1). Esto significa que los valores superiores a 1 o inferiores a 0 son perfectamente válidos como salida de regresión, ya que no espera solo dos valores discretos como salida (¡eso se llama clasificación !) Sino valores continuos.

Si desea tener las "probabilidades" ( tenga en cuenta que estas no tienen que estar bien calibradas ) para que cierto punto pertenezca a una clase determinada, capacite a un clasificador (para que aprenda a clasificar los datos) y luego use .predict_proba (), que luego predice la probabilidad.

Solo para mencionarlo aquí: .predict vs .predict_proba (¡para un clasificador!)
.Predict solo toma la salida .predict_proba y cambia todo a 0 por debajo de un cierto umbral (generalmente 0.5) respectivamente a 1 por encima de ese umbral.

Observación: claro, internamente, son lo mismo, excepto de la "última capa", etc. Aún así, ¡véalos (o mejor el problema que están resolviendo) como completamente diferentes!

Mayou36
fuente