Предсказать оценку выживания и CLTV для договорных дискретных политик / условий - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь предсказать оценку выживаемости и LTV для договорных и дискретных полисов (в страховании) в python.Я просмотрел количество сайтов, но смог найти много примеров только для неконтрактных (в рознице).
Я использовал следующий код:

from lifelines import CoxPHFitter
#After all feature selection and EDA

cph_train, cph_test = train_test_split(features, test_size=0.2)

cph = CoxPHFitter()
cph.fit(cph_train, 'TIME', event_col='EVENT')
cph.print_summary()

Где TIME - количество дней между полисомдата взятия и текущая дата для клиентов ACTIVE и между датой принятия политики и датой сдачи для неактивных клиентов.
EVENT - это показатель того, является ли клиент ACTIVE или нет ACTIVE.

После подгонки полученной моделисоответствие 0,7 (что, по моему мнению, в порядке).
С чего мне начать, чтобы получить оценку выживаемости для клиентов ACTIVE и ценности в течение жизни (CLTV)?По сути, мне нужно предсказать, кто является ценными клиентами, которые останутся с компанией надолго.

Я добавил код, прочитав несколько постов и предложений от Cam.

censored_subjects = features.loc[features['EVENT'] == 1] #Selecting only the ACTIVE ones

unconditioned_sf = cph.predict_survival_function(censored_subjects)

conditioned_sf = unconditioned_sf.apply(lambda c: (c / c.loc[features.loc[c.name, 'TIME']]).clip_upper(1)) 

predictions_75 = qth_survival_times(.75, conditioned_sf)
predictions_50 = qth_survival_times(.50, conditioned_sf)

values = predictions_75.T.join(data[['PREAMT','TIME']])
values50 = predictions_50.T.join(data[['PREAMT','TIME']])
values['RemainingValue'] = values['PREAMT'] * (values[0.75] - values['TIME'])

Итак, что означает выход:
0.5 PREAMT TIME --- Число в столбце 0.5 обозначает продолжительность, на которую есть 50% -ный шанс на закрытие?
0.75 PREAMT TIME --- Аналогичным образом 0,75 обозначает продолжительность, на которую существует 75% -ная вероятность быть закрытой?
RemainingValue --- Это оставшаяся сумма, подлежащая выплате?

И что дальшешаг после этого?

1 Ответ

0 голосов
/ 04 июня 2019

Где ВРЕМЯ - количество дней между датой принятия политики и текущей датой для АКТИВНЫХ клиентов и между датой принятия политики и датой отказа для неАКТИВНЫХ клиентов. СОБЫТИЕ - это индикатор того, является ли клиент АКТИВНЫМ или АКТИВНЫМ.

Имеет смысл для меня.

После подгонки модели у меня получилось соответствие 0,7 (что я чувствую нормально).

Это приемлемый показатель для моделей выживания. Но также попробуйте AFT модели , они могут работать лучше (также попробуйте моделирование все параметры ).


Итак, что вам нужно сделать, это предсказать будущее время жизни клиентов , учитывая , что они пережили t периодов. Есть некоторые документы именно на это приложение. Обратите внимание, что тот же код применяется и к моделям AFT.

Вы можете прогнозировать медиану или кривую выживаемости. Если ваша цель - CLV, я думаю, что прогнозирование кривой выживания более уместно, так как вы можете смоделировать различные показатели политики (извините, я не знаю правильной терминологии). Например, используя код в документах:

times = np.arange(1000) # predict far out, since we don't want to truncate the survival curve prematurely. 
unconditioned_sf = cph.predict_survival_function(censored_subjects, times=times)

conditioned_sf = unconditioned_sf.apply(lambda c: (c / c.loc[df.loc[c.name, 'T']]).clip_upper(1))

# simple case, users pay $30 a month (and your units of survival function are "months"
CLV = (30 * conditioned_sf).sum(0)

# more complicated: they each have a different "rate"
CLV = conditioned_sf.sum(0) * rate_by_user

# and so on...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...