今天詳細(xì)研究一下h2o flow
的操作流程壮锻,分析其中的關(guān)鍵步驟及界面要素湿故,為后續(xù)改造做準(zhǔn)備惊完。
首先
h2o flow
有點(diǎn)類似于jupyter
,是一個(gè)文本和代碼混合的編輯器邀跃,這個(gè)思想目前在我們系統(tǒng)中應(yīng)該不會(huì)去考慮霉咨!
導(dǎo)入文件(Import Files)
h2o
貌似支持導(dǎo)入多種文件格式,比如.gz
拍屑、.zip
途戒、.csv
、.txt
等等丽涩,也可以直接導(dǎo)入一個(gè)文件目錄棺滞。
我測(cè)試的時(shí)候,是直接使用.gz
文件矢渊,里面其實(shí)是一個(gè)mnist
的csv
文件继准。
系統(tǒng)在導(dǎo)入一個(gè)文件之后,會(huì)為這個(gè)文件生成另外一個(gè)后綴為.hex
的文件矮男,后續(xù)解析文件以及建模都依賴于此移必。
解析文件(Parse File)
前面的導(dǎo)入文件只是第一步,而這一步解析文件很關(guān)鍵毡鉴,一般情況下崔泵,h2o很智能秒赤,它知道怎么去解析文件,但是它也提供了解析文件的各種參數(shù)憎瘸,方便用戶選擇入篮。
下面描述一下這些參數(shù):
ID:就是之前說(shuō)的,系統(tǒng)會(huì)為導(dǎo)入的文件起一個(gè)后綴為
.hex
的名字幌甘,這個(gè)名字在這里可以修改潮售。-
Parser:這個(gè)解析器,我的理解就是對(duì)應(yīng)h2o支持的幾種文件格式
- AUTO:由h2o來(lái)自動(dòng)解析
- ARFF
- XLS
- XLSX
- CSV
- SVMLight
- ORC
- AVRO
- PARQUET
-
Separator:應(yīng)該指的就是文件內(nèi)列分隔的標(biāo)識(shí),一般像
csv
文件都是以,
分隔的。下面截幾個(gè)圖示意一下爽锥,h2o里支持的分隔符非常多。
Column Headers:列頭的解析規(guī)則肮帐,有的文件會(huì)在第一行標(biāo)明列名信息,以有則不會(huì)边器,所以需要設(shè)置一下训枢。h2o提供了參數(shù)選擇,根據(jù)實(shí)際情況選擇即可忘巧。
Options:其它一些參數(shù)配置肮砾,
Enable single quotes as a field quotation character
表示啟用單引號(hào)表示引用字符。Delete on done
應(yīng)該是指解析完之后就刪除導(dǎo)入數(shù)據(jù)袋坑,h2o建議是選中這個(gè)的。EDIT COLUMN NAMES AND TYPES:這個(gè)是非常重要的設(shè)置眯勾,需要告訴解析器文件中每一列的
列名
以及列的數(shù)據(jù)類型
枣宫。同樣一般情況下,如果沒(méi)有列名的話吃环,h2o會(huì)自增設(shè)置也颤,數(shù)據(jù)類型h2o也會(huì)自動(dòng)判斷,但是自動(dòng)判斷不見(jiàn)得都是正確的郁轻,最后用戶還是需要檢查一下翅娶,并將一些重要的列設(shè)置正確。比如對(duì)于分類問(wèn)題好唯,樣本的標(biāo)簽值一般都是數(shù)字竭沫,但是用戶需要在這里將其設(shè)置為枚舉
,即Enum
骑篙。
h2o
在解析文件時(shí)蜕提,會(huì)出來(lái)如下一個(gè)界面,顯示解析的進(jìn)度:
在
h2o
中靶端,基本每一個(gè)操作都會(huì)被當(dāng)成一個(gè)Job
谎势。
點(diǎn)擊View
之后:
可以看到數(shù)據(jù)集的詳情凛膏,并且用戶可以將標(biāo)簽列設(shè)置為枚舉,當(dāng)標(biāo)簽列設(shè)置為枚舉之后脏榆,h2o會(huì)出現(xiàn)針對(duì)分類標(biāo)簽的統(tǒng)計(jì)圖表:
上圖中的inspect
中文含義是“檢查”猖毫,可以理解為數(shù)據(jù)可視化,用戶可以配置不同的參數(shù)须喂,以查看到該標(biāo)簽列的數(shù)據(jù)分頁(yè)圖表吁断。
impute
有點(diǎn)像是糾錯(cuò)
的意思,用戶可以修改某一列具體取值的計(jì)算規(guī)則:
Column-C785+Method-Mean+Group By C1 C2镊折,我個(gè)人理解胯府,意思就是"把C785這一列的值,修改為依據(jù)C1和C2恨胚,取它們的平均值(Mean)"骂因。
Method
有三種取值:Mean(平均值),Median(中值)赃泡,Mode(取模)
構(gòu)建模型(Build Model)
第一步:選擇模型算法
由于我現(xiàn)在做的是mnist
示例寒波,所以我選擇Deep Learning
,當(dāng)選擇了深度學(xué)習(xí)算法之后升熊,會(huì)發(fā)現(xiàn)界面增加了大量的參數(shù)配置:
下面按照官方說(shuō)明俄烁,給出一些重要的參數(shù)說(shuō)明:
上圖主要是設(shè)置訓(xùn)練數(shù)據(jù)集
以及測(cè)試數(shù)據(jù)集
,還有最終的分類列级野,即上圖中的response_column
页屠。
activation:設(shè)置激活函數(shù)
hidden:設(shè)置隱藏層的維度及神經(jīng)元個(gè)數(shù),這里的
128,64
蓖柔,就表示設(shè)置了兩個(gè)隱藏層辰企,第一層有128
個(gè)神經(jīng)元,第二層有64
個(gè)神經(jīng)元epochs:這個(gè)應(yīng)該都能理解况鸣,就是訓(xùn)練的
輪數(shù)
variable_importance:變量重要性牢贸,這個(gè)我不懂,不亂說(shuō)
adaptive_rate:自適應(yīng)學(xué)習(xí)率镐捧,如果要手動(dòng)設(shè)置的話潜索,需要取消選中狀態(tài)
input_dropout_ratio:這是一個(gè)防止過(guò)擬合的參數(shù),這是設(shè)置輸入層的比率懂酱,因?yàn)檩斎雽又挥幸粋€(gè)竹习,所以這里設(shè)置一個(gè)就行了
hidden_dropout_ratios:同上,這是設(shè)置隱藏層的比率列牺,因?yàn)槲覀儎偛旁O(shè)置了隱藏層是兩個(gè)由驹,所以這里以逗號(hào)分隔
l1與l2:這也是防止過(guò)擬合的參數(shù),具體我不懂
這四個(gè)參數(shù)是設(shè)置early stop
的參數(shù),具體含義我不了解
這些參數(shù)是設(shè)置隨機(jī)因子
蔓榄、學(xué)習(xí)率
并炮、衰變率
、動(dòng)量因子
等甥郑,具體看解釋吧逃魄。
正式構(gòu)建模型
點(diǎn)擊Build Model
:
點(diǎn)擊上圖中的超鏈接:
可以看到h2o
為模型提供了大量的可視化數(shù)據(jù)展示,以及功能按鈕澜搅。上圖展示了對(duì)一個(gè)模型可以進(jìn)行的操作:
Refresh:刷新
Predict:預(yù)測(cè)
Download POJO:這個(gè)應(yīng)該是下載模型對(duì)象伍俘,具體下載下來(lái),會(huì)發(fā)現(xiàn)是一個(gè)
Java文件
勉躺,文件有3M
多癌瘾,大概10萬(wàn)
多行。Download Model Deployment Package(MOJO):一個(gè)壓縮包饵溅,我也不知道是什么東東妨退。
Export:將模型導(dǎo)出到指定路徑下。
Inspect:具體不知道蜕企。
Delete:刪除模型
Download Gen Model:一個(gè)可執(zhí)行的jar包咬荷。
下面仔細(xì)看看具體的模型結(jié)果展示信息:
第一個(gè)是模型參數(shù)信息,即前面在構(gòu)建模型前轻掩,所設(shè)置的自定義參數(shù):
下面這個(gè)不知道是什么意思幸乒,好像是把損失
取了一下對(duì)數(shù)進(jìn)行圖表展示,但不知道具體有什么含義唇牧。
下面這個(gè)是變量重要性
罕扎,意思應(yīng)該就是針對(duì)所有的特征列,它能計(jì)算出哪些對(duì)結(jié)果的影響更重要丐重,會(huì)對(duì)這些特征做一個(gè)重要性排序壳影。
這應(yīng)該就是一個(gè)訓(xùn)練的混淆矩陣
,行是真實(shí)分類弥臼,列是預(yù)測(cè)分類,就是結(jié)果的展示根灯,每個(gè)分類的錯(cuò)誤率有多少径缅。
這也是一個(gè)驗(yàn)證的混淆矩陣
,行是真實(shí)分類烙肺,列是預(yù)測(cè)分類纳猪,就是結(jié)果的展示,每個(gè)分類的錯(cuò)誤率有多少桃笙。
還有很多的模型結(jié)果展示氏堤,這里就不列舉了。
今天有一個(gè)問(wèn)題一直沒(méi)有搞明白,無(wú)論我怎么修改參數(shù)鼠锈,最終訓(xùn)練的輪數(shù)跟我設(shè)置的
epoch
都不一樣闪檬,而且小非常多,不知道為什么购笆。