Mam bardzo niezrównoważony zestaw danych. Staram się postępować zgodnie ze wskazówkami dotyczącymi tuningu i używać go, scale_pos_weight
ale nie jestem pewien, jak go dostroić.
Widzę, że RegLossObj.GetGradient
:
if (info.labels[i] == 1.0f) w *= param_.scale_pos_weight
więc gradient próbki dodatniej byłby bardziej wpływowy. Jednak zgodnie z artykułem xgboost statystyka gradientów jest zawsze używana lokalnie = w wystąpieniach określonego węzła w określonym drzewie:
- w kontekście węzła, aby ocenić redukcję strat podziału kandydata
- w kontekście węzła liścia, aby zoptymalizować wagę nadaną temu węzłowi
Nie ma więc możliwości wcześniejszego poznania, co byłoby dobre scale_pos_weight
- jest to zupełnie inna liczba dla węzła, który kończy się proporcją 1: 100 między instancjami dodatnimi i ujemnymi, oraz dla węzła o stosunku 1: 2.
Jakieś wskazówki?