基于特征计算图的可视化机器学习特征提取系统及方法
文献发布时间:2023-06-19 11:32:36
技术领域
本发明属于机器学习的特征工程领域,具体涉及一种基于特征计算图的可视化机器学习特征提取系统及方法。
背景技术
特征工程是机器学习任务中的一项重要组成部分,通过这一过程,可以将原始数据转换成可以直接输入机器学习模型的特征数据,即所谓的特征提取。特征工程主要涉及到使用数据变换函数对数据进行转换、聚合等操作,从而生成新的特征。对数据进行变换后形成的新特征在高维空间中的分布具有更好的优化特性,因此相较于原始特征,使用这些变换后的特征有利于训练出准确度更高的模型。
数据变换是进行特征提取的关键步骤,这一过程将输入的一列或者多列特征按照一定的计算方法生成一列或者多列新的特征,因此数据变换操作也可以被称为特征变换算子。通常来讲,特征变换算子按照参数规则可以被分为两个大类。第一种是元参数类,也就是说初始时就需要设置的值,比如对数变换时的底数,二值化变换时的阈值等等。第二种是与具体数据集合相关的统计参数,比如归一化变换时的最值、均值,独热编码时的映射关系表等等。其中对于只有元参数类的算子来说,只需一次遍历即可得到变换数据,而对于拥有统计参数的算子来说,第一次遍历数据只能计算出统计参数,需要第二次遍历才能完成数据变换,一般将第一次遍历称为fit,第二次遍历称为transform。
在特征工程处理中,数据工程师编写代码或者调用外部库来实现特征变换算子,然后再利用这些算子编排代码使得原始数据经过层层处理以产生符合自己预期的新特征。但是上述过程一般需要精通代码编写的数据处理专业人员来进行,并且代码流程繁琐,降低了生产效率。为了解决这些困难,本方法提出一种基于特征计算图的可视化特征提取方案,通过在界面上拖动控件构造特征提取计算图,并在后端处理中对计算图进行深度优先搜索来提取特征。该方法让特征提取流程更为直观,易于操作。
发明内容
本方法的目的在于通过可视化的方式,引导用户搭建特征提取流程计算图,解决以往需要编写代码处理数据的问题。
本发明一种基于特征计算图的可视化机器学习特征提取系统,包括可视化前端界面和数据处理模块。可视化前端界面中包含了用于搭建特征计算图的三种节点控件,分别为Input节点、算子节点和Output节点。数据处理模块用于特征计算图对用户数据集进行处理。每个Input 节点对应用户数据集的一列元素。算子节点具有多种不同的算法类型。不同的算法类型的算子节点包含了对应的特征变换函数及其参数,用以对输入的数据进行变换。
作为优选,按算法类型进行分类,所述的算子节点包括数据缩放节点、离散化节点、向量化节点、函数变换节点和降维节点。所述的数据缩放节点根据预设的参数对输入的数据进行标准化或归一化运算。离散化节点根据预设的参数对输入的数据进行等距分桶、等频分桶或二值化处理;其中,等距分桶和等频分桶需要设置的参数为分桶数量,二值化需要设置的参数为阈值,将输入数据中大于或等于阈值的部分将被统一变换为1,小于阈值的部分将被统一变换为0。向量化节点根据预设的参数对输入的数据进行独热编码或词向量变换。其中,词向量变换对应有词向量库。函数变换节点根据预设的参数对输入的数据进行对数变换和指数变换,其中对数变换需要设置的参数为底数;指数变换需要设置的参数为指数。降维节点通过主成分分析法或tSNE对输入的数据进行降维;其中,主成分分析法需要设置的参数为主成分数;tSNE 需要设置的参数为目标维度。
作为优选,在初始的可视化前端界面中,呈现出由列名称构成的多个Input节点,以及一个Output节点,且可视化前端界面上呈现算子工具箱;算子工具箱通过分类展示的方式布置有各个算子节点。
作为优选,所述Input节点的数据类型为数值型或类别型;所述算子节点的输入数据类型与Input节点的数据类型相同;
作为优选,特征计算图由Input节点、一个或多个算子节点和Output节点拼接得到。各 Input节点通过一个或多个算子节点连接到Output节点。每个Input节点对应用户数据集中一列数据。
作为优选,所述的用户数据集中具有一个自动生成的ID列作为行标识。
作为优选,Input节点具有一个或多个输出端,用以连接到后续的一个或多个节点。Output 节点具有一个或多个输入端。算子节点具有一个或多个输入端,以及一个或多个输出端。算子节点的输入端连接到对应的Input节点或前一级的算子节点,输出端连接到后一级算子节点或 Output节点。
利用该基于特征计算图的可视化机器学习特征提取系统进行数据集特征解析的方法如下:
步骤一、使用者根据特征提取目标,利用可视化前端界面通过拖动不同节点的方式搭建特征计算图。各Input节点通过一个或多个算子节点连接到同一个Output节点;各算子节点的类型与用户数据集需要被提取的特征对应,由使用者根据需要进行选择。用户数据集在输入各 Input节点前添加一个ID列;Input节点的数量与用户数据集的列数对应;每个Input节点输入用户数据集的ID列和对应的一列元素。对于具有多个子节点的算子节点或Output节点,其输入数据为各子节点输出数据按列合并后得到的数据。子节点表示当前的Output节点或算子节点前一级的各算子节点或Input节点。
步骤二、数据处理模块对用户数据集采用图深度优先搜索方法从Output节点向前逐个访问节点进行计算,具体过程如下:
2-1.从Output节点开始,逐级向前调用子节点的fit方法,直至各Input节点均被调用fit 方法;fit方法表示计算节点的输入数据对应的统计量的过程。执行fit方法时将调用子节点的 transform方法。transform方法表示执行节点自身对应的数据变换的过程。
2-2.从Output节点开始,逐级向前调用子节点的transform方法,使得Output节点输出经过特征提取后的结果数据集。
作为优选,特征计算图构造完成时以及每个节点完成fit方法时,均构造一个json对象。各json对象合并形成总的json文件。在步骤二执行后,若需要对新的用户数据集进行特征提取时,则利用json文件直接完成各节点的fit方法部分,仅进行transform方法。
本发明的有益效果如下:
1、本发明通过提供用于搭建特征计算图的三个节点控件的方式,使得数据处理人员能够便捷快速地根据特征提取的需要搭建与数据变换过程对应的特征计算图,并利用数据处理模块自动读取特征计算图,对用户数据集进行特征提取,让数据处理人员从代码编写中解放出来,专注于数据的探索。
2、本发明降低了特征工程处理的门槛,让非专业人员能够更轻松地参与到特征提取项目中来。
3、本发明提供了可视化的特征工程方案,让数据流走向更为直观,在调试的过程中,修改特征计算图10分方便,提高了生产效率。
附图说明
图1为本发明中使用的三种类型的节点及其输入输出端示意图;
图2为本发明搭建特征计算图的可视化界面示意图;
图3为一种典型的特征计算图结构及其遍历过程;
图4为本发明针对特征计算图进行特征计算的流程图。
具体实施方式
下面结合附图对本发明作进一步说明。
如图1、2和3所示,一种基于特征计算图的可视化机器学习特征提取系统,包括可视化前端界面和数据处理模块。可视化前端界面中包含了三种类型的节点控件,分别为Input节点、算子节点和Output节点,用于供用户通过拖动不同节点的方式搭建特征计算图。数据处理模块用于根据用户搭建的特征计算图对用户数据集进行处理。特征计算图由Input节点、一个或多个算子节点和Output节点拼接得到。Input节点通过一个或多个算子节点连接到Output节点。各算子节点以串联或并联或串并联组合的方式布置在Input节点与Output节点之间。Input节点用于输入用户数据集。用户数据集是用户需要处理的结构化数据,且由程序自动生成一个ID 列作为行标识,用于为列拆分后的合并过程提供标识。
在特征计算图中,Input节点代表结构化数据表的列,有一个或多个输出端,表示能够连接到后续的一个或多个节点,这类似于在传统的数据处理方法中,重复利用某一列来生成特征。算子节点代表特征变换函数,有一个或多个输入端,以及一个或多个输出端,其中多端输入有两种语义,如果特征变换函数本身只能接受单值输入,那么多端输入表示对每列输入值都应用相同的函数,其输出是一个向量类型的值,如果特征变换函数可以接受多值输入,那么多端输入表示的是一种聚合变换操作,其输出可以是向量或者标量。算子节点的输出端和Input节点类似,可以连接到一个或多个后续节点,使得输出数据能够被重复利用。Output节点是整个特征计算图的终结节点,连接到Output节点的所有其他节点生成的数据将在这里被组合成能够直接输入机器学习算法的特征数据。
如图2所示,可视化前端界面上呈现出由列名称构成的多个Input节点,以及最终的Output 节点,界面右边呈现的是由各种特征变换算子构成的算子工具箱,为了方便查找,采用分类展示的方式布置。用户从算子工具箱中选取合适的算子用于对数据进行变换,最终得到一个特征计算图,也就是特征计算图。
每个Input节点对应用户数据集的一列元素,用列名称标识,构建对象时需要输入列名称,通过一组Input节点可以完全表示出用户数据集。在连接规则上,Input节点只有输出端,可以同时连接到多个后续的算子节点或Output节点。所述的Input节点包含的数据类型为数值型或者类别型;所述的Output节点是数据流的最终节点,能够得到用于算法模型的输入数据,在连接规则上,Output节点只有输入端,连接一个或多个前置的Input节点或算子节点。
算子节点具有多种不同的算法类型。不同的算法类型的算子节点包含了对应的特征变换函数及其参数,用以对输入的数据进行变换。在连接规则上,算子节点有一个或多个输入端,以及一个或多个输出端;算子节点的输入端连接到对应的Input节点或前一级的算子节点,输出端连接到后一级算子节点或Output节点。算子节点的输入数据类型必须与所述的Input节点的数据类型相同;
所述的算子节点按算法类型分为数据缩放节点、离散化节点、向量化节点、函数变换节点和降维节点。所述的数据缩放节点根据预设的参数对输入的数据进行标准化或归一化运算。其中,归一化运算需要设置最大值和最小值两个参数,默认情况下以0作为最小值,1作为最大值。
所述的离散化节点根据预设的参数对输入的数据进行等距分桶、等频分桶或二值化处理;其中,等距分桶和等频分桶需要设置的参数为分桶数量,二值化需要设置的参数为阈值,将输入数据中大于或等于阈值的部分将被统一变换为1,小于阈值的部分将被统一变换为0。
所述的向量化节点根据预设的参数对输入的数据进行独热编码或词向量变换。其中,词向量变换对应有词向量库。
所述的函数变换节点根据预设的参数对输入的数据进行对数变换和指数变换,其中对数变换需要设置的参数为底数;指数变换需要设置的参数为指数。
所述的降维节点通过主成分分析法或tSNE(即高维数据降维可视化)对输入的数据进行降维;其中,主成分分析法需要设置的参数为主成分数;tSNE需要设置的参数为目标维度。
所述的算子节点按计算步骤分为两个大类,分别为整体依赖型和单独计算型。整体依赖型的算子节点的数据变换参数依赖于整列数据,需要连续两次遍历该列,第一次遍历被称为fit,用于计算该列数据的统计量;第二次遍历被称为transform,用于执行实际的变换任务。如果变换算子不用依赖于整列数据,那么只需要一次遍历,直接执行transform任务即可。
利用该基于特征计算图的可视化机器学习特征提取系统进行数据集特征解析的方法如下:
步骤一、使用者根据需要从用户数据集中提取的特征特点,利用可视化前端界面通过拖动不同节点的方式搭建特征计算图。各Input节点通过一个或多个算子节点连接到同一个 Output节点;各算子节点的类型与用户数据集需要被提取的特征对应,由使用者根据需要进行选择。
用户数据集在输入各Input节点前添加一个ID列;Input节点的数量与用户数据集的列数对应;每个Input节点用于输入用户数据集的ID列和对应的一列元素。对于具有多个子节点的算子节点或Output节点,其输入数据为各子节点输出数据按列合并后得到的数据。子节点表示当前的Output节点或算子节点前一级的各算子节点或Input节点。
步骤二、数据处理模块对用户数据集采用图深度优先搜索方法从Output节点向前逐个访问节点进行计算,具体过程如下:
2-1.从Output节点开始,逐级向前调用子节点的fit方法,直至各Input节点均被调用fit 方法;fit方法计算输入数据对应的统计量,其输入参数为原始数据集,返回值为节点对象自身,fit方法的目的在于计算数据列的统计参数。执行fit方法时,会调用子节点的transform方法。transform方法是执行节点自身对应的数据变换的过程,其输入参数为原始数据集,负责执行实际的数据变换动作,返回值为变换后的数据集。利用持久化方法(称为persist方法)将特征计算图转换为json对象并存储到磁盘,且每当一个节点完成fit方法时,均构造一个json 对象。各json对象合并形成总的json文件。
对于Output节点,其fit方法首先调用所有子节点的fit方法,然后记录各子节点的返回值至数组,其对应的json对象包含子节点的名称以及子节点的返回值;
对于进行标准化的数据缩放节点,其fit方法首先调用所有子节点的fit和transform方法,再合并各子节点的输出列,然后计算当前数据的均值和方差,并记录。
对于进行等距分桶或等频分桶的离散化节点,其fit方法首先调用所有子节点的fit和 transform方法并合并输出列,然后结合分桶数量确定分隔点,并记录。
对于进行独热编码的向量化节点,其fit方法首先调用所有子节点的fit和transform方法并合并输出列,然后计算各列的编码输出维度以及编码表,并记录。
对于进行主成分分析的降维节点,其fit方法首先调用所有子节点的fit和transform方法并合并输出列,然后执行主成分分析算法,并记录变换矩阵。
对于Input节点,其fit方法不产生任何效果,直接返回其输入的数据。
2-2.从Output节点开始,逐级向前调用子节点的transform方法,使得Output节点输出经过需要的特征提取后的结果数据集。从而完成用户指定的特征提取任务,输出的结果数据集可以直接输入机器学习算法进行训练。
对于Output算子,其transform方法调用所有子节点的transform方法,然后合并输出列作为结果数据集返回。
对于进行标准化归一化等距分桶等频分桶独热编码词向量主成分分析和tSNE的算子节点,其transform方法首先调用所有子节点的transform方法并合并输出列,然后执行自身相应的数据变换函数,并返回结果数据集。
对于Input节点,其transform方法从原始数据集中提取id列和指定列作为输出。
步骤三、当需要对新的用户数据集进行特征提取时,利用步骤二获得的json文件,直接完成各节点的fit方法部分,仅进行transform方法,即可实现对新的用户数据集进行完整的变换,获得新的结果数据集,从而提高特征提取的效率。
结合图4对本发明的数据变换过程作进一步解释如下:特征计算图1是用户配置的特征计算方案,在模型训练时,经过fit阶段计算出每个算子节点的统计参数得到特征计算图2,再经过transform阶段得到变换后的特征数据。在模型推理时,只需要利用保存状态的特征计算图2,对推理数据进行transform,即可得到数据输入模型进行预测。
- 基于特征计算图的可视化机器学习特征提取系统及方法
- 基于特征提取和相似度计算的车辆故障问答方法及装置