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?
python
random-forest
LUSAQX
fuente
fuente
Respuestas:
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.
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!
fuente