Otrzymałem model regresji logistycznej (via train
) dla odpowiedzi binarnej i uzyskałem macierz dezorientacji logistycznej przez confusionMatrix
in caret
. Daje mi to macierz dezorientacji modelu logistycznego, choć nie jestem pewien, jakiego progu używa się do jej uzyskania. Jak uzyskać macierz nieporozumień dla określonych wartości progowych za pomocą confusionMatrix
in caret
?
r
classification
roc
caret
confusion-matrix
Czarne Mleko
źródło
źródło
confusionmatrix
bez nawiasów.glm
funkcję zstats
pakietu i przekazałeś jej wynikconfusionMatrix
? Nie wiedziałem, że można to zrobić, a czytanie instrukcji nie jest jasne. A możepredict
coś zrobiłeś ? Pomocny byłby krótki przykład.train
funkcji,caret
aby dopasować model, co pozwala mi określić go jako glm w rodzinie dwumianowej. Następnie użyłempredict
funkcji na obiekcie wygenerowanym przeztrain
.Odpowiedzi:
Większość modeli klasyfikacji w R daje zarówno prognozę klasową, jak i prawdopodobieństwo dla każdej klasy. W przypadku danych binarnych prawie w każdym przypadku przewidywanie klasy opiera się na 50% granicy prawdopodobieństwa.
glm
Jest taki sam. Używająccaret
,predict(object, newdata)
daje przewidywaną klasę ipredict(object, new data, type = "prob")
daje specyficzne dla klasy prawdopodobieństwa (kiedyobject
jest generowane przeztrain
).Możesz robić różne rzeczy, definiując własny model i stosując dowolne ograniczenie.
caret
Strona ma również przykładem , który używa resampling do optymalizacji odcięcia prawdopodobieństwa.tl; dr
confusionMatrix
używa przewidywanych klas, a tym samym 50% prawdopodobieństwa odcięciaMax
źródło
Jest dość prosty sposób, zakładając
tune <- train(...)
:Oczywiście możesz ustawić próg na cokolwiek, co chcesz spróbować, lub wybrać „najlepszy”, gdzie najlepszy oznacza najwyższą połączoną specyficzność i czułość:
Po zapoznaniu się z zamieszczonym przykładem Maxa nie jestem pewien, czy istnieją jakieś niuanse statystyczne, które sprawiają, że moje podejście jest mniej pożądane.
źródło
caret
pakietu?rocCurve$thresholds[which(rocCurve$sensitivities + rocCurve$specificities == max(rocCurve$sensitivities + rocCurve$specificities))]
co również daje ci elastyczność w ważeniu ich inaczej, jeśli chcesz ... ostatnią rzeczą, na którą należy zwrócić uwagę, jest to, że realistycznie, prawdopodobnie chcesz wyregulować próg (jak zrobiłbyś z dowolnym hiperparametrem modelu), jak opisuje tutaj Max .