译者:@ZhipengYe
校对:(虚位以待)
机器学习将数据拟合到数学模型中来获得结论或者做出预测。这些模型吸纳特征作为输入。特征就是原始数据某方面的数学表现。在机器学习流水线中特征位于数据和模型之间。特征工程是一项从数据中提取特征,然后转换成适合机器学习模型的格式的艺术。这是机器学习流水线关键的一步,因为正确的特征可以减轻建模的难度,并因此使流水线能输出更高质量的结果。从业者们认为构建机器学习流水线的绝大多数时间都花在特征工程和数据清洗上。然后,尽管它很重要,这个话题却很少单独讨论。也许是因为正确的特征只能在模型和数据的背景中定义。由于数据和模型如此多样化,所以很难概括项目中特征工程的实践。
尽管如此,特征工程不仅仅是一种临时实践。工作中有更深层的原则,最好就地进行说明。本书的每一章都针对一个数据问题:如何表示文本数据或图像数据,如何降低自动生成的特征的维度,何时以及如何规范化等等。把它看作是一个相互联系的短篇小说集,而不是一本长篇小说。每章都提供了大量现有特征工程技术的插图。它们一起阐明了总体原则。
掌握主题不仅仅是了解定义并能够推导出公式。仅仅知道这个机制是如何工作的以及它可以做什么是不够的。它还必须包括理解为什么要这样设计,它如何与其他技术相关联,以及每种方法的优缺点是什么。掌握就是要准确地知道如何完成某件事,对底层原则有一个感觉,并将其整合到我们已知的知识网络中。一个人通过读一本相关的书并不会成为某个东西的主人,尽管一本好书可以打开新的门。它必须涉及实践——将想法用于实践,这是一个反复的过程。随着每一次迭代,我们都会更好地了解这些想法,并在应用这些想法时变得越来越娴熟和富有创造性。本书的目标是促进其思想的应用。
本书首先尝试传授感觉,其次是数学。我们不是只讨论如何完成某些事情,而是试图引导发现原因。我们的目标是提供观点背后的感觉,以便读者了解如何以及何时应用它们。对于以不同方式学习的人们来说,有大量的描述和图片。提出数学公式是为了使感觉更加精确,并且还可以将本书与其他现有的知识结合起来。
本书中的代码示例在 Python 中给出,使用各种免费和开源软件包。NumPy 库提供数字向量和矩阵操作。Pandas 是一个强大的数据框架,是 Python 中数据科学的基石。Scikit-learn 是一个通用机器学习软件包,涵盖了广泛的模型和特征变换器。Matplotlib 和 Seaborn 的样式库提供了绘图和可视化。你可以在我们的 github 仓库中找到这些例子作为 Jupyter notebooks。
前几章开始较缓慢,为刚刚开始使用数据科学和机器学习的人们提供了一个桥梁。第 1 章从数字数据的基本特征工程开始:过滤,合并,缩放,日志转换和能量转换以及交互功能。第 2 章和第 3 章深入探讨了自然文本的特征工程:bag-of-words,n-gram 和短语检测。第 4 章将 tf-idf 作为特征缩放的例子,并讨论它的工作原理。围绕第 5 章讨论分类变量的高效编码技术,包括特征哈希和 bin-counting,步伐开始加速。当我们在第 6 章中进行主成分分析时,我们深入机器学习的领域。第 7 章将 k-means 看作一种特征化技术,它说明了模型堆叠的有效理论。第 8 章都是关于图像的,在特征提取方面比文本数据更具挑战性。在得出深度学习是最新图像特征提取技术的解释之前,我们着眼于两种手动特征提取技术 SIFT 和 HOG。我们在第 9 章中完成了一个端到端示例中的几种不同技术,为学术论文数据集创建了一个推荐器。