获取时间点正确的特征
构建训练集时避免标签泄漏
获取时间点正确的特征 是 CoddyKit 上的免费 MLOps Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 MLOps Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 MLOps Academy 课程共包含 4 节课。
穿越时间问题
为了公平地训练,每个标签都需要使用事件发生之前已知的特征值,而不是之后的值。时间混淆会把未来信息泄露给模型。⏳
什么是标签泄露
当某个特征暗中携带了预测时刻之后的信息时,就会发生标签泄露。模型离线表现出色,在线运行却一败涂地。
一个具体陷阱
把今天的账户余额连接到一笔去年发放的贷款上,是典型的信息泄露。正确的值应该是贷款发放时的余额。
时间点连接
时间点连接会将每个事件与该事件时间戳之前或当时存在的最新特征值匹配。它不会提前查看未来信息。
实体 DataFrame
您需要向 Feast 提供一个实体 DataFrame:其中包含实体键,以及您希望为其获取特征的每个训练行对应的事件时间戳。
entity_df = pd.DataFrame({"driver_id": [1001], "event_timestamp": [pd.Timestamp("2024-01-01")]})获取历史特征
使用该 DataFrame 调用get_historical_features,Feast 就会替您针对离线存储执行符合时间关系的连接。
store.get_historical_features(entity_df=entity_df, features=["driver_stats:conv_rate"])将其转换为数据集
对结果调用to_df,即可获得一个训练 DataFrame,其中每一行都带有正确且无泄露的特征值。
training_df = job.to_df()TTL 保证新鲜度
如果最近的值早于该特征的生存时间,Feast 会将其保留为空,而不会附加过时的值。
相同逻辑,两个存储
历史读取会访问离线存储进行训练;在线读取会访问在线存储提供服务。特征定义保持不变,因此不会产生偏差。
为什么这很重要
时间点正确性让您能够信任离线评估分数。跳过这一步,验证结果就会变成令人安心却不真实的数字。🎯
全局视角
只定义一次,为速度进行物化,并在训练时按时间进行连接。这些步骤结合起来,就能构建出快速、一致且真实可靠的特征存储。
快速检查
构建训练集时,为什么要使用时间点连接?
回顾
您通过 get_historical_features 使用时间点连接构建了无泄露的训练集,同时在线服务使用相同的定义。这就构成了完整的特征存储闭环。🏁
常见问题解答
「获取时间点正确的特征」课时是免费的吗?
是的 — 「获取时间点正确的特征」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 MLOps Academy 课程的其余内容,请升级到 CoddyKit PRO。 MLOps Academy 课程共包含 4 节课。
「获取时间点正确的特征」这节课中我会学到什么?
构建训练集时避免标签泄漏 你通过在浏览器中直接运行的动手代码来练习 MLOps Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 MLOps Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 MLOps Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「获取时间点正确的特征」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 MLOps Academy 课中编写并运行代码吗?
能。每节 MLOps Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 特征库为何存在
- 使用 Feast 定义特征视图
- 将特征物化到在线存储
- 获取时间点正确的特征