W procedurze rpart () do tworzenia modeli CART określasz parametr złożoności, do którego chcesz przyciąć drzewo. Widziałem dwie różne rekomendacje dotyczące wyboru parametru złożoności:
Wybierz parametr złożoności związany z minimalnym możliwym błędem walidowanym krzyżowo. Ta metoda jest zalecana przez Quick-R i HSAUR.
Wybierz parametr największej złożoności, którego szacowany błąd zweryfikowany krzyżowo nadal mieści się w SE od minimalnego możliwego błędu potwierdzonego krzyżowo. To jest moja interpretacja dokumentacji pakietu, która mówi: „Dobry wybór cp do przycinania jest często wartością skrajnie lewą, dla której średnia leży poniżej linii poziomej” w odniesieniu do tego wykresu .
Dwie opcje cp dają całkiem różne drzewa w moim zbiorze danych.
Wydaje się, że pierwsza metoda zawsze da bardziej złożone, potencjalnie nadmiernie dopasowane drzewo. Czy istnieją inne zalety, wady, zalecenia w literaturze itp., Które powinienem wziąć pod uwagę przy podejmowaniu decyzji, której metody użyć? Mogę podać więcej informacji o moim konkretnym problemie z modelowaniem, jeśli byłoby to przydatne, ale staram się, aby pytanie było wystarczająco szerokie, aby dotyczyło innych.
party
pakiet, który wykorzystuje testy istotności (zwykle nie jest to coś, co polecam, ale wydaje się tutaj istotne). Jak zawsze jednak najlepszym testem jest przydatność i sens; jest to szczególnie prawdziwe, jeśli jesteś zainteresowany głównie wyjaśnieniem.Odpowiedzi:
W praktyce widziałem oba podejścia i myślę, że ogólnie nie oczekuje się, że wyniki będą się znacznie różnić.
Biorąc to pod uwagę, Hastie i wsp. Zalecają zasadę „błędu jednego standardu” w elementach statystycznego uczenia się , i zwykle ufam ich osądowi (sekcja 7.10, str. 244 w mojej wersji). Odpowiedni cytat to:
Twoja intuicja dotycząca tego, dlaczego należy stosować jedną standardową regułę błędu, jest słuszna - zrobiłbyś to, aby uniknąć wyboru modelu, który będzie przekraczał dane.
źródło
Najpierw należy zacząć od użycia argumentów
minsplit=0
icp=0
(parametru złożoności), a następnie użyć funkcjiplotcp(T.max)
iprintcp(T.max)
wybrać wartośćcp
odpowiadającą minimalnemu błędowi względnemu i przyciąć drzewo funkcjąprune.rpart(T.max, cp=....)
To powinno dać ci optymalne drzewo klasyfikacji, ponieważ wydają się zbyt optymistyczne.
źródło