H2O操作记录 mnist深度学习

今天详细研究一下h2o flow的操作流程,分析其中的关键步骤及界面要素,为后续改造做准备。

首先h2o flow有点类似于jupyter,是一个文本和代码混合的编辑器,这个思想目前在我们系统中应该不会去考虑!

2018-05-07-15-29-30.jpg

导入文件(Import Files)

h2o貌似支持导入多种文件格式,比如.gz.zip.csv.txt等等,也可以直接导入一个文件目录。

我测试的时候,是直接使用.gz文件,里面其实是一个mnistcsv文件。

系统在导入一个文件之后,会为这个文件生成另外一个后缀为.hex的文件,后续解析文件以及建模都依赖于此。

解析文件(Parse File)

前面的导入文件只是第一步,而这一步解析文件很关键,一般情况下,h2o很智能,它知道怎么去解析文件,但是它也提供了解析文件的各种参数,方便用户选择。

2018-05-07-15-46-46.jpg

下面描述一下这些参数:

  • ID:就是之前说的,系统会为导入的文件起一个后缀为.hex的名字,这个名字在这里可以修改。

  • Parser:这个解析器,我的理解就是对应h2o支持的几种文件格式

    • AUTO:由h2o来自动解析
    • ARFF
    • XLS
    • XLSX
    • CSV
    • SVMLight
    • ORC
    • AVRO
    • PARQUET
  • Separator:应该指的就是文件内列分隔的标识,一般像csv文件都是以,分隔的。下面截几个图示意一下,h2o里支持的分隔符非常多。

    2018-05-07-16-04-31.jpg

    2018-05-07-16-05-34.jpg

  • Column Headers:列头的解析规则,有的文件会在第一行标明列名信息,以有则不会,所以需要设置一下。h2o提供了参数选择,根据实际情况选择即可。

  • Options:其它一些参数配置,Enable single quotes as a field quotation character表示启用单引号表示引用字符。Delete on done应该是指解析完之后就删除导入数据,h2o建议是选中这个的。

  • EDIT COLUMN NAMES AND TYPES:这个是非常重要的设置,需要告诉解析器文件中每一列的列名以及列的数据类型。同样一般情况下,如果没有列名的话,h2o会自增设置,数据类型h2o也会自动判断,但是自动判断不见得都是正确的,最后用户还是需要检查一下,并将一些重要的列设置正确。比如对于分类问题,样本的标签值一般都是数字,但是用户需要在这里将其设置为枚举,即Enum

h2o在解析文件时,会出来如下一个界面,显示解析的进度:

2018-05-07-16-22-00.jpg

h2o中,基本每一个操作都会被当成一个Job

点击View之后:

2018-05-07-16-22-57.jpg

可以看到数据集的详情,并且用户可以将标签列设置为枚举,当标签列设置为枚举之后,h2o会出现针对分类标签的统计图表:

2018-05-07-16-25-14.jpg

上图中的inspect中文含义是“检查”,可以理解为数据可视化,用户可以配置不同的参数,以查看到该标签列的数据分页图表。

2018-05-07-16-35-55.jpg

2018-05-07-16-36-24.jpg

2018-05-07-16-36-49.jpg

impute有点像是纠错的意思,用户可以修改某一列具体取值的计算规则:

2018-05-07-16-45-28.jpg

Column-C785+Method-Mean+Group By C1 C2,我个人理解,意思就是"把C785这一列的值,修改为依据C1和C2,取它们的平均值(Mean)"。

Method有三种取值:Mean(平均值),Median(中值),Mode(取模)

构建模型(Build Model)

第一步:选择模型算法

2018-05-07-16-59-21.jpg

2018-05-07-16-59-36.jpg

由于我现在做的是mnist示例,所以我选择Deep Learning,当选择了深度学习算法之后,会发现界面增加了大量的参数配置:

2018-05-07-17-02-48.jpg

2018-05-07-17-04-18.jpg

2018-05-07-17-04-45.jpg

2018-05-07-17-05-02.jpg

2018-05-07-17-05-36.jpg

下面按照官方说明,给出一些重要的参数说明:

2018-05-07-17-23-23.jpg

上图主要是设置训练数据集以及测试数据集,还有最终的分类列,即上图中的response_column

2018-05-07-17-24-37.jpg
  • activation:设置激活函数

  • hidden:设置隐藏层的维度及神经元个数,这里的128,64,就表示设置了两个隐藏层,第一层有128个神经元,第二层有64个神经元

  • epochs:这个应该都能理解,就是训练的轮数

  • variable_importance:变量重要性,这个我不懂,不乱说

2018-05-07-17-28-37.jpg
  • adaptive_rate:自适应学习率,如果要手动设置的话,需要取消选中状态

  • input_dropout_ratio:这是一个防止过拟合的参数,这是设置输入层的比率,因为输入层只有一个,所以这里设置一个就行了

  • hidden_dropout_ratios:同上,这是设置隐藏层的比率,因为我们刚才设置了隐藏层是两个,所以这里以逗号分隔

  • l1与l2:这也是防止过拟合的参数,具体我不懂

2018-05-07-17-33-39.jpg

2018-05-07-17-34-02.jpg

这四个参数是设置early stop的参数,具体含义我不了解

2018-05-07-17-35-19.jpg

这些参数是设置随机因子学习率衰变率动量因子等,具体看解释吧。

正式构建模型

点击Build Model

2018-05-07-17-37-36.jpg

2018-05-07-19-12-25.jpg

点击上图中的超链接:

2018-05-07-17-42-27.jpg

可以看到h2o为模型提供了大量的可视化数据展示,以及功能按钮。上图展示了对一个模型可以进行的操作:

  • Refresh:刷新

  • Predict:预测

  • Download POJO:这个应该是下载模型对象,具体下载下来,会发现是一个Java文件,文件有3M多,大概10万多行。

  • Download Model Deployment Package(MOJO):一个压缩包,我也不知道是什么东东。

  • Export:将模型导出到指定路径下。

  • Inspect:具体不知道。

2018-05-07-18-32-06.jpg
  • Delete:删除模型

  • Download Gen Model:一个可执行的jar包。

下面仔细看看具体的模型结果展示信息:

第一个是模型参数信息,即前面在构建模型前,所设置的自定义参数:

2018-05-07-18-09-47.jpg

下面这个不知道是什么意思,好像是把损失取了一下对数进行图表展示,但不知道具体有什么含义。

2018-05-07-19-28-46.jpg

下面这个是变量重要性,意思应该就是针对所有的特征列,它能计算出哪些对结果的影响更重要,会对这些特征做一个重要性排序。

2018-05-07-19-29-14.jpg

这应该就是一个训练的混淆矩阵,行是真实分类,列是预测分类,就是结果的展示,每个分类的错误率有多少。

2018-05-07-19-29-42.jpg

这也是一个验证的混淆矩阵,行是真实分类,列是预测分类,就是结果的展示,每个分类的错误率有多少。

2018-05-07-19-30-03.jpg

还有很多的模型结果展示,这里就不列举了。

今天有一个问题一直没有搞明白,无论我怎么修改参数,最终训练的轮数跟我设置的epoch都不一样,而且小非常多,不知道为什么。

你可能感兴趣的:(H2O操作记录 mnist深度学习)