掌桥专利:专业的专利平台
掌桥专利
首页

机器学习模型的处理方法、装置、存储介质及电子设备

文献发布时间:2023-06-19 11:35:49


机器学习模型的处理方法、装置、存储介质及电子设备

技术领域

本发明实施例涉及机器学习技术领域,尤其涉及一种机器学习模型的处理方法、装置、存储介质及电子设备。

背景技术

近年来,机器学习在很多领域都取得了非常好的效果,在各个领域被广泛应用。

但是在实现本发明的过程中,发明人发现现有技术中至少存在以下技术问题:机器学习模型的使用门槛较高,想要游刃有余地驾驭它,必须要深入了解算法的原理,而且还要熟练掌握相应的编程语言,有良好的编程能力,对于框架的API也有十分清晰的认知。一般而言,在一个企业中,同时具备这三种能力的人才是十分稀缺的,而大部分人员都是缺少其中的一项甚至两项。由于技术断层问题,导致机器学习模型相关技术处理难度高,研究成果并不能很好的在企业中发挥价值。

发明内容

本发明提供机器学习模型的处理方法、装置、存储介质及电子设备,以实现降低机器学习模型的处理难度。

第一方面,本发明实施例提供了一种机器学习模型的处理方法,包括:

获取配置文件和处理数据,所述配置文件中包括至少一个机器学习模型的至少一个处理过程;

根据所述配置文件中各所述处理过程,调用各所述处理过程对应的执行器,得到各处理过程的处理结果,其中,所述执行器基于所述配置文件中各处理过程对应的机器学习模型和处理数据执行对应的处理过程。

第二方面,本发明实施例还提供了一种机器学习模型的处理装置,包括:

信息获取模块,用于获取配置文件和处理数据,所述配置文件中包括至少一个机器学习模型的至少一个处理过程;

处理模块,用于根据所述配置文件中各所述处理过程,调用各所述处理过程对应的执行器,得到各处理过程的处理结果,其中,所述执行器基于所述配置文件中各处理过程对应的机器学习模型和处理数据执行对应的处理过程。

第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明任一实施例提供的机器学习模型的处理方法。

第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任一实施例提供的机器学习模型的处理方法。

本实施例提供的技术方案,通过获取用户设置的配置文件以及处理数据,该配置文件中包括项目所需的至少一个机器学习模型的至少一个处理过程,系统预先设置用于执行机器学习模型各个处理过程的执行器,以执行配置文件中的各个处理过程。本实施例中,通过设置机器学习模型的各个处理过程的执行器,使得用户仅通过设置配置文件即可调用各个执行器,实现各处理过程的执行,得到各处理过程的执行结果,无需编写程序代码,降低了机器学习模型的实现难度,提高了机器学习模型的学习研发效率。同时在需要对机器学习模型进行更新或者修改时,仅需要调节配置文件,简化了更新或修改的过程,便于对项目所需的配置文件进行二次开发,提高了项目研发的灵活性。同时配置文件占用内存小,降低了维护成本。

附图说明

图1为本发明实施例一提供的机器学习模型的处理方法的流程示意图;

图2是本发明实施例提供的机器学习模型的抽象示意图;

图3是本发明实施例提供的配置文件的示意图;

图4是本发明实施例提供的一种机器学习模型的处理方法的流程示意图;

图5是本发明实施例提供的机器学习模型的处理方法的示例图;

图6是本发明实施例提供的一种机器学习模型的处理装置的结构示意图;

图7为本发明实施例五提供的一种电子设备的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1为本发明实施例一提供的机器学习模型的处理方法的流程示意图,本实施例可适用于通过配置方式对至少一个机器学习模型进行处理的情况,该方法可以由本发明实施例提供的机器学习模型的处理装置来执行,该装置可通过软件和/或硬件的方式实现,该装置可集成于诸如计算机或者服务器等的电子设备上。

参见图2,图2是本发明实施例提供的机器学习模型的抽象示意图,机器学习模型可抽象为算法原来,编程语言和编程能力以及机器学习框架三部分,其中,算法原理是一个算法的灵魂,如果不了解算法的原理,那么对于一些参数和出现的一些状况,很难做精细的分析与调优,很难让机器学习模型达到最好的效果。

编程语言和编程能力往往决定了一个机器学习模型的时间和空间成本。一个很好的机器学习模型不仅仅需要有很好的输出预测结果,而且还需要让时间和空间的成本控制在合理的范围。一个算法模型输出结果非常好,然而资源消耗不堪设想,那么这种模型最终也很难被投入使用。如果只了解算法原理,并不了编程语言,或者说编程能力并不过关,很难用编程语言高效的把算法原理表达出来。而且很多时候单纯的能用代码把机器学习模型实现出来,是远远不够的。一个好的实现,必须考虑内存、CPU、磁盘、线程之间的调优,要合理的利用这些资源,让这些资源可以高效的协作,对编程语言和编程能力要求高。

机器学习框架主要就是机器学习所使用的技术选型的一些API(APPLICATIONPROGRAMMING INTERFACE,应用程序接口),有好多的函数接口,可以供开发者使用,可以实现不同的功能。研发如果不了解API,可能导致代码复杂,而且可能会暴漏出各种各样的问题。

