Mam dane niezrównoważone w klasie i chcę dostroić hiperparametry wzmocnionego warkocza za pomocą xgboost.
pytania
- Czy istnieje odpowiednik gridsearchcv lub randomsearchcv dla xgboost?
- Jeśli nie, jakie jest zalecane podejście do dostrojenia parametrów xgboost?
machine-learning
cross-validation
xgboost
boosting
GeorgeOfTheRF
źródło
źródło
xgboost(max.depth)
lubxgb.train(max_depth)
? Czy xgboost niekonsekwentnie używa kropki vs podkreślenia dla parametru w różnych miejscach? A może są nawróceni?Odpowiedzi:
Ponieważ interfejs do
xgboost
wcaret
niedawno się zmienił, oto skrypt, który zapewnia w pełni skomentowane wprowadzeniecaret
do dostrojeniaxgboost
hiperparametrów.W tym celu wykorzystam dane treningowe z konkursu Kaggle „Daj mi trochę uznania ” .
1. Montaż
xgboost
modeluW tej sekcji:
xgboost
model z dowolnymi hiperparametramixgb.cv
)Oto kod, aby to zrobić.
Oto, jak wygląda AUC testowania w porównaniu do treningu:
2. Wyszukiwanie hiperparametrów za pomocą
train
W celu wyszukiwania hiperparametrów wykonujemy następujące kroki:
data.frame
unikalną kombinację parametrów, dla których chcemy wyszkolonych modeli.Oto kod, który pokazuje, jak to zrobić.
Na koniec możesz utworzyć wykres bąbelkowy dla AUC dla odmian
eta
imax_depth
:źródło
xgboost
parametrów już istnieje, w szczególności wsparciegamma
jest nowe. Oto pełna lista obsługiwanych parametrów.scale_pose_weight
do niezrównoważonej klasyfikacji. Czy możesz podać szczegółowe informacje? Dzięki!scale_pos_weight
jest teraz udokumentowany w dokumentacji parametrów .scale_pos_weight
nie jest parametrem dostrajania daszka, ale można porównać ręcznie. W moim przypadku użycie wagiPakiet Caret zawiera xgboost.
Próbka wyjściowa
Jedną wadą jest to, że inne parametry xgboost, takie jak podpróbka itp., Nie są obecnie obsługiwane przez daszek.
Edytować
Gamma, colsample_bytree, min_child_weight i podpróbka itp. Można teraz dostroić bezpośrednio (czerwiec 2017) za pomocą Caret. Wystarczy dodać je w części powyższego kodu, aby działało. Dziękujemy usεr11852 za wyróżnienie go w komentarzu.
źródło
caret
teraz (Feb-2017) obsługuje dodatkowych parametrówgamma
,colsample_bytree
,min_child_weight
isubsample
. (Tak skutecznie można dostroić prawie wszystko - w określonym czasie)Wiem, że to stare pytanie, ale używam innej metody niż powyższe. Korzystam z funkcji BayesianOptimization z pakietu Bayesian Optimization, aby znaleźć optymalne parametry. Aby to zrobić, najpierw tworzysz fałdy krzyżowej weryfikacji, a następnie tworzysz funkcję,
xgb.cv.bayes
która ma parametry zwiększające parametry hiperłącza, które chcesz zmienić. W tym przykładzie dostrajammax.depth, min_child_weight, subsample, colsample_bytree, gamma
. Następnie wywołujeszxgb.cv
tę funkcję z parametrami hiper ustawionymi na parametry wejściowe parametruxgb.cv.bayes
. Następnie wywołujeszBayesianOptimization
zxgb.cv.bayes
i pożądanymi zakresami hiper parametrów podwyższających.init_points
oznacza liczbę modeli początkowych z hiperparametrami pobranymi losowo z określonych zakresów, orazn_iter
to liczba rund modeli po punktach początkowych. Funkcja generuje wszystkie parametry podwyższające i AUC testowe.źródło
To jest starsze pytanie, ale pomyślałem, że podzielę się tym, jak dostroję parametry xgboost. Początkowo myślałem, że skorzystam z tej opcji, ale ostatnio znalazłem problem z obsługą wszystkich parametrów, a także brakujących wartości. Zastanawiałem się też nad napisaniem pętli iteracyjnej poprzez różne kombinacje parametrów, ale chciałem, aby działała równolegle i wymagałaby zbyt wiele czasu. Korzystanie z gridSearch z pakietu NMOF zapewniło to, co najlepsze z obu światów (wszystkie parametry, a także przetwarzanie równoległe). Oto przykładowy kod klasyfikacji binarnej (działa w systemie Windows i Linux):
źródło