gpt4 book ai didi

featuretools - 我们应该在 featuretools 中从 DFS 中排除目标变量吗?

转载 作者:行者123 更新时间:2023-12-04 04:02:05 27 4
gpt4 key购买 nike

在将数据帧作为实体集中的实体传递并在其上使用 DFS 时,我们是否应该从 DFS 中排除目标变量?在手动尝试传统特征选择方法并使用特征工具查看它是否提高了分数后,我有一个模型的 roc_auc 分数为 0.76。所以在包含目标变量的实体集上使用了 DFS。令人惊讶的是,roc_auc 分数上升到 0.996,准确度上升到 0.9997,所以我对分数表示怀疑,因为我将目标变量也传递到深度特征合成中,并且与目标相关的信息可能已泄露到训练中?我假设正确吗?

最佳答案

Deep Feature Synthesis 和 Featuretools 确实允许您将目标保留在实体集中(以便使用它的历史值创建新特征),但是您需要设置“时间索引”并使用“截止时间”来做到这一点无标签泄漏。

您可以使用时间索引来指定保存每行数据何时已知的值的列。此列使用 time_index 指定使用 entity_from_dataframe 创建实体时的关键字参数.

然后,在运行 ft.dfs() 时使用截止时间或 ft.calculate_feature_matrix()要指定最后一个时间点,您应该在计算特征矩阵的每一行时使用数据。特征计算将只使用截止时间(包括截止时间)的数据。所以,如果这个截止时间在你目标的时间索引值之前,你就不会出现标签泄漏。

您可以在 Handling Time 上的文档中详细了解这些概念。 .

如果你根本不想和目标打交道,你可以

  • 您可以使用 pandas 将其完全从数据框中删除,然后再将其设为实体。如果它不在实体集中,则不能用于创建特征。
  • 您可以设置 drop_contains ft.dfs 中的关键字参数至 ['target'] .这将阻止创建任何包含字符串 'target' 的特征。 .

  • 无论您使用上述哪个选项,仍然可以直接通过 DFS 传递目标列。如果您将目标添加到截止时间数据帧,它会传递到生成的特征矩阵。这很有用,因为它确保目标列与其他功能保持对齐。您可以通过 here 传递标签的示例在文档中。

    使用二级时间索引的高级解决方案

    有时,单个时间索引不足以表示连续信息在两个不同时间已知的数据集。这通常发生在目标是一列时。为了处理这种情况,我们需要使用“二级时间索引”。

    Here是来自 Kaggle 内核的一个示例,用于预测患者何时会错过与使用辅助时间索引的医生的约会。数据集有一个 scheduled_time ,在安排约会时,以及 appointment_day ,这是约会实际发生的时间。我们想告诉 Featuretools 一些信息,比如患者的年龄在他们安排预约时是已知的,但其他信息,比如患者是否真的出现了,直到预约当天才能知道。

    为此,我们创建了一个 appointments具有二级时间索引的实体如下:
    es = ft.EntitySet('Appointments')
    es = es.entity_from_dataframe(entity_id="appointments",
    dataframe=data,
    index='appointment_id',
    time_index='scheduled_time',
    secondary_time_index={'appointment_day': ['no_show', 'sms_received']})

    这表示大多数列都可以在索引 scheduled_time 时使用,但变量 no_showsms_received直到二级时间索引中的值才能使用。

    然后我们在 scheduled_time 进行预测通过将我们的截止时间设置为
    cutoff_times = es['appointments'].df[['appointment_id', 'scheduled_time', 'no_show']]

    通过将该数据帧传递到 DFS, no_show列将原封不动地通过,但 no_show 的历史值仍可用于创建特征。一个例子是类似 ages.PERCENT_TRUE(appointments.no_show)或者“过去没有出现过的各个年龄段的人所占的百分比”。

    关于featuretools - 我们应该在 featuretools 中从 DFS 中排除目标变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50639687/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com