机器学习:软件工程方法与实现
将软件工程的思想、方法、工具和策略应用到机器学习实践中,提供高质量的代码设计、可直接复用的源码和工业应用框架
基本信息
- 作者: 张春强 张和平 唐振
- 丛书名: 智能系统与技术丛书
- 出版社:机械工业出版社
- ISBN:9787111669227
- 上架时间:2020-11-27
- 出版日期:2020 年11月
- 开本:16开
- 页码:444
- 版次:1-1
- 所属分类:计算机 > 软件工程及软件方法学 > 软件方法/软件工程

【插图】

编辑推荐
某大型金融科技集团资深大数据与机器学习技术专家撰写,基于新近Python版本
将软件工程的思想、方法、工具和策略应用到机器学习实践中,提供高质量的代码设计、可直接复用的源码和工业应用框架
内容简介
计算机书籍
内容简介
这是一部指导读者如何将软件工程的思想、方法、工具和策略应用到机器学习实践中的著作。
作者融合了自己10年的工程实践经验,以Python为工具,详细阐述机器学习核心概念、原理和实现,并提供了数据分析和处理、特征选择、模型调参和大规模模型上线系统架构等多个高质量源码包和工业应用框架。旨在帮助读者提高代码的设计质量和机器学习项目的工程效率。
全书共16章,分为4个部分:
第一部分 工程基础篇(1~3)
介绍了机器学习和软件工程的融合,涉及理论、方法、工程化的数据科学环境和数据准备;
第二部分 机器学习基础篇(4~5)
讲述了机器学习建模流程、核心概念,数据分析方法;
第三部分 特征篇(6~8)
详细介绍了多种特征离散化方法和实现、特征自动衍生工具和自动化的特征选择原理与实现;
第四部分 模型篇(9~16)
首先,深入地剖析了线性模型、树模型和集成模型的原理,以及模型调参方法、自动调参、模型性能评估和模型解释等;然后,通过5种工程化的模型上线方法讲解了模型即服务;最后,讲解了模型的稳定性监控的方法与实现,这是机器学习项目的最后一环。
目录
第一部分 工程基础篇
第1章 机器学习软件工程方法 2
1.1 机器学习简述 2
1.1.1 机器学习与人工智能、深度学习等的关系 2
1.1.2 机器学习类别与范式 4
1.2 软件工程方法 13
1.2.1 机器学习中的软件工程 15
1.2.2 编码和测试 18
1.3 朴素贝叶斯测试驱动开发案例 21
1.3.1 开发准备 22
1.3.2 开发邮件分类器 24
1.4 本章小结 29
第2章 工程环境准备 30
2.1 Anaconda 31
2.1.1 安装Anaconda 31
2.1.2 使用conda管理环境 32
2.1.3 Jupyter Notebook 基础使用和示例 34
2.2 使用Pipenv定制Python环境 37
2.2.1 Pipenv简介 38
前言
近几年,机器学习爆发,犹如前些年大数据技术爆发一样,一家企业如果没有相关的应用都不敢说自己是科技公司,业界普遍朝着这个方向前进或转型。
互联网企业是机器学习应用的传统阵营,在推荐算法以及图像、视频和自然语言处理等方面都有成熟的应用,而近几年快速发展的互联网金融行业可谓是异军突起,推动了很多机器学习应用的落地,比如风控模型、反欺诈模型、全生命周期的信贷模型等。由于技术、行业、政策的综合因素,大量毕业生及相关行业工作者涌入或转入机器学习领域。大家的背景不一:有的人有计算机专业、统计专业、金融或经济相关专业背景;有的是由数据分析或软件开发转入;有的则是由传统银行转入。我们发现,大多数从业者并不清楚机器学习如何与系统应用相结合,不了解模型如何上线,不能编写良好的机器学习代码,不善于模块化复用,缺少软件开发常识和软件质量意识,忽视了机器学习实践中的软件工程属性。
机器学习从业者有时会自嘲为“调包侠”(只会调用现成的算法包),缺少更深入的智力参与。这就像“码农”和“软件工程师”的区别:前者是编写代码的“机器”(程序员自嘲式说法),拿到需求和功能就开始写代码,可将其定义为初级程序员;后者则会进行一定的工程设计和通用性考虑,包括模块设计、接口设计,以及开发和测试、升级和可维护性等方面的考量等。在机器学习领域,软件工程师即机器学习工程师或模型工程师,机器学习算法工程师需要软件工程素养,需将算法有效应用于实践。
一名优秀的机器学习工程师一定是一名合格的程序员,需要具备相应的软件工程素养。
在常规的软件开发过程中,程序员有属于自己的开发环境—挑选自己喜欢的编辑器,配置专属的开发环境。在机器学习建模中,Jupyter Notebook几乎已成为这个领域的标准编辑器,而在更为工程化或标准化的环境中,Docker可用于构建数据科学项目的工程环境。当我们将这些工程化的软件应用于机器学习中时,能帮助企业建立更为完善和标准的机器学习开发环境与IT架构,并在机器学习的实践中落地软件工程中的先进开发思想,如敏捷开发、测试驱动开发等。
此外,机器学习涉及大量应用广泛的开源算法包,但目前市面上鲜有介绍其应用的书。为此,本书中除了结合相关的工程软件,也介绍和应用了较多的算法包。实际上,网络上有大量的学习群、培训机构等传播了大量的相关资料,从多个方面讲述了机器学习,但难免知识点零散,显得急功近利。已有的相关图书一般从常用算法原理讲起,部分辅以实例,值得参考和学习,但笔者总感觉有所欠缺:比如模型评估中有KS指标,但还有特征的KS和KS检验,读者在遇到它们时会感到似曾相识,但又有些模糊,为此本书中会在适当的地方,针对关联知识或概念做进一步解释,想必会给读者豁然开朗的感觉;又比如,一位模型工程师熟悉了常用机器学习算法和建模流程,但他可能只做过模型训练或离线模型,从未真正上线过模型,为此本书将机器学习算法之外关于工程应用的现实问题,按机器学习项目流程进行了较好的阐述。
写作本书前,我心中已坚定一个想法:机器学习是一门实验学科,要求我们不仅要具备理论基础和敏锐的数据感知,还需要有做实验的工具、方法和策略等,并使用软件工程项目思维进行管理。这个想法一直指导我的实际建模工作,甚至影响我生活中的权衡决策。希望这一理念也能深入大家心中,这是我著书立说之梦想。
最后,诙谐轻松地说下我为什么要写这本书。
1)工作之余,周末闲适,希望做一些少有人做的事,挑战和成就自己。
2)如果不分享所学,实在可惜,对不起那么多的学习时间,把个人心得和所学传递给有需要的人会更有价值。
3)中学时代曾读到的一些科普文章中说,科学家一生最伟大的创造基本都是在30岁以前完成的,所以我也必须在智力和精力尚可时创作,否则以后很难对社会有智力贡献。
希望能够给有类似想法的读者以鼓励,或许这也是我写书的原因之一。
读者对象
总体来说,本书偏向于机器学习的进阶读者,读者需要掌握必要的计算机科学基础知识,具有Python语言的编程功底。本书适合以下读者:
机器学习爱好者或从业者
不具有编程背景的数据分析师、模型工程师
具有编程背景的转行程序员和算法工程师
高校师生
本书特色
媒体评论
方法论
用软件工程(Software Engineering)中的工具、方法和理论指导机器学习的实践活动,如测试驱动开发方法、机器学习项目管理方法、标准化的数据科学环境等。
提出机器学习是一门实践学科,突出其工具、方法和策略的重要性,强调实际项目中时间、人力成本等权衡策略。
工业实践
以机器学习全生命周期为脉络,全面呈现了机器学习项目开发的完整链路,并融入了当下机器学习在互联网金融领域的应用技术,同时提供了高质量的软件设计和代码实现,包括:
数据分析包
特征离散化包
特征选择包
集成模型框架包
XGBoost自动调参包
大规模模型上线系统架构和源码
一名优秀的机器学习工程师一定是一名合格的程序员,愿他们推动机器学习实践中“最后一公里”的落地!