针对上述技术问题,本实施例提供的如图1所示的机器学习模型的处理方法,通过将机器学习模型的处理过程简化了配置文件以及根据配置文件的程序代码,从而简化机器学习模型的整体处理过程,降低机器学习模型的处理难度,提高机器学习模型的适应性和普及性。

该方法具体包括如下步骤:

S110、获取配置文件和处理数据,所述配置文件中包括至少一个机器学习模型的至少一个处理过程。

S120、根据所述配置文件中各所述处理过程,调用各所述处理过程对应的执行器,得到各处理过程的处理结果,其中,所述执行器基于所述配置文件中各处理过程对应的机器学习模型和处理数据执行对应的处理过程。

其中,配置文件为用户根据项目需求设置的文件,该文件中包括项目中至少一个机器学习模型的处理信息,可选的,处理信息至少包括每一个机器学习模型的至少一个处理过程。

本实施例中,机器学习模型可以是具有分类功能的分类预测模型,例如包括但不限于分类模型、回归模型以及聚类模型等,上述各模型的具体结构包括但不限于支持向量机、随机森林、梯度提升树、k均值聚类模型和DBSCAN聚类模型(Density-Based SpatialClustering of Applications with Noise)。配置文件中各处理过程中对应的机器学习模型可以是上述模型中的一种或多个,各类型模型的数量可以是一个或多个,各类型模型的功能可以不同,根据项目需求设置,例如配置文件中不同处理过程中机器学习模型的结构和/或功能不同,例如可以包括订单分类模型、股票预测模型等。本实施例中不限定配置文件中各机器学习模型的功能。

可选的,配置文件中的处理过程包括:训练过程、评估过程、预测过程、迭代过程和复合过程的一种或多种。相应的,处理数据为配置文件中各处理过程所需的数据。其中,训练过程用于对该训练过程对应的机器学习模型进行训练,得到具有分类或预测功能的机器学习模型,相应的,该训练过程对应的处理数据为用于对机器学习模型进行训练的样本数据以及样本数据的标签等。评估过程用于对该评估过程对应的机器学习模型进行质量评估,其中,该评估过程对应的机器学习模型为已完成训练的机器学习模型,相应的,评估过程对应的处理数据为用于对机器学习模型进行评估的评估数据以及评估数据的标签等。预测过程为基于已完成训练或已完成评估的机器学习模型对待预测数据进行分类预测,其中,预测过程对应的处理数据为待预测数据。迭代过程用于辅助训练过程、评估过程、预测过程对大量处理数据或者多个机器学习模型迭代执行,用于批量的完成模型训练、预测、评估等,迭代过程中配置有参数列表,在辅助的处理过程中配置相应的参数,通过迭代遍历参数列表,以在执行每一个处理过程时,进行参数替换后再执行具体的处理过程。复合过程是一种融合了多个子过程的过程,可以同时定义多个过程,复合过程的设计,可以描述一些非常复杂的执行流程。例如可以是对训练过程、评估过程、预测过程、迭代过程形成的多个处理过程的流程控制过程,用于对上述处理过程的执行器进行调用。

在一些实施例中,配置文件中包括的处理过程可以是包括训练过程、评估过程、预测过程、迭代过程和复合过程中的至少一种,且每一种处理过程的数量为一个或多个,对此不作限定,可根据项目需求进行配置以生成配置文件。示例性的,在一个配置文件中可以包括三个训练过程和两个评估过程,在另一配置文件中可以是包括一个复合过程、两个评估过程和一个预测过程,其中,复合过程中还可以包括训练过程、评估过程、预测过程、迭代过程中的一个或多个。

在一些实施例中,配置文件中的处理过程可以包括处理过程的如下属性:过程标识(例如过程名称)、过程类型和过程参数,示例性的,参见图3,图3是本发明实施例提供的配置文件的示意图,其中,过程标识用于唯一标记处理过程,如果有两个不同的过程配置了相同的过程标识,则后者自动覆盖前者(通过处理过程的配置时间戳识别),生成警告信息。通过设置过程标识便于实现处理过程的调用,以及便于通过设置的过程标识对需要执行的处理过程进行配置或编译,以及对处理过程的执行时序的设置等。

过程类型用于调用对应的过程执行器,相应的,过程类型包括训练、评估、预测、迭代和复合,其中,训练过程、评估过程、预测过程是机器学习模型的基础处理过程,迭代过程和复合过程为机器学习模型的流程控制类过程,用于描述一些复杂的执行流程。不同过程标识的处理过程可以是对应同一种过程类型。

过程参数描述了执行处理过程所需要的输入参数,对于训练过程,过程参数包括但不限于算法模型、算法模型的参数、输入数据以及模型的保存位置等。对于评估过程,过程参数包括但不限于输入数据、训练好的模型的路径以及label信息等。对于预测过程,过程参数包括但不限于输入数据和训练好的模型的路径信息。对于迭代过程,过程参数包括但不限于迭代执行的输入参数列表以及执行失败时的处理策略,输入参数列表中的各个参数会在执行具体的过程时完成参数替换,对于复合过程,过程参数包括但不限于执行失败时的处理策略,在迭代过程和复合过程中的执行失败时的处理策略可以是失败时停止执行、失败时继续执行。

在一些实施例中,处理数据中配置有对应处理过程的过程标识,便于在各处理过程的执行过程中,通过待执行的处理过程的过程标识从处理数据中读取所需的数据。

