Devo escolher o regressor ou classificador Random Forest?

11

Ajustei um conjunto de dados com uma classe de destino binário pela floresta aleatória. Em python, eu posso fazer isso por randomforestclassifier ou randomforestregressor.

Posso obter a classificação diretamente do randomforestclassifier ou executar o randomforestregressor primeiro e recuperar um conjunto de pontuações estimadas (valor contínuo). Então, encontro um valor de corte para derivar as classes previstas do conjunto de pontuações. Ambos os métodos podem atingir o mesmo objetivo (ou seja, prever as classes para os dados de teste).

Também posso observar que

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

é diferente de

randomforestregressor.predict(X_test)

Então, eu só quero confirmar que ambos os métodos são válidos e qual é o melhor em aplicação florestal aleatória?

LUSAQX
fonte
11
Minha reação imediata é que você deve usar o classificador, pois é exatamente para isso que ele foi criado, mas não tenho 100% de certeza de que faz muita diferença. Usar o regressor seria como usar regressão linear em vez de regressão logística - funciona, mas não em muitas situações. Eu posso chegar a uma resposta adequada, mas não por um dia ou mais.
Peter Ellis

Respostas:

6

Use o classificador. Não, eles não são válidos.

Primeiro, eu realmente encorajo você a se ler sobre o tópico Regressão vs Classificação. Porque usar o ML sem saber nada a respeito dará resultados errados que você não perceberá. E isso é bastante perigoso ... ( é um pouco como perguntar em que direção você deve segurar sua arma ou se isso não importa )

O uso de um classificador ou regressor depende apenas do tipo de problema que você está resolvendo. Você tem um problema de classificação binária , então use o classificador.

Eu poderia executar o randomforestregressor primeiro e recuperar um conjunto de probabilidades estimadas.

NÃO. Você não obtém probabilidades de regressão. Ele apenas tenta "extrapolar" os valores que você fornece (neste caso, apenas 0 e 1). Isso significa que valores acima de 1 ou abaixo de 0 são perfeitamente válidos como saída de regressão, pois não espera apenas dois valores distintos como saída (isso é chamado de classificação !), Mas valores contínuos.

Se você deseja ter as "probabilidades" ( lembre-se de que essas probabilidades não precisam ser bem calibradas ) para que um determinado ponto pertença a uma determinada classe, treine um classificador (para que ele aprenda a classificar os dados) e use .predict_proba (), que prevê a probabilidade.

Apenas para mencionar aqui: .predict vs .predict_proba (para um classificador!)
.Predict apenas pega a saída .predict_proba e altera tudo para 0 abaixo de um determinado limite (geralmente 0,5), respectivamente, para 1 acima desse limite.

Observação: claro, internamente, eles são os mesmos, exceto a "última camada" etc.! Ainda assim, veja-os (ou melhor, o problema que eles estão resolvendo) como completamente diferentes!

Mayou36
fonte