序
在过去的几年中,机器学习已经渗透到企业、非营利组织和政府的日常运作中。随着机器学习热度的增加,在对机器学习从业者的指导方面,涌现出一批高质量的文献。这些文献培养了整整一代的数据科学家和机器学习工程师。这些文献提供了学习资源,为人们讲解机器学习是什么及其工作原理。尽管这种方法富有成效,但却遗漏了一部分内容:机器学习日常开发中的细节。这就是笔者写本书的动机——本书不是写给学生读者学习机器学习理论的大部头,而是写给专业人士的“扳手型”工具书。我希望你把它放在书桌上,把你感兴趣的某些页折起来,在日常开发中需要解决实际问题时就拿过来翻一翻。
更具体地说,本书采用基于任务的方式来介绍机器学习,有近200个独立的解决方案(你可以复制并粘贴这些代码,它们都是可以正常运行的),针对的都是数据科学家或机器学习工程师在构建模型时可能遇到的常见任务。
本书的最终目标是成为人们在构建真实的机器学习系统时的参考书。例如,假设你有一个JSON文件,其中包含1000个数据分类特征和数值型特征,并且目标向量的分类不均衡,你想得到一个可解释的模型,那么使用本书提供的解决方案可以帮助你解决如下问题:
● 加载JSON文件(2.5节)
● 对特征进行标准化(4.2节)
● 对特征字典编码(5.3节)
● 填充缺失的分类值(5.4节)
● 使用主成分进行特征降维(9.1节)
● 使用随机搜索选择最佳模型(12.2节)
● 训练随机森林分类器(14.4节)
● 选择随机森林中的重要特征(14.7节)
本书的目标是让你:
1.复制/粘贴代码,并确信它们能很好地运行在玩具数据集(toy dataset)[1]上。
2.阅读每一节后面的“讨论”以增进对代码背后理论的理解,并了解哪些参数需要重点考虑。
3.对书中的代码进行各种组合与修改,以构建实际的应用。
哪些人适合阅读本书
本书不是机器学习的入门书。如果你对机器学习的基本概念还不太了解,或者从未花时间学习过机器学习,请不要购买本书。本书适合机器学习的实践者阅读,他们熟悉机器学习的理论和概念,可以参考书中的代码快速解决在日常开发中遇到的问题。
另外,本书假定读者熟悉Python编程语言和包管理。
哪些人不适合阅读本书
如前所述,本书不是机器学习的入门书,因此它不应该是你的第一本机器学习书。如果你还不熟悉交叉验证、随机森林和梯度下降等概念,那么建议你先阅读一本入门类机器学习图书,再阅读本书来学习机器学习的实用解决方案。
书中用到的术语
机器学习会用到很多领域的技术,包括计算机科学、统计学和数学,因此在关于机器学习的讨论中会使用各种各样的术语:
观察值[2](observation)
我们观察到的单个单位——例如,一个人、一次销售或一条记录。
学习算法(learning algorithm)
用来学习模型的最佳参数的算法——例如,线性回归、朴素贝叶斯或决策树。
模型(model)
学习算法的输出。学习算法训练出的模型可以用来做预测。
参数(parameter)
一个模型在训练过程中学习到的权重或系数。
超参数(hyperparameter)
一个学习算法在训练前需要设置的一组参数。
性能(performance)
用来评估模型的指标。
损失(loss)
一个需要在训练中最小化或最大化的指标。
训练(train)
使用类似梯度下降之类的数学方法将一个学习算法应用到数据上。
拟合(fit)
使用分析方法将一个机器学习算法应用到数据上。
数据(data)
一组观察值。
致谢
没有一些朋友和陌生人的帮助,这本书是不可能完成的。很难列出提供过帮助的所有人的名字,但我想至少提一下这些人:Angela Bassa、Teresa Borcuch、Justin Bozonier、Andre deBruin、Numa Dhamani、Dan Friedman、Joel Grus、Sarah Guido、Bill Kambouroglou、Mat Kelcey、Lizzie Kumar、Hilary Parker、Niti Paudyal、Sebastian Raschka和Shreya Shankar。
我欠他们所有人一瓶啤酒,或者五瓶。
[1]译者注:可以理解为小型数据集,比真实世界的大数据集小得多、干净得多。
[2]译者注:也可理解为样本,本书中某些地方将observation译作“样本”。
本书评论