演讲实录 | OpenMLDB 整合自动特征工程

news2024/9/21 8:03:13

本文整理自 OpenMLDB 社区开发者、伊利诺伊大学 徐鹏程 在 OpenMLDB Meetup No.7 中的分享——《OpenMLDB 整合自动特征工程》。

大家好,我是来自伊利诺伊大学的硕士在读学生,也是 OpenMLDB 开源社区的贡献者——徐鹏程。我参与开发的项目,也是今天要和大家介绍的:OpenMLDB 整合自动特征工程。这个项目的工作内容是把 OpenMLDBAutoX 两者结合起来做成一个自动特征工程,我们把它命名为 AutoFE,即 Auto Feature Engineering。

在开始前做个简单自我介绍,我本科就读于上海交通大学,硕士在伊利诺伊大学香槟分校,专业都是电子与计算机工程,感兴趣的方向有机器学习在生物信息等领域的应用、计算机系统与架构、分布式系统等。

今天我会从以下三个方面展开介绍。

  1. 问题背景

  2. 解决思路

  3. 现场 DEMO

问题背景

课题的目标是将 OpenMLDB 和自动特征工程结合起来,达到降低使用门槛的效果。

我们既想要调用 OpenMLDB 这样一个线上线下一致的时序数据库,也想要帮助离线开发的数据科学家减少工作的繁杂,完成一个自动特征工程。

离线开发需要数据科学家根据专业知识和工作经验去构建基于数据的特征,这个工作较为繁复。我们希望通过自动特征工程来减轻负担、降低门槛,同时也与 OpenMLDB 整合,使它能够更好的部署使用。

解决思路

