发明内容
有鉴于此,有必要提供一种机器学习方法及系统。
本发明提供一种机器学习方法,该方法包括如下步骤:对来自不同数据源的数据进行预处理;对上述预处理后的数据进行特征提取以得到特征量;将上述特征提取的特征量转换为二进制文件格式进行存储;根据用户输入或选择的算法和参数,通过统一的接口将上述存储的二进制文件交给Hadoop系统或者GraphLab系统进行计算处理。
其中,该方法还包括:信息提示以及用户交互:所述信息提示指向用户展示当前系统的运行状态、运行进度,并提示用户进行相关的变量设置;所述用户交互包括:标准输入和配置文件输入两种方式。
该方法还包括:提供统一的接口。
该方法还包括:权限认证,通过身份认证的用户才能够使用该系统提供的服务。
所述数据包括:文本数据、视频数据及图数据;所述预处理包括:数据清洗、数据集成、数据规约。
本发明还提供一种机器学习系统,该系统包括预处理模块、特征提取模块、转换模块及处理模块,其中:所述预处理模块用于对来自不同数据源的数据进行预处理;所述特征提取模块用于对上述预处理后的数据进行特征提取以得到特征量;所述转换模块用于将上述特征提取的特征量转换为二进制文件格式进行存储;所述处理模块用于根据用户输入或选择的算法和参数,通过统一的接口将上述存储的二进制文件交给Hadoop系统或者GraphLab系统进行计算处理。
其中,该系统还包括交互模块用于:信息提示以及用户交互:所述信息提示指向用户展示当前系统的运行状态、运行进度,并提示用户进行相关的变量设置;所述用户交互包括:标准输入和配置文件输入两种方式。
该系统还包括接口封装模块用于:提供统一的接口。
该系统还包括认证模块用于:权限认证,通过身份认证的用户才能够使用该系统提供的服务。
所述数据包括:文本数据、视频数据及图数据;所述预处理包括:数据清洗、数据集成、数据规约。
本发明机器学习方法及系统,封装了Hadoop和GraphLab的所有功能,不仅能够处理易切分的普通数据集,还能够处理数据依赖性强的图数据,具有更多的选择和灵活性,而且提供更加简洁统一的接口,能够有效降低开发人员的学习难度。
具体实施方式
下面结合附图及具体实施例对本发明作进一步详细的说明。
参阅图1所示,是本发明机器学习方法较佳实施例的作业流程图。
步骤S401,对来自不同数据源的数据进行预处理。其中,所述数据包括:文本数据、视频数据及图数据。所述预处理包括:数据清洗、数据集成、数据规约。具体而言:
所述数据清洗指:剔除严重不完整的数据,比如文本数据中包含不完整的字段项,则直接删除该条记录。
所述数据规约指:将来自不同数据源的数据的格式进行统一:将每个文本数据转化为一行进行表达;将每条视频数据转换为一个文件进行存储;将图数据转化为通用的EdgeList格式,也即每行包含两个顶点、一条边以及该边的权值。
所述数据集成指:将规约后的来自不同数据源的数据集成到相同的数据文件中。
步骤S402,对上述预处理后的数据进行特征提取以得到特征量。具体而言:
对于所述文本数据、所述视频数据每行为一条记录,对于所述图数据则每行为一条边,以行为单位进行特征提取,最终将文本数据、视频数据、图数据都转化为数字形式表述。进一步地,对所述文本数据、所述视频数据及所述图数据处理如下:
文本数据特征提取:采用向量空间模型(Vector Space Model,VSM)提取出用于表达每条文本数据的数学量。
视频数据特征提取:通过灰度共生矩阵方法,将每条视频数据压缩为一个矩阵以表达该视频具有的数学本质。
图数据特征提取:将不同含义的图数据抽象为图的顶点和边,从而得到数学意义上的抽象图。比如将人抽象为顶点,将人与人之间的关系抽象为边,从而得到人际关系的数学抽象。
步骤S403,将上述特征提取的特征量转换为二进制文件格式进行存储。这是由于海量数据的读写在大规模数据分析中往往是性能瓶颈之一,高效的压缩文件格式能够节约读写时间,提高运行效率和性能。
步骤S404,信息提示以及用户交互。所述信息提示指向用户展示当前系统的运行状态、运行进度,并提示用户进行相关的变量设置:选择想要使用的算法和平台。所述用户交互包括:标准输入和配置文件输入两种方式。所述标准输入指通过键盘输入,所述配置文件输入指通过编辑XML格式的配置文件来控制变量信息。
步骤S405,根据用户交互时的输入或选择,对上述以字符格式存储的数据,也即二进制文件,进行计算处理。
通过步骤S404的用户交互,确定需要使用的算法和参数,然后通过统一的接口将计算任务交互给Hadoop系统或者GraphLab系统进行计算。如图2所示Dolphin部件提供任务分发、参数转换、接口转换、任务管理、多线程加速等功能。当任务到来时,它根据用户选定的平台和算法,决定将任务分发给哪个底层系统进行处理;然后从用户设定的变量中解析参数,并且将参数转化为一个统一的字符串格式;并且将任务记录在数据库中,以备能够查询其进度和必要时停止;当有多个任务同时开启时,可以开启多个线程,每个线程负责对一个任务进行管理。图2中OS是操作系统,JDK是基于java技术的开发套件,Hadoop是基于可分割数据流的大数据处理系统,Mahout是基于Hadoop开发的一套机器学习算法库,GraphLab是基于图模型的机器学习系统。
步骤S406,为本发明提供统一的接口,对下层的Hadoop以及GraphLab进行进一步抽象,从而避免开发者必须学习两种不同的模型和两套完全不同的编程接口,降低了学习难度。
首先按照两种系统提供的算法功能将其分为分类、聚类、预测、关联分析四类,然后分别对于每一类功能都按照具体算法名称构造新函数,最后将所有函数的参数转化为字符串形式进行统一。
步骤S407,权限认证,使得通过身份认证的用户才能够使用该系统提供的服务,从而保证了系统安全。本实施例由图2中Tomcat和RESTfulAPI构成。该步骤基于Tomcat容器实现。将本发明部署在Tomcat容器内,并且基于广泛应用的HTTP协议,实现了如下RESTfulAPI:
<protocol>://<ip>:<port>/<website>/<service>!<method>?<uid>=<val ue>&<token>=<value>&<paramters>=<value>
其中,protocol可以是http或者https,website为部署时选定的名称,service为用户设定的平台和算法,method是相关调用函数,而uid和token用于用户身份验证,parameters是用户交互提供的计算参数。用户通过发起HTTP请求即可直接调用该服务。
参阅图2所示,是本发明机器学习系统的硬件架构图。该系统包括预处理模块、特征提取模块、转换模块、交互模块、处理模块、接口封装模块及认证模块。
所述预处理模块用于对来自不同数据源的数据进行预处理。其中,所述数据包括:文本数据、视频数据及图数据。所述预处理包括:数据清洗、数据集成、数据规约。具体而言:
所述数据清洗指:剔除严重不完整的数据,比如文本数据中包含不完整的字段项,则直接删除该条记录。
所述数据规约指:将来自不同数据源的数据的格式进行统一:将每个文本数据转化为一行进行表达;将每条视频数据转换为一个文件进行存储;将图数据转化为通用的EdgeList格式,也即每行包含两个顶点、一条边以及该边的权值。
所述数据集成指:将规约后的来自不同数据源的数据集成到相同的数据文件中。
所述特征提取模块用于对上述预处理后的数据进行特征提取以得到特征量。具体而言:
对于所述文本数据、所述视频数据每行为一条记录,对于所述图数据则每行为一条边,以行为单位进行特征提取,最终将文本数据、视频数据、图数据都转化为数字形式表述。进一步地,对所述文本数据、所述视频数据及所述图数据处理如下:
文本数据特征提取:采用向量空间模型(Vector Space Model,VSM)提取出用于表达每条文本数据的数学量。
视频数据特征提取:通过灰度共生矩阵方法,将每条视频数据压缩为一个矩阵以表达该视频具有的数学本质。
图数据特征提取:将不同含义的图数据抽象为图的顶点和边,从而得到数学意义上的抽象图。比如将人抽象为顶点,将人与人之间的关系抽象为边,从而得到人际关系的数学抽象。
所述转换模块用于将上述特征提取的特征量转换为二进制文件格式进行存储。这是由于海量数据的读写在大规模数据分析中往往是性能瓶颈之一,高效的压缩文件格式能够节约读写时间,提高运行效率和性能。
所述交互模块用于提供信息提示以及用户交互。所述信息提示指向用户展示当前系统的运行状态、运行进度,并提示用户进行相关的变量设置:选择想要使用的算法和平台。所述用户交互包括:标准输入和配置文件输入两种方式。所述标准输入指通过键盘输入,所述配置文件输入指通过编辑XML格式的配置文件来控制变量信息。
所述处理模块用于对上述以字符格式存储的数据,也即二进制文件,根据用户交互时的输入或选择进行计算处理。
通过所述交互模块的用户交互,确定需要使用的算法和参数,然后通过统一的接口将计算任务交互给Hadoop系统或者GraphLab系统进行计算。如图2所示Dolphin部件提供任务分发、参数转换、接口转换、任务管理、多线程加速等功能。当任务到来时,它根据用户选定的平台和算法,决定将任务分发给哪个底层系统进行处理;然后从用户设定的变量中解析参数,并且将参数转化为一个统一的字符串格式;并且将任务记录在数据库中,以备能够查询其进度和必要时停止;当有多个任务同时开启时,可以开启多个线程,每个线程负责对一个任务进行管理。图2中OS是操作系统,JDK是基于java技术的开发套件,Hadoop是基于可分割数据流的大数据处理系统,Mahout是基于Hadoop开发的一套机器学习算法库,GraphLab是基于图模型的机器学习系统。
所述接口封装模块用于为本发明提供统一的接口,对下层的Hadoop以及GraphLab进行进一步抽象,从而避免开发者必须学习两种不同的模型和两套完全不同的编程接口,降低了学习难度。
首先按照两种系统提供的算法功能将其分为分类、聚类、预测、关联分析四类,然后分别对于每一类功能都按照具体算法名称构造新函数,最后将所有函数的参数转化为字符串形式进行统一。
所述认证模块用于权限认证,使得通过身份认证的用户才能够使用该系统提供的服务,从而保证了系统安全。本实施例由图2中Tomcat和RESTful API构成。该步骤基于Tomcat容器实现。将本发明部署在Tomcat容器内,并且基于广泛应用的HTTP协议,实现了如下RESTfulAPI:
<protocol>://<ip>:<port>/<website>/<service>!<method>?<uid>=<val ue>&<token>=<value>&<paramters>=<value>
其中,protocol可以是http或者https,website为部署时选定的名称,service为用户设定的平台和算法,method是相关调用函数,而uid和token用于用户身份验证,parameters是用户交互提供的计算参数。用户通过发起HTTP请求即可直接调用该服务。
本发明封装了Hadoop系统和GraphLab系统的所有功能,比仅仅使用Hadoop系统或者GraphLab系统具有更多的选择和灵活性。其次本发明提供了统一简洁的接口,隐藏了两种系统的复杂度,从而避免了开发人员需要学习两种完全不同的系统,极大的降低了学习难度。再次基于RESTful的服务使得该机器学习系统能够无缝迁移到几乎所有平台上,适用性广。另外,本发明提出的机器学习系统能够处理文本、视频、图数据等多种异构数据,具有明显优势。
虽然本发明参照当前的较佳实施方式进行了描述,但本领域的技术人员应能理解,上述较佳实施方式仅用来说明本发明,并非用来限定本发明的保护范围,任何在本发明的精神和原则范围之内,所做的任何修饰、等效替换、改进等,均应包含在本发明的权利保护范围之内。