2月17日机器学习算法加深您的PythonML知识
如果您不知道从哪里开始,自学 Python 机器学习可能是一项艰巨的任务。幸运的是,有很多很好的入门书籍和在线课程可以教你基础知识。然而,正是这些高级书籍教给您所需的技能,以决定哪种算法可以更好地解决问题以及在调整超参数时采取哪个方向。
不久前,我接触到Giuseppe Bonaccorso 的《机器学习算法》第二版,这本书几乎属于后者。
虽然标题听起来像是另一本关于机器学习算法的介绍性书籍,但内容却绝非如此。机器学习算法适用于初学者指南不带您的地方,如果您具有数学和编程技能,它可以成为加深您使用 Python 进行机器学习知识的绝佳指南。
为你的机器学习引擎加油
机器学习算法以快速浏览基础知识开始。我真的很喜欢 Bonaccorso 用来解释关键概念的易于理解的定义,例如监督、无监督和半监督学习和强化学习。
Bonaccorso 还在机器学习与描述性、预测性和规范性分析之间进行了很好的类比。机器学习概述还包含一些隐藏的宝石,包括对计算神经科学的介绍以及对大数据和机器学习陷阱的一些非常好的预防措施。
也就是说,机器学习概述并没有涉及太多细节,对于新手来说很难理解。鉴于本书的读者,它有助于刷新和巩固你对机器学习的理解,而不是教你基础知识。
接下来,机器学习算法建立在简要概述的基础上,并进入更高级的概念,例如损失函数、数据生成过程、独立和同分布变量、欠拟合和过拟合、不同的分类策略(一对一和一对一-all),以及信息论的要素。同样,对于已经有机器学习算法和线性代数实践经验的人来说,这些定义是流畅且易于理解的。
在探讨不同算法之前,本书介绍了一些更关键的概念,例如特征工程和数据准备。在这里,您将重新审视主要 Python 机器学习库 scikit-learn 的一些关键类和函数。如果您已经对 Python 和 numpy 有扎实的了解,您会发现这部分是对 one-hot 编码、训练测试拆分、插补、归一化等的令人愉快的回顾。第三章有一些非常棒的东西,包括主成分分析 (PCA) 和机器学习算法中的特征依赖性的最佳和最容易理解的定义之一。您还将看到介绍性书籍中未涵盖的一些更高级的技术,例如非负矩阵分解 (NNMF) 和 SparsePCA。当然。
这本书的真正内容从第四章开始,在那里你会接触到机器学习算法。在这里,我的心情很复杂。
丰富的机器学习算法
一般来说,机器学习算法结构良好,名副其实。有关于回归、分类、支持向量机 (SVM)、决策树和聚类的章节。本书后续有几章介绍了推荐系统和自然语言处理应用,最后简要概述了深度学习和人工神经网络。
主要章节深入介绍了 Python 中的主要机器学习算法,包括入门书籍中未涵盖的细节。例如,回归章节对异常值和减轻其影响的方法进行了广泛的介绍。分类章节对在线算法中的被动-攻击分类和回归进行了很好的讨论。SVM 章节对半监督向量机进行了全面(但复杂)的讨论。决策树一章很好地涵盖了 DT 的特定敏感性,例如类不平衡,以及一些关于调整树以获得最佳性能的实用技巧。
聚类部分真的很亮。它跨越三个完整的章节,从基础知识(k-最近邻和 k-means)开始,到更高级的聚类(DBSCAN、BIRCH 和双聚类)和可视化技术(树状图)。您还将全面了解测量结果的有效性并确定您的算法是否锁定了正确数量和分布的集群。
在本书中,对每种机器学习算法背后的数学公式进行了深入的讨论。您需要掌握扎实的线性代数以及微积分和积分基础知识才能完全理解这一点(如果您需要磨练机器学习数学技能,我在上一篇文章中提供了一些指导)。
本书还大量使用了函数 numpy、scipy 和 matplotlib 库,但没有对其进行解释,因此您也需要了解这些(您可以在这些库中找到一些好的资源)。
机器学习算法最令人愉快的事情之一是章节摘要。在详细了解了每种机器学习算法的数学和 Python 编码之后,Bonaccorso 简要回顾了书中介绍的每种技术的应用位置。还有许多对相关论文的参考,这些论文提供了对书中讨论的主题的更深入的报道。令人耳目一新的是,书中提到了 2000 年代初期的一些陈旧但基本的论文。这些东西往往会被围绕最先进研究的炒作所掩盖。
机器学习算法以对机器学习管道的良好总结以及在本书中介绍的不同 Python 工具之间进行选择的一些关键技巧结束。
没有足够的真实例子
在我看来,除了研究论文和理论教科书之外,一本关于 Python 机器学习的书应该是示例。一本好书应该包含丰富的面向用例的示例,这些示例将带您了解真实世界的应用程序,并可能通过本书进行构建。
不幸的是,在这方面,机器学习算法还有一些不足之处。
一方面,书中的示例大多是通用的,使用了 scikit-learn 中的数据生成函数,例如 make_blobs、make_circles 和 make_classification。这些是展示 Python 机器学习某些方面的好功能,但不足以让您了解如何在现实生活中使用这些技术,您必须处理噪声、异常值、不良数据和需要处理的特征规范化和分类。
代码采用纯 Python 脚本,而不是首选的 Jupyter Notebook 格式(公平地说,这没什么大不了的)。此外,虽然为了简洁起见,本书省略了大部分示例代码并专注于重要部分,但有时很难浏览示例文件。
这本书确实涵盖了一些真实世界的例子,包括一个在 SVM 章节中使用翼型数据的例子,另一个在 NLP 章节中使用路透社语料库。推荐系统章节还包括一些不错的用例,但仅此而已。如果没有具体的例子,这本书读起来就像一本带有代码片段的完全不同的参考手册,这使得在拿起这本书之前拥有丰富的 Python 机器学习经验变得更加重要。
另一件事并没有真正吸引我的是关于深度学习的两章。机器学习算法很好地概述了深度学习,并讨论了卷积神经网络、循环神经网络和其他关键架构。但问题是 Python 机器学习的介绍性书籍已经涵盖了这些概念以及更多内容。因此,大多数没有放下书就读完这本书的人不会在这里找到任何新东西(可能除了提到 KerasClassifier 之外)。
Python 机器学习之旅的中途
那么,这本书在使用 Python 学习机器学习的路线图中处于什么位置?它既不是初级水平,也不是超高级。我建议在阅读Python Machine Learning或Hands-on Machine Learning 之类的入门到中级书籍或 Udemy 的“ Machine Learning AZ ”之类的在线课程之后再学习机器学习算法。否则,您将无法充分利用它所提供的丰富内容。