开源分布式挖掘平台介绍

由于项目中的机器学习系统集成了一个名为H2O的开源项目,顺便对其进行了学习了解。H2O是一个开源的、分布式的机器学习平台,可以支持深度学习、线性回归、k-means聚类等算法,支持R、Python接口调用,同时也提供界面化的模型训练和验证的交互过程(Flow),通过这个界面可以在不编写代码的情况下完成数据导入、模型训练、模型验证、模型导出等操作。下图是官方的系统架构图:
开源分布式挖掘平台介绍
从上图可以看出,

  • 平台可以支持多种数据来源,尤其是可以与HDFS接入的能力,可以让数据导入、数据预处理的过程更加方便;
  • 平台计算引擎支持R和Python,可以非常方便的调用平台功能,完成模型训练及应用;

在实际项目中,基于法人数据完成了一个聚类模型的训练及验证,过程如下:

  • 导入数据。从hive中导入法人表,包括从hdfs中导入文件、建立文件解析器、导入数据等几个步骤;
  • 建立训练数据集、验证数据集。利用平台的切割数据集命令,基于导入数据建立了两个数据集;
  • 构建kmeans聚类算法,核心参数包括指定训练和验证数据集、需要聚类的类别数量(15)、聚类忽略的特征字段(利用行业类别、经济类型、行政区划等特征字段)等;
  • 验证模型,用上面构建出来的模型,跑一个新的数据集,这里模拟验证了测试数据集。实际应用当中,会定期跑增量数据,完成增量数据的预测;

通过上述几个步骤,就可以完成一个模型的训练和验证,以及模拟应用模型的过程,在这个过程中,除了输入参数之外,其它都是通过交互式的过程完成,不需要手工编写一行代码,非常便捷。构建好的模型如下图:
开源分布式挖掘平台介绍
此外,在构建模型的过程中,训练和验证是一个反复迭代的过程,可以在界面中直接修改相关参数、执行、查看结果,是一个增量式的过程,可以在已有成果的基础上进行后续操作。比如,聚类算法的类别数量15不合适,可以直接修改buildModel的参数为20,然后单步执行buildModel即可:
开源分布式挖掘平台介绍
对于这个可视化界面的缺陷,主要的改进点有两个:

  • 第一,对数据操纵的功能太少,只能显示出100条样本数据,不支持对导入或预测结果数据集进行过滤、汇总等操作,从而对于在模型训练过程中,需要对训练结果进行分析的时候,必须通过其它途径进行处理;
  • 第二,不支持对数据进行可视化分析,例如在聚类算法中,若能将聚类结果形成散点图,则可以更加方便地对数据集及模型训练结果进行分析;