Py学习  »  机器学习算法

咨询专栏丨如何通过机器学习神奇H20进行分析?

TalkingData • 5 年前 • 948 次点击  
平台简介

H2O是一个基于Java完全开源的分布式内存机器学习平台,具有线性可扩展性。H2O支持最广泛使用的统计和机器学习算法,包括梯度提升、广义线性模型、深度学习等。H2O还具有行业领先的AutoML功能,可自动运行所有算法及优化参数,以生成最佳模型的排行。H2O平台已被全球14,000多家组织使用,并且在R&Python社区中非常受欢迎。

平台优势
  • 领先的算法:针对分布式计算开发的算法,包括随机森林、广义线性模型、梯度提升、XGBoost、GLRM、Word2Vec等监督和非监督算法。

  • 丰富的API接口:可使用市面上广泛的编程语言(如R、Python等)在H2O中构建模型;同时,H2O Flow也提供基于图形化的交互式用户界面,不需要任何编码。

  • AutoML:自动化机器学习流程,其中包括在用户指定的时间内自动训练和调整各种模型。其中,集成算法能自动训练各个模型并加以集合,以生成高度预测的集合模型,在大多数情况下,集成模型在AutoML产出的算法排行榜中表现最佳。

  • 分布式内存处理:运用节点和集群之间快速序列化的内存处理可支持海量数据集。 通过细粒度并行计算,大数据的分布式处理可提升处理速度高达100倍,实现最佳效率而不降低计算精度。

  • 简单部署:支持训练模型导出成POJO和MOJO(Model-Optimized Java Objects),从而支持在任何环境中快速部署并对新数据提供快速预测评分。

  • 支持多种数据源和数据格式:除了可对Microsoft Excel、R Studio、Tableau等来源的大数据提供了便捷的数据建模和分析方式,也支持HDFS、S3、传统SQL数据库及多种NoSQL数据库的数据源。 

H2O架构图如下:

GartnerMagic Quadrant在2018发布的对数据科学和机器学习平台的评测中,也给了H2O极具竞争力的评价:

H2O读取数据流程(以R作为API为例)

1. R用户调用importFile()函数

 2. H2O集群响应读取数据

3.  以分布式H2O Frame格式从HDFS返回数据

H2O应用:

1.  在R中下载安装H2O

install.packages("h2o")

2. 启动H2O

library(h2o)

h2o.init(nthreads = -1)  #使用全部核

3. 读取、处理数据并拆分数据集:

dfpath = "http://s3.amazonaws.com/h2o-public-test-data/smalldata/gbm_test/titanic.csv")   #读取数据框并转化为H2O.ai可识别的数据格式
dim(df)
response "survived"
df[[response]] [[response]]) 
## 是否生存作为响应变量
predictors "name"))
## 除名字以外其他变量作为预测变量
splits   data = df,  
  ratios = c(0.6,0.2),   ## 设定训练集、验证集、测试集比例

destination_frames = c("train.hex""valid.hex""test.hex"), seed = 1234  
)

train [[1]]
valid [[2]]
test  [[3]] ##拆分数据集
summary(train)##数据概况

4. 分析数据:

  • 随机森林

调用公式:

*/  h2o.randomForest(x = x, y = y, training_frame, ntrees, nfolds, fold_assignment,keep_cross_validation_predictions,seed)*/

df.rf<-h2o.randomForest(x=predictors,y=response,training_frame = train, ntrees 500)

结果:

  • Deeplearning

深度学习假设神经网络是多层的,首先用非监督学习网络的结构,然后再通过监督学习学习网络的权值

H2O中Deeplearning实现公式:

/*h2o.deeplearning(x, y, training_frame, model_id,nfolds,

fold_column ,ignore_const_cols, score_each_iteration, weights_column ,seed) */


df.dl

结果中AUC和混淆矩阵结果相对于随机森林都有了提升

  • GBM

调用公式:

*/h2o.gbm(x,y,training_frame,model_id,ntrees,distribution,max_depth,stopping_metric,balance_classes,learn_rate)*/


df.gbm

GBM结果AUC高达.996,混淆矩阵中错误率也降低到了.02

  • AUTOML

除了以上算法,H2O中的AUTOML可实现自动化机器学习,在限定的时间自动训练和调整模型,集合优化各种算法生成最优解。

调用公式:

aml = H2OAutoML(max_runtime_secs = 360)
aml.train(x = predictors, y = response,
training_frame = train,
leaderboard_frame = test)

表现最好的集合模型结果比起GBM又有了很大的提升,混淆矩阵错误率降低到了.006。从产生的模型排行榜上看,集合模型和GBM类算法表现最好,也符合我们以上测评的几种算法结果。

参考资料

上述只是列举了H2O一些基本操作,关于H2O更为详细的资料列举如下:

  • H2O官网
    https://www.h2o.ai/products/

  • H2O与R的官方文档
    http://docs.h2o.ai/h2o/latest-stable/h2o-docs/booklets/RBooklet.pdf

  • 机器学习各算法准确率以及运行时间的比较
    https://github.com/szilard/benchm-ml


推荐阅读:

咨询专栏丨信用卡App运营中的数据分析

咨询专栏丨四大步骤手把手教你做数据驱动的精准营销

咨询专栏丨使用现金贷的都是哪些人?他们有什么特征?



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/KlLtk1SCvh
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/28158
 
948 次点击