jeśli chodzi o klasyfikację, używanie klasyfikatora drzewa decyzyjnego jest jednym z najłatwiejszych w użyciu.
dlaczego warto używać drzewa decyzyjnego
- niewiarygodnie łatwe do zinterpretowania
- bardzo dobrze radzi sobie z brakującymi danymi& odstających i jako takie wymaga znacznie mniej wstępnego czyszczenia
- możesz zrezygnować z kodowania zmiennych kategorycznych, ponieważ drzewa decyzyjne dobrze radzą sobie z kategoriami!
- nie zagłębiając się w specyfikę partycjonowania rekurencyjnego, drzewa decyzyjne są w stanie modelować nieliniowe relacje.
dlaczego nie użyć drzewa decyzyjnego
z tym wszystkim, co dobre powiedziało, że nie zawsze są idealną opcją.
- w ten sam sposób mogą być proste, mogą być również zbyt skomplikowane, co prawie uniemożliwia konceptualizację lub interpretację.
- aby posunąć ten pomysł nieco dalej, z drzewem, które jest zbyt stronnicze lub skomplikowane, może być zbyt dobrze dopasowane do danych treningowych iw rezultacie jest przesadzone.
Szkolenie modelarskie
Mając to na uwadze, wskoczmy do niego. Nie będę mówić o Cross walidacji lub pociągu, test split dużo, ale opublikuje kod poniżej. Pamiętaj, aby skomentować, jeśli jest coś, na co chcesz uzyskać więcej wyjaśnień.
najpierw podzielimy dane na zestawy treningowe &.
zauważ również, że będziemy używać klasycznego zestawu danych Titanica, który jest zawarty w bazie R.
teraz będziemy trenować model za pomocą funkcji rpart
z pakietu rpart
. Najważniejsze jest to, że zmienna, którą chcemy przewidzieć, przetrwała, więc chcemy zrozumieć prawdopodobieństwo, że dana osoba przetrwała zgodnie z niektórymi danymi. ~ można zinterpretować jako by; innymi słowy pozwala zrozumieć pewne zmienne. Jeśli po ~ jest . oznacza to, że chcemy używać każdej innej zmiennej w zbiorze danych do przewidywania przetrwania. Alternatywnie, jak pokazano poniżej, możemy wywołać zmienne, których chcemy użyć jawnie.
kolejną rzeczą, na którą warto zwrócić uwagę, jest to, że method
to class
. To dlatego, że chcemy stworzyć drzewo klasyfikacji przewidujące kategoryczne wyniki, w przeciwieństwie do drzewa regresji, które będzie używane do wyników liczbowych. I na koniec dane, których używamy do szkolenia modelu to train
.
model <- rpart(formula = Survived ~ Pclass + Sex + Age + SibSp + Parch + Fare + Embarked,
data = titanic_train,
method = "class")
interpretacja
jak wcześniej wspomniano jedną z rzeczy, która sprawia, że drzewo decyzyjne jest tak łatwe w użyciu, jest to, że jest niezwykle łatwe w interpretacji. Możesz śledzić różne gałęzie drzewa, aby uzyskać różne wyniki.
rpart.plot(model)
trochę trudno to odczytać, ale jeśli przybliżysz trochę, zobaczysz, że pierwszym kryterium, Czy ktoś prawdopodobnie żył lub umarł na Titanicu, było to, czy jesteś mężczyzną. Jeśli byłeś mężczyzną, przesuń się na lewą gałąź i pracuj nad dwoma węzłami, niezależnie od tego, czy jesteś dorosły, a twoje rodzeństwo/małżonek liczą się na pokładzie. Więc jeśli byłeś samotnym mężczyzną, szanse na przeżycie były nikłe.
Ocena wydajności
zanim rozbijemy metryki, przepowiadamy wartości dla zestawu testowego. Podobnie jak w przypadku wezwania do szkolenia, wybierasz Dane i typ prognozy. Podstawową różnicą jest Specyfikacja Modelu.
test$pred <- predict(object = model,
newdata = test,
type = "class")
istnieje wiele wskaźników oceny wydajności, które będą bardzo przydatne podczas zrozumienia skuteczności drzewa decyzyjnego.
dokładność
ta metryka jest bardzo prosta, jaki procent twoich prognoz był poprawny. Funkcja macierzy pomieszania z caret
Zawiera to.
funkcja confusionMatrix
z pakietu caret
jest niezwykle przydatna. Do oceny skuteczności modelu klasyfikacyjnego. Załaduj pakiet i przekaż go swoim przewidywaniom & aktualnościom.
library(caret)
confusionMatrix(data = test$pred,
reference = test$Survived)
pierwszą rzeczą, jaką ta funkcja pokazuje, jest to, co nazywa się macierzą pomieszania. To pokazuje tabelę, w jaki sposób przewidywania i fakty są zgodne. Diagonalne komórki, w których przewidywania i odniesienia są takie same, reprezentują to, co mamy poprawne. Licząc te 149 (106 + 43) i dzieląc je przez całkowitą liczbę rekordów, 178; osiągamy naszą dokładność 83,4%.
True positive: komórka w kwadrancie, gdzie zarówno odniesienie, jak i przewidywanie są 1. Oznacza to, że przewidziałeś przetrwanie, a oni faktycznie przeżyli.
False positive: tutaj przewidziałeś pozytywne, ale się myliłeś.
True negative: gdy przewidujesz negatywne, a masz rację.
False negative: gdy przewidujesz wynik negatywny i jesteś niepoprawny.
jeszcze kilka kluczowych wskaźników, o których należy pamiętać, to czułość i specyficzność. Czułość to procent prawdziwych rekordów, które przewidziałeś poprawnie.
specyfika z drugiej strony polega na zmierzeniu, jaką część rzeczywistych fałszywych rekordów przewidziałeś poprawnie.
specyfika jest jeden należy pamiętać przy przewidywaniu na niezrównoważony zestaw danych. Bardzo częstym przykładem tego jest klasyfikowanie spamu e-mailowego. W 99% przypadków nie jest to spam, więc gdybyś przewidział, że nic nie jest spamem, miałbyś 99% dokładności, ale twoja specyfika byłaby 0, co prowadziłoby do zaakceptowania całego spamu.
wnioski
mam nadzieję, że podobała ci się ta szybka lekcja drzew decyzyjnych. Daj mi znać, jeśli jest coś, czego chcesz więcej informacji na temat lub jeśli jest coś, co chcesz, żebym omówił w innym poście.
Happy Data Science-ing! Jeśli podobało ci się to, sprawdź inne posty, takie jak ten na datasciencelessons.com!