开源机器学习入门

尚无读者喜欢这篇文章。
A network of people

Opensource.com

尽管 马斯克和霍金 对来自天空的杀手机器人即将降临到我们凡人身上的末日预言喧嚣尘上,但机器学习和人工智能已然存在,并将继续发展。更重要的是,机器学习 (ML) 正在迅速成为开发者的一项关键技能,以增强他们的应用程序和职业发展,更好地理解数据,并帮助用户更有效地工作。

什么是机器学习?它是使用历史数据和当前数据进行预测、组织内容以及学习数据模式,而无需显式编程来实现这些功能。这通常通过统计技术来完成,这些技术寻找数据中的显著事件,如共现和异常,然后将它们的可能性纳入模型中,该模型在稍后被查询,以便为一些新的数据提供预测。

常见的机器学习任务包括分类(将标签应用于项目)、聚类(自动分组项目)和主题检测。它也常用于自然语言处理。机器学习越来越多地应用于各种用例,包括内容推荐、欺诈检测、图像分析和电子商务。它在许多行业中都很有用,并且大多数流行的编程语言都至少有一个开源库实现了常见的机器学习技术。

反映了软件领域更广泛地向开源方向发展的趋势,现在有许多活跃的机器学习项目可供试验,以及大量的书籍、文章、教程和视频,帮助您快速入门。让我们来看看一些在开源机器学习领域领先的项目,以及一些关于相关机器学习术语和技术的入门知识。

入门读物

除了项目主页和文档之外,还有几个优秀的资源可以用来教授机器学习背后的核心概念。虽然关于机器学习的书籍和教程成百上千,但我试图专注于那些面向程序员的,而不是那些更严谨或过于注重幕后数学原理的。虽然从长远来看,这些内容很重要,但它们常常阻碍工程师在入门阶段尝试使用真实数据操作真实系统。

  1. Toby Segaran 撰写的集体智慧编程:构建智能 Web 2.0 应用是利用机器学习思想构建 Web 应用程序的最佳入门书籍之一。Segaran 使用 Python 示例,阐述了许多利用历史数据为未来带来收益的常用方法背后的概念。
  2. Joel Grus 撰写的从零开始的数据科学。另一本基于 Python 的入门书,《数据科学》在深入机器学习的基石(回归、神经网络和 朴素贝叶斯)之前,先带您了解线性代数、统计学和概率等核心原则(但不会过多!)。
  3. Andrew Ng 在 Coursera/斯坦福大学开设的机器学习在线课程。在许多方面,Ng 先生,最初通过他在 iTunes 上的讲座,现在通过 Coursera,是机器学习领域的领先教育者。但请注意:这门课程需要投入,但为了扎实理解这个主题,非常值得花时间。
  4. Foster Provost 和 Tom Fawcett 撰写的数据科学实战:数据挖掘与数据分析思维。引用前言:“这不是一本关于算法的书,也不是一本算法书籍的替代品。我们刻意避免了以算法为中心的方法。我们认为,有一组相对较小的基本概念或原则是提取数据中有用知识的技术的基础。这些概念是许多知名数据挖掘算法的基础。”
  5. Hilary Mason 制作的Web 数据机器学习入门。Mason 和 O'Reilly Media 合作推出的这个视频系列易于理解,篇幅相对较短,向您介绍了机器学习中的关键主题,如聚类和分类。

项目

虽然有很多很棒的开源机器学习项目,但以下项目将强大的技术能力与良好的文档和易于访问的社区相结合,方便您提问和进行故障排除。

Weka

来自新西兰怀卡托大学的 Weka 长期以来一直是开源机器学习的标准,它拥有丰富的工具集、大量的算法可供尝试,以及用于探索数据和结果的用户界面。它还附带一本优秀的书籍,解释了很多机器学习概念,同时展示了使用 Weka 的示例。虽然它不一定是最新的深度学习潮流,但它是一个扎实的项目,可以帮助您入门并理解这些概念。

Mahout

作为该项目的联合创始人,Apache Mahout 与我息息相关,它在过去一年中进行了自我调整,专注于 Apache Spark,并彻底改造了构建机器学习模型的方式,同时发布了常用机器学习算法的实现。对于那些仍在使用 Hadoop MapReduce 的人,Mahout 继续维护使用 MapReduce 范式的分类、聚类和推荐的关键算法的实现。

Spark 的 MLLib

MLLib 从一开始就为 Apache Spark 构建,专注于以可扩展的方式交付常用的聚类和分类机器学习算法。通过利用 Spark,MLLib 能够利用大规模集群优化来处理大数据,这在机器学习中尤其重要,因为许多使用的算法本质上是迭代的,并且对数据有很高的需求。

Scikit-learn

scikit-learn 构建在其他可靠的 Python 库(如 NumPy 和 SciPy)之上,将上述 Java/Scala 库中涵盖的许多算法和工具带到了 Python 技术栈。再加上一套不错的 教程,您将拥有一个库,让您立即开始学习。

DeepLearning4J

利用机器学习这个流行语领域的最新热词,Deep Learning for Java 为开源领域带来了一套强大的算法,旨在在 Hadoop 和 Spark 上进行单机和分布式深度学习。它有一系列用于处理数据的实用程序,并且还支持 GPU(图形处理单元)。

什么是深度学习?深度学习越来越多地被谷歌、Facebook 和亚马逊等公司使用,它是一种新的大规模神经网络方法,旨在显著减少训练和维护模型所需的人工干预,同时提供显著更好的结果。DL4J(它的简称)也有一本书(预售)正在由 Adam Gibson 和 Josh Patterson 撰写。

奖励项目

与任何概述文章一样,篇幅有限,无法涵盖该领域的所有优秀项目,因此请务必查看 H20Vowpal WabbitPredictionIO 以及 MLOSS 开源机器学习库存档

下一步

机器学习入门的真正关键是从上述项目中下载一些示例数据和代码。准备好进行大量的试错,因为您将探索不同的方法。您将很快发现,尽管人工智能的炒作甚嚣尘上,但构建这些应用程序仍然需要大量的人类智慧才能获得好的结果。

Apache
Quill

本文是 Rikki Endsley 协调的 Apache Quill 专栏的一部分。通过提交您的故事到 Opensource.com,分享您在 Apache 软件基金会项目中的成功故事和开源更新.

User profile image.
Grant 是 Lucidworks 的首席技术官兼联合创始人,Manning Publications 出版的《驯服文本》的合著者,Apache Mahout 的联合创始人,以及 Apache Lucene 和 Solr 开源项目的长期提交者。Grant 的经验包括为各种领域和语言工程设计各种搜索、问答和自然语言处理应用程序。他获得了理学学士学位。

评论已关闭。

知识共享许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.