在机器学习的流程大体可以分成模型训练和模型服务两个阶段。无论是训练和服务阶段,其实都需要进行特征工程相关的工作,这块的技术挑战就是如何保证训练和预测过程中使用的特征是一致的。这个问题困扰了很多机器学习从业者,比较典型的场景就是推荐场景。在推荐业务中往往要用离线数据做特征工程然后输入到算法中训练生成推荐模型,在实际业务侧也需要按照同样的特征样本拼接方式生成预测样本,输入给模型做实时预测并拿到推荐结果。

今天要介绍的Feast其实是一个特征管理工具,他通过一套封装好的sdk保证了Model Serving和Model Training两个场景下的特征一致性问题。

Feast架构介绍

看下Feast的架构图,他可以接受Spark、Hive等数仓体系生成的Batch类数据,也可以将Log Service产出的数据通过Kafka构建成Streaming Feature与Batch数据结合构建特征。在Feast篮框内看到,针对Offline和Online的Feature提供了不同的方案,Offline Feature可以通过Feast SDK形成Training Features进行训练,在Online Feature可以通过部署Feast Serving构建出来用于Inference。而且训练和预测的特征是严格一致性保证的。接下来通过一个例子介绍下Feast是如何使用的。

Feast使用方式

1.特征表注册

Feast中将特征构建的主key定义为Entity,Entity往往是多个表关联的索引。可以用以下方法注册:

driver_id = Entity(name="driver_id", description="Driver identifier", value_type=ValueType.INT64)

有了主key后,就可以注册多张表的关联关系。Feature Table可能由离线和在线的多种源构成,需要在里面描述清楚每种特征是如何构建出来的。

最终特征的拼接逻辑会生成yaml文件。

2.离在线特征区分

离在线的特征的构建是不同的,离线通常是聚合统计类特征,比如算比例之类的,在Feast里这种特征处理方式叫做driver statistics,如下图:

在线特征更多的是单纯的计算出现次数,如某件行为发生的次数,可以通过flink实时统计出来,叫做driver trips。

driver statistics和driver trips通常在注册数据表来源的时候要体现。

定义好这些内容之后就可以具体的生产特征了。离线特征可以存储在S3、本地等环境里。实时特征可以处理好并存储到Redis里供实时调用。

3.时间窗定义

既然特征工程分离线处理的特征和在线处理的特征,那么离在线任务肯定会涉及到时间窗口一致性问题。比如一个表3个特征是离线的,2个特征是实时的,如果离线特征的生产时间窗总是比实时特征慢,会造成特征拼接不准确的问题。为了解决这个问题Feast提供了一个time-stamp功能。

系统会为每个Entity记录一个time-stamp,客户在使用的过程中可以根据time-stamp确定某个Feature Table是否可用。

Feast总结

经过整体的特征生成、特征表注册、离线和在线配置就可以构建以上的特征生成系统,可以通过time-stamp功能去选择要调用的Feature Table。

