2015-07-14 16 views
5

Używam LogisticRegression z pakietu sklearn i mam szybkie pytanie dotyczące klasyfikacji. Zbudowałem krzywą ROC dla mojego klasyfikatora i okazało się, że optymalny próg dla moich danych treningowych wynosi około 0,25. Domyślam się, że przy tworzeniu podpowiedzi w 0,5. Jak mogę zmienić to domyślne ustawienie, aby dowiedzieć się, jaka jest dokładność w moim modelu podczas przeprowadzania 10-krotnej weryfikacji krzyżowej? Zasadniczo chcę, aby mój model przewidywał "1" dla każdego większego niż 0.25, a nie 0.5. Przeglądałem całą dokumentację i nie mogę się nigdzie dostać.sklearn LogisticRegression i zmiana domyślnego progu klasyfikacji

Z góry dziękuję za pomoc.

Odpowiedz

4

To nie jest funkcja wbudowana. Możesz go "dodać", owijając klasę LogisticRegression we własnej klasie i dodając atrybut threshold, którego używasz w niestandardowej metodzie predict().

Jednak niektóre ostrzeżenia:

  1. Próg domyślny jest rzeczywiście 0. LogisticRegression.decision_function() zwraca podpisaną odległość do wybranego hiperpłaszczyznę separacji. Jeśli patrzysz na predict_proba(), to patrzysz na logit() odległości hiperpłaszczyzny z progiem 0,5. Ale to jest droższe do obliczenia.
  2. Wybierając "optymalny" próg w ten sposób, wykorzystujesz informacje po zakończeniu nauki, które psują twój zestaw testowy (tzn. Twój zestaw testowy lub sprawdzania poprawności nie zapewnia już obiektywnego oszacowania błędu out-of-sample). W związku z tym możesz wywoływać dodatkowe dopasowanie, chyba że wybierzesz próg w pętli sprawdzania krzyżowego tylko w zestawie treningowym, a następnie użyjesz go i wyszkolonego klasyfikatora z zestawem testowym.
  3. Rozważ skorzystanie z class_weight, jeśli masz problem z niezbalansowaniem zamiast ręcznego ustawiania progu. To powinno zmusić klasyfikatora do wybrania hiperpłaszczyzny znajdującej się dalej od klasy poważnego zainteresowania.
+0

Mam podobny problem, gdy moje fałszywe negatywy i prawdziwe negatywy są bardzo niskie. Czy możliwe jest pochylenie wejścia 'z' w funkcji logit (funkcja sigmoid) za pomocą parametru, przez ustawienie prob, gdy 'z = 2' do .5, zamiast gdy' z = 0 'wynosi .5? Dziękuję Ci. – Moondra

+0

Czy nadal nie ma możliwości zmiany progu decyzji? –

Powiązane problemy