「解决问题流程」

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eKo5sMfv-1670378889309)(https://openmldb.ai/wordpress/wp-content/uploads/2022/11/image-1668049394315.png)]

AutoFE 和 OpenMLDB 的通性在于使用了同一套 OpenMLDB 优化后的 SQL。

而课题解决问题的思路是:

**step1:**使用自动工具生成 SQL,SQL 会利用一些特征工程算法在原有数据的基础上构造生成一些特征。比如我们想解决出租车订单的相关预测问题,像是预测用户下单的等待接单时间、乘车出行时间等。AutoFE 会根据已有的数据,如用户ID、用户定位、用户目的地、每一次订单的用时等构造出适合此类应用场景的新特征,例如,近五分钟平台的平均/最大/最小接单用时,近五分钟比十分钟前的订单平均用时变化量等。

**step2:**经过 OpenMLDB 的特征提取,会返回一个数据。

**step3:**我们要针对返回的数据做进一步的筛选。因为部分数据是冗余的,而我们需要的是筛选后的最重要的 K 特征。

**step4:**K 特征筛选出来后,会重建为最终特征的 SQL 。

**step5:**最终的 SQL 会传递给 OpenMLDB。

**step6:**最后进行 SQL 和模型的上线训练。

以上流程已被全部打通,在 OpenMLDB Github 中 Python 目录中有程序链接。

https://github.com/4paradigm/OpenMLDB/tree/main/python/AutoFE

「提升空间」

目前算法还在不断完善中,因为新机器学习算法的不断涌现,所以算法还有广阔的发展空间。尤其是其中较为重要的构造特征以及特征选择两个环节还有充足的提升余地。

file

「详细拆解」

接下来我会把刚刚简要介绍的环节详细拆解给大家。

Step 1:生成构造多种特征,翻译为 SQL

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JyPia91M-1670378889318)(https://openmldb.ai/wordpress/wp-content/uploads/2022/11/image-1668049435734.png)]

在流程的最开始,我们要对用户已有的数据,通常是 CSV 表格进行一些基础配置,比如存放位置、数据类型等。配置完成后,就可以启动 AutoFE 的自动特征工程。AutoFE 首先会根据原有数据构造生成新特征,再将其用 SQL 表示,用一个类似于 HTTP 请求的形式发送给 OpenMLDB。

Step 2:OpenMLDB 特征提取

file
OpenMLDB 收到 SQL 并进行特征提取后,会以一个新 CSV 的形式返回特征数据,返回数据比原有数据有了较大增长。

Step 3:特征选择 & Step 4:重建最终特征的 SQL

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2ZJvR0IQ-1670378889322)(https://openmldb.ai/wordpress/wp-content/uploads/2022/11/18-300x168.png)]

接下来进入到比较关键的一环——特征选择。

面对存放了很多新构造特征的大数据表,我们需要筛选出比较重要的特征,舍去不重要的特征。这时我们会通过 Feature selection 的算法给特征按照重要性排名,截取需要保留的前 K 个。

step 5:再次 OpenMLDB 特征提取

经过特征选择的 SQL 相应也需要更新,删去部分列,优化为更短的 SQL 语句,因为我们筛选保留了最重要的特征,抛弃了不重要的特征。同样的,发送给 OpenMLDB 后,它会以 CSV 形式保存下来。

step 6:SQL 和训练模型上线

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2ngJv93J-1670378889332)(https://openmldb.ai/wordpress/wp-content/uploads/2022/11/image-1668050137462.png)]

这样我们就得到了一个完整的、可供训练模型的数据,它可以很好地表达我们想要的特征。走完这个流程后,就可以进入模型训练和实时特征计算的部分了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RpFJiqAH-1670378889333)(https://openmldb.ai/wordpress/wp-content/uploads/2022/11/image-1668050152625.png)]

「实现路径」

接下来我将简单介绍一下具体的实现路径。主要会分成两块内容,一个是 特征构造,一个是 特征选择

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hz5P7AzJ-1670378889335)(https://openmldb.ai/wordpress/wp-content/uploads/2022/11/image-1668050174828.png)]

特征构造环节借鉴了 AutoX 的一些方案,例如 lag,count,cumsum,rolling,shift,diff 等。

因为 OpenMLDB 关注时序性特征较多,所以特征构造方面也更关注时序性,比如说在一个时间窗口内或者一段时间之前的差等等。而其他方向相对而言没有那么完美,例如难以用 SQL 语句去描述图像的特征。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XuYQGdNs-1670378889336)(https://openmldb.ai/wordpress/wp-content/uploads/2022/11/image-1668050199325.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tywxSZj9-1670378889337)(https://openmldb.ai/wordpress/wp-content/uploads/2022/11/image-1668050213904.png)]

那么我们现在以上图表格为例,简单介绍一下特征构造可以构造出哪些新特征。

  1. **在 n 天时间窗口内时序特征。**通过时间窗口内的统计量进行计算构造。

  2. **并表特征。**将表格按照一定的逻辑,如时间、ID联系拼接起来构造聚合特征。

  3. **Shift 特征。**即是平移的一些特征,比如说用户当前的行为可能和一周前的行为存在关联,我们把平移的行为也作为一个特征新构造出来。

  4. **cumsum 特征。**也就是累计和特征,可以计算最早历史记录到目前的数据,构造新特征。

  5. **diff 特征。**它的逻辑是基于 shift 特征求差值构造新函数。

  6. **基于 window union 的并表特征。**它可以把分布在不同表格的数据合并起来,用一个窗口查找特征。

特征选择方面,我们也借鉴了一些市面上已有开源算法。主要会用到以下三个算法:

file

  1. Adversarial Validation。能够将训练集和测试集分布不一致的特征筛选出来并剔除。

  2. GRN。类似于神经网络的原理,可以筛选重要性靠前的特征。

  3. Permutation Importance。把一个特征重新排列,观察它预测结构的效果变化,着某种程度上也说明了特征的重要性。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kM5Vj4YB-1670378889338)(https://openmldb.ai/wordpress/wp-content/uploads/2022/11/image-1668050275304.png)]

file

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZNIXlmqL-1670378889341)(https://openmldb.ai/wordpress/wp-content/uploads/2022/11/image-1668050314553.png)]

「AutoFE 代码流程」

AutoFE 的代码流程对应了上文提到的环节。

  • 第一步是利用现成数据,构造新特征,翻译成 SQL 语句。
  • 接下来,以 HTTP 请求的形式去发送给 OpenMLDB,我们会得到一个新的 CSV 数据表。
  • 第三步,根据数据表,我们运行一个 get-top-features,选出最重要的 K 个特征。
  • 跑完这一步后,同样也会产生最终的 SQL。
  • 最后,我们把最终 SQL 发送给 OpenMLDB,经过处理后就得到了用于特征工程数据。

demo 演示

,时长05:31

以上就是本期分享的全部内容。感谢大家的仔细聆听,也欢迎各位加入 OpenMLDB 社区。

相关链接

OpenMLDB 官网

https://openmldb.ai/

OpenMLDB github 主页

https://github.com/4paradigm/OpenMLDB

OpenMLDB 微信交流群

file

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/68229.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RabbitMQ——RabbitMQ的六种工作模式详解

RabbitMQ 是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,RabbitMQ是使用Erlang(高并发语言)语言来编写的,并且RabbitMQ是基于AMQP协议的 AMQP协议 Advanced Message Queuing Protocol(高级消…

JVM之垃圾回收器一

如何判断对象是否存活 引用计数器 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器都为0的对象就是不可能再被使用的。 Java语言中没有选用引用计数算法…

对比分析小游戏引擎孰优孰劣

随着微信生态中,小程序应用指数级的增长,许多休闲游戏变成为了众多游戏厂商流量变现的新手段。以近期很火的“羊了个羊”为例,它便是我们常常所说的小游戏。 游戏和小游戏的区别 要盘点小游戏开发引擎之前,我们得先来了解下游戏…

leetcode 638. 大礼包-思路整理

题目 在 LeetCode 商店中, 有n件在售的物品。每件物品都有对应的价格。然而,也有一些大礼包,每个大礼包以优惠的价格捆绑销售一组物品。 给你一个整数数组price表示物品价格,其中price[i]是第i件物品的价格。另有一个整数数组nee…

扩散模型(Diffusion)最新综述+GitHub论文汇总-A Survey On Generative Diffusion

扩散模型(Diffusion Model)最新综述GitHub论文汇总-A Survey On Generative Diffusion 本综述来自香港中文大学Pheng-Ann Heng、西湖大学李子青实验室和浙江大学陈广勇团队,对现有的扩散生成模型进行了全面的回顾。本文首先提出了diffusion model改进算法的细化分类…

Thread类及常见方法

文章目录一、Thread常见构造方法二、Thread常见属性三、Thread常见方法start()获取当前线程休眠当前线程中断线程join()一、Thread常见构造方法 Thread类是JVM用来管理线程的一个类,每个线程都有唯一一个Thread对象与之对应,JVM会将这些对象组织起来&am…

世界杯征文活动 | 神奇!一段JavaScript代码生成会动的足球

世界杯征文活动 | 神奇!一段JavaScript代码生成会动的足球 文章目录前言一、效果展示二、代码解析1.把足球图片转换为base64格式2.根据base64格式的字符串,创建img标签图片对象3.创建存放图片img的div标签对象4.使div旋转起来总结前言 花有重开日&#…

python中的import详解

0. 什么是导入? 导入从本质上讲,就是载入另一个文件,并能够读取那个文件的内容 0.1 模块和属性 模块往往就是变量名的封装,被认作是命名空间属性就是绑定在特定对象上的变量名 0.2 from和import 通过import得到了具有属性的模…

697226-52-1, 细胞穿膜肽TAT-amide

TAT-amide 是一种细胞穿透肽。细胞穿透肽 (CPPs) 是能够进入不同细胞的短氨基酸序列,用于细胞的物质细胞递送。TAT-amide is a cell penetrating peptide. Cell-penetrating peptides (CPPs) are short amino acid sequences able to enter different cells[1][2]. …

软件测试工程师应该学Python还是学Java?

前言 对于一个软件测试工程师来说,选哪一门语言来入手编程一直是件非常纠结的事情,当然立志做一辈子功能测试的人除外。 当你学完软件测试基本理论,掌握业务测试流程,功能测试可以搞定,数据库和linux玩的也很溜时&am…

Day822.Happens-Before 规则 -Java 并发编程实战

Happens-Before 规则 Hi,我是阿昌,今天学习记录的是关于Happens-Before 规则的内容。 可见性、原子性、有序性这三者在编程领域属于共性问题,所有的编程语言都会遇到,Java 在诞生之初就支持多线程,自然也有针对这三者…

Blender 雕刻

文章目录简介.基本操作.进入雕刻.雕刻工作区.动态拓扑.动态拓扑属性.重构网格.物体数据属性重构网格.雕刻自带的重构网格.简介. 1 雕刻的本质是是用笔刷对顶点进行移动 2 被雕刻的物体要有足够多的顶点才行,可以使用动态拓扑解决顶点不够的问题 基本操作. 进入雕…

你猜,怎么用一句话证明你是项目经理?

早上好,我是老原。 熟悉我的老朋友都知道,我有两大爱好,一是钟情于挖招聘JD,二是喜欢逛知乎。 今天在知乎上看到一个很有趣的话题:你如何用一句话证明你是项目经理? 项目管理发展至今,有技术/…

JavaScript大作业(餐厅美食网站设计与实现)

🎀 精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

【CBAM||目标识别||注意力机制||gated卷积】Convolutional Block Attention Module

这篇是2018年的paper,已经有很多中文资料可以学习,因而不做重复工作~记录一下核心要点,后续可阅。【学习资源】CBAM:卷积注意力机制模块 【学习资源】论文阅读-CBAM: Convolutional Block Attention Module CBMA:卷积注意力机制模…

10K起步的软件测试岗到底需要学什么?零基础进阶自动化测试需要哪些技术...

软件测试的正确路线 1、软件测试基础: 对软件测试整理的测试流程有清晰的概念,了解软件测试到底是做什么的,软件测试的各种专业术语是什么意思,以及多种不同的软件测试类型区分,测试用例的作用、本质以及如何撰写&…

开关电源环路稳定性分析(2)-从开环到闭环

大家好,这里是大话硬件。 在上一节中,基于欧姆定律,基尔霍夫定律,伏秒平衡这些已知的知识点,可以推导出Buck变换器的输入输出关系。 今天这一节,我们还是从全局的概念来解析开关电源。 1. 运放和开关电源…

盘点世界杯有趣小知识!带你感受体育赛事数据可视化的快乐!

2022年卡塔尔世界杯是第二十二届世界杯足球赛,是历史上首次在卡塔尔和中东国家境内举行、也是第二次在亚洲举行的世界杯足球赛。 今年卡塔尔世界杯可谓精彩纷呈,花2000个亿在沙漠里打造出的空调球场、洗脑又魔性的“母鸡生蛋”主题曲《Tukoh Taka》、世界…

角逐「视觉感知」万亿市场,这家国内领跑者如何挑战性能天花板?

随着智能汽车渗透率快速提升,车用视觉感知摄像头装配量大幅增长。以前向ADAS摄像头为例,今年1-8月中国市场(不含进出口)乘用车新车标配交付为639.10万颗,同比增长29.54%;而这个数字在2021年同期为55.67%。 …

ppt 的基本操作1

一 基本操作 1.1 隐藏和显示功能区 1.点击有上角,小箭头标志 2.显示 1.2 工作区 和编辑区的比例拖放 1.1 箭头放到红色标注的部分,当鼠标变为箭头形状,可以动态拖动 2.可以看到二者之间的比例,发生变化 1.3 编辑区设置网格线…