特征训练、预测一致性管理工具:开源项目Feast相关推荐

  1. php 项目 管理,PHP开源项目:文档管理_php开源项目网

    当前位置: php开源项目网 > 文档管理 > 开源项目:文档管理 XODA是一个采用PHP和Ajax开发的文档管理系统(DMS).无需用到数据库,支持为文件和目录添加备注说明信息和过滤功 ...

  2. 这款企业微信管理工具开源了,不用再花钱了

      今天小编推荐一款基于人工智能的企业微信 SCRM 系统,是企业私域流量管理与营销的综合解决方案,助力企业提高私域客户运营效率,强化营销能力,拓展盈利空间.主要运用于电商.零售.教育.金融.政务等服 ...

  3. django开源项目cms_我学到的管理开源CMS项目的知识

    django开源项目cms 关于我们的开源项目PencilBlue ,我最喜欢的部分是我可以与来自世界各地的人们互动. 当我们刚开始时,我们只有两个人,但是随着几个月的发展,我们看到我们的贡献者开始增 ...

  4. 微软CodePlex平台开源项目TOP10

    转自:http://code.csdn.net/news/2820132 CodePlex是一个由微软创建的Open Source网站,在此网站中所发布的所有程序都可以下载源代码使用,目前它已经成为微 ...

  5. 盘点 9 月份 yyds 的开源项目

    本文盘点 8 月份 GitHub 上 Star 数攀升最快的开源项目,他们分别是: 1. GitHub 排名第一的开源项目 2. 代码安全指南 3. 原神自动钓鱼 AI 4. 图解 React 源码 ...

  6. MOSS 2018 回顾:向 40 余个开源项目捐赠 97 万美元

    Mozilla 近日发布了一篇 "MOSS 2018 Year in Review" 的文章,回顾了 MOSS(Mozilla Open Source Support)在 2018 ...

  7. 介绍几个常用的代码管理工具

    1.github 官网:https://github.com/ 这个代码管理工具我之前也用过,适合初学者团队开发,团队人数可以无限,是开源免费的.有很多初学者都是在这上面下载别人的源代码来学习.它也可 ...

  8. 开源项目大全 ...

    http://www.isenhao.com/xueke/jisuanji/kaiyuan.php 监控系统-Nagios 网络流量监测图形分析工具-Cacti 分布式系统监视-zabbix 系统监控 ...

  9. 十年磨一剑,墨菲安全正式发布开源项目murphysec

    先抛出两个问题 你们公司从超市买一桶水回去,喝之前会做检测吗?会担心水被人下毒吗? 你们公司的程序员从 GitHub 上 clone 一个开源项目或者组件,引入到线上项目代码中运行,你会担心有安全漏洞 ...

最新文章

  1. Java第一天学习笔记整理
  2. spring jpa @Query中使用in
  3. 探索“老药新用”最短路径:亚马逊AI Lab开源大规模药物重定位知识图谱DRKG
  4. 中职计算机专业论文,中职教学中计算机专业论文
  5. 怎么解决线上CPU100%的问题
  6. android 异步刷新 方法,android应用中实现异步更新UI的方法有哪些
  7. vc6.0垃圾文件清理工具_干货 | 电脑清理宝典
  8. multiple versions of scala libraries detected解决方案
  9. 使用DbContextPool提高EfCore查询性能
  10. 不可变的基础架构,热部署和JVM
  11. angular-cli构建
  12. can't request region for resource [mem 0xfed40080-0xfed40fff]问题的解决办法
  13. 母婴企业上云 实现线上线下互动营销、一体化管理服务
  14. 亿级消息系统的核心存储:Tablestore发布Timeline 2.0模型
  15. CI框架PHP漫画小说二合一CMS网站系统源码
  16. java爬去赶集,爬取赶集网二手物品下所有物品的信息
  17. pytorch得到中间层输出
  18. oracle异机复制,oracle冷备份恢复和oracle异机恢复使用方法
  19. Xslt中的Xsl:copy与Xsl:copy-of的区别
  20. centos7完全卸载mysql_Centos7 完全卸载mysql

热门文章

  1. Leetcode1704判断字符串的两半是否相似(C++题解)
  2. c++大作业迷宫游戏 规定时间内完成_开卷有益 | 小学生做作业磨蹭的7个原因及对策!太准了~不得不为孩子收藏!...
  3. mysql判断是否建立索引_判断mysql中列是否要添加索引的标准
  4. 存储空间_Tan分享 存储空间清理
  5. 简约代码表白_JS实现520 表白简单代码
  6. java sliplist_Java List retainAll()用法及代码示例
  7. 孔板流量计计算公式_带你全面了解各种流量计
  8. 计算机成绩统计优秀率,基于决策树算法的成绩优秀率分析与研究.pdf
  9. JAVA 之反射(基础概念) 几个主要常用的重要的方法
  10. 数学系列 - 概率论 - 泊松分布和(负)指数分布