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

2023-12-29

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


深度特征综合和特征工具确实允许您将目标保留在实体集中(以便使用其历史值创建新特征),但您需要设置“时间索引”并使用“截止时间”来执行此操作无标签泄漏。

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

然后,您在跑步时使用截止时间ft.dfs() or ft.calculate_feature_matrix()要指定最后一个时间点,您应该在计算特征矩阵的每一行时使用数据。特征计算将仅使用截止时间(包括截止时间)之前的数据。因此,如果这个截止时间早于目标的时间索引值,则不会出现标签泄漏。

您可以在以下文档中详细了解这些概念处理时间 https://featuretools.alteryx.com/en/stable/getting_started/handling_time.html.

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

  1. 您可以使用 pandas 将其完全从数据框中删除,然后再将其设为实体。如果它不在实体集中,则不能用于创建特征。

  2. 您可以设置drop_contains中的关键字参数ft.dfs to ['target']。这会阻止创建任何包含字符串的功能'target'.

无论您选择上述哪个选项,仍然可以直接通过 DFS 传递目标列。如果将目标添加到截止时间数据帧,它将传递到生成的特征矩阵。这可能很有用,因为它可以确保目标列与其他功能保持对齐。您可以通过传递标签的示例here https://docs.featuretools.com/automated_feature_engineering/handling_time.html?highlight=label#running-dfs-with-cutoff-times在文档中。

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

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

Here https://www.kaggle.com/sjrothsc/using-featuretools-for-missed-appointments是来自 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_show and sms_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)或“过去没有出现过的每个年龄段的人的百分比”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我们应该从 featuretools 的 DFS 中排除目标变量吗? 的相关文章

  • 创建对象时出现错误“存在显式转换(是否缺少强制转换)”:

    我有兴趣学习 OOP 概念 在尝试使用继承的简单程序时 我注意到这个错误 我不明白为什么会出现这个错误 我给出了下面简单的 C 代码 class Animal public void Body Console WriteLine Anima
  • *onbeforeunload* 是否在 Safari (macOS) 上缓存?

    我添加了一个事件监听器beforeunload 按照惯例 https developer mozilla org en docs Web API WindowEventHandlers onbeforeunload在我的 JS ReactJ
  • 重新使用现有 Microsoft Identity 用户表时密码(哈希)不匹配

    我们有一个现有的 SQL 数据库微软身份表 最初由 ASP NET Core 应用程序生成 我们还有一个 ASP NET 4 应用程序 它也使用 Microsoft Identity 我们希望 ASP NET 4 应用程序能够使用同一数据库
  • subversion中“让深度粘性”有什么作用?

    我很难找到有关在 SVN 工作副本上使用粘性深度设置的行为的明确文档 在 SVN 中 当使用 更新到修订版本 对话框时 会有一个 使深度粘性 复选框 使深度粘性和非粘性之间有哪些有效区别 当深度为粘性时 您每次更新时都将使用相同的设置进行更
  • PHP以真正的二进制方式读取二进制文件

    我在谷歌上搜索了我的问题 但没有找到解决方案 我想读取一个文件并将缓冲区转换为二进制 例如 10001011001011001 如果我从文件中有这样的东西 bmoov lmvhd tF tF K T trak tkh d tF tF K e
  • Symfony 2:安装并启用 intl 扩展

    我在用着XAMPP for Windows并决定尝试一下Symfony 2 当我到达时Symfony Configuration它建议我安装并启用的页面intl 我尝试阅读PEAR s and PECL s指导 因为我完全0关于这个主题 开
  • std::ostringstream 覆盖初始化字符串

    以下代码会生成 0004567 铿锵 7 https repl it agustinf ostringstream bug or anti feature main cpp include
  • 连接到 Github 时“无法生成 ssh”,但 ssh -T [电子邮件受保护] 有效?

    我很难让 Github Netbeans 正常工作 我想将 ssh 与 git 在 Windows 7 上 结合使用来提交或克隆项目 但我不断收到此错误消息 git clone email protected cdn cgi l email
  • NSOutlineView 缩进问题

    我使用 NSOutlineView 对象来表示文件结构 并发现它不会正确缩进任何可扩展的子项 尽管它会缩进不可扩展的子项 这是一张图片来说明我的意思 在此示例中 AnotherFolder 是 Folder2 的子级 但它没有与其他缩进文件
  • F# 中的代码分析

    作为一名 C 开发人员 我从 Microsoft 的代码分析中受益匪浅 然而 在 F 中 代码分析似乎并不是开发周期的一个组成部分 我花了一段时间才在 F 项目上启用 CA 但这博客有帮助 http blog nikosbaxevanis
  • 将 div 水平和垂直居中,并在调整父级大小时保持居中[重复]

    这个问题在这里已经有答案了 我想始终将 div 水平和垂直居中 我可以减少 增加窗口的宽度 div 将通过始终保持在窗口的中心进行响应 cent height 50px width 50px background color black m
  • 是否可以使用 winmerge 查看 cygwin 的 git diff?

    我喜欢在 cygwin 上使用 git 但唯一的缺点是当我想这样做时git difftool我无法使用任何有用的东西 git diff大多数时候对我来说很好 但有时我想使用 winmerge 通过以下方式查看这些差异git difftool
  • 想要将特定的 div 向右移动

    我想将特定的 div 移到右侧 以便左侧的 div 获得更多空间来显示其中的内容 我在 CSS 中尝试了一些东西 但我知道我做错了 在 CSS 中 我 login box width 200px margin left 50px 您可以在该
  • 查找所有子项完全匹配的父项 ID

    场景 假设我们有一组代表四个关键概念的数据库表 实体类型 例如帐户 客户等 实体 例如上述实体类型的实例 同类群组 命名组 群组成员 组成群组成员的实体 群组的规则是 一个队列始终至少有一名队列成员 群组成员对于该群组必须是唯一的 即实体
  • Tensorflow、多标签精度计算

    我正在研究多标签问题 并试图确定模型的准确性 我的型号 NUM CLASSES 361 x tf placeholder tf float32 None IMAGE PIXELS y tf placeholder tf float32 No
  • 如何在 iOS 应用程序中阻止屏幕截图

    我想构建一个应用程序 在其中我想阻止用户的屏幕截图 就像在 Netflix 应用程序中一样 它应该像在 Netflix 中一样返回黑屏截图 现在我无法得到任何有关此事的信息 不知道Netflix是怎么处理的 有什么方法可以检测块中捕获的图像

随机推荐