本实施例中,预先设置有各处理过程的执行器,根据配置文件中设置的各处理过程,依次调用各处理过程的执行器,以执行上述处理过程,完成对至少一个机器学习模型的处理。其中,训练过程对应的执行器为训练过程执行器,评估过程对应的执行器为评估过程执行器,预测过程对应的执行器为预测过程执行器,迭代过程对应的执行器为迭代过程执行器,复合过程对应的执行器为复合过程执行器。上述执行器是预先设置的,可以通过软件和/或硬件的方式实现,分别具有执行训练过程、评估过程、预测过程、迭代过程和复合过程的功能,此处可以不限定上述执行器的具体结构和实现方式。

在一些实施例中,配置文件中可以是包括各处理过程的处理时序,根据该处理时序对应的过程标识依次确定待执行的处理过程以及该处理过程对应的处理数据,根据处理过程的过程类型调用对应的执行器,该执行器基于处理数据执行对对应的机器学习模型的处理,直到完成配置文件中的各个处理过程,得到各处理过程的处理结果。

本实施例提供的技术方案,通过获取用户设置的配置文件以及处理数据,该配置文件中包括项目所需的至少一个机器学习模型的至少一个处理过程,系统预先设置用于执行机器学习模型各个处理过程的执行器,以执行配置文件中的各个处理过程。本实施例中,通过设置机器学习模型的各个处理过程的执行器,使得用户仅通过设置配置文件即可调用各个执行器,实现各处理过程的执行,得到各处理过程的执行结果,无需编写程序代码,降低了机器学习模型的实现难度,提高了机器学习模型的学习研发效率。同时在需要对机器学习模型进行更新或者修改时,仅需要调节配置文件,简化了更新或修改的过程,便于对项目所需的配置文件进行二次开发,提高了项目研发的灵活性。同时配置文件占用内存小,降低了维护成本。

需要说明的是,在获取配置文件和处理数据之前,所述方法还包括:获取启动脚本,其中,所述启动脚本用于从本地或者预设存储服务器中加载程序代码,其中,所述程序代码用于执行所述根据所述配置文件中各所述处理过程,调用各所述处理过程对应的执行器,得到各处理过程的处理结果的步骤。

本实施例中,将程序代码编译打包放置一个公共的hdfs(Hadoop DistributedFile System,分布式文件系统)路径中,系统获取启动脚本,该启动脚本为预先设置的,该启动脚本是一段简短的Shell脚本,用于判断程序代码是否本地存在,若存在,则执行该程序代码,该程序代码用于实现对配置文件中各处理过程的执行。若本地不存在程序代码,则从hdfs路径下载该程序代码,并调用任务提交脚本,基于该程序代码实现对配置文件中各处理过程的执行。

程序代码是预先设置的,存储在可读取的公共路径中,且启动脚本是通用的,一般情况不需要修改,因此用户只需要维护配置文件,只需要把配置文件和启动脚本放在一起,然后以shell的方式执行启动脚本,即可完成程序代码的执行,十分轻量快捷。

本实施例中抽象了机器学习模型处理过程,将处理过程与程序代码实现彻底分离,使得用户进行切换底层实现技术,上层无需做任何改动,配置文件中只包括算法模型、所需要使用的参数以及执行哪些过程等信息,完全可以把底层的实现换成其他技术框架,降低了用于对机器学习框架的控制难度。

实施例二

图4是本发明实施例提供的一种机器学习模型的处理方法的流程示意图,在上述实施例的基础上进行了优化,可选的,所述配置文件中包括根结点和至少一级子结点,所述根结点配置为复合过程,各所述子结点配置为所述训练过程、评估过程、预测过程、迭代过程和复合过程中的任一项。

该方法具体包括:

S210、获取配置文件和处理数据,配置文件中包括根结点和至少一级子结点,所述根结点配置为复合过程,各所述子结点配置为所述训练过程、评估过程、预测过程、迭代过程和复合过程中的任一项。

S220、基于所述配置文件中各所述子结点配置的处理过程,调用各所述处理过程对应的执行器,得到各处理过程的处理结果,其中,所述执行器基于所述配置文件中各处理过程对应的机器学习模型和处理数据执行对应的处理过程。

本实施例中,配置文件中以结点element的形式配置各处理过程,包括根结点和多级子结点,每一个结点对应一个处理过程。其中,根结点对应复合过程,根结点可设置至少一个子结点,各个子结点可对应训练过程、评估过程、预测过程、迭代过程和复合过程的任一项,相应的,配置复合过程的子结点可配置有下一级子结点,并以此类推。通过设置复合过程对应的根结点,便于用户设置复杂的执行过程,以及控制各处理过程之间的依赖关系,替代了通过代码方式的实现形式,简化了复杂执行过程的实现形式。

根据配置文件中各子结点的执行顺序,依次确定各子结点对应的处理过程,依次执行各处理过程。其中,各个子结点可以是对应至少一个处理过程。在一些实施例中,各所述子结点配置有局部过程信息,所述局部过程信息包括所述子结点对应的处理过程以及各处理过程的过程标识。通过将处理过程对象与过程标识通过键值对的形式进行存储,形成局部过程信息,该局部过程信息可以是LinkedHashMap。可选的,各个子结点对应一个局部过程信息,该局部过程信息在包括该子结点待执行的处理过程以及过程标识。可选的,复合过程对应的子结点配置一个局部过程信息,训练过程、评估过程、预测过程对应的子结点无需配置局部过程信息。

