-
关于AutoML
在机器学习ML的实践中,参数是其中一个很重要的环节,学习的初始阶段参数怎么给,是默认值,随机值,还是有特点规律的参数,学习过程中,参数怎么调整,参数规模等等一序列的问题,是ML绕不过去的坑,也是机器学习当中很重要的很乏味很无赖的一个课题。怎么解决这些痛点,怎么能够自动优化参数,减少人工调整参数,对机器学习也是一个不小的挑战。AutoML应运而生,一般是指尽量不通过人来设定超参数,而是使用某种学习机制,来调节这些超参数。这些学习机制包括传统的贝叶斯优化,多臂老虎机(multi-armed bandit),进化算法,还有比较新的强化学习。
-
关于H2O
按照官方的话说H2O is fast, scalable, open-source machine learning and deep learning for Smarter Applications.H20是AutoML理念的一种实现方式。H2O is a fully open source, distributed in-memory machine learning platform with linear scalability. H2O supports the most widely used statistical & machine learning algorithms including gradient boosted machines, generalized linear models, deep learning and more. H2O also has an industry leading AutoML functionality that automatically runs through all the algorithms and their hyperparameters to produce a leaderboard of the best models. The H2O platform is used by over 18,000 organizations globally and is extremely popular in both the R & Python communities.
-
H2O关键特性
1,支持主要的算法,具体清单后面列出;
2,通过R,Python等多种语言来构建模型,使用H2O Flow进行交互式的图形界面的Notebook,不需要写代码即可完成构建模型;
3,AutoML
4,分布式,内存处理;
5,部署简化; -
实践步骤:
1,下载http://h2o-release.s3.amazonaws.com/h2o/rel-yau/2/h2o-3.26.0.2.zip
2,跑起来溜溜:
unzip h2o-3.26.0.2.zip
cd h2o-3.26.0.2
java -jar h2o.jar
3,访问http://localhost:54321, windows和linux基本问题都不大
运行起来,遇到的第一个问题,半天页面没有响应,也搞了半天,不知道什么原因,后台报超时错误。以为是这个平台需要连接其他的地方,访问外部数据。浏览器,F12,知道原因了,访问googleapis地址的时候连接超时,原因很明显了。在hosts里面果断加了一行,127.0.0.1 *.googleapis.com。重新启动,访问正常,搞定了。
跑起来的,并不是万事大吉,该怎么操作,还以为很难,看来第一个页面,马上容易了,下面的清单就是h2o flow的主要功能了。
Routine Description
importFiles---------Import file(s) into H2O
importSqlTable----Import SQL table into H2O
getFrames----------Get a list of frames in H2O
splitFrame----------Split a frame into two or more frames
mergeFrames------Merge two frames into one
getModels----------Get a list of models in H2O
getGrids------------Get a list of grid search results in H2O
getPredictions-----Get a list of predictions in H2O
getJobs-------------Get a list of jobs running in H2O
runAutoML---------Automatically train and tune many models
buildModel---------Build a model
importModel-------Import a saved model
predict---------------Make a prediction
本地准备了一份数据,csv格式的,
年龄,年收入,是否有房,是否有车,是否为目标
23,34,1,0,Y
34,4,0,0,N
34,23,1,1,Y
34,3,1,1,Y
34,23,0,0,N
34,3,0,0,N
56,23,1,1,Y
65,2,1,1,N
62,2,1,1,N
30,7,1,1,Y
27,34,0,0,N
28,2,0,0,N
1,点击Import Files之后,按照提示一步步的操作,在Action那里点击import,操作结果提示:1 / 1 files imported.,成功,想必importSqlTable也是类似的操作,可以点开看看,果然和预期差不多
2,有了数据之后,看样子要让h2o知道认识这个frame,开始getFrames
话说有点乱码,可能是我的文件格式的原因,修改为英文的列名吧。点击parser,可以开始看到进度,点击view查看数据
3,数据有了,可以开始训练模型build model吧
这些参数的选择,和预料的差不多,作为一个挖掘机工程师的基本技能,不多解释,点击build model.
完成之后,可以getModel了,里面的每一项,值得好好看看
4,有了模型之后,可以预测,可以部署模型
用训练数据来预测下,结果果然相当理想。
思考题:
从列表上看,支持的算法如下:
是不是有些算法还不支持,如果是自定义的算法,需要满足什么接口,什么条件添加进去?
2,如果是HDFS或者HBASE其他类型的数据,怎么import进去?可能要做一点功课,查查资料(http://docs.h2o.ai/h2o-tutorials/latest-stable/tutorials/deeplearning/index.html)