机器学习模型的构建的制作方法

文档序号:17466592发布日期:2019-04-20 05:33阅读:211来源:国知局
本公开涉及数据库
技术领域
:,尤其涉及一种机器学习模型的构建方法及装置。
背景技术
::spark是一种分布式计算框架,提供了一个全面、统一的框架用于管理有着不同性质(文本数据、图表数据等)的数据集和数据源(批量数据或者实时的流数据)的大数据处理的需求。sparksql是一种基于spark的分布式sql(structuredquerylanguage,结构化查询语言)查询引擎,使用sparksql可以对超大数据集进行查询、统计和分析。sparkmllib(machinelearninglib,机器学习库)是一种基于spark的机器学习库,由一些通用的学习算法和工具组成,包括分类、回归、聚类、协同过滤以及降维等。同时,sparkmllib还包括底层的优化原语和高层的管道api(applicationprogramminginterface,应用程序编程接口),提供了scala、python以及java等语言的api,可以通过api进行模型训练和预测。技术实现要素:有鉴于此,本公开提出了一种机器学习模型的构建方法及装置,能够提升机器学习的便捷性和易用性。根据本公开的一方面,提供了一种机器学习模型的构建方法,包括:对接收的sql语句进行语法解析,提取函数名;若所述函数名映射到训练函数,则从所述sql语句中获取初始参数、训练字段标识和训练数据表标识;从sparkmllib中获取与所述函数名对应的算法,并采用所述初始参数初始化所述算法,得到初始模型;根据所述训练字段标识,从所述训练数据表标识对应的训练数据表中提取数据,作为训练数据;采用所述训练数据对所述初始模型进行训练,得到与所述函数名对应的机器学习模型。根据本公开的另一方面,提供了一种机器学习模型的构建装置,包括执行计划模块和数据存储模块,所述执行计划模块用于对接收的sql语句进行语法解析,提取函数名;若所述函数名映射到训练函数,则从所述sql语句中获取初始参数、训练字段标识和训练数据表标识;从sparkmllib中获取与所述函数名对应的算法,并采用所述初始参数初始化所述算法,得到初始模型;根据所述训练字段标识,从所述数据存储模块中所述训练数据表标识对应的训练数据表中提取数据,作为训练数据;采用所述训练数据对所述初始模型进行训练,得到与所述函数名对应的机器学习模型。根据本公开的另一方面,提供了一种机器学习模型的构建装置包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行上述方法。根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。根据本公开各方面实施例的机器学习模型的构建方法及装置能够从sparkmllib中调用算法并进行模型训练,通过纯sql的方式得到对应的机器学习模型,相较于通过api接口的方式进行机器学习,省去了大量的编程工作,提升了机器学习的便利性和易用性。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。附图说明包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。图1示出根据本公开一实施例的机器学习模型的构建方法的流程图。图2示出根据本公开一实施例的数据库服务器的架构示意图。图3示出根据本公开一实施例的机器学习模型的构建方法的流程图。图4示出根据本公开一实施例的机器学习模型的构建方法的流程图。图5示出根据本公开一实施例的机器学习模型的构建装置的框图。图6示出根据本公开一实施例的机器学习模型的构建装置的框图。具体实施方式以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。图1示出根据本公开一实施例的机器学习模型的构建方法的流程图。该方法可以由数据库服务器执行,如图1所示,该机器学习模型的构建方法包括:s11,对接收的sql语句进行语法解析,提取函数名。sql指结构化查询语言,是一种数据库查询和程序设计语言,用于访问数据库系统。对数据库的访问操作可以包括:对数据的增加、删除、读取和更改等,可以通过sql语句来实现上述访问操作。sql语句是一种描述性的语言,指明了访问任务,数据库服务器需要根据sql语句指定一个执行计划,该执行计划表明了如何完成所述访问任务。在一种可能的实现方式中,数据库服务器可以从客户端接收sql语句,客户端可以部署在所述数据库服务器上,也可以部署在其他服务器上,对此本公开不做限制。在一个示例中,客户端获取sql语句的方式可以是客户端获取输入框中的sql语句。数据库服务器是建立在数据库系统基础上的服务器,可以由运行在局域网中的一个或者多个服务器和数据库管理系统管理软件共同组成,数据库服务器可以为客户端提供数据服务。在本公开实施例中,数据库服务器具有sql语句解析能力,能够将sql语句切分为语句块,确定出执行顺序,形成执行计划。在一个示例中,数据库服务器可以部署sparksql模块,由该sparksql模块能够进行sql语句的解析,对大数据集进行查询、统计和分析。图2示出根据本公开一实施例的数据库服务器的架构示意图。如图2所示,数据库服务器包括模型存储模块、数据存储模块和执行计划模块等。在一种可能的实现方式中,数据库服务器可以先对sql语句进行预处理得到标准sql语句,再对标准sql语句进行语法解析,提取函数名。在一个示例中,预处理可以包括消除sql语句前后的空格,将sql语句中的连续空白字符(包括空格,tab和回车换行)替换成单个空格,统一sql语句的大小写(将sql语句全变成小写形式或者大写形式),在sql语句的尾后加上结束符号“endofsql”等。数据库服务器对sql语句进行语法解析的过程中,可以将sql语句进行拆分,并确定出每一部分的含义,在此过程中数据库服务器可以提取出函数名。机器学习函数可以用于表示机器学习中采用的函数。若上述从sql语句中提取的函数名映射到了机器学习函数,表明将要进行机器学习。在一个示例中,机器学习函数可以为自定义的函数。在一种可能的实现方式中,机器学习函数包括训练函数和预测函数两种类型。其中,使用训练函数来完成训练机器学习模型的相关命令;使用预测函数来完成采用已有机器学习模型进行预测的相关命令。需要说明的是,训练函数和预测函数仅为机器学习函数的一个示例,机器学习函数还可以是机器学习过程中可能用到的其他函数,对此本公开不做限制。由于不同类型的机器学习函数,获取的数据、对数据的处理过程,得到的结果不同,因此,数据库服务器可以基于机器学习函数的类型,生成不同的执行计划。在一种可能的实现方式中,数据库服务器中存储有机器学习函数的函数类型和函数名的映射信息,则数据库服务器可以根据从sql语句中提出的函数名来查找对应的机器学习函数的函数类型,以指定相应的执行计划,例如,若为训练函数,则指定训练机器学习模型的执行计划;若为预测函数,则指定采用已有机器学习模型进行预测的执行计划。其中,训练函数对应的执行计划可以如下步骤s12-s15所述。s12,若所述函数名映射到训练函数,则从所述sql语句中获取初始参数、训练字段标识和训练数据表标识。所述训练函数为训练机器学习模型的函数。训练函数表示一类函数,训练函数可以包括多个用于训练不同的机器学习模型的函数,这些函数可以根据需要添加、修改和删除,对此本公开不做限制。初始参数可以用于表示模型初始化过程中所采用的模型参数,初始参数可以根据需要进行设置,对此本公开不做限制。如图2所示,数据存储模块存储有训练数据表,训练数据表中的数据可以用于训练机器学习模型。通过训练数据表标识可以识别训练数据表。训练字段为训练机器学习模型的数据在训练数据表中对应的字段,通过训练字段标识可以识别训练字段。s13,从sparkmllib中获取与所述函数名对应的算法,并采用所述初始参数初始化所述算法,得到初始模型。在一种可能的实现方式中,数据库服务器存储有训练函数的函数名和算法路径(算法路径可以用于表示sparkmllib中某个算法的调用位置,例如,算法所属类的位置)的对应关系,数据库服务器可以通过查找该对应关系,确定所述函数名对应的算法路径,并按照所述算法路径,从sparkmllib中获取与所述函数名对应的算法。s14,根据所述训练字段标识,从所述训练数据表标识对应的训练数据表中提取数据,作为训练数据。数据库服务器可以根据训练数据表标识确定训练数据表,并从该训练数据表中训练字段标识对应的字段中提取数据,作为训练数据。s15,采用所述训练数据对所述初始模型进行训练,得到与所述函数名对应的机器学习模型。在一种可能的实现方式中,数据库服务器可以根据算法类型确定对初始模型进行有监督训练还是无监督训练。在一个示例中,对于sql语句selectlogisticregression('lr_model_t01',label,col1,col2,col3,'-maxiter20')frommltable,数据库服务器提取函数名为logisticregression。假设函数名logisticregression映射到训练函数,则数据库服务器从该sql语句中获取-maxiter20作为初始参数,label、col1、col2和col3作为训练字段标识,mltable作为训练数据表标识。数据库服务器可以从sparkmllib中获取函数名logisticregression对应的算法。假设,训练字段标识label、col1、col2和col3分别对应于label、col1、col2和col3字段,训练数据表标识mltable对应于mltable表,函数名logisticregression对应于logisticregression算法,数据库服务器可以采用初始参数-maxiter20初始化logisticregression算法,得到初始模型,从mltable表的label、col1、col2和col3字段提取数据,作为训练数据,采用训练数据对初始模型进行训练,得到与函数名logisticregression对应的机器学习模型。本公开实施例通过sql的方式进行机器学习,相较于通过api接口的方式进行机器学习,省去了大量的编程工作,提升了机器学习的便利性和易用性。另外,jdbc(javadatabaseconnectivity,java数据库连接)是一种用于执行sql语句的javaapi,可以为多种关系数据库提供统一访问,它由一组用java语言编写的类和接口组成。jdbc提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。sparksql本身可以通过jdbc标准接口进行调用,根据本公开实施例的机器学习模型的构建方法将机器学习的过程sql化后,也就能通过jdbc标准接口进行调用,提高了标准化程度。在一种可能的实现方式中,数据库服务器可以将通过训练得到的机器学习模型存储在hdfs文件系统上。hdfs(hadoopdistributedfilesystem,分布式文件系统)是一种适合运行在通用硬件上的分布式文件系统,容错性和吞吐量较高,适合大规模数据集上的应用。由于模型文件较大,因此模型文件可以存储在hdfs上,数据服务器可以直接从hdfs文件系统调用机器学习模型。如图2所示,hdfs文件系统可以部署在模型存储模块中。在一种可能的实现方式中,数据库服务器可以生成与所述机器学习模型对应的模型表,所述模型表中记录有所述机器学习模型的位置信息和参数信息。其中,位置信息可以用于表示机器学习模型在hdfs的存储位置。数据库服务器可以根据位置信息快速调取机器学习模型,避免了在hdfs文件系统庞大的数据中查找匹配的过程,提升了机器学习模型的调取速度。参数信息可以用于表示模型内部的配置变量,可以定义模型的功能。例如人造神经网络中的权重、支持向量机中的支持向量、线性回归或逻辑回归中的系数、k均值算法中的k值等。数据库服务器可以根据参数信息管理机器学习模型。在一个示例中,如图2所示,模型表可以存储在数据存储模块中。在一种可能的实现方式中,若所述函数名映射到训练函数,数据库服务器还可以从sql语句中获取模型表标识,生成与该模型表标识对应的模型表,并将所述机器学习模型的位置信息和参数信息记录在该模型表标识对应的模型表中。在一个示例中,对于sql语句selectlogisticregression('lr_model_t01',label,col1,col2,col3,'-maxiter20')frommltable,数据库服务器可以生成模型表标识为lr_model_t01的模型表,并将机器学习模型的位置信息和参数信息记录在该模型表标识为lr_model_t01的模型表中。图3示出根据本公开一实施例的机器学习模型的构建方法的流程图。如图3所示,在提取函数名之后,所述机器学习模型的构建方法还包括:s16,根据所述函数名查询函数名和函数类型的映射表,确定所述函数名对应的函数类型,所述函数类型包括训练函数和预测函数。若未查找到提取的函数名,则数据库服务器指定执行计划模块中一个已有的执行计划,并执行。若对应的函数类型为训练函数,则执行上述步骤s12-s15所示的执行计划;若对应的函数类型为预测函数,则执行下述图4所示流程对应的执行计划。图4示出根据本公开一实施例的机器学习模型的构建方法的流程图。如图4所示,该机器学习模型的构建方法还包括:s17,若所述函数名映射到预测函数,则从所述sql语句中获取模型表标识、预测字段标识和预测数据表标识。模型表标识可以用于识别模型表,模型表标识可以为模型表名。如图2所示,数据库服务器可以根据模型表标识从数据存储模块中获取对应的模型表,从该模型表中,获取机器学习模型的位置信息,根据所述位置信息加载机器学习模型。在一种可能的实现方式中,如图2所示,预测数据表存储在数据库服务器的数据存储模块中。s18,根据所述预测字段标识,从所述预测数据表标识对应的预测数据表中提取数据,作为测试数据。数据库服务器可以根据预测数据表标识确定预测数据表,并该预测数据表中预测字段标识对应的字段中提取数据,作为测试数据。s19,从所述模型表标识对应的模型表中,获取机器学习模型的位置信息,并根据所述位置信息加载机器学习模型。s20,将所述测试数据输入所加载的机器学习模型中,得到预测数据。在一个示例中,对于sql语句为selectlogisticregressionprediction('lr_model_t01',col1,col2,col3,'id','pred01')frommltable,数据库服务器提取函数名为logisticregressionprediction。假设函数名logisticregressionprediction映射到预测函数,则数据库服务器从该sql语句中获取lr_model_t01作为模型表标识,col1、col2和col3作为预测字段标识,mltable作为预测数据表标识。假设模型表标识lr_model_t01对应于lr_model_t01表,预测字段标识col1、col2和col3分别对应于col1、col2和col3字段,预测数据表标识mltable对应于mltable表,数据库服务器可以采用从mltable表的col1、col2和col3字段提取数据,作为测试数据,从lr_model_t01表中获取机器学习模型的位置信息,并根据该位置信息加载机器学习模型,将测试数据输入所加载的机器学习模型中,得到预测数据。本公开实施例通过sql的方式进行机器学习中的预测,相较于api接口的方式省去了大量的编程工作,提升了机器学习的便利性和易用性。在一种可能的实现方式中,sql语句还包括关联标识,数据库服务器还可以从sql语句中获取关联标识。在得到预测数据后,生成预测结果表,在所述预测结果表中存储所述预测数据,并通过所述关联标识对所述预测结果表和所述测试数据所属预测数据表进行关联。这样,可以建立预测数据表和预测结果表之间的关联,方便后续对机器学习模型的评估、对比等。在一个示例中,sql语句为selectlogisticregressionprediction('lr_model_t01',col1,col2,col3,'id','pred01')frommltable,数据库服务器可以从预测数据表标识为mltable的预测数据表获取测试数据,将测试数据输入机器学习模型得到预测数据,将预测数据存储在预测结果表标识为pred01的预测结果表中。数据库服务器可以获取id作为关联标识,通过id关联预测数据表标识为mltable的预测数据表和预测结果表标识为pred01的预测结果表。图5示出根据本公开一实施例的机器学习模型的构建装置的框图。如图5所示,该机器学习模型的构建装置500包括执行计划模块501和数据存储模块502,所述执行计划模块用于:对接收的sql语句进行语法解析,提取函数名;若所述函数名映射到训练函数,则从所述sql语句中获取初始参数、训练字段标识和训练数据表标识;从sparkmllib中获取与所述函数名对应的算法,并采用所述初始参数初始化所述算法,得到初始模型;根据所述训练字段标识,从所述数据存储模块502中所述训练数据表标识对应的训练数据表中提取数据,作为训练数据;采用所述训练数据对所述初始模型进行训练,得到与所述函数名对应的机器学习模型。在一种可能的实现方式中,所述执行计划模块501还用于:根据所述函数名查询函数名和函数类型的映射表,确定所述函数名对应的函数类型,所述函数类型包括训练函数和预测函数,所述预测函数为采用机器学习模型进行预测的函数。在一种可能的实现方式中,该机器学习模型的构建装置500还包括模型存储模块503,所述执行计划模块501还用于将所述机器学习模型存储在所述模型存储模块503的hdfs文件系统上。在一种可能的实现方式中,所述执行计划模块501还用于生成与所述机器学习模型对应的模型表,所述模型表中记录有所述模型存储模块503存储所述机器学习模型的位置信息和参数信息,所述模型表存储在所述数据存储模块502中。在一种可能的实现方式中,所述执行计划模块501还用于若所述函数名映射到预测函数,则从所述sql语句中获取模型表标识、预测字段标识和预测数据表标识;根据所述预测字段标识,从所述数据存储模块502中所述预测数据表标识对应的预测数据表中提取数据,作为测试数据;从所述数据存储模块502中所述模型表标识对应的模型表中,获取所述模型存储模块503存储所述机器学习模型的位置信息,并根据所述位置信息加载机器学习模型;将所述测试数据输入所加载的机器学习模型中,得到预测数据。在一种可能的实现方式中,所述sql语句还包括关联标识,所述执行计划模块501还用于生成预测结果表,在所述预测结果表中存储所述预测数据,并通过所述关联标识对所述预测结果表和所述测试数据所属预测数据表进行关联,所述预测结果表存储在所述数据存储模块502中。通过对接收的sql语句进行语法解析,提取函数名,若所述函数名映射到训练函数,则从所述sql语句中获取初始参数、训练字段标识和训练数据表标识,从sparkmllib中获取与所述函数名对应的算法,并采用所述初始参数初始化所述算法,得到初始模型;根据所述训练字段标识,从所述训练数据表标识对应的训练数据表中提取数据,作为训练数据;采用所述训练数据对所述初始模型进行训练,得到与所述函数名对应的机器学习模型,根据本公开实施例的机器学习模型的构建装置能够从sparkmllib中调用算法并进行模型训练,通过纯sql的方式得到对应的机器学习模型,相较于通过api接口的方式进行机器学习,省去了大量的编程工作,提升了机器学习的便利性和易用性。图6是根据一示例性实施例示出的一种用于机器学习模型的构建装置900的框图。参照图6,该装置900可包括处理器901、存储有机器可执行指令的机器可读存储介质902。处理器901与机器可读存储介质902可经由系统总线903通信。并且,处理器901通过读取机器可读存储介质902中与机器学习模型的构建逻辑对应的机器可执行指令以执行上文所述的机器学习模型的构建方法。本文中提到的机器可读存储介质902可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:ram(radomaccessmemory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本
技术领域
:的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本
技术领域
:的其它普通技术人员能理解本文披露的各实施例。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1