本书内容涵盖机器学习基础知识的各个方面。全书分为10章。第1~3章介绍机器学习的基础知识和数学基础;第4~8章介绍常用的有监督学习算法;第9章介绍常见的无监督学习算法,讨论聚类算法和PCA降维算法的相关知识;第10章介绍关联算法,并对Apriori算法、FP-growth算法的原理进行详细阐述。
本书适合普通高等院校非计算机专业开设人工智能基础应用相关课程的教师和学生使用,也适合准备成为数据挖掘工程师的相关人员参考。
近年来,人工智能在全世界掀起了新的科技
浪潮,人工智能技术开始逐渐渗入人们生活的每
一个角落,人工智能技术的飞速发展正以颠覆性
的力量改变着人类社会和世界的面貌,人工智能
时代已悄然而至。在这一时代背景下,学习人工
智能的知识和技术已经成为时代发展对当代大学
生的新要求。因此,教育部发布《高等学校人工
智能创新行动计划》,明确指出,积极开展“新
工科”研究与实践,重视人工智能与计算机、控
制、数学、统计学等学科专业教育的交叉融合,
探索“人工智能+X”的人才培养模式,并提出了
人工智能赋能新工科课程群。
传统的高等院校非计算机专业学生的计算机
公共课一直以计算机基础、计算思维、计算机程
序设计等课程为主,这种以信息技术为驱动的课
程体系正在逐渐转向数据挖掘、机器学习等以数
据为驱动的新课程体系,以适应人工智能赋能新
工科课程群的要求。
机器学习是人工智能重要的实现方式之一,
它极大地推动了人工智能的快速发展。将机器学
习技术设立为高等院校非计算机专业学生的公共
课程,在新的课程体系中有着至关重要的作用。
通过该课程的学习,可以培养学生数据分析、机
器学习建模和深度学习建模的能力,促进大数据
、“互联网+”和人工智能对“四新专业”(即
新工科、新文科、新医科和新农科)的赋能,为
各个专业培养复合型人才提供课程体系上的支撑
。同时,该课程对于激发学生的创新意识、培养
自学能力、锻炼实际的编程能力也起着极为重要
的作用。
近年来,编者一直从事机器学习方面的研究
和教学工作,并开发了多个软件项目,具有丰富
的教学经验、较强的科研能力和开发软件项目的
实际经验,对机器学习的理论和实际应用有着深
入的理解。为了使初学机器学习的读者能够理解
机器学习的理论和实际应用,并初步具备使用机
器学习技术开发应用程序和解决实际问题的能力
,编者精选了机器学习方面的内容,将机器学习
理论与实践相结合,从开发者的实践角度出发,
注重提升学生的动手操作能力,在动手编写代码
的过程中,循序渐进地掌握机器学习的理论知识
和实践技巧。为了便于读者学习和理解,在全书
的体系结构和内容上,编者采取由浅入深、深入
浅出、循序渐进的方法,同时在大部分章节中提
供典型例题和习题。为了便于教师教学,编者将
教学内容模块化,使其适用理、工、文不同学科
教学需求,方便教学过程中根据不同学科进行教
学内容的调整。
为了更好地将理论联系实际,达到良好的教
学效果,本书以简述原理、提出问题实例、给出
实际代码、展现运行结果的方式实战讲解每一种
算法,这种使用可视化的例子展现概念的方法,
使理论知识的学习不再晦涩难懂。算法部分提供
了Python语言代码及使用Scikit-Learn高效实
现的方法,并对其中的参数进行详细讲解,使读
者在实践中能进一步加深对机器学习算法的理解
。为了方便读者的学习,本书还提供全部配套代
码,读者可从科学出版社职教技术出版中心网站
(www.abook.cn)上下载并进行练习。
本书由史巧硕、毕晓博、李林昊任主编,负
责全书的总体策划与统稿、定稿工作,朱怀忠、
李娟和牛炳鑫任副主编。具体编写分工如下:第
1章由牛炳鑫编写,第2、3章由李林昊编写,第4
章由朱怀忠编写,第5、6、7章由史巧硕编写,
第8、9章由毕晓博编写,第10章由李娟编写,刘
洪普、刘靖宇、王建勋和陈冀川参与了本书的校
阅、审核、调试等工作。
本书在编写过程中,参考了大量文献资料,
在此向这些文献资料的作者深表感谢。限于编者
水平,书中难免有不妥之处,敬请各位读者不吝
指正。
编者
2021年10月
第1章 绪论
1.1 机器学习与人工智能概述
1.1.1 人工智能的发展历程
1.1.2 人工智能的四个要素
1.1.3 人工智能与机器学习
1.2 我国人工智能行业发展现状
1.3 机器学习的发展历程
1.4 机器学习的应用
第2章 机器学习基本概念
2.1 机器学习的定义
2.2 机器学习的任务
2.2.1 有监督学习
2.2.2 无监督学习
2.2.3 半监督学习
2.2.4 强化学习
2.3 机器学习中的常用术语
2.4 偏差与方差
2.5 机器学习的工作流程
2.6 Scikit-Learn
2.6.1 Scikit-Learn简介
2.6.2 Scikit-Learn的安装
2.6.3 Scikit-Learn的使用
第3章 机器学习的数学基础
3.1 线性代数
3.1.1 标量、向量、矩阵和张量
3.1.2 矩阵和向量相乘
3.1.3 向量内积
3.1.4 向量外积
3.1.5 行列式和迹
3.2 概率论
3.2.1 离散随机变量
3.2.2 数学期望
3.2.3 二维离散随机变量和统计独立性
3.2.4 二维随机变量函数的数学期望
3.2.5 条件概率
3.2.6 全概率公式和贝叶斯公式
3.2.7 随机向量
3.2.8 期望值、均值向量和协方差矩阵
3.2.9 连续型随机变量
3.3 基尼指数和熵
3.3.1 基尼指数
3.3.2 熵
第4章 线性回归
4.1 线性回归模型
4.1.1 回归问题
4.1.2 线性回归模型实例
4.2 最小二乘法
4.2.1 最小二乘法的求解过程
4.2.2 线性回归算法的实现
4.2.3 用Scikit-Learn实现线性回归
4.2.4 最小二乘法的局限性
4.3 梯度下降法
4.3.1 梯度下降的基本概念
4.3.2 梯度下降
4.4 正则化
4.5 其他回归模型
4.6 回归模型评价指标
第5章 分类算法
5.1 逻辑回归
5.1.1 分类问题
5.1.2 逻辑回归模型
5.1.3 决策边界
5.1.4 逻辑回归的代价函数
5.1.5 分类模型性能指标
5.1.6 逻辑回归实例
5.1.7 逻辑回归的优缺点
5.2 朴素贝叶斯分类
5.2.1 贝叶斯定理
5.2.2 朴素贝叶斯分类算法
5.2.3 朴素贝叶斯实例
5.2.4 朴素贝叶斯分类算法的优缺点
5.3 生成模型与判别模型
5.4 KNN模型
5.4.1 KNN算法原理
5.4.2 KNN算法的基本过程
5.4.3 KNN算法的实现
5.4.4 使用Scikit-Learn实现KNN分类
5.4.5 KNN算法的优缺点
5.5 惰性学习模型和非参数模型
第6章 决策树
6.1 决策树的概念
6.2 特征选择
6.2.1 特征选择问题
6.2.2 信息增益
6.2.3 信息增益比
6.2.4 基尼指数的选择
6.3 剪枝处理
6.4 常见决策树算法
6.4.1 ID3决策树算法
6.4.2 C4.5 决策树算法
6.4.3 CART决策树算法
6.5 使用Scikit-Learn类库创建决策树
6.5.1 创建决策树
6.5.2 决策树分类算法的优缺点
第7章 从感知机到支持向量机与人工神经网络
7.1 感知机
7.1.1 感知机模型
7.1.2 感知机模型的损失函数
7.1.3 感知机模型的优化方法
7.1.4 感知机学习算法
7.1.5 感知机的局限性
7.2 支持向量机
7.2.1 线性可分的支持向量机
7.2.2 线性支持向量机以及软间隔最大化
7.2.3 非线性支持向量机
7.2.4 使用Scikit-Learn实现支持向量机分类算法
7.2.5 支持向量机分类算法的优缺点
7.3 人工神经网络
7.3.1 神经网络结构
7.3.2 人工神经网络的训练
第8章 集成学习
8.1 Bagging
8.1.1 Bagging算法的过程和优点
8.1.2 Bagging的偏差和方差
8.2 Bagging框架的代表算法——随机森林
8.2.1 随机森林随机性的体现
8.2.2 随机森林的构建过程
8.3 Boosting
8.3.1 Boosting模型的工作机制
8.3.2 Boosting模型的两个核心问题
8.3.3 Boosting的偏差和方差
8.4 Boosting框架的代表算法——AdaBoost算法
8.4.1 算法原理
8.4.2 算法步骤
8.4.3 AdaBoost算法的Python实现
8.5 GBDT
8.6 XGBoost
8.6.1 XGBoost简介
8.6.2 XGBoost的优点
第9章 聚类算法
9.1 k-means聚类算法
9.1.1 经典k-means聚类算法
9.1.2 x-means聚类算法
9.2 分层聚类算法
9.2.1 簇之间的距离定义
9.2.2 层次聚类算法的原理及过程举例
9.2.3 分层聚类算法的Python实现
9.3 降维算法
9.3.1 主成分分析
9.3.2 因子分析
9.3.3 线性判别分析
9.4 PCA降维算法的实现
9.4.1 基于特征值分解协方差矩阵实现PCA算法
9.4.2 基于SVD协方差矩阵实现PCA算法
第10章 关联算法
10.1 基本概念
10.2 Apriori算法
10.2.1 Apriori算法思想
10.2.2 Apriori算法流程
10.3 FP-growth算