通过读取每一个子结点的局部过程信息可确定待执行的处理过程,并执行各个处理过程。

在一些实施例中,复合过程对应的子结点配置有执行列表(例如以exec属性的形式展示),所述执行列表中包括待执行的各处理过程的过程标识,该执行列表中的过程标识可以是不同于局部过程信息中过程标识,例如,执行列表中的过程标识为局部过程信息中过程标识的部分,或者,执行列表中的过程标识比局部过程信息中过程标识多,或者,执行列表中的过程标识顺序不同于局部过程信息中过程标识顺序。执行列表的优先级高于局部过程信息,若任一子结点配置有执行列表,则以执行列表中过程标识以及过程标识的顺序,确定待执行的处理过程以及各处理过程的时序,若任一子结点未配置有执行列表,则局部过程信息中过程标识以及过程标识的顺序确定待执行的处理过程以及各处理过程的时序。可选的,执行列表中各个过程标识通过预设符号分隔,其中,预设符号可以是“#”、“*”以及空格等,通过识别执行列表中的预设符号,将各个过程标识进行分割,得到各个过程标识。

任一子结点的局部过程信息中包括处理过程为该子结点可执行的处理过程,执行列表可以包括当前执行的处理过程的过程标识。在一些实施例中,保持配置文件中其他信息不变,通过调整执行列表,可快速更新配置文件,无需对各个子结点的局部过程信息进行变化,提高了配置文件调整的灵活性。

相应的,基于所述配置文件中各所述子结点配置的处理过程,调用各所述处理过程对应的执行器,得到各处理过程的处理结果,包括:若任一子结点配置有执行列表,基于所述执行列表中的处理过程的过程标识从所述局部过程信息中确定待执行的处理过程,调用所述待执行的处理过程对应的执行器,得到各处理过程的处理结果。本实施例中,执行列表中仅包括处理过程的过程标识,减小了执行列表的占用内存,以及配置的灵活性。通过遍历执行类别中的过程标识,将各过程标识在局部过程信息中进行匹配,确定过程标识对应的处理过程,该处理过程为需求执行的处理过程,依次执行上述处理过程。

在一些实施例中,若执行列表为空,则遍历局部过程信息中的处理过程,依序执行遍历的各个处理过程。

在一些实施例中,配置文件中还包括全局过程信息,所述全局过程信息包括可调用的处理过程以及所述可调用的处理过程的过程标识。其中,全局过程信息的处理过程为配置文件中重复率高于预设阈值的处理过程。

相应的,基于所述配置文件中各所述子结点配置的处理过程,调用各所述处理过程对应的执行器,得到各处理过程的处理结果,还包括:若所述执行列表中任意过程标识在所述局部过程信息中匹配失败,则将匹配失败的过程标识在全局过程信息进行匹配,确定该匹配失败的过程标识所对应的处理过程,调用所述待执行的处理过程对应的执行器,得到各处理过程的处理结果。若在过程标识在全局过程信息匹配失败,则抛出异常。

本实施例中,可以将重复率高的处理过程以及上述处理过程的过程标识以哈希键值对的形式存储至全局过程信息,简化配置文件各个子结点的局部过程信息,进一步简化了配置文件。

在上述实施例的基础上,调用各所述处理过程对应的执行器,包括:基于各所述处理过程的处理类型对应的执行器。在通过过程标识确定需要执行的处理过程后,读取处理过程属性信息中的过程类型,根据过程类型调用对应的执行器。示例性的,如果过程类型为训练(train),则调用训练过程执行器,如果过程类型为测试(predict),则调用预测过程执行器,如果过程类型为评估(eval),则调用评估过程执行器,如果过程类型为迭代(iterator),则的调用迭代过程执行器,如果过程类型为复合(project),则继续调用复合过程执行器。

在上述实施例的基础上,在根据所述配置文件中各所述处理过程,调用各所述处理过程对应的执行器,得到各处理过程的处理结果之前,还包括:获取外部输入参数,基于所述外部输入参数的标识替换所述配置文件中的对应参数。

对于各处理过程中的过程参数,例如但不限于训练过程中的学习率,或者各个子结点的执行类别,可以是直接写入参数内容,还可以是写入参数标识,例如“#参数标识#”,其中,参数标识可以是参数名,或者诸如0、1、2、A、@等的数字、字符或者字符串的标识。上述写入参数标识的过程参数可进行替换,外部输入参数中包括待替换的过程参数的参数标识和替换参数值,将外部输入参数写入配置文件中的全局参数信息中,在触发启动脚本时,基于全局参数信息替换配置文件中的对应参数。具体的,对于全局参数信息中的各个参数标识在配置文件中进行匹配,基于该参数标识对应的替换参数值替换配置文件中匹配成功的参数标识,实现了对配置文件中各个处理过程中参数的快速更新,简化了配置文件的调节过程。

本实施例的技术方案,通过获取配置文件,该配置文件中以根结点以及多级子结点的形式设置至少一个待执行的处理过程,基于配置文件中各子结点配置的处理过程,调用各所述处理过程对应的执行器,得到各处理过程的处理结果。用户仅通过设置配置文件中各个子结点的处理过程,无需对程序代码进行配置,简化了机器学习模型处理的难度。

