Значение на термина на компенсиране за скоростта на моделиране и повишаване на други модели в GLM и машинно обучение

Заден план

В нашия свят на застраховане на имущество и злополука много често използваме термин, наречен „компенсация“, който се използва широко за моделиране на процент (брой/експозиция), като например броя на искове за единица експозиция. Това помага на модела да трансформира променливата на реакцията от скорост в коефициент на броене като 1 чрез използване на проста алгебра.

Но имаме ли нужда от компенсиране, за да направим тази трансформация?

Този термин може да обърка начинаещите, имах този въпрос, когато за първи път се запознах с този подход. Защо не можем ръчно да извлечем нова променлива за отговор, като просто разделим броя на съответната експозиция, вместо да използваме компенсиращ термин?

Каква е разликата между двата подхода?

Ще ви преведа през функциите за логаритмична вероятност на двете версии, със и без отместване, за да покажа разликата и да подчертая всички несъответствия, следвани в подхода.

Един важен момент, който трябва да се отбележи, отместването трябва да бъде включено в същата „скала“ като линейния предиктор. В случай на модел на лог връзка, това изисква отместващата променлива да бъде регистрирана преди включването в модела.

Модел, използващ отместен термин

Тук е регресионният модел в оригиналната му форма с компенсираща променлива (Si), променлива на отговор Y, xi като независими променливи и набор от параметри θ, които могат да бъдат оценени с максимална вероятност. Това се постига чрез просто умножаване на променливата на експозицията към оригиналната форма.

Освен това можем да опростим това уравнение, като вземем натурален логаритъм от двете страни

Сега това уравнение може да бъде пренаписано като функция на вероятността по отношение на θ, както е показано по-долу

Накрая стигаме до уравнението на логаритмичната вероятност от първата версия (с отместване), само членовете, зависещи от θ, ще останат в уравнението, други членове отпадат по време на диференцирането:

Модел без компенсиращ член (използване на трансформирана променлива на отговор)

Нека да разгледаме другия случай, когато моделираме процент (Yi/si) като променлива на отговора, ето нашето ново моделно уравнение.

Отново стигаме до същото уравнение, както в първия случай.

И така, каква е разликата? И двете уравнения изглеждат еднакви.

В първия случай приемаме yi (отговор на броене) след разпределение на Поасон, докато във втория случай приемаме, че (yi/si) има разпределение на Поасон, това второ предположение не е подходящо, което прави нашия модел неправилен .

Нека да разгледаме новата функция на вероятността:

Новото уравнение след запазване само на θ зависими членове по време на диференциране

Сега можем да сравним функциите за логаритмична вероятност (1) и (2) и да наблюдаваме разликата, като и двата подхода ще доведат до различни резултати. Освен това видяхме, че второто уравнение се основава на грешно предположение за разпределението на Поасон, данните вече не са цели числа. Следователно можем да заключим, че използването на трансформирана променлива на скоростта като отговор и без отместване е неправилен подход.

Въпреки това, все още имаме възможност да коригираме последния подход, като приложим тегло, еквивалентно на експозиция (si) към всяко наблюдение. Можем да видим, че следното уравнение е еквивалентно на уравнение (1).

Нека разберем разликата в внедряването чрез следните примери на R код. По подобен начин те могат да бъдат внедрени и в други пакети за моделиране, като и двата подхода ще дадат еднакъв резултат.

#Implementation of equation (1) in R
poi_r <- glm(numclaims ~ x1+x2+x3,data=train, family = "poisson", offset=log(exposure))
#Implementation of equation (3) in R
poi_r <- glm(numclaims/exposure ~ x1+x2+x3,data=train, family = "poisson", weight = exposure)

Друго използване на офсет

Има случаи, когато вече знаем ефекта на обяснителна променлива и вместо да оценяваме параметрите β за тази променлива, е по-добре да използваме наличната информация.

Друг сценарий, подсилване на нов модел с помощта на съществуващ изходен модел, например сте обучили модел за 200 итерации и по-късно искате да рестартирате оттам, за да завършите още 300 итерации, вместо да рестартирате процеса от нулата, можете да предоставите предишен модел изход като базов марж или отместване.

Внедряване на компенсиране в различни пакети за статистика и машинно обучение

Това внедряване е доста лесно и директно в R, SAS, Emblem (специфичен за застрахователната индустрия GLM софтуер от Willis Tower Watson) и в statsmodels (аналог за статистическо моделиране на sci-kit learn в python), докато е по-малко популярно в машинното обучение модели. Вместо това те използват някаква функция, за да зададат основния резултат, преди да обучат нов модел, този основен резултат може да се използва от съществуващ модел или всеки известен ефект на променлива.

Като алтернатива, тази функция на ML алгоритми може да ни помогне при прилагането на компенсиране при моделиране на скоростите. Тази реализация е възможна във всички случаи, когато функциите за загуба на Poisson, Gamma и Tweedie са използвани с log-link.

Примери за имплементация в различни алгоритми

Отместването в случай на GLM в R може да се постигне с помощта на функцията offset(), подобна реализация е възможна за пакети pscl, GBM и glmnet.

poi_r <- glm(numclaims ~ x1+x2+x3,data=train, family = "poisson", offset=log(exposure))

Отместването в случай на GLM в Python (statsmodels) може да бъде постигнато с помощта на функцията Exposition(), като тук трябва да се отбележи една важна точка, това не изисква записана променлива, самата функция ще се погрижи и ще регистрира променливата.

poi_py = sm.GLM(y_train, X_train, exposure = df_train.exposure, family=sm.families.Poisson()).fit()

Отместването в случай на XGBOOST в Python може да се постигне с помощта на функцията set_base_margin(), която изисква регистрирана променлива. В lightgbm можем да използваме set_init_score() преди обучение.

#Convert training data into DMatrix
dtrain_offset = xgb.DMatrix(data=X_train.iloc[:,2:29],label=y_train)
#Before training the model set a base margin into DMatrix  
dtrain_offset.set_base_margin(np.log(X_train['exposure']))

Заключение

Обсъдихме как регресията на Поасон може да се използва за моделиране на скорост с помощта на компенсираща променлива и как тази функционалност може да бъде внедрена в модели за машинно обучение. Примерите за алгоритми, дадени тук, не са изчерпателен списък, читателите могат да изследват други алгоритми, като например базирани на модели дървета на решения и невронни мрежи.

Благодаря за четенето! Надявам се да намерите тази статия за информативна.

Препратки





[3] Дънкан Андерсън и екип, 2007 г., Ръководство за практикуващи за обобщени линейни модели

[4] https://www.statsmodels.org/

[5] https://en.wikipedia.org/wiki/Poisson_regression