https://arxiv.org/pdf/2308.07424.pdf Implementacja dla innej publikacji (Understanding new tasks through the lens of training data via exponential tilting), ale dokładnie taki sam algorytm: https://github.com/smaityumich/exponential-tilting
Publikacja porusza problem distribution shift pomiędzy datasetem treningowy a produkcją wynikający z selection bias.
Zaproponowany został algorytm, który optymalizuje Kullback Leibler divergence pomiędzy rozkładem danych na produkcji a zwagowanym rozkładem danych w datasecie treningowym dobierając w odpowiedni sposób wagi..
Algorytm
Zakładamy, że mamy dostęp do olabelowanych danych treningowych i nieolabelowanych wszystkich danych (czyli tych, których nie ma w zbiorze treningowym). Zasada działania algorytmu przedstawionego w publikacji jest następująca:
- trenujemy model tak jak dotychczas, zbiasowany (może to być CatBoost lub cokolwiek innego),
- z użyciem predykcji modelu powyżej optymalizowane są współczynniki (poprzez gradient descent, tensorflow), dzięki którym można wyliczyć wagi dla poszczególnych elementów zbioru treningowego,
- mając wagi z punktu powyżej trenujemy jeszcze jest model z punktu 1., ale z użyciem wag z punktu 2.