实施例三

在上述实施例的基础上,本发明实施例提供了一个机器学习模型的处理方法的优选示例。该机器学习模型的处理方法为:获取启动脚本、配置文件、处理数据和外部输入参数,启动脚本为Shell脚本,Shell脚本判断本地是否存储有程序代码,若否,则从预先设置的公共的hdfs路径下载程序代码。基于本地的程序代码或下载的程序代码,执行配置文件中的处理过程。具体的,参见图5,图5是本发明实施例提供的机器学习模型的处理方法的示例图,将外部输入参数写入配置文件的全局参数信息,基于全局参数信息中的各个参数标识以及替换参数值替换配置文件中匹配成功的参数标识,实现配置文件的参数更新。

配置文件中每一个处理过程包括过程标识(配置为过程名称)、过程类型、过程参数。本实施例中,采用基于Spark的一版实现,详细介绍整个过程,而算法实现部分并不局限于Spark框架,完全可以由其它编程语言其它算法包去实现,比如C++。

对于训练过程,由train结点进行的定义,train结点下有save、model、features、statements、sql和eval等六个结点,train结点设置有name属性,用于定义训练过程名称。其中,save结点定义了机器学习模型的保存位置,例如本地路径或者hdfs路径,程序代码根据不同协议的路径做不同的处理,比如如果是本地路径,对训练得的机器学习模型直接保存即可,如果是hdfs路径,调用hdfs的保存方式,或者调用hdfs的文件系统库,将机器学习模型写入hdfs文件系统。save结点的skip_when_exists属性对模型存在时的处理操作,判断机器学习模型是否存在,如果存在是否跳过,该值如果为false,当机器学习模型存在的时候,则覆盖原有模型,该参数用于控制模型存在时的处理策略。

model结点定义了模型bean,该框架采用了与Spring定义bean的标准(与行业标准统一),需要配置class类和bean的基本属性。model结点的class属性,配置了需要实例化的类名,这个类名是框架的具体实现类,示例性的,若创建XGBoost模型,则具体实现类就是ml.dmlc.xgboost4j.scala.spark.XGBoostClassifier,若创建随机森林分类模型,则实现类就是org.apache.spark.ml.classification.RandomForestClassifier。这样做的好处是增加了算法模型定义的灵活性,可以定义任何SparkMLLIb中存在的bean,即可以配置任意算法模型,不局限于XGBoost模型。

model结点的属性包括机器学习模型的可调整参数,该可调整参数参数统一采用了Spring的Setter注入标准,将首字母大写,加setter构成Setter方法,调用Setter方法,完成参数注入。采用Spring的setter注入方式的好处是有两点,其一是对于了解Spring的开发人员,会非常熟悉整个过程,容易学习框架的基本原理和思想,并可以扩展修改处属于自己的东西,其二是每一种算法包的底层实现都有具体的Setter参数设置方法,而这些方法非常适合反射调用,易于实现参数设置。

本框架默认从数据库的hive表中读取数据,SQL结点定义了数据加载的SQL语句,可以直接调用Spark访问SQL以查询数据。本实施例中,数据的读取并不局限于SQL,也可以从本地文件或者Hdfs文件中读取数据,只需要配置input-path结点即可。使用SQL结点的好处其一是与Hive数据仓库整合,只需要写SQL即可读取数据,其二是可以在读取数据中做一定的数据处理,以及修改字段名称、类型等。

Features结点和statements结点用于定义特征列和描述列,特征列就是从SQL的查询结果中选取出一些列,用于训练。描述列是用于定义一些附加的非特征列,这些附加的非特征列可以在程序汇总被访问。非特征列往往用于描述一条记录具体是哪条记录,例如可以定义非特征列为主键id,这样可以定位某一行特征来自那条记录,方便分析结果。Features结点和statements结点的数据格式相似或相同,都是定义了列选择的逻辑,为了方便快速选择列,本实施例中,综合采用了python数组的列选择方法、列名选择方法、列索引选择等多种方法,使列选择过程更加简单。示例性的,列选择过程设计如下:列选择过程可以用索引和列名指定,并支持“:”,“:”语法与python数组类似,用于取某一个索引开始到某一个索引结束,当“:”结尾用索引表示时,取到该索引前一个,用字段名指定时,取到该索引,负数表示从后面数。列选择过程可以指定多个表达式,每一个表达式用“;”分割,例如:1;2;3:5;7:user_log_acct;shop_id:-2,该表达式的含义为:选取1,2,3,4,7到user_log_acct,shop_id到倒数第二列。

eval结点用于定义训练时评估,即评估训练时数据的拟合情况,该拟合情况可以初步反应模型的好坏,如果训练过程模型的拟合都不是很好,那么自然不用考虑预测过程了。eval结点有一个属性nums,标记用于评估的记录数,如果该值为正,则表示从训练样本中抽取这些数量的样本进行评估,如果该值为负,则表示用全量训练样本进行评估。如果nums为0,或者不存在eval结点,表示不执行训练时评估过程,即训练时不输出训练数据的评估结果。

