Dopasowuję zestaw danych do binarnej klasy docelowej przy losowym lesie. W Pythonie mogę to zrobić przez randomforestclassifier lub randomforestregressor.
Mogę uzyskać klasyfikację bezpośrednio z randomforestclassifier lub mogę najpierw uruchomić randomforestregressor i odzyskać zestaw oszacowanych wyników (wartość ciągła). Następnie mogę znaleźć wartość graniczną, aby uzyskać przewidywane klasy z zestawu wyników. Obie metody mogą osiągnąć ten sam cel (tj. Przewidzieć klasy dla danych testowych).
Ja też to widzę
randomforestclassifier.predict_proba(X_test)[:,1])
jest różny od
randomforestregressor.predict(X_test)
Chcę tylko potwierdzić, że obie metody są prawidłowe, a która z nich jest lepsza w przypadkowej aplikacji w lesie?
python
random-forest
LUSAQX
źródło
źródło
Odpowiedzi:
Użyj klasyfikatora. Nie, oba nie są ważne.
Po pierwsze, naprawdę zachęcam do zapoznania się z tematem Regresja a klasyfikacja. Ponieważ używanie ML bez wiedzy o tym da złe wyniki, których nie zdasz sobie sprawy. A to dość niebezpieczne ... ( to trochę jak pytanie, w którą stronę powinieneś trzymać broń, czy to nie ma znaczenia )
To, czy użyjesz klasyfikatora, czy regresora, zależy tylko od rodzaju rozwiązywanego problemu. Masz problem z klasyfikacją binarną , więc użyj klasyfikatora.
NIE. Nie otrzymujesz prawdopodobieństwa z regresji. Próbuje po prostu „ekstrapolować” podane wartości (w tym przypadku tylko 0 i 1). Oznacza to, że wartości powyżej 1 lub poniżej 0 są całkowicie poprawne jako wynik regresji, ponieważ nie oczekuje się tylko dwóch dyskretnych wartości jako wyniku (to się nazywa klasyfikacja !), Ale wartości ciągłe.
Jeśli chcesz mieć „prawdopodobieństwa” ( pamiętaj, że nie muszą to być dobrze skalibrowane prawdopodobieństwa ), aby pewien punkt należał do określonej klasy, wytrenuj klasyfikator (aby uczy się klasyfikować dane), a następnie użyj .predict_proba (), która następnie przewiduje prawdopodobieństwo.
Wystarczy wspomnieć o tym tutaj: .predict vs. .predict_proba (dla klasyfikatora!)
.Predict po prostu bierze wyjście .predict_proba i zmienia wszystko na 0 poniżej pewnego progu (zwykle 0,5) odpowiednio na 1 powyżej tego progu.
Uwaga: jasne , wewnętrznie są one takie same, z wyjątkiem „ostatniej warstwy” itd.! Mimo to patrz na nich (lub lepiej na problem, który rozwiązują) jako zupełnie inny!
źródło