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