对于评估过程用于完成了对训练模型的基本指标的评估,基本指标包括但不限于准确率、召回率、ROC等。评估过程由eval结点定义,eval结点下有model_path、labelCol、features、statements、sql等6个结点。eval结点设置有name属性,用于定义评估过程名称。同时sql结点、statements结点和features结点用来定义输入的数据,与train结点相似,此处不再赘述。

model_path结点定义了输入模型的路径,可以是hdfs路径或者本地路径,该路径和train过程的save_path结点类似,系统会加载model_path结点指定的路径的模型文件,来执行预测

labelCol结点用于配置label列名,这个字段用于定义哪个列是label,系统会对比数据的预测输出结果,与label列情况,得出评估的基本指标。

对于预测过程主要完成模型加载,并对特征数据进行预测,并保存预测结果的过程。预测过程通过predict结点定义,predict结点下包含了model_path、features、statements、sql和save等5个结点,其中model_path结点指定了需要加载的模型路径,features结点、statements结点和sql结点用于配置需要加载的数据内容,而save结点是用来执行预测结果的保存,是一条insert的SQL语句或者建表语句等,这查询的表需要使用#table#。本实施例中,将预测结果动态注册成临时表,会将#table#动态替换成临时表,而执行SQL语句,由于分类情况下输出的结果可能是seq类型的数据,所以如果需要访问某一列的值,可以使用字函数get_from_vector,该框架会注册很多方便用户访问数据,加工处理的udf,这些会详细写在文档中,供使用者查阅。

对于复合过程由project结点配置,各个子过程是project结点下的子结点,一个project下可以有多个子过程结点,示例性的可以是配置两个train结点、两个eval结点、一个predict结点,复合过程结点主要配置一些流程控制的基本参数,该基本参数包括app_name属性、exec属性,其中,app_name属性配置了复合过程的进程名,便于调度管理器中查找到该进程以及进行任务的管理和监控。exec属性用于配置需要执行的过程名称,过程名称为子过程结点的name属性,与各个子过程的name属性匹配。exec可以配置多个过程名称,这些过程名要以逗号或空格分隔,系统在执行时,会找到配置的过程名按顺序先后执行,如果配置的过程名找不到,则抛出异常。

对于迭代过程用于基于参数替换的方式,循环迭代执行一些处理过程,该处理过程相似度高,且上述处理过程的不同点可通过参数描述,将不同的参数保存到参数表中,通过读取参数表,循环迭代每一个参数,以执行各个子过程,执行过程中完成参数的替换,使每次迭代执行的是不同的内容。迭代过程由iterator结点定义,iterator结点下有具体的子过程,如train结点,eval结点等,exec属性用于标识该子过程执行的子过程,这些子过程只能在当前节点的配置下的处理过程或公共过程中。如果没有配置exec属性,iterator过程默认执行下面配置的全部子过程。Iterator结点的核心内容为param结点,当param结点的type=sql时,此时指定param读取方式为SQL语句,该结点需要配置了一个SQL参数语句,该SQL参数语句是加载参数的SQL语句,因此预先将参数维护到系统的一个表中,以SQL方式存储,系统会读取SQL查询结果作为参数列表,以SQL的列名为参数名,以SQL的取值为参数值,系统会使用每一行记录,完成子过程的参数替换,执行各个子过程,param的SQL执行结果的每一行数据,都会作为参数,然后将iterator过程要执行全部子过程执行一遍,循环遍历,串行执行。param结点的type除了SQL以外,还可以是string,json等格式,只是程序解析的逻辑稍有不同,这里不做详述。

在上述实施例的基础上,配置文件中还包括公共定义结点。公共定义节点由public结点配置,public结点的过程配置和复合过程类似,该结点主要是定义过程的,而不用于过程的执行,所以无需exec属性和name属性,public结点下可以有具体的子过程,这些子过程可以被其他迭代过程和总控制过程调用。当公共过程中的name属性和子过程的name属性相同时,会优先使用内部配置的子过程,当子过程中找不到对应的过程时,再public节点中查找,如果public找不到,则抛出异常。

上述配置文件中的所有结点、属性都是可以通过参数进行配置的,本框架使用的参数格式为“#参数名#”的格式,参数主要有两种,其中一种是迭代参数,这类参数有参数名,配置方式主要通过“#参数名#”的形式,而另一种参数是shell参数,这类参数是调用shell脚本时,通过外接传递进来的,所以这类参数没有参数名,所以参数格式为“#0#”“#1#”“#2#”…

配置文件中由一个根结点构成,该根结点下可以包含一个个的子结点,子结点去配置一个个需要执行的处理过程。子结点的处理过程可以是训练过程、评估过程、预测过程、迭代过程和复合过程的任一项。根结点为复合过程,调用复合过程执行器,该复合过程执行器接收配置文件中的配置结点Element,全局参数信息、全局过程信息。

复合过程是一个流程控制过程,首先读取参数配置结点element下的全部子结点,将过程标识(配置为name属性)和处理过程(配置为子结点对象)保存至局部过程信息LinkedHashMap中,然后读取配置结点element的执行列表(exec属性),该exec属性用于配置需要执行的过程,将该exec属性中的内容按空格分割得到一系列过程标识(例如过程名称),在局部过程性LinkedHashMap中寻找该过程标识的过程类型,如果找不到则继续在全局过程信息中查找,如果依旧找不到,则抛出异常。如果找到过程类型,则根据过程类型调用相应的执行器。如果过程类型为训练train,则调用训练过程执行器,如果为预测predict则调用预测过程执行器,如果为评估eval则调用评估过程执行器,如果为迭代iterator则的调用迭代过程执行器,如果为复合project,则继续调用复合过程执行器。

