处理逻辑回归、LDA 和基于树的模型的数据集中的系统缺失值

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

我正在开发一个项目,该项目的数据集有很多缺失值——真的很多。

这是

colSums(is.na(dati_train))
的输出,显示每列缺失值的数量:

> colSums(is.na(dati_train))   # Number of NAs per column
              PAID      POINT_OF_SALE           EVENT_ID               YEAR 
                 0                  0                  0                  0
             MONTH    N_SUBSCRIPTIONS              PRICE       PHONE_NUMBER
                 0                  0                  0                  0
      PROP_CONBINI       PAYMENT_TYPE          FAV_GENRE                AGE
                 0                  0                967               1723
   DAYS_FROM_PROMO         BOOKS_PAID     N_TRANSACTIONS            N_ITEMS
                 0               5574               5574                  0
DATE_LAST_PURCHASE     CUSTOMER_SINCE               MAIL        SUBSCR_CANC
              5574               5574                  0                  0
            MARGIN
              5574
> 

该数据集包含大约 17,000 个观测值,因此不能选择删除包含缺失值的行。这是我目前处理缺失值的方法,我希望得到您的反馈:

  1. 对于“FAV_GENRE”和“AGE”:由于缺失值的数量相对较少,我正在考虑使用多重插补来填充它们。

  2. 对于其他变量:缺失值是系统地分布在它们之间的,所以我在想:

    • 创建一个新的二进制标志变量来指示该值是否丢失。
    • 训练逻辑回归和 LDA 模型,包括这些标志作为特征。我读到这是一种常见做法,但我以前从未这样做过。
  3. 使用基于树的模型,如随机森林和 XGBoost:我知道这些模型可以处理缺失值,但我从未在这些算法中处理过缺失数据。我应该遵循哪些最佳实践?

由于我还必须对具有类似缺失值模式的另一个数据集进行预测,因此简单地删除缺失值并不是一种选择。我的方法有意义吗?像这样的情况还有更好的选择吗?

让我知道您的想法 - 提前致谢!

python r missing-data method-missing
1个回答
0
投票

我会尝试多重插补模型。这实际上并没有太多缺失的数据,多重插补模型应该可以很好地处理它。请参阅此文章了解更多信息。

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