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:

  1. trenujemy model tak jak dotychczas, zbiasowany (może to być CatBoost lub cokolwiek innego),
  2. 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,
  3. mając wagi z punktu powyżej trenujemy jeszcze jest model z punktu 1., ale z użyciem wag z punktu 2.