CN112559603B - 特征提取方法、装置、设备及计算机可读存储介质 - Google Patents
特征提取方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN112559603B CN112559603B CN202110200343.2A CN202110200343A CN112559603B CN 112559603 B CN112559603 B CN 112559603B CN 202110200343 A CN202110200343 A CN 202110200343A CN 112559603 B CN112559603 B CN 112559603B
- Authority
- CN
- China
- Prior art keywords
- data
- task
- subtask
- feature
- determining
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了一种特征提取方法、装置、设备及计算机可读存储介质,应用于云技术领域,所述方法包括:在数据库中获取待处理数据;根据待处理数据对应的表达式确定特征提取流程;表达式用于将待处理数据转换为特征数据;特征提取流程包括有序排列的多个数据操作语句;每一数据操作语句由数据库对应的计算引擎提供的算子函数实现;根据多个数据操作语句对待处理数据进行处理,得到特征数据。通过本申请提供的特征提取方法,能够实现复杂特征的提取任务,提升特征提取的效率。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种特征提取方法、装置、设备及计算机可读存储介质。
背景技术
在进行大数据处理的过程中,涉及人工智能的使用。在使用人工智能的过程中,通常使用大数据计算引擎,如SPARK将存储业务信息的多个数据表进行连接,以便通过对不同数据表进行聚合,从而利用数据表所表达的各种业务信息来实现特征提取任务。
相关技术中,大数据计算引擎只能提供简单的运算逻辑,难以实现复杂特征的提取。
发明内容
本申请实施例提供一种特征提取方法、装置、设备及计算机可读存储介质,能够实现复杂特征的提取任务,提升特征提取效率。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种特征提取方法,包括在数据库中获取待处理数据;根据待处理数据对应的表达式确定特征提取流程;表达式用于将待处理数据转换为特征数据;特征提取流程包括有序排列的多个数据操作语句;每一数据操作语句由数据库提供的算子函数实现;根据多个数据操作语句对待处理数据进行处理,得到特征数据。
本申请实施例提供一种特征提取装置,所述装置包括:
获取模块,用于在数据库中获取待处理数据;
确定模块,用于根据待处理数据对应的表达式确定特征提取流程;表达式用于将待处理数据转换为特征数据;特征提取流程包括有序排列的多个数据操作语句;每一数据操作语句由数据库提供的算子函数实现;
处理模块,用于根据多个数据操作语句对待处理数据进行处理,得到特征数据。
在本申请的一些实施例中,所述确定模块还用于:获取待处理数据对应的表达式,基于表达式确定多个数据处理任务和每一数据处理任务的优先级;将处于相同优先级的数据处理任务进行合并,得到至少一个任务组;每一任务组包括至少两个子任务;根据待处理数据和每一任务组的优先级,确定每一任务组对应的操作语句集合;操作语句集合包括任务组中至少一个子任务对应的数据操作语句;根据每一任务组对应的优先级和操作语句集合,确定特征提取流程。
在本申请的一些实施例中,所述确定模块还用于:将待处理数据确定为中间数据;按照优先级顺序,依次根据中间数据确定每一任务组对应的操作语句集合;操作语句集合用于对中间数据进行处理,以更新中间数据。
在本申请的一些实施例中,所述确定模块还用于:基于任务组中的每一子任务的任务类型,确定每一子任务的执行顺序;按照每一子任务的执行顺序,依次基于中间数据确定每一子任务对应的数据操作语句,并更新中间数据;按照执行顺序排列每一子任务对应的数据操作语句,以得到任务组对应的操作语句集合。
在本申请的一些实施例中,所述确定模块还用于:获取任务组中的每一子任务的任务类型;根据任务类型对每一子任务进行分类,得到至少一个聚合任务和至少一个非聚合任务;基于每一聚合任务与每一非聚合任务之间的任务顺序,对每一聚合任务和每一非聚合任务进行排序,以得到每一子任务的执行顺序。
在本申请的一些实施例中,所述确定模块还用于:在非聚合任务位于至少一个聚合任务之前的情况下,将非聚合任务确定为聚合前任务;在非聚合任务位于至少一个聚合任务之后的情况下,将非聚合任务确定为聚合后任务;按照聚合前任务、聚合任务和聚合后任务的顺序对每一聚合任务和每一非聚合任务进行排序,以得到每一子任务的执行顺序。
在本申请的一些实施例中,所述确定模块还用于:基于中间数据确定子任务需要处理的数据信息;数据信息包括以下至少之一:子任务对应的操作标识、中间数据的数据标识和中间数据中子任务的输入特征名;根据数据信息和子任务对应的目标算子函数,确定子任务的输出特征名;根据数据信息、目标算子函数和输出特征名生成子任务对应的数据操作语句,并利用输出特征名更新中间数据。
在本申请的一些实施例中,在根据数据标识、输入特征名、子任务对应的目标算子函数和输出特征名生成子任务对应的数据操作语句,并利用输出特征名更新中间数据之前,所述确定模块还用于:获取中间数据中的特征名集合;在特征名集合中不存在输出特征名的情况下,根据数据标识、输入特征名、子任务对应的目标算子函数和输出特征名生成子任务对应的数据操作语句,并利用输出特征名更新中间数据;在特征名集合中存在输出特征名的情况下,不生成子任务对应的数据操作语句。
在本申请的一些实施例中,所述确定模块还用于:确定输出特征名的特征属性;将输出特征名作为中间数据的特征名添加至中间数据,并保存输出特征名与特征属性的对应关系;在中间数据中存在至少两个冲突特征名的情况下,基于每一冲突特征名对应的特征属性,确定至少两个冲突特征名中需要保留的特征名。
在本申请的一些实施例中,所述处理模块还用于:将待处理数据确定为中间数据;按照特征提取流程中多个数据操作语句的顺序,依次利用每一数据操作语句对中间数据进行处理,以更新中间数据,直至各数据操作语句执行完成;根据各数据操作语句执行完成后得到的中间数据,确定特征数据。
在本申请的一些实施例中,所述处理模块还用于:获取数据操作语句中的输入特征名和目标算子函数;将中间数据中的输入特征名对应的数据中输入至目标算子函数中,得到目标算子函数的输出数据;将输出数据作为输出特征名对应的数据,以更新中间数据。
在本申请的一些实施例中,所述处理模块还用于:获取中间数据中的输入特征名对应的数据的数据量;在数据量超过预设阈值的情况下,将输入特征名对应的数据划分为多个子数据组;将每一子数据组分配至对应的处理节点;处理节点用于将子数据组输入至目标算子函数中,得到子数据组对应的输出子数据组;聚合每一处理节点得到的输出子数据组,得到目标算子函数的输出数据。
本申请实施例提供一种特征提取设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的特征提取方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本申请实施例提供的特征提取方法。
本申请实施例具有以下有益效果:
本申请实施例通过根据待处理数据获取对应的特征提取流程,并根据该特征提取流程中有序排列的多个数据操作语句,对该待处理数据进行处理,得到特征数据。因此,本申请实施例提供的特征提取方法可以基于计算引擎提供的算子函数,实现待处理数据到特征数据的之间的转换过程,兼容性较高,同时,本申请实施例提供的特征提取方法通过结合有序排列的多个数据操作语句,可以基于该原始算子库,实现复杂特征的提取,突破了计算引擎提供的原始算子库的限制。
附图说明
图1是本申请实施例提供的特征提取系统的一个可选的架构示意图;
图2是本申请实施例提供的特征提取设备的结构示意图;
图3是本申请实施例提供的特征提取方法的一个可选的流程示意图;
图4是本申请实施例提供的特征提取方法的一个可选的流程示意图;
图5是本申请实施例提供的特征提取方法的一个可选的流程示意图;
图6是本申请实施例提供的特征提取方法的一个可选的流程示意图;
图7是本申请实施例提供的计算流程生成方法的一个可选的示意图;
图8是本申请实施例提供的冲突列名的一个可选的处理示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使在本实施例中描述的本申请实施例能够以除了在在本实施例中图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
(1)SparkSQL:SparkSQL是在Spark大数据计算引擎上抽象出用于处理结构化数据的工程项目。SparkSQL提供领域特定语言(DSL),可通过Python语言进行操作结构化数据。
(2)特征抽取:在机器学习中,输入学习器的部分数据列称为特征。特征在机器学习的过程中起着至关重要的作用。在机器学习流程中,制作特征的过程称为特征抽取。
(3)Shuffle:在分布式计算引擎中,将相同主键的数据从不同主机通过网络分发至同一主机的过程称为Shuffle。
(4)时序一阶差分:以用户交易金额的一阶差分特征为例,一阶差分的计算是当前交易的金额减去上一次交易的金额,这个特征可以表示用户交易的稳定性。
(5)计数比率:计数比率特征一般用于计算有特定标签下的用户占整体交易的占比。其计算过程为特定用户数量除以总用户数量
(6)数据倾斜:在大数据计算中,如果单一键数据过多,会使得整个分布式计算的时间取决于该键下数据计算完成的时间。若数据过大,超过了单机能进行处理的程度,甚至会导致计算失败。这个现象称为数据倾斜。
参见图1,图1是本申请实施例提供的特征提取系统100的一个可选的架构示意图,为实现支撑一个特征提取应用,终端400通过网络300连接服务器200,网络300可以是广域网或者局域网,又或者是二者的组合。图1还示出了服务器200可以为服务器集群,该服务器集群包括服务器200-1至200-3,同样地,服务器200-1至200-3可以是实体机器,也可以是利用虚拟化技术(如容器技术及虚拟机技术等)构建的虚拟机器,本申请实施例对此不做限定,当然,在本实施例中也可使用单个服务器来进行服务的提供。
本申请实施例可以借助于云技术(Cloud Technology)实现,云技术是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、以及应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,例如,教育系统的门户网站。
作为示例,服务器200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、以及智能手表等,但并不局限于此。终端以及服务器200可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不做限制。
在本申请的一些实施例中,本申请涉及的特征提取系统可以是由客户端、多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)通过网络通信的形式连接形成的分布式系统。以分布式系统为区块链系统为例,节点之间形成组成的点对点(P2P,PeerTo Peer)网络,P2P协议是一个运行在传输控制协议(TCP,Transmission ControlProtocol)协议之上的应用层协议。在分布式系统中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作系统层和应用层。
参见图2,图2是本申请实施例提供的特征提取设备500的结构示意图,图2所示的特征提取设备500包括:至少一个处理器510、存储器550、至少一个网络接口520和用户接口530。特征提取设备500中的各个组件通过总线系统540耦合在一起。可理解,总线系统540用于实现这些组件之间的连接通信。总线系统540除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统540。
处理器510可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口530包括使得能够呈现媒体内容的一个或多个输出装置531,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口530还包括一个或多个输入装置532,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器550包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器550旨在包括任意适合类型的存储器。存储器550可选地包括在物理位置上远离处理器510的一个或多个存储设备。
在本申请的一些实施例中,存储器550能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统551,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块552,用于经由一个或多个(有线或无线)网络接口520到达其他计算设备,示例性的网络接口520包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
显示模块553,用于经由一个或多个与用户接口530相关联的输出装置531(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
输入处理模块554,用于对一个或多个来自一个或多个输入装置532之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在本申请的一些实施例中,本申请实施例提供的特征提取装置可以采用软硬件结合的方式实现,作为示例,本申请实施例提供的特征提取装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的特征提取方法。
在本申请的一些实施例中,本申请实施例提供的特征提取装置可以采用软件方式实现,图2示出了存储在存储器550中的特征提取装置555,其可以是程序和插件等形式的软件,包括以下软件模块:获取模块5551、确定模块5552、和处理模块5553,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。
将在下文中说明各个模块的功能。
在另一些实施例中,本申请实施例提供的装置可以采用硬件方式实现,作为示例,本申请实施例提供的装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的特征提取方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,ComplexProgrammable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable GateArray)或其他电子元件。
将结合本申请实施例提供的终端/服务器的示例性应用和实施,在本申请实施例中,将以终端/服务器为执行主体说明本申请实施例提供的特征提取方法。
参见图3,图3是本申请实施例提供的特征提取方法的一个可选的流程示意图,将结合图3示出的步骤进行说明。
在步骤301中,在数据库中获取待处理数据。
在本申请的一些实施例中,该数据库可以为结构化数据库,如Oracle、Mysql、db2等,相应地,该待处理数据为结构化数据;该数据库还可以为非结构化数据库,如Hdfs、Hive、HBase等,相应地,该待处理数据为非结构化数据。其中,该数据库还对应一个计算引擎,通过该计算引擎可以从该数据库中获取待处理数据,并对该待处理数据进行处理,得到对应的处理结果。例如,可以通过计算引擎实现步骤302得到的特征提取流程,以得到特征数据。
在步骤302中,根据待处理数据对应的表达式确定特征提取流程;表达式用于将待处理数据转换为特征数据;特征提取流程包括有序排列的多个数据操作语句;每一数据操作语句由数据库对应的计算引擎提供的算子函数实现。
在本申请的一些实施例中,对于相同的特征数据,可以通过不同的待处理数据确定该特征数据。其中,对于不同的待处理数据,在根据不同的待处理数据得到该特征数据的过程中,不同的待处理数据对应的表达式是不同的,转换过程也是不相同的。例如,在确定“月均销售额”这一特征的过程中,若待处理数据为“每月对应的销售额”的情况下,可以获取对应的第一表达式,该第一表达式可以实现以下转换过程:“对每月销售额进行累加”和“对累加和进行平均”两个步骤;若待处理数据为“每日对应的销售额”的情况下,可以获取对应的第二表达式,该第二表达式可以实现以下转换过程:“每月对应的销售额”、“对每月销售额进行累加”和“对累加和进行平均”三个步骤。
因此,步骤302可以基于待处理数据在系统中获取与该待处理数据对应的特征提取流程。例如,在确定“月均销售额”这一特征的过程中,若待处理数据为“每日对应的销售额”,可以获取对应的特征提取流程,该特征提取流程用于实现上述“每月对应的销售额”、“对每月销售额进行累加”和“对累加和进行平均”三个步骤。
在本申请的一些实施例中,该特征提取流程包括有序排列的多个数据操作语句,且,每一数据操作语句由数据库对应的计算引擎提供的算子函数实现。其中,计算引擎提供的算子函数为该计算引擎对应算子库/函数库中预设的算子函数,例如,在计算引擎为SPARK的情况下,对应的算子函数可以包括MAX算子函数、MIN算子函数、COUNT算子函数等。
在步骤303中,根据多个数据操作语句对待处理数据进行处理,得到特征数据。
在本申请的一些实施例中,可以通过该数据库对应的计算引擎执行上述特征转换流程中有序排列的多个数据操作语句,对该待处理数据进行处理,以得到需要的特征数据。
通过本申请实施例对于图3的上述示例性实施可知,本申请实施例通过根据待处理数据获取对应的特征提取流程,并根据该特征提取流程中有序排列的多个数据操作语句,对该待处理数据进行处理,得到特征数据。因此,本申请实施例提供的特征提取方法可以基于计算引擎提供的算子函数,实现待处理数据到特征数据的之间的转换过程,兼容性较高,同时,本申请实施例提供的特征提取方法通过结合有序排列的多个数据操作语句,可以基于该原始算子库,实现复杂特征的提取,突破了计算引擎提供的原始算子库的限制。
参见图4,图4是本申请实施例提供的特征提取方法的一个可选的流程示意图,基于图3,图3示出的步骤302可以通过步骤401至步骤404实现,将结合图4示出的步骤进行说明。
在步骤401中,获取待处理数据对应的表达式,基于表达式确定多个数据处理任务和每一数据处理任务的优先级。
在本申请的一些实施例中,该表达式可以基于该待处理数据中的至少一个输入参数及该表达式中的计算规则,确定至少一个输出参数,以得到该特征数据。基于该表达式中的计算规则,可以将该表达式分解为多个数据处理任务和每一数据处理任务对应的优先级。
其中,优先级越高,表示该优先级对应的数据处理任务的执行顺序越靠前。
例如,若存在一个待处理数据为表1所示的数据表:
表1
对应的表达式为公式(1):
其中,该表达式的计算规则为统计每一月份店铺A的访问人次,和每一月份双会员人次,确定每一月份中店铺A单会员访问人次,进而按照月份确定店铺A单会员单月最大访问人次;同理,确定店铺B单会员单月最大访问人次;最后得到店铺平均单会员单月最大访问人次。
根据该公式(1)中的计算规则,可以将该表达式分解为以下任务:
任务1:根据每一月份的店铺A的访问人次和双会员人次,确定每一月份中店铺A单会员访问人次
任务2:根据每一月份的店铺B的访问人次和双会员人次,确定每一月份中店铺B单会员访问人次
任务3:根据每一月份中店铺A单会员访问人次,确定店铺A单会员单月最大访问人次;
任务4:根据每一月份中店铺B单会员访问人次,确定店铺B单会员单月最大访问人次;
任务5:根据店铺A单会员单月最大访问人次和店铺B单会员单月最大访问人次,确定店铺平均单会员单月最大访问人次。
其中,任务1具体包括:
任务1.1:在所述待处理数据中标记店铺A对应的消费记录;
任务1.2:在所述待处理数据中标记双会员对应的消费记录;
任务1.3:统计每一月份店铺A的访问人次;
任务1.4:统计每一月份双会员人次。
其中,任务2具体包括:
任务2.1:在所述待处理数据中标记店铺B对应的消费记录;
任务2.2:在所述待处理数据中标记双会员对应的消费记录;
任务2.3:统计每一月份店铺B的访问人次;
任务2.4:统计每一月份双会员人次。
可以看出,任务1.1至任务1.4和任务2.1至任务2.4对应第一优先级,任务1至任务5对应第二优先级,其中,第一优先级的任务的执行顺序先于第二优先级的任务的执行顺序。
在步骤402中,将处于相同优先级的数据处理任务进行合并,得到至少一个任务组;每一任务组包括至少两个子任务。
在本申请的一些实施例中,步骤402可以通过以下方式实现:根据每一数据处理任务对应的优先级,分别获取每一优先级对应的至少两个数据处理任务,并将每一优先级对应的至少两个数据处理任务进行合并,将至少两个数据处理任务作为至少两个子任务添加至每一优先级对应的任务组中,得到每一优先级对应的任务组。需要说明的是,在各数据处理任务对应的优先级类别数量为M的情况下,生成的任务组的数量也为M,M为正整数。
例如,基于上述举例,可以将任务1.1至任务1.4和任务2.1至任务2.4合并,以得到第一任务组;将任务1至任务5合并,以得到第二任务组。
在步骤403中,根据待处理数据和每一任务组的优先级,确定每一任务组对应的操作语句集合;操作语句集合包括任务组中至少一个子任务对应的数据操作语句。
在本申请的一些实施例中,在步骤403的执行过程中,需要按照各任务组的优先级顺序,依次确定每一任务组对应的操作语句集合。其中,任务组的优先级越高,越先确定该任务组的操作语句集合。
其中,该任务组对应的至少两个子任务,在本申请的一些实施例中,在确定任务组对应的操作语句集合的过程中,可以依次确定每一子任务对应的数据操作语句,以得到包括每一子任务对应的数据操作语句的操作语句集合,即,任务组的操作语句集合中数据操作语句的数量与该任务组中的子任务数量相同。在本申请的另一些实施例中,在确定任务组对应的操作语句集合的过程中,可以获取该任务组中的部分子任务对应的数据操作语句,以得到包括每一部分子任务对应的数据操作语句的操作语句集合,即,任务组的操作语句集合中数据操作语句的数量与该任务组中的子任务数量不相同。
在本申请的一些实施例中,可以通过以下步骤4031至步骤4032实现上述根据待处理数据和每一任务组的优先级,确定每一任务组对应的操作语句集合。
在步骤4031中,将待处理数据确定为中间数据。
在步骤4032中,按照优先级顺序,依次根据中间数据确定每一任务组对应的操作语句集合;操作语句集合用于对中间数据进行处理,以更新中间数据。
在本申请的一些实施例中,由于每一任务组均对应不同的优先级,在优先级低的任务组在确定操作语句集合的过程中,可能需要用到优先级高的任务组的操作语句集合生成的数据,因此,需要按照优先级顺序,依次根据中间数据确定每一任务组对应的操作语句集合。同时,在确定当前任务组对应的操作语句集合的过程中,还需要对该中间数据进行处理,以更新该中间数据,在确定下一任务组对应的操作语句集合的过程中,可以直接基于更新后中间数据进行操作语句集合的确定过程。
例如,基于上述举例,在确定第一任务组和第二任务组的操作语句集合的过程中,将该待处理数据确定为中间数据,基于该中间数据先确定第一任务组的操作语句集合,同时更新该中间数据,再基于更新后的中间数据确定第二任务组的操作语句集合。
在步骤404中,根据每一任务组对应的优先级和操作语句集合,确定特征提取流程。
在本申请的一些实施例中,可以按照优先级顺序,对各任务组对应的操作语句集合进行排序,以得到该特征提取流程。
例如,基于上述举例,可以按照第一任务组至第二任务组的优先级数据,对第一任务组对应的操作语句集合和第二任务组对应的操作语句集合进行排序,得到该特征提取流程。
通过本申请实施例对于图4的上述示例性实施可知,本申请实施例基于用于将该待处理数据转换至特征数据的表达式,确定特征提取流程对应的多个数据处理任务和每一数据处理任务的优先级,并依据该优先级和每一数据处理任务对应的数据操作语句,得到了该待处理数据对应的特征提取流程,可以提升特征提取流程的合理性,进而提升本申请中特征提取的效率;同时,通过将同一优先级的数据处理任务合并为一个任务组,通过依次确定各任务组对应的操作语句集合,进而得到整体特征提取流程,可以进一步提升特征提取流程中多个数据操作语句的排序的合理性,进而再次提升本申请中特征提取的效率。
参见图5,图5是本申请实施例提供的特征提取方法的一个可选的流程示意图,基于图4,图4示出的步骤4032可以通过步骤501至步骤503实现,将结合图5示出的步骤进行说明。
在步骤501中,基于任务组中的每一子任务的任务类型,确定每一子任务的执行顺序。
在本申请的一些实施例中,可以通过以下步骤5011至步骤5013实现上述基于任务组中的每一子任务的任务类型,确定每一子任务的执行顺序。
在步骤5011中,获取任务组中的每一子任务的任务类型。
在步骤5012中,根据任务类型对每一子任务进行分类,得到至少一个聚合任务和至少一个非聚合任务。
在本申请的一些实施例中,针对每一任务组,获取该任务组中每一子任务的任务类型,将任务类型为聚合类型的子任务确定为聚合任务,将该任务组中除了聚合任务的其他子任务确定为非聚合任务。
例如,基于上述举例,对于第一任务组中的任务1.1至任务1.4和任务2.1至任务2.4,可以确定任务1.3、任务1.4、任务2.3和任务2.4为聚合任务,则将其他子任务(如任务1.1、任务1.2、任务2.1和任务2.2)确定为非聚合任务。
在步骤5013中,基于每一聚合任务与每一非聚合任务之间的任务顺序,对每一聚合任务和每一非聚合任务进行排序,以得到每一子任务的执行顺序。
在本申请中的一些实施例中,任务组中的每一子任务至少与其他子任务存在先后关系。例如,基于上述举例,第一任务组中的任务1.1和任务1.3存在先后关系,即必须先执行任务1.1,再执行任务1.3。同理,任务1.2与任务1.4,任务2.1与任务2.3,任务2.2与任务2.4,均存在先后关系。
在本申请的一些实施例中,可以通过以下方法实现上述基于每一聚合任务与每一非聚合任务之间的任务顺序,对每一聚合任务和每一非聚合任务进行排序:在非聚合任务位于至少一个聚合任务之前的情况下,将非聚合任务确定为聚合前任务;在非聚合任务位于至少一个聚合任务之后的情况下,将非聚合任务确定为聚合后任务;按照聚合前任务、聚合任务和聚合后任务的顺序对每一聚合任务和每一非聚合任务进行排序,以得到每一子任务的执行顺序。
其中,在该任务组进行分布式运行的过程中,如采用Map-Reduce的过程实现一个任务组对应的操作语句集合的过程中,需要将部分的子任务进行切分,交给多个计算节点进行计算(Map阶段),由于部分的子任务需要汇总多个子任务的计算结果,再进行计算(Reduce阶段)。其中,Map阶段结束将数据排序分发至指定的计算节点以完成Reduce阶段的过程,即Shuffle操作,是成本非常高。所以对于任务组更新的中间数据,尽量只进行一次Shuffle操作。
在本申请的一些实施例中,上述聚合前任务为该任务组中Map阶段对应的子任务,上述聚合任务为该任务组中的Shuffle操作,上述聚合后任务为该任务组中Reduce阶段对应的子任务,本申请实施例按照聚合前任务、聚合任务和聚合后任务的顺序对该任务组中的多个子任务进行排序,可以在该任务组进行分布式运行的过程中,由于将聚合任务都设置在一起,且将聚合前任务设置在聚合任务之前,将聚合后任务均设置在聚合任务之后,实现了运行该任务组对应的操作语句集合的过程中,只进行一次Shuffle操作的效果,降低了数据传输成本,替升了计算效率。
例如,基于上述举例,已经确定任务1.3、任务1.4、任务2.3和任务2.4为聚合任务,并根据任务1.1和任务1.3,任务1.2与任务1.4,任务2.1与任务2.3,任务2.2与任务2.4,之间存在的先后关系,将任务1.1、任务1.2、任务2.1和任务2.2确定为聚合前任务。由于上述举例中没有位于聚合任务之后的聚合后任务,则按照聚合前任务到聚合任务的顺序,将任务1.1、任务1.2、任务2.1和任务2.2设置在任务1.3、任务1.4、任务2.3和任务2.4之前。即,4个聚合前任务占执行顺序的前4位,4个聚合后任务占执行顺序的后4位。
需要说明的是,对于各个聚合前任务之间的执行顺序,在各聚合前任务之间没有任务顺序的情况下,本申请不作限定。在各聚合前任务之间存在任务顺序的情况下,按照存在的任务顺序生成各个聚合前任务之间的执行顺序。
在步骤502中,按照每一子任务的执行顺序,依次基于中间数据确定每一子任务对应的数据操作语句,并更新中间数据。
在本申请的一些实施例中,每一子任务的执行顺序用于确定各子任务执行的顺序,按照该顺序,依次基于上一子任务更新后的中间数据,确定各个子任务对应的操作语句,并再次更新中间数据。
例如,基于上述举例,若该第一任务组对应的各子任务的执行顺序为任务1.1、任务1.2、任务2.1、任务2.2、任务1.3、任务1.4、任务2.3、任务2.4,由于该第一任务组为优先级最高的任务组,因此,在确定任务1.1的数据操作语句时,对应的中间数据为该待处理数据,基于该中间数据可以确定该任务1.1对应的数据操作语句,并更新该中间数据;按照执行顺序,在确定任务1.2的数据操作语句时,基于任务1.1更新后的中间数据,确定该任务1.2对应的数据操作语句,并再次更新该中间数据;依此类推,直至确定任务2.4对应的数据操作语句。
在本申请的一些实施例中,可以通过以下步骤5021至步骤5023实现上述基于中间数据确定每一子任务对应的数据操作语句,并更新中间数据。
在步骤5021中,基于中间数据确定子任务需要处理的数据信息;数据信息包括以下至少之一:子任务对应的操作标识、中间数据的数据标识和中间数据中子任务的输入特征名。
在本申请的一些实施例中,在子任务为标记任务的情况下,数据信息包括子任务对应的操作标识。其中,该操作标识为该标记任务的唯一标识。例如,上述任务1.1、任务1.2、任务2.1和任务2.2均为标记任务。
在本申请的一些实施例中,在子任务为计算任务的情况下,该数据信息包括中间数据的数据标识和/或中间数据中子任务的输入特征名。其中,子任务对应的操作标识该中间数据的数据标识可以为中间数据的数据源地址,该数据源地址可以包括但不限于是中间数据对应的数据表ID;相应地,该输入特征名可以为中间数据对应的数据表中的列名称/行名称。例如,上述任务1.3、任务1.4、任务2.3、任务2.4和任务1至任务5均为计算任务。
在步骤5022中,根据数据信息和子任务对应的目标算子函数,确定子任务的输出特征名。
在步骤5023中,根据数据信息、目标算子函数和输出特征名生成子任务对应的数据操作语句,并利用输出特征名更新中间数据。
其中,基于上述举例,示例性的提供任务2.2更新后的中间数据为表2所示:
表2
在确定任务1.3对应的数据操作语句的过程中,需要基于上述表2所示的任务2.2更新后的中间数据,由于该任务1.3需要“统计每一月份店铺A的访问人次”,因此,基于上述表2所示的中间数据,可以得到任务1.3需要处理的数据信息包括该中间数据的数据标识“TABLE_A”和输入特征名“店铺A标识”,该任务1.3对应的目标算子函数为“COUNT”算子/函数,基于该数据标识、输入特征名和目标算子函数,确定子任务的输出特征名“Table_A_COUNT_of_店铺A标识_By_消费时间”,基于该数据标识“TABLE_A”、输入特征名“店铺A标识”、目标算子函数“COUNT”和输出特征名“Table_A_COUNT_of_店铺A标识_By_消费时间”生成子任务对应的数据操作语句,并更新该中间数据,得到表3所示的中间数据。
表3
在本申请的一些实施例中,在步骤5023之前,还包括:获取中间数据中的特征名集合;在特征名集合中不存在输出特征名的情况下,根据数据标识、输入特征名、子任务对应的目标算子函数和输出特征名生成子任务对应的数据操作语句,并利用输出特征名更新中间数据;在特征名集合中存在输出特征名的情况下,不生成子任务对应的数据操作语句。
例如,基于上述举例,若该第一任务组对应的各子任务的执行顺序为任务1.1、任务1.2、任务2.1、任务2.2、任务1.3、任务1.4、任务2.3、任务2.4,在确定任务1.2对应的数据操作语句后,可以得到更新后的中间数据为表4:
表4
在确定任务2.1对应的数据操作语句的过程中,会先确定任务2.1对应的输出特征名“店铺B标识”,获取该中间数据中的特征名集合为“消费时间,消费记录,店铺A标识,用户类别”,该特征名集合中不存在“店铺B标识”,则继续确定任务2.1对应的数据操作语句,并更新该中间数据,可以得到更新后的中间数据为表5:
表5
在确定任务2.2对应的数据操作语句的过程中,会先确定任务2.2对应的输出特征名“用户类别”,获取该中间数据中的特征名集合为“消费时间,消费记录,店铺A标识,用户类别,店铺B标识”,该特征名集合中存在“用户类别”,则不生成任务2.2对应的数据操作语句,也不更新该中间数据。即,任务1.3基于上述表5提供的任务2.1更新后的中间数据。可以看出,表5相对于表2和表3,省去了一个重复的“用户类别”,任务1.2和任务2.2同时复用一个数据操作语句,且对应一个输出特征名“用户类别”。
在本申请的一些实施例中,可以通过以下方法实现上述利用输出特征名更新中间数据:确定输出特征名的特征属性;将输出特征名作为中间数据的特征名添加至中间数据,并保存输出特征名与特征属性的对应关系;在中间数据中存在至少两个冲突特征名的情况下,基于每一冲突特征名对应的特征属性,确定至少两个冲突特征名中需要保留的特征名。
其中,可以根据该子任务与其他子任务之间的任务顺序,确定该子任务对应的输出特征名的特征属性。在该子任务在对应的任务顺序中不存在后续子任务的情况下,将该子任务对应的输出特征名的特征属性设置为保留属性;在该子任务在对应的任务顺序中存在后续子任务的情况下,将该子任务对应的输出特征名的特征属性设置为临时属性。
例如,基于上述举例,确定第一任务组中的任务1.3的数据操作语句的过程中,可以获取该任务1.3与其他任务之间的任务顺序,得到“任务1.1到任务1.3”的任务顺序,由于该任务1.3对应的任务顺序中不存在后续的子任务,因此,将该任务1.3对应的输出特征名的特征属性设置为保留属性;基于相同的判断逻辑,由于任务1.1对应的任务顺序中存在后续的子任务,因此,将该任务1.1对应的输出特征名的特征属性设置为临时属性。
在步骤503中,按照执行顺序排列每一子任务对应的数据操作语句,以得到任务组对应的操作语句集合。
在本申请的一些实施例中,可以按照各子任务对应的执行顺序,对各子任务对应的数据操作语句进行依次排序,得到该任务组对应的操作语句集合。
通过本申请实施例对于图5的上述示例性实施可知,本申请实施例按照聚合前任务、聚合任务和聚合后任务的顺序对该任务组中的多个子任务进行排序,可以在该任务组进行分布式运行的过程中,由于将聚合任务都设置在一起,且将聚合前任务设置在聚合任务之前,将聚合后任务均设置在聚合任务之后,实现了运行该任务组对应的操作语句集合的过程中,只进行一次Shuffle操作的效果,降低了数据传输成本,提升了计算效率;另外,本申请实施例在生成子任务对应的数据操作语句的过程中,会根据该子任务对应的输出特征名在中间数据中查询是否有重复的特征名,进而避免了重复数据操作语句的生成,进一步提升了特征计算效率。
参见图6,图6是本申请实施例提供的特征提取方法的一个可选的流程示意图,基于上述任一实施例,以图3为例,图3示出的步骤303可以通过步骤601至步骤603实现,将结合图6示出的步骤进行说明。
在步骤601中,将待处理数据确定为中间数据。
在步骤602中,按照特征提取流程中多个数据操作语句的顺序,依次利用每一数据操作语句对中间数据进行处理,以更新中间数据,直至各数据操作语句执行完成。
在本申请的一些实施例中,该特征提取流程包括按顺序排列的多个数据操作语句,在依次执行每一数据操作语句的过程中,可以通过该数据操作语句对上一数据操作语句输出的中间数据进行更新,得到当前数据操作语句输出的中间数据。其中,第一个数据操作语句更新的中间数据为该待处理数据,最后一个数据操作语句输出的中间数据包括该特征数据。
在本申请的一些实施例中,可以通过步骤6021至步骤6023实现上述利用每一数据操作语句对中间数据进行处理,以更新中间数据。
在步骤6021中,获取数据操作语句中的输入特征名和目标算子函数。
在步骤6022中,将中间数据中的输入特征名对应的数据中输入至目标算子函数中,得到目标算子函数的输出数据。
在本申请的一些实施例中,可以通过以下方法实现上述步骤6022:获取中间数据中的输入特征名对应的数据的数据量;在数据量超过预设阈值的情况下,将输入特征名对应的数据划分为多个子数据组;将每一子数据组分配至对应的处理节点;处理节点用于将子数据组输入至目标算子函数中,得到子数据组对应的输出子数据组;聚合每一处理节点得到的输出子数据组,得到目标算子函数的输出数据。
在步骤6023中,将输出数据作为输出特征名对应的数据,以更新中间数据。
例如,基于上述举例,在利用任务1.1和任务1.2对待处理数据进行处理之后,可以得到任务1.2更新后的中间数据为表6所示。
表6
其中,任务1.1已经根据对应的数据操作语句,在中间数据中的“店铺A标识”特征名下更新对应的输出数据;任务1.2已经根据对应的数据操作语句,在中间数据中的“用户类别”特征名下更新对应的输出数据。
在步骤603中,根据各数据操作语句执行完成后得到的中间数据,确定特征数据。
在本申请的一些实施例中,各数据操作语句中最后一个数据操作语句输出的中间数据为各数据操作语句执行完成后得到的中间数据。其中,特征数据可以为该最后一个数据操作语句输出的中间数据中一个或多个特征名对应的数据。
通过本申请实施例对于图6的上述示例性实施可知,本申请实施例通过该特征提取流程,实现了对该待处理数据的特征提取任务,提高了特征提取的效率,也避免了重复计算和数据倾斜的问题。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。
为了实现自动化的特征提取任务,且需要适配常用的大数据计算引擎SPARK,需要基于SparkSQL设计一套特征算子的框架,用于算子的拓展和管理。SparkSQL原生的算子仅支持简单的MAX,MIN等基本聚合逻辑,不太适用于复杂的建模环境。通过对大数据计算过程的分析,和合理的抽象,设计良好的算子设计可以很好的兼容拓展性与易用性。
相关技术中,(1)可以通过FeatureTool特征抽取提供的单机的算子实现机制,利用Numpy计算库在单机上实现特征提取任务。同时为了解决单机计算依赖的问题,根据特征名称生成字典来判断计算依赖问题。另外通过多线程编程加速单机上的计算时间;(2)还可以通过TransmogriAi框架提供的分布式的算子实现特征提取任务,通过SPARKRDD的MapReduce接口完成算子定义。
申请人经过研究发现,相关技术中存在以下技术缺陷:(1)对于FeatureTools提供的算子设计方案,因为仅在单机上实现,不能应用于分布式的计算框架,如SPARK。首先,Numpy计算库与SPARK算子库不兼容;此外,单机的数值计算方式与分布式计算逻辑迥异。在分布式计算下,遵循着先在各个单机完成映射处理(Map),再通过网络通信进行数据分发汇总完成后续的聚合操作(Reduce)。在单机上不需要考虑这些,所以当面对百亿甚至千亿级数据时,无法通过单机计算完成任务;(2)TransmogriAi的特征制作框架,简单提供了一些基础操作,与SparkSQL原生的算子库几乎重叠。对于复杂的逻辑及多次聚合的高级抽象的算子无力完成设计,需要用户通过SPARK本身去完成算子的设计和编写,不适用于固定化的工程流程。
基于上述技术问题,本申请实施例提供了一种特征提取方法,应用在自动特征抽取工具,该自动特征抽取工具通过提供算子的接口,一方面灵活的实现比较复杂的算子,另外一方面将自动特征工具提供给用户时,可以让用户自己定义编写。
基于现代分布式计算逻辑介绍算子设计:现代分布式计算遵循Map-Reduce的过程,其原因为在单机难以完成全部计算逻辑,所以需要将任务切分,交给多个机器进行计算(Map)。但是很多计算逻辑需要汇总所有的计算逻辑,再进行计算,这里就是Reduce阶段。从计算开销来说,Map结束将数据排序,分发至指定的机器完成Reduce,即Shuffle操作,是成本非常高。申请人提供的特征提取方法,对于一份数据,尽量只进行一次Shuffle的工作。
同时在SparkSQL下,严格遵循创建列聚合的过程。所以,整个算子设计框架根据Shuffle清晰的分为三层:Shuffle前层、Shuffle层和Shuffle后层;对应上述实施例中的聚合前任务,聚合任务和聚合后任务。
请参阅图7,图7为本申请实施例提供的计算流程生成方法的示意图,其中,该计算流程对应上述实施例中的特征提取流程。在该图7中,每一层按照可以包括以下三个步骤:(1)生成可冲突的特征的列名;(2)生成SparkSQL表达式;(3)记录生成特征列名传递给下一层。每一层中,上述三个部分步骤重复多次,最终返回全部生成的SparkSQL表达式。其中,SparkSQL表达式对应上述实施例中的数据操作语句。
下面以实现最大时序一阶差分特征和比率特征为例子,讲述具体流程。
一、对于最大一阶差分特征的特征提取流程。
以用户交易金额的一阶差分特征为例,一阶差分的计算是当前交易的金额减去上一次交易的金额,这个特征可以表示用户交易的稳定性。
(1)在Shuffle前层,这一层主要计算用户的一阶差分。其原理是使用SparkSQL的Lag函数完成组合。对待处理数据,如数据表中的用户交易金额列,例如money,先使用SparkSQL的Lag函数生成每个用户下的交易金额的偏移,再和money原值进行相减,即X-Lag(X)。后续生成列名:Lag_of_Money,将列名加入存储List。其中,该生成列名对应上述实施例中的输出特征名。
(2)在Shuffle层,这一层主要生成最大值一阶差分的聚合表达式。根据前一层保存的生成列名,生成最大聚合表达式MAX(Lag_of_Money)。生成新的特征名MAX_Lag_of_Money,将列名加入存储List,传递至下一层进行处理。
(3)在Shuffle后层,不进行处理,不返回对应的SparkSQL表达式。
二、对于计数比率特征的特征提取流程。
计数比率特征一般用于计算有特定标签下的用户占整体交易的占比。以风险A类型用户RISK_A字段在商户MCH下交易占比为例。比率计算的逻辑主要为特定类型的统计/总数。所以需要计算两个计数值
(1)在Shuffle前层,主要添加后续计算的列。在这里,添加RISK_A,MCH两个字段。传递至Shuffle层。
(2)在Shuffle层,(a)生成RISK_A字段的COUNT聚合表达式,生成列名,Cnt_of_RISK_A,加入存储List,传递至下一个阶段。(b)生成MCH字段的COUNT聚合表达式,生成列名,Cnt_of_MCH,加入存储List,传递至下一个阶段。
(3)在Shuffle后层,根据在Shuffle层生成的两个字段:Cnt_of_RISK_A,Cnt_of_MCH,计算两个占比:Cnt_of_RISK_A/Cnt_of_MCH,生成列名Cnt_Ratio_of_RISK_A。
根据上述实施例提供的特征提取方法,具有以下优势:充分复用了SparkSQL优化后的算子能力,通过清晰的分层,在每一层使用合适的SparkSQL操作;通过多层的处理,提升了算子抽象能力,突破了SparkSQL本身能力的限制。例如比率特征,这是一个抽象概念,无法通过单一SparkSQL算子完成,通过多层处理和列名传递,可以在三层内完成整个抽象逻辑的设计。
基于上述实施例提供的特征提取方法,本申请在实际实现的过程中,还可以复用数据表中的计算列。以计算比率特征为例,在计算比率特征的过程中,会计算相关列的COUNT特征,但是COUNT本身是一个算子,同样会被执行。为了复用计算列,在生成列名时,提出了可冲突的列名生成方式,即生成的特征列名可以冲突。生成列名为:“表ID+实际执行算子ID+数据列名+聚合键”。
请参阅图8所示的冲突列名的处理示意图,以COUNT算子和Cnt_Raito算子为例。在计算COUNT聚合表达式时,都会生成Cnt_of_RISK_A的聚合列名。此时会存在一个全局的列管理器,判断这个列是否已经生成完成。若没有生成,则允许进行聚合表达式;若已经存在相同的聚合表达式,则不进行处理。
基于上述实施例提供的特征提取方法,本申请在实际实现的过程中,还可以识别多余的计算列。以计算比率特征为例,生成了三个计算列,包括Cnt_of_RIKS_A,Cnt_of_MCH,Cnt_Ratio_of_RISK_A,仅有最后的一个列是需要的。
为了解决这个问题,本申请提出了生成列的属性管理。对于每一个生成的表达式,除了本身的计算表达式外,还包含可冲突的生成列名,包含生成列的属性,是否需要保留或是辅助列。
例如上述的Cnt_of_RIKS_A,Cnt_of_MCH即为辅助列,赋予AUX字段标识。Cnt_Ratio_of_RISK_A字段,给与保留标识,即RES。当有多列冲突,且保留字段不相同时,保留优先级最高的字段,例如COUNT算子中Cnt_of_RIKS_A为RES类型,Cnt_Ratio算子中的Cnt_of_RIKS_A为AUX类型,此时保留RES类型。
基于上述实施例提供的特征提取方法,本申请在实际实现的过程中,还可以解决数据倾斜的问题。数据倾斜在海量数据中是一个棘手的问题。常见的解决手段是将倾斜数据分区,再将其聚合计算。对于一些算子而言,不能简单对分区计算后的结果再进行。为了解决这个问题,对于框架的三个阶段,Shuffle前层,Shuffle层,Shuffle后层,每层增加一个分布式的实现。例如平均算子,将平均算子拆解为求和,求次数,和/次数三步,在Shuffle层时,执行“求和”,“求次数”,在Shuffle层执行“和/次数”。
上述实施例提供的特征提取方法可以基于基础的算子函数实现复杂的特征提取流程。同时避免了数据列重复计算和数据倾斜的问题,极大得提升了计算效率。
下面继续说明本申请实施例提供的特征提取装置555的实施为软件模块的示例性结构,在本申请的一些实施例中,如图2所示,存储在存储器550的特征提取装置555中的软件模块可以包括:
获取模块5551,用于在数据库中获取待处理数据;
确定模块5552,用于根据待处理数据对应的表达式确定特征提取流程;表达式用于将待处理数据转换为特征数据;特征提取流程包括有序排列的多个数据操作语句;每一数据操作语句由数据库提供的算子函数实现;
处理模块5553,用于根据多个数据操作语句对待处理数据进行处理,得到特征数据。
在本申请的一些实施例中,所述确定模块5552还用于:获取待处理数据对应的表达式,基于表达式确定多个数据处理任务和每一数据处理任务的优先级;将处于相同优先级的数据处理任务进行合并,得到至少一个任务组;每一任务组包括至少两个子任务;根据待处理数据和每一任务组的优先级,确定每一任务组对应的操作语句集合;操作语句集合包括任务组中至少一个子任务对应的数据操作语句;根据每一任务组对应的优先级和操作语句集合,确定特征提取流程。
在本申请的一些实施例中,所述确定模块5552还用于:将待处理数据确定为中间数据;按照优先级顺序,依次根据中间数据确定每一任务组对应的操作语句集合;操作语句集合用于对中间数据进行处理,以更新中间数据。
在本申请的一些实施例中,所述确定模块5552还用于:基于任务组中的每一子任务的任务类型,确定每一子任务的执行顺序;按照每一子任务的执行顺序,依次基于中间数据确定每一子任务对应的数据操作语句,并更新中间数据;按照执行顺序排列每一子任务对应的数据操作语句,以得到任务组对应的操作语句集合。
在本申请的一些实施例中,所述确定模块5552还用于:获取任务组中的每一子任务的任务类型;根据任务类型对每一子任务进行分类,得到至少一个聚合任务和至少一个非聚合任务;基于每一聚合任务与每一非聚合任务之间的任务顺序,对每一聚合任务和每一非聚合任务进行排序,以得到每一子任务的执行顺序。
在本申请的一些实施例中,所述确定模块5552还用于:在非聚合任务位于至少一个聚合任务之前的情况下,将非聚合任务确定为聚合前任务;在非聚合任务位于至少一个聚合任务之后的情况下,将非聚合任务确定为聚合后任务;按照聚合前任务、聚合任务和聚合后任务的顺序对每一聚合任务和每一非聚合任务进行排序,以得到每一子任务的执行顺序。
在本申请的一些实施例中,所述确定模块5552还用于:基于中间数据确定子任务需要处理的数据信息;数据信息包括以下至少之一:子任务对应的操作标识、中间数据的数据标识和中间数据中子任务的输入特征名;根据数据信息和子任务对应的目标算子函数,确定子任务的输出特征名;根据数据信息、目标算子函数和输出特征名生成子任务对应的数据操作语句,并利用输出特征名更新中间数据。
在本申请的一些实施例中,在根据数据标识、输入特征名、子任务对应的目标算子函数和输出特征名生成子任务对应的数据操作语句,并利用输出特征名更新中间数据之前,所述确定模块5552还用于:获取中间数据中的特征名集合;在特征名集合中不存在输出特征名的情况下,根据数据标识、输入特征名、子任务对应的目标算子函数和输出特征名生成子任务对应的数据操作语句,并利用输出特征名更新中间数据;在特征名集合中存在输出特征名的情况下,不生成子任务对应的数据操作语句。
在本申请的一些实施例中,所述确定模块5552还用于:确定输出特征名的特征属性;将输出特征名作为中间数据的特征名添加至中间数据,并保存输出特征名与特征属性的对应关系;在中间数据中存在至少两个冲突特征名的情况下,基于每一冲突特征名对应的特征属性,确定至少两个冲突特征名中需要保留的特征名。
在本申请的一些实施例中,所述处理模块5553还用于:将待处理数据确定为中间数据;按照特征提取流程中多个数据操作语句的顺序,依次利用每一数据操作语句对中间数据进行处理,以更新中间数据,直至各数据操作语句执行完成;根据各数据操作语句执行完成后得到的中间数据,确定特征数据。
在本申请的一些实施例中,所述处理模块5553还用于:获取数据操作语句中的输入特征名和目标算子函数;将中间数据中的输入特征名对应的数据中输入至目标算子函数中,得到目标算子函数的输出数据;将输出数据作为输出特征名对应的数据,以更新中间数据。
在本申请的一些实施例中,所述处理模块5553还用于:获取中间数据中的输入特征名对应的数据的数据量;在数据量超过预设阈值的情况下,将输入特征名对应的数据划分为多个子数据组;将每一子数据组分配至对应的处理节点;处理节点用于将子数据组输入至目标算子函数中,得到子数据组对应的输出子数据组;聚合每一处理节点得到的输出子数据组,得到目标算子函数的输出数据。
本公开实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的特征提取方法。
本公开实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的特征提取方法,例如,如图3至图6示出的方法。
在本申请的一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在本申请的一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
综上所述,通过本申请实施例能够实现以下技术效果:
(1)本申请实施例通过根据待处理数据获取对应的特征提取流程,并根据该特征提取流程中有序排列的多个数据操作语句,对该待处理数据进行处理,得到特征数据。因此,本申请实施例提供的特征提取方法可以基于计算引擎提供的算子函数,实现待处理数据到特征数据的之间的转换过程,兼容性较高,同时,本申请实施例提供的特征提取方法通过结合有序排列的多个数据操作语句,可以基于该原始算子库,实现复杂特征的提取,突破了计算引擎提供的原始算子库的限制。
(2)本申请实施例基于用于将该待处理数据转换至特征数据的表达式,确定特征提取流程对应的多个数据处理任务和每一数据处理任务的优先级,并依据该优先级和每一数据处理任务对应的数据操作语句,得到了该待处理数据对应的特征提取流程,可以提升特征提取流程的合理性,进而提升本申请中特征提取的效率;同时,通过将同一优先级的数据处理任务合并为一个任务组,通过依次确定各任务组对应的操作语句集合,进而得到整体特征提取流程,可以进一步提升特征提取流程中多个数据操作语句的排序的合理性,进而再次提升本申请中特征提取的效率。
(3)本申请实施例按照聚合前任务、聚合任务和聚合后任务的顺序对该任务组中的多个子任务进行排序,可以在该任务组进行分布式运行的过程中,由于将聚合任务都设置在一起,且将聚合前任务设置在聚合任务之前,将聚合后任务均设置在聚合任务之后,实现了运行该任务组对应的操作语句集合的过程中,只进行一次Shuffle操作的效果,降低了数据传输成本,提升了计算效率;另外,本申请实施例在生成子任务对应的数据操作语句的过程中,会根据该子任务对应的输出特征名在中间数据中查询是否有重复的特征名,进而避免了重复数据操作语句的生成,进一步提升了特征计算效率。
(4)本申请实施例通过该特征提取流程,实现了对该待处理数据的特征提取任务,提高了特征提取的效率,也避免了重复计算和数据倾斜的问题。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。
Claims (11)
1.一种特征提取方法,其特征在于,包括:
在数据库中获取待处理数据;
获取所述待处理数据对应的表达式,基于所述表达式确定多个数据处理任务和每一所述数据处理任务的优先级;所述表达式用于将所述待处理数据转换为特征数据;
将处于相同优先级的数据处理任务进行合并,得到至少一个任务组;每一所述任务组包括至少两个子任务;
将所述待处理数据确定为中间数据;按照优先级顺序,依次根据所述中间数据确定每一所述任务组对应的操作语句集合;所述操作语句集合包括所述任务组中至少一个所述子任务对应的数据操作语句;
根据每一所述任务组对应的优先级和操作语句集合,确定所述特征提取流程;所述特征提取流程包括有序排列的多个数据操作语句;每一所述数据操作语句由所述数据库对应的计算引擎提供的算子函数实现;
根据所述多个数据操作语句对所述待处理数据进行处理,得到所述特征数据;
所述根据所述中间数据确定每一所述任务组对应的操作语句集合,包括:获取所述任务组中的每一所述子任务的任务类型;根据任务类型对每一所述子任务进行分类,得到至少一个聚合任务和至少一个非聚合任务;基于每一所述聚合任务与每一所述非聚合任务之间的任务顺序,对每一所述聚合任务和每一所述非聚合任务进行排序,以得到每一所述子任务的执行顺序;按照每一所述子任务的执行顺序,依次基于所述中间数据确定每一所述子任务对应的数据操作语句,并更新所述中间数据;按照所述执行顺序排列每一所述子任务对应的数据操作语句,以得到所述任务组对应的操作语句集合。
2.根据权利要求1所述的方法,其特征在于,所述基于每一所述聚合任务与每一所述非聚合任务之间的任务顺序,对每一所述聚合任务和每一所述非聚合任务进行排序,以得到每一所述子任务的执行顺序,包括:
在所述非聚合任务位于至少一个所述聚合任务之前的情况下,将所述非聚合任务确定为聚合前任务;
在所述非聚合任务位于至少一个所述聚合任务之后的情况下,将所述非聚合任务确定为聚合后任务;
按照聚合前任务、聚合任务和聚合后任务的顺序对每一所述聚合任务和每一所述非聚合任务进行排序,以得到每一所述子任务的执行顺序。
3.根据权利要求1所述的方法,其特征在于,所述基于所述中间数据确定每一所述子任务对应的数据操作语句,并更新所述中间数据,包括:
基于所述中间数据确定所述子任务需要处理的数据信息;所述数据信息包括以下至少之一:所述子任务对应的操作标识、所述中间数据的数据标识和所述中间数据中所述子任务的输入特征名;
根据所述数据信息和所述子任务对应的目标算子函数,确定所述子任务的输出特征名;
根据所述数据信息、所述目标算子函数和所述输出特征名生成所述子任务对应的数据操作语句,并利用所述输出特征名更新所述中间数据。
4.根据权利要求3所述的方法,其特征在于,在根据所述数据信息、所述目标算子函数和所述输出特征名生成所述子任务对应的数据操作语句,并利用所述输出特征名更新所述中间数据之前,所述方法还包括:
获取所述中间数据中的特征名集合;
在所述特征名集合中不存在所述输出特征名的情况下,根据所述数据标识、所述输入特征名、所述子任务对应的目标算子函数和所述输出特征名生成所述子任务对应的数据操作语句,并利用所述输出特征名更新所述中间数据;
在所述特征名集合中存在所述输出特征名的情况下,不生成所述子任务对应的数据操作语句。
5.根据权利要求3或4所述的方法,其特征在于,所述利用所述输出特征名更新所述中间数据,包括:
确定所述输出特征名的特征属性;
将所述输出特征名作为所述中间数据的特征名添加至所述中间数据,并保存所述输出特征名与所述特征属性的对应关系;
在所述中间数据中存在至少两个冲突特征名的情况下,基于每一所述冲突特征名对应的特征属性,确定所述至少两个冲突特征名中需要保留的特征名。
6.根据权利要求5所述的方法,其特征在于,所述根据所述多个数据操作语句对所述待处理数据进行处理,得到所述特征数据,包括:
将所述待处理数据确定为中间数据;
按照所述特征提取流程中所述多个数据操作语句的顺序,依次利用每一所述数据操作语句对所述中间数据进行处理,以更新所述中间数据,直至各所述数据操作语句执行完成;
根据各所述数据操作语句执行完成后得到的中间数据,确定所述特征数据。
7.根据权利要求6所述的方法,其特征在于,所述利用每一所述数据操作语句对所述中间数据进行处理,以更新所述中间数据,包括:
获取所述数据操作语句中的所述输入特征名和所述目标算子函数;
将所述中间数据中的所述输入特征名对应的数据中输入至所述目标算子函数中,得到所述目标算子函数的输出数据;
将所述输出数据作为所述输出特征名对应的数据,以更新所述中间数据。
8.根据权利要求7所述的方法,其特征在于,所述将所述中间数据中的所述输入特征名对应的数据中输入至所述目标算子函数中,得到所述目标算子函数的输出数据,包括:
获取所述中间数据中的所述输入特征名对应的数据的数据量;
在所述数据量超过预设阈值的情况下,将所述输入特征名对应的数据划分为多个子数据组;
将每一所述子数据组分配至对应的处理节点;所述处理节点用于将所述子数据组输入至所述目标算子函数中,得到所述子数据组对应的输出子数据组;
聚合每一所述处理节点得到的输出子数据组,得到所述目标算子函数的输出数据。
9.一种特征提取装置,其特征在于,包括:
获取模块,用于在数据库中获取待处理数据;
确定模块,用于获取所述待处理数据对应的表达式,基于所述表达式确定多个数据处理任务和每一所述数据处理任务的优先级;所述表达式用于将所述待处理数据转换为特征数据;将处于相同优先级的数据处理任务进行合并,得到至少一个任务组;每一所述任务组包括至少两个子任务;将所述待处理数据确定为中间数据;按照优先级顺序,依次根据所述中间数据确定每一所述任务组对应的操作语句集合;所述操作语句集合包括所述任务组中至少一个所述子任务对应的数据操作语句;根据每一所述任务组对应的优先级和操作语句集合,确定所述特征提取流程;所述特征提取流程包括有序排列的多个数据操作语句;每一所述数据操作语句由所述数据库对应的计算引擎提供的算子函数实现;
处理模块,用于根据所述多个数据操作语句对所述待处理数据进行处理,得到所述特征数据;
所述确定模块,还用于获取所述任务组中的每一所述子任务的任务类型;根据任务类型对每一所述子任务进行分类,得到至少一个聚合任务和至少一个非聚合任务;基于每一所述聚合任务与每一所述非聚合任务之间的任务顺序,对每一所述聚合任务和每一所述非聚合任务进行排序,以得到每一所述子任务的执行顺序;按照每一所述子任务的执行顺序,依次基于所述中间数据确定每一所述子任务对应的数据操作语句,并更新所述中间数据;按照所述执行顺序排列每一所述子任务对应的数据操作语句,以得到所述任务组对应的操作语句集合。
10.一种特征提取设备,其特征在于,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至8任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,存储有可执行指令,用于被处理器执行时,实现权利要求1至8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110200343.2A CN112559603B (zh) | 2021-02-23 | 2021-02-23 | 特征提取方法、装置、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110200343.2A CN112559603B (zh) | 2021-02-23 | 2021-02-23 | 特征提取方法、装置、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112559603A CN112559603A (zh) | 2021-03-26 |
CN112559603B true CN112559603B (zh) | 2021-05-18 |
Family
ID=75034569
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110200343.2A Active CN112559603B (zh) | 2021-02-23 | 2021-02-23 | 特征提取方法、装置、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112559603B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113722337B (zh) * | 2021-11-03 | 2022-06-10 | 深圳市信润富联数字科技有限公司 | 业务数据确定方法、装置、设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102306200B (zh) * | 2011-09-22 | 2013-03-27 | 用友软件股份有限公司 | 增量数据操作语句的并发应用装置和方法 |
CN109657803B (zh) * | 2018-03-23 | 2020-04-03 | 新华三大数据技术有限公司 | 机器学习模型的构建 |
CN109656951A (zh) * | 2018-12-18 | 2019-04-19 | 北京华电天仁电力控制技术有限公司 | 基于表达式查询数据的方法及查询系统 |
CN111694811B (zh) * | 2020-04-01 | 2022-08-30 | 新华三大数据技术有限公司 | 一种批量数据入库方法及装置 |
-
2021
- 2021-02-23 CN CN202110200343.2A patent/CN112559603B/zh active Active
Non-Patent Citations (1)
Title |
---|
sparksql累加求和sql语句_Spark之SparkSQL详解;weixin_39727005;《https://blog.csdn.net/weixin_39727005/article/details/111577316》;20201211;1—5 * |
Also Published As
Publication number | Publication date |
---|---|
CN112559603A (zh) | 2021-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11281596B2 (en) | Mapping attributes of keyed entities | |
Karnitis et al. | Migration of relational database to document-oriented database: Structure denormalization and data transformation | |
US9633052B2 (en) | System and method for decomposition of code generation into separate physical units though execution units | |
US9081837B2 (en) | Scoped database connections | |
US20180101371A1 (en) | Deployment manager | |
US8677366B2 (en) | Systems and methods for processing hierarchical data in a map-reduce framework | |
US20150081741A1 (en) | Incremental graph view maintenance | |
US10206770B2 (en) | Load plan generation | |
US9507838B2 (en) | Use of projector and selector component types for ETL map design | |
US10394805B2 (en) | Database management for mobile devices | |
Verma et al. | Big Data representation for grade analysis through Hadoop framework | |
Silva et al. | Integrating big data into the computing curricula | |
US20210191921A1 (en) | Method, apparatus, device and storage medium for data aggregation | |
US20130096967A1 (en) | Optimizer | |
US9773327B2 (en) | Modified flow graph depiction | |
CN112559603B (zh) | 特征提取方法、装置、设备及计算机可读存储介质 | |
CN110222047A (zh) | 一种动态表单生成方法和装置 | |
CN107766519B (zh) | 一种可视化配置数据结构的方法 | |
KR20230171986A (ko) | 동적 그래픽 컨테이너들 | |
CN115705375A (zh) | 树形组件渲染方法、装置 | |
CN112288586A (zh) | 基于HBase的保险行业数据整合方法及相关设备 | |
CN108595552A (zh) | 数据立方体发布方法、装置、电子设备和存储介质 | |
US20150120604A1 (en) | Virtual data write-back for business intelligence reporting | |
US20200097585A1 (en) | Optimization of data processing job execution using hash trees | |
CN111191057A (zh) | 一种自定义检索方法、装置、电子设备及其存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40041342 Country of ref document: HK |