如果exec属性为空,表明用户没有配置需要执行的过程名,那则遍历局部过程LinkedHashMap,按顺序一一执行,例如按从上至下的顺序执行全部处理过程。

本实施例中,系统预先设置训练过程执行器、预测过程执行器、评估过程执行器、迭代过程执行器和复合过程执行器。

对于训练过程执行器,当读取到配置的一个过程的结点类型为train时,则需要调用训练过程执行器。训练过程执行器主要完成模型的训练操作,训练过程首先要读取save结点,判断文件是否存在,如果存在,则读取skip_when_exit属性,如果该属性为true,则不执行任何操作,直接返回,否则执行训练过程。

训练过程主要包括数据加载、模型定义、调用训练方法、模型保存、训练时评估等五个部分。数据加载完成通过配置、加载数据、转换成训练方法可以接受的数据格式的过程。该过程主要通过sql结点,定义加载数据的SQL,通过feature结点和statements结点配置信息,将加载的数据转换成训练过方法可以接收的格式。模型定义过程是通过配置文件,动态创建一个机器学习模型对象,并将参数设置到创建的机器学习模型中。该过程基于java反射机制,通过配置的算法模型类名动态创建一个机器学习模型对象,并调用相应的setter方法,将配置的参数全部设置到机器学习模型对象中,这样可以实现用户通过配置定义任何库中存在的算法模型,并且可以传入任何该模型可以设定的参数,十分灵活。调用训练方法通过加载的数据为输入,调用上一步创建的机器学习模型的train方法即可,主要控制好日志和异常的输出。模型保存通过配置结点的save属性,用来配置模型保存的位置,调用机器学习模型对象的save方法,保存模型至save结点配置的位置,如果save结点配置路径是以hdfs://开头,则调用hdfs模型路径保存方法,否则保存至本地路径。训练时评估通过训练过程结点下的eval结点进行配置,用于配置对训练数据的评估,用于评估训练数据的你和情况,这里需要配置评估的抽样数据量,如果数据量为-1,则使用全量数据进行评估。如果训练过程配置结点下不包含eval结点,则不执行训练时评估。

对于评估过程执行器,主要包含数据加载、模型加载、调用评估实现、输出评估结果四个步骤。其中,数据加载过程和训练过程执行器中实现类似。模型加载是调用框架的相关接口,从配置的路径信息中加载机器学习模型,创建出机器学习模型对象,由于评估过程是对一个已经训练好的机器学习模型进行评估,所以需要传入一个训练好的机器学习模型路径,直接通过相关接口去加载机器学习模型。通过加载的数据为输入,调用具体的评估过程实现即可。评估的实现主要针对分类、回归、聚类等机器学习模型,去封装了一些评估指标的计算,让用户通过配置直接调用即可,无需自己实现。输出模型评估结果,主要就是把评估的一些信息输出至数据文件,或控制台,或数据库等存储介质中。

对于预测过程执行器包含了数据加载、模型加载、调用预测方法、保存预测结果四个过程,其中,数据加载和模型加载与评估过程类似。调用预测方法是通过加载的数据为输入,调用模型的预测方法得到预测结果。保存预测结果是需要完成预测结果的存储,可以通过配置后处理SQL来实现,用户需要在save结点中,定义一个insert overwrite格式的SQL,或者create table table_name as结构的SQL语句,这个SQL语句中的表名需要使用#table_name#,保存过程会把预测结果动态注册一个临时表,并把后处理SQL中#table_name#替换成注册的临时表,然后执行SQL,这样便可以通过SQL执行的方式,把预测结果保存至Hive表中。当然可以将预测结果保存至数据文件中,只需要一个新的实现即可。

对于迭代过程执行器,包括加载迭代参数列表、遍历参数列表循环执行子过程的过程,其中,加载迭代参数列表可以是加载迭代参数列表,迭代参数列表可以是以SQL方式给出,系统读取SQL迭代参数列表,把数据加载至内存,示例性的,SQL的列名即为参数名,SQL查询出的结果为参数值。这个参数列表中的每一行记录都作为一次迭代。

遍历参数列表循环执行子过程为依行读取参数,每读取一行,都把这一行记录全部存储至一个局部参数map中,以“#列名#“为key,以当前行当前列的值为value。把全局参数map中的参数全部添加到这个局部参数map中,用这个局部参数map完成子过程配置信息读取的参数替换。各个子过程的配置需要在一些关键的部位设置相应的参数,这样可以在每次迭代时,执行的是不同的内容。比如加载不同的数据,保存至不同的位置等。

本实施例中,采用配置化的方法,描述了机器学习数据的加载,模型的创建,模型参数的设置,以及模型训练、预测、评估全过程。让用户无需关注具体的过程实现,无需编写程序代码,这样用户可以把全部的精力都投入到算法模型的研究中,而不需要花费时间在具体的过程实现上。让机器学习门槛大幅度降低,用户不再需要了解编程,不再需要很强的编程能力,从而大大提升机器学习研发效率。

实施例四

