我正在研究客户流失预测。观察和性能窗口的切片如下:
# use user last n.th mounth and create userpofile from this
# |## observed period - user profile # |##perdict period-chur or not###|
# |<- number_of_months ->|<- predict_period_months ->|
对于具体情况,窗口是:
number_of_months=18
predict_period_months=4
def last_nth_month(x):
min_date = x['MONTH_ID'].max()-pd.DateOffset(months=(number_of_months+predict_period_months))
max_date = x['MONTH_ID'].max()-pd.DateOffset(months=predict_period_months)
return x.loc[(x['MONTH_ID']< max_date) & (x['MONTH_ID']>min_date),:]
用户资料基于过去 18 个月的行为和最近 4 个月未用于培训和测试的行为。
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y)
结果,我使用 Lightgbm 获得了不错的分数:
precision recall f1-score support
0 0.91 0.95 0.93 49092
1 0.95 0.91 0.93 49092
accuracy 0.93 98184
宏观平均 0.93 0.93 0.93 98184 加权平均 0.93 0.93 0.93 98184
准确度 = 0.9309256090605394
关于如何将过去 4 个月的信息用于测试训练的模型,有什么建议吗?