听说H2O能让大家都会用机器学习?
点击上方关注,All in AI中国
各行业中的人工智能技术已经逐渐落地,为了社会和经济的稳定发展,普及人工智能越来越重要。
H2O是一个开源分布式内存机器学习平台。关于H2O的研究和实验,本文作者已经有丰富的经验,并且发现它在解决ML问题上具有非常直观的效果。所以,本文的目的是为了让人们了解在排行榜排名出色但并不为人所熟悉的H2O。
H2O.AI:H2O背后的公司
H2O.AI位于加利福尼亚州的山景城,能够提供关于机器学习的平台。 H2O的核心优势在于其紧密集成的高性能ML组件。 在2019年1月发布的报告中,H2O.AI是Gartner数据科学平台中最具前景的公司之一。
来源: Gartner ( 2019年1月)
让我们简单介绍一下H2O.AI的产品:
H2O.AI的产品和解决方案
H2O
H2O是一个开源的分布式内存机器学习平台,具有线性可扩展性。 H2O支持最广泛使用的统计和机器学习算法,并且还具有AutoML功能。 H2O的核心代码是由Java编写的,它的REST API允许从外部程序或脚本访问H2O的所有功能。 该平台包括用于R、Python、Scala、Java、JSON和CoffeeScript / JavaScript的接口,以及内置的Web界面。
H2O Sparkling Water
Sparkling Water允许用户将快速、可扩展的H2O机器学习算法与Spark的功能相结合。 Sparkling Water非常适合需要管理大型集群以满足其数据处理需求并希望将数据从Spark传输到H2O(或反向传输数据)的用户。
H2O4GPU
H2O4GPU是一个开源的GPU加速机器学习包,包含Python和R中的API,允许任何人利用GPU构建高级机器学习模型。
H2O无人驾驶AI
无人驾驶AI的用户界面
H2O无人驾驶AI是H2O.ai自动机器学习的旗舰产品。 它可以完全自动化应用数据科学中一些最具挑战性和最高效的任务,如特征工程、模型调整、模型集成和模型部署。借助无人驾驶人工智能,所有熟练程度的数据科学家只需点击几下GUI即可训练和部署建模管道。 无人驾驶AI是一种商业许可产品,具有21天免费试用版。
什么是H2O
H2O-3是H2O最新版本。 H2O使用用户熟悉的界面如R、Python、Scala、Java、JSON和Flow notebook/ Web界面,并与Hadoop和Spark等大数据技术无缝协作。 H2O可以通过更快,更好的预测建模,轻松快速地从数据中获取洞察力。
高级架构
H2O可以从多个源导入数据,并且具有Java的快速、可扩展和分布式计算引擎。 以下是该平台的高级概述。
H2O的高级架构
支持的算法
H2O支持许多常用的机器学习算法。
Algorithms supported by H2O
安装
H2O提供了一个可以从CRAN安装的R包和一个可以从PyPI安装的python包。 在本文中只使用Python安装包。
先决条件
Python
本步骤需要Java 7或更高版本。 要构建H2O或运行H2O测试,需要64位JDK。 要使用命令行,R或Python包运行H2O二进制文件,只需要64位JRE。
依赖性:
pip安装
Conda
注意:在OS X El Capitan中从pip安装H2O时,用户必须包含—user标志。例如,
测试安装
每个新的python会话都是从初始化python客户端和H2O集群之间的连接开始的。 集群是一组协同工作的H2O节点; 将作业提交到群集时,群集中的所有节点都会处理作业的一部分。
要检查一切是否到位,请打开Jupyter笔记本并输入以下内容:
这是一个本地H2O集群。 在执行单元格时,一些信息将以表格格式打印在屏幕上,其中包括节点数、总内存、Python版本等等。如果您需要报告错误,请确保包含以上所有信息。 此外,h2o.init()要确保没有先前的H2O实例正在运行。
Running h2o.init() (in Python)
默认情况下,H2O实例使用所有核心和系统内存的大约25%。 但是,如果您希望为其分配一块固定的内存,可以在init函数中指定它。 假设我们想给H2O实例提供4GB内存,它应该只使用2个内核。
#Allocate resources
h2o.init(nthreads=2,max_mem_size=4)
现在我们的H2O实例仅使用2个内核和大约4GB的内存。 但是,我们还是要使用默认方法。
在Python中使用H2O导入数据
安装成功后,我们就可以继续处理真实数据集了。我们将使用著名的wine数据集处理一个问题:在给定一组特征作为输入的情况下,以0-10的等级预测白葡萄酒的质量。
数据
该数据属于葡萄牙“Vinho Verde”葡萄酒的白色变种。
来源:
https://archive.ics.uci.edu/ml/datasets/Wine+Quality
CSV文件:
(https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-white.csv)。
数据导入
从本地CSV文件导入数据。 该命令与pandas.read_csv非常相似,数据作为H2OFrame存储在内存中。
Displaying the first 5 rows of the dataset
EDA
让我们继续研究数据集以获得一些结果。
数据集的一些列
这里的所有特性都是用数字展现的,没有任何分类变量。现在让我们来看看各个特征的相关性。
用H2O建模
我们将建立一个回归模型来预测葡萄酒的质量。 H2O模块中有许多算法可用于分类和回归问题。
将数据拆分为测试和训练集
由于我们只有一个数据集,因此我们将其分为训练和测试部分,以便我们可以评估模型的性能。这一步可以使用split_frame()函数。
定义预测变量
广义线性模型
我们将使用默认设置构建广义线性模型(GLM)。 广义线性模型(GLM)预测结果服从指数分布的回归模型。 除了高斯(即正常)分布之外,还包括泊松分布、二项分布和伽马分布。
GLM模型在训练集上的参数
现在,让我们检查模型在测试数据集上的性能。
做预测
使用GLM模型对测试数据集进行预测。
同样,您可以使用其他监督算法,如分布式随机森林、梯度增强机器甚至深度学习,您还可以调整超参数。
H2OAutoML:自动机器学习
自动机器学习(AutoML)是将机器学习应用于现实问题的端到端流程自动化的过程。 AutoML使真正意义上的机器学习成为可能,即使对于在该领域没有专业知识的人能应用。 H2O的AutoML倾向于自动化模型的训练和调整部分。
H2O AutoML:可用的Algos
在本节中,我们将使用H2O的自动功能来处理预测葡萄酒质量的相同回归问题。
导入AutoML模块
这里AutoML将运行10个基本模型,持续100秒。默认运行时间为1小时。
训练
排行榜
现在让我们看看自动排名榜。
AutoML 排行榜
排行榜显示的是由AutoML构建的前10个模型及其参数。 最好的模型是Stacked Ensemble。
将最好的模型存储为aml.leader。
单个模型的贡献
让我们看看单个模型的贡献。
XRT(极端随机树)具有最大贡献,其次是分布式随机森林。
预测
关闭
使用Flow - H2O的Web UI
最后,让我们快速概述一下名为Flow的H2O开源Web UI。 FLow是一个基于Web的交互式计算环境,您可以将代码执行、文本、数学、绘图和富媒体组合到单个文档中,就像Jupyter笔记本一样。
启动FLOW
Launching H2O flow
一旦H2O启动并运行,您需要做的就是将浏览器转到http:// localhost:54321,然后您将看到名为Flow的用户界面。
Flow界面
以下是Flow界面的快速浏览。
H2O的Flow界面
Flow旨在帮助数据科学家快速轻松地创建模型、导入文件、拆分数据框、并完成需要大量人工操作的工作。
运行
让我们通过我们相同的葡萄酒示例,但这次使用Flow。
结论
H2O是功能强大的工具,它可以真正改变数据科学过程。 AI的功能和优势应该提供给每个人,而不是少数人。 这是机器学习大众化的真正本质,数据科学对于解决现实社会的真实威胁来说至关重要。
编译出品