图6是本发明实施例提供的一种机器学习模型的处理装置的结构示意图,该装置包括:

信息获取模块310,用于获取配置文件和处理数据,所述配置文件中包括至少一个机器学习模型的至少一个处理过程;

处理模块320,用于根据所述配置文件中各所述处理过程,调用各所述处理过程对应的执行器,得到各处理过程的处理结果,其中,所述执行器基于所述配置文件中各处理过程对应的机器学习模型和处理数据执行对应的处理过程。

在上述实施例的基础上,所述处理过程包括:训练过程、评估过程、预测过程、迭代过程和复合过程。

在上述实施例的基础上,所述配置文件中包括根结点和至少一级子结点,所述根结点配置为复合过程,各所述子结点配置为所述训练过程、评估过程、预测过程、迭代过程和复合过程中的任一项。

在上述实施例的基础上,所述子结点配置有局部过程信息,所述局部过程信息包括所述子结点对应的处理过程以及各处理过程的过程标识;

处理模块320用于:基于所述配置文件中各所述子结点配置的处理过程,调用各所述处理过程对应的执行器,得到各处理过程的处理结果。

在上述实施例的基础上,复合过程对应的子结点配置有执行列表,所述执行列表中包括待执行的各处理过程的过程标识;

处理模块320用于:若任一子结点配置有执行列表,基于所述执行列表中的处理过程的过程标识从所述局部过程信息中确定待执行的处理过程,调用所述待执行的处理过程对应的执行器,得到各处理过程的处理结果。

在上述实施例的基础上,所述配置文件中包括全局过程信息,所述全局过程信息包括可调用的处理过程以及所述可调用的处理过程的过程标识;

处理模块320用于:若所述执行列表中任意过程标识在所述局部过程信息中匹配失败,则将匹配失败的过程标识在全局过程信息进行匹配,确定该匹配失败的过程标识所对应的处理过程,调用所述待执行的处理过程对应的执行器,得到各处理过程的处理结果。

在上述实施例的基础上,处理模块320用于基于各所述处理过程的处理类型对应的执行器。

在上述实施例的基础上,该装置还包括:

参数处理模块,用于在根据所述配置文件中各所述处理过程,调用各所述处理过程对应的执行器,得到各处理过程的处理结果之前,获取外部输入参数,基于所述外部输入参数的标识替换所述配置文件中的对应参数。

在上述实施例的基础上,该装置还包括:

启动脚本获取模块,用于在获取配置文件和处理数据之前,获取启动脚本,其中,所述启动脚本用于从本地或者预设存储服务器中加载程序代码,其中,所述程序代码用于执行所述根据所述配置文件中各所述处理过程,调用各所述处理过程对应的执行器,得到各处理过程的处理结果的步骤。

上述机器学习模型的处理装置可执行本发明任意实施例所提供的机器学习模型的处理方法,具备执行机器学习模型的处理方法相应的功能模块和有益效果。

实施例五

图7为本发明实施例五提供的一种电子设备的结构示意图。图7示出了适于用来实现本发明实施方式的电子设备12的框图。图7显示的电子设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。设备12典型的是承担图像分类功能的电子设备。

如图7所示,电子设备12以通用计算设备的形式表现。电子设备12的组件可以包括但不限于:一个或者多个处理器16,存储装置28,连接不同系统组件(包括存储装置28和处理器16)的总线18。

总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry StandardArchitecture,ISA)总线,微通道体系结构(Micro Channel Architecture,MCA)总线,增强型ISA总线、视频电子标准协会(Video Electronics Standards Association,VESA)局域总线以及外围组件互连(Peripheral Component Interconnect,PCI)总线。

电子设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被电子设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。

存储装置28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(Random Access Memory,RAM)30和/或高速缓存存储器32。电子设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图7未显示,通常称为“硬盘驱动器”)。尽管图7中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如只读光盘(Compact Disc-Read Only Memory,CD-ROM)、数字视盘(Digital Video Disc-Read Only Memory,DVD-ROM)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储装置28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。

具有一组(至少一个)程序模块26的程序36,可以存储在例如存储装置28中,这样的程序模块26包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网关环境的实现。程序模块26通常执行本发明所描述的实施例中的功能和/或方法。

电子设备12也可以与一个或多个外部设备14(例如键盘、指向设备、摄像头、显示器24等)通信,还可与一个或者多个使得用户能与该电子设备12交互的设备通信,和/或与使得该电子设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,电子设备12还可以通过网关适配器20与一个或者多个网关(例如局域网(Local Area Network,LAN),广域网Wide Area Network,WAN)和/或公共网关,例如因特网)通信。如图所示,网关适配器20通过总线18与电子设备12的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、磁盘阵列(Redundant Arrays of Independent Disks,RAID)系统、磁带驱动器以及数据备份存储系统等。

处理器16通过运行存储在存储装置28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明上述实施例所提供的机器学习模型的处理方法。

实施例六

本发明实施例六提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例所提供的机器学习模型的处理方法。

当然,本发明实施例所提供的一种计算机可读存储介质,其上存储的计算机程序不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的机器学习模型的处理方法。

本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的源代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的源代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机源代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。源代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网关——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

相关技术
  • 机器学习模型的处理方法、装置、存储介质及电子设备
  • 机器学习模型的未分类样本处理方法、装置及电子设备
技术分类

06120112984913