动手机器学习有一种独特的方法
它通常从对不同机器学习概念的高级描述开始,为您提供总体思路;然后,您无需深入了解细节,就可以使用 Python 库进行动手编码;最后,当你对编码和概念感到满意时,你就会打开引擎盖,深入了解数学和代码的工作原理。
要理解本书中讨论的更高级的主题,您需要牢牢掌握 Python 编码和一些有用的技巧,如列表推导和 lambda 函数,以及关键数据科学库(如 Numpy)的基本知识、熊猫和 Matplotlib。
你还需要对代数、微积分和数据科学基础有扎实的掌握。动手机器学习假设您非常了解自己的数学,并且在您进入深度学习部分时不会掌握偏导数和梯度。
本书分为两部分,第一部分涵盖一般机器学习,第二部分侧重于深度学习。
本书的第一章是我在任何一本书中看到的最直观、最面向示例的机器学习介绍之一。即使是经验丰富的 Python 机器学习开发人员也会发现它非常有用,可以巩固他们已经知道的知识并刷新他们可能已经忘记的微妙概念。
本书还介绍了一个使用 Python 进行的端到端机器学习项目,带您完成数据收集、准备和可视化;其次是模型创建、训练和微调。您无需过多关注细节即可完成所有步骤,这提供了机器学习管道的整体概念,让您为即将发生的事情做好准备。
第一部分的其余部分介绍了一些关键的有监督和无监督学习算法。您将找到大多数 Python 机器学习书籍所涵盖的算法和库的一般列表(回归算法、决策树、支持向量机、聚类算法等)。然而,本书有一些独特之处使本书与众不同,例如对多类输出和多输出分类的讨论,这是大多数其他书籍所没有的。
我真正喜欢动手机器学习的一件事是逐步解释和编码梯度下降和随机梯度下降。Geron 已经设法让没有技术背景的读者可以使用两种最基本(也是最复杂)的优化算法。基础知识可帮助您浏览本书后面将要讨论的更复杂的主题,尤其是当您到达人工神经网络和深度学习部分时。
当你探索机器学习算法时,Geron 会介绍其他地方很少讨论的其他好东西,包括对不同 SVM 内核的深入讨论(有很多复杂的数学)、各种集成方法(其他书籍通常讨论仅限随机森林),以及提升方法的技术概述。
动手机器学习还向您介绍了半监督学习,这是一种机器学习技术,当您想要执行监督学习但您的训练/测试数据未标记时使用。同样,这是其他有关 Python 机器学习的入门书籍没有提及的内容。
但机器学习部分并非没有错。分类章节有点令人沮丧,因为在后面的部分中,您必须在整个 MNIST 数据集上运行交叉验证,这非常慢,即使在八核 CPU 服务器上也是如此。降维一章有一些很好的可视化,但读起来像一个带有简短代码片段的参考手册,并且错过了可以更好地解释概念和它解决的问题的端到端示例(完整示例包含在代码示例文件中)。在第一部分快要结束时,这本书变得非常复杂,如果你没有机器学习的先验背景和扎实的微积分基础,你会很吃力。