流失建模 - 现实世界数据中的错误预测

问题描述 投票:0回答:1

过去 6 个月我一直在做一个项目。这是一个预测我们公司客户流失的模型,假设这是一家提供每月服务的公司,费用类似于有线电视。

输入数据集有大约150万个客户用于训练/测试。主要由16列组成

  1. 每月账单
  2. 所用融资 (1=y/0=n) 3-4) 平均使用统计数据
  3. 租用设备总数
  4. 修理/更换设备的总服务访问次数
  5. 添加额外设备的总访问量
  6. 总访问次数 (8+9) 10-16) 有 X 种设备 (1=y/0=N)

我使用 pycarat 找到了 AUC 和 F1 的最佳模型。

AUC:Catboost F1:Xgboost

现在数据不平衡,活跃客户多于取消客户。所以我有以下代码来解释这一点。

在训练测试分割和训练模型之后,我最终得到的训练数据上两种方法的模型精度都在 90 年代中低水平。在测试数据上,它的正确值为 90。但是,当我将本月的数据插入模型时(没有看到),它只能正确预测 25% 的取消客户。其余的甚至在抛硬币附近都没有流失的可能性,它们几乎都接近于零<.1.

测试数据的准确性如此之高,让我产生了怀疑。我在输入数据中没有看到任何表明数据泄漏的信息。任何的意见都将会有帮助。也许我错过了一些东西,我对数据科学还很陌生。

  X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Calculate class weights
total_samples = len(y_train)
class_counts = y_train.value_counts()
class_weights = {0: total_samples / (2 * class_counts[0]),  # Weight for class 0 (non churn)
                 1: total_samples / (2 * class_counts[1])}  # Weight for class 1 (churn)

catboost_model = CatBoostClassifier(class_weights=class_weights)
     
python prediction catboost churn
1个回答
0
投票

您可能会遭受数据漂移的困扰(Wiki博客文章),特别是当您进行某种欠采样/过采样时。

X 或 y 的生产数据与测试数据具有相同的分布吗?

© www.soinside.com 2019 - 2024. All rights reserved.