跳到主要内容
项目详情

MLlib 是 Apache Spark 项目中的可扩展机器学习库,面向需要在分布式计算环境中处理数据、训练模型和构建机器学习流程的使用者。它不是独立于 Spark 的单机算法集合,而是融入 Spark API 的机器学习模块,可以接入 Hadoop 数据源,也能在 Spark 支持的多种集群环境中运行。MLlib 支持 Java、Scala、Python 和 R,并在 Python 中与 NumPy 互操作、在 R 中与 R 库互操作。与使用 MapReduce 的一次性近似计算相比,Spark 对迭代计算的支持使 MLlib 能够运行得更快,同时提供利用迭代计算的算法实现。

核心功能

分类与回归

MLlib 提供逻辑回归、朴素贝叶斯等分类算法,也提供广义线性回归和生存回归等回归算法。分类与回归属于 MLlib 内置的机器学习算法范围,具体算法可以通过 Spark 的 API 使用。官网还列出了决策树、随机森林和梯度提升树,可用于树模型相关任务。

推荐与聚类

在推荐场景中,MLlib 提供交替最小二乘法(ALS)。聚类算法包括 K-means 和高斯混合模型(GMMs)等。官网示例展示了从 LibSVM 格式读取数据后,使用 KMeans 设置 k=10 并对数据进行拟合,说明算法可以放入 Spark 的数据读取和模型训练流程中。

主题建模与模式挖掘

MLlib 包含潜在狄利克雷分配(LDA)主题建模能力,可用于主题模型相关处理。除此之外,算法列表还包括频繁项集、关联规则和序列模式挖掘。这些功能与分类、回归、推荐和聚类共同组成 MLlib 的算法集合。

特征处理与机器学习流程

MLlib 提供标准化、归一化、哈希等特征转换工具,用于构造机器学习输入特征。它还支持机器学习 Pipeline 构建,可以把数据处理与模型步骤组织到同一流程中。官网将模型评估和超参数调优列为 ML workflow utilities,适用于训练之后的评估以及参数选择。

模型保存、线性代数与统计工具

MLlib 支持保存和加载模型及 Pipeline,即 ML persistence。除机器学习算法和流程工具外,它还提供分布式线性代数能力,包括 SVD、PCA 等,并提供汇总统计和假设检验等统计功能。这些工具覆盖了数据处理、模型训练、评估和结果持久化之外的部分计算需求。

使用方式

MLlib 可在 Java、Scala、Python 和 R 中使用,并融入 Spark 的 API。数据可以从 Hadoop 数据源读取,包括 HDFS、HBase 和本地文件,也可以访问 Apache Cassandra、Apache Hive 以及其他数据源。开始使用时需要下载 Apache Spark,MLlib 已作为模块包含其中;用户可以阅读 MLlib guide 中的使用示例。Spark 支持独立集群模式、Hadoop YARN、Apache Mesos、Kubernetes、EC2 和云环境,也可以在不进行额外设置的情况下于多核机器本地运行。

适用人群与场景

需要在 Spark 环境中训练机器学习模型的数据科学与机器学习开发者,可以使用 MLlib 完成分类、回归、推荐、聚类和主题建模。处理 HDFS、HBase、Hive、Cassandra 或本地文件中数据的工程团队,可以把 MLlib 接入已有的 Hadoop 数据流程。需要构建特征处理、模型评估、超参数调优和模型保存流程的使用者,可以利用其 Pipeline 与模型持久化工具。需要在集群或多核机器上运行迭代计算的用户,则可以根据部署环境选择独立模式、YARN、Mesos、Kubernetes、云环境或本地运行方式。

注意事项

MLlib 的运行依赖 Spark 环境;分布式运行需要按照 Spark 的方式在集群上部署。官网同时说明,MLlib 会随着每次 Spark 发布进行测试和更新,并指出项目仍在快速发展中。使用者可通过 Spark mailing lists 提问,也可以按照 Spark 的贡献指南提交算法和补丁。

多语言调用支持 Java、Scala、Python 和 R,并与 Spark API 集成。
丰富的机器学习算法覆盖分类、回归、决策树、推荐、聚类、主题建模和模式挖掘。
机器学习工作流提供特征转换、Pipeline 构建、模型评估和超参数调优工具。
模型持久化支持保存和加载模型及机器学习 Pipeline。
多种运行环境可运行于 Hadoop、Mesos、Kubernetes、独立集群、云环境或本地多核机器。

用户评论 (0)

还没有用户评论

成为第一个分享使用体验的人

查看更多

MLlib 截图

官网首页截图

写评论

分享你的使用体验,至少 10 个字。评论可以发多条,打分在右侧卡片单独进行。

还需 10 个字 · 0 / 500