próg klasyfikacji w RandomForest-sklearn

9

1) Jak mogę zmienić próg klasyfikacji (domyślnie jest to 0,5) w RandomForest w sklearn?

2) Jak mogę zaniżać próbkę w sklearn?

3) Mam następujący wynik z klasyfikatora RandomForest: [[1635 1297] [520 3624]]

         precision    recall  f1-score   support

class 0       0.76      0.56      0.64      2932
class 1       0.74      0.87      0.80      4144

śr. / ogółem 0,75 0,74 0,73 7076

po pierwsze, dane są niezrównoważone (30% z klasy 0 i 70% z klasy 1). Sądzę więc, że bardziej prawdopodobne jest, że klasyfikator będzie stronniczy w przypadku klasy 1, co oznacza przesunięcie niektórych z klasy 0 do klasy 1 (istnieje 1297 błędnych klasyfikacji dla klasy 0, ale 520 błędnych dla klasy 1). Jak mogę to naprawić? czy próbkowanie w dół może pomóc? czy zmieniasz próg klasyfikacji?

Aktualizacja: klasa 0 ma 40% populacji, podczas gdy klasa 1 wynosi 60%. Jednak dryf z klasy 0 do klasy 1 (1297) jest wysoki, podczas gdy chcę, aby był niski.

Miłośnik Big Data
źródło

Odpowiedzi:

7

Rzeczywiście można zawinąć losowy las w klasę, predictktóra wywołuje predict_probametodę wewnętrznego losowego lasu i klasę wyjściową 1 tylko wtedy, gdy jest ona wyższa niż niestandardowy próg.

Alternatywnie możesz odchylić algorytm szkolenia, przekazując wyższy wynik sample_weightdla próbek z klasy mniejszości.

ogrisel
źródło
Dzięki. Myślałam o zwiększeniu wagi mniejszej klasy. Jednak nic nie widzę w klasyfikatorze RandomForest (jest w SGDclassifier)
Big Data Lover
Metoda dopasowania akceptuje sample_weightparametr (jedna waga na parametr), który jest bardzo elastyczny i umożliwia symulację class_weight(jedna waga na klasę docelową).
ogrisel
Dzięki. kiedy używam clf = clf.fit (X, Y, sample_weight = preprocessing.balance_weights (y) daje mi ValueError: operandów nie można nadawać razem z kształtami. y jest binarny 0/1
Big Data Lover
Jaki jest kształt y? Dlaczego masz inne Yi y?
ogrisel