1

我正在研究客户流失预测。观察和性能窗口的切片如下:

# 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 个月的信息用于测试训练的模型,有什么建议吗?

4

1 回答 1

0

假设您有一个介于 01-2019 和 01-2021 之间的数据。

您可以使用 01-2019 至 08-2021 的数据来训练模型,使用 18 个月的窗口和未来 4 个月的目标(直接在 18 个月之后)创建特征。做一些交叉验证并确保模型能够很好地泛化。

然后,您可以尝试通过使用从 08-2021 到 01-2021 的过去 4 个月创建另一个测试集来模拟现实中发生的相同事情,这意味着您的功能将来自 08-2021 之前的最后 18 个月,而您的目标来自已经流失的08-2021 和 01-2021 之间的客户。

于 2021-10-27T17:08:47.737 回答