20 votos

¿Debo elegir el regresor o clasificador de Random Forest?

Encajo un conjunto de datos con una clase de objetivo binario por el bosque al azar. En la pitón, puedo hacerlo por clasificador de bosque aleatorio o por agresor aleatorio.

Puedo obtener la clasificación directamente del clasificador forestal aleatorio o puedo ejecutar primero el programa randomforestregressor y obtener un conjunto de puntuaciones estimadas (valor continuo). Luego puedo encontrar un valor de corte para derivar las clases pronosticadas del conjunto de puntajes. Ambos métodos pueden lograr el mismo objetivo (es decir, predecir las clases para los datos de la prueba).

También puedo observar que

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

es diferente de

randomforestregressor.predict(X_test)

Así que sólo quiero confirmar que ambos métodos son válidos y entonces, ¿cuál es mejor en la aplicación forestal aleatoria?

1 votos

Mi reacción inmediata es que deberías usar el clasificador porque es precisamente para lo que está construido, pero no estoy 100% seguro de que haya mucha diferencia. Usar el regresor sería como usar la regresión lineal en lugar de la regresión logística - funciona, pero no tan bien en muchas situaciones. Puede que consiga una respuesta adecuada, pero no hasta dentro de un día o así.

19voto

Andrew Bestic Puntos 121

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

En primer lugar, le animo a que lea el tema de la regresión frente a la clasificación. Porque usar ML sin saber nada sobre ello te dará resultados erróneos de los que no te darás cuenta. Y eso es bastante peligroso... ( es un poco como preguntar de qué manera se debe sostener el arma o si no importa )

Tanto si se utiliza un clasificador como un regresor sólo depende del tipo de problema que esté resolviendo. Usted tiene un problema binario clasificación problema, así que usa el clasificador.

Podría ejecutar primero randomforestregressor y obtener un conjunto de probabilidades estimadas.

NO. No se obtienen probabilidades de la regresión. Sólo trata de "extrapolar" los valores que le das (en este caso sólo 0 y 1). Esto significa que los valores por encima de 1 o por debajo de 0 son perfectamente válido como salida de la regresión ya que no espera sólo dos valores discretos como salida (eso se llama clasificación !) sino valores continuos.

Si quiere tener las "probabilidades" ( tenga en cuenta que no tienen que ser probabilidades bien calibradas ) para que un determinado punto pertenezca a una determinada clase, entrenar un clasificador (para que aprenda a clasificar los datos) y luego usar .predict_proba(), que entonces predice la probabilidad.

Sólo para mencionarlo aquí: .predict vs .predict_proba (¡para un clasificador!)
.predict simplemente toma la salida de .predict_proba y cambia todo a 0 por debajo de un determinado umbral (normalmente 0,5) respectivamente a 1 por encima de ese umbral.

Observación: Seguro que, internamente, son los mismos excepto por la "última capa", etc. Aun así, ¡véanlos (o mejor el problema que resuelven) como completamente diferentes!

1 votos

No extrapola más allá de 1 ni por debajo de 0. Es un Bosque aleatorio. No puede ver más allá del valor del dominio de los datos (es incapaz de predecir una línea recta más allá de lo que está presente en los propios datos). Corrí un conjunto de datos de 500k y encontré que se mantiene dentro de 0 y 1

1 votos

De hecho, esto es cierto para un puro bosque aleatorio, estoy de acuerdo. Mi respuesta está quizá más orientada al clasificador frente al regresor. Sin embargo, tiene razón en cuanto a un bosque aleatorio puro.

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