Pracuję nad problemem klasyfikacji binarnej, w której znacznie ważniejsze jest, aby nie mieć fałszywych trafień; całkiem sporo fałszywych negatywów jest w porządku. Użyłem na przykład wielu klasyfikatorów w sklearn, ale myślę, że żaden z nich nie ma możliwości wyraźnego dostosowania kompromisu przywoływania precyzji (dają całkiem dobre wyniki, ale nie można ich regulować).
Jakie klasyfikatory mają regulowaną dokładność / przywołanie? Czy jest jakiś sposób, aby wpłynąć na kompromis precyzji / wycofania w przypadku standardowych klasyfikatorów, np. Random Forest lub AdaBoost?
źródło
precision_recall_curve
obliczyć całą F1. Jak obliczyć tylko te negatywne?Właśnie rozwiązałem ten problem, zanim wpadłem na to pytanie, więc postanowiłem podzielić się moim rozwiązaniem.
Wykorzystuje to samo podejście, które zaproponował Marc Claesen, ale odpowiada na aktualne pytanie, w jaki sposób dostosować klasyfikator, aby przejść wyżej na osi precyzyjnej, wycofując się z wycofania.
X_test to dane, a y_test to prawdziwe etykiety. Klasyfikator powinien być już zamontowany.
I w ten sposób użyjesz nowo nauczonego minimalnego progu, aby skorygować swoje przewidywania (w przeciwnym razie dostaniesz wywołanie przewidywania (X_test))
Byłoby miło usłyszeć Twoją opinię na temat tego przepisu na dostosowanie.
źródło
Oto funkcja
http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html#sklearn.ensemble.RandomForestClassifier.predict_proba
co daje prawdopodobieństwa klasowe. Następnie użyj różnych wskaźników, aby dostosować próg, P, którego używasz przy podejmowaniu decyzji, postępując zgodnie z pseudo-kodem
jeśli p (y)> P, to y = 1, inaczej y = 0 endif
źródło