机器学习是人工智能时代的核心技术之一。本书从概率视角出发,系统讲解常见机器学习模型的理论基础与实现方法,通过清晰的数学推导和简洁高效的代码示例,帮助读者循序渐进地理解机器学习的原理和方法,培养理论推理能力与实践动手能力。全书共16章,涵盖有监督学习、无监督学习、概率图模型、深度学习四大核心主题,详细地介绍了线性回归、逻辑回归、支持向量机、K近邻、决策树、朴素贝叶斯、K-Means聚类、高斯混合模型、主成分分析、奇异值分解、贝叶斯学习、概率图模型、隐马尔可夫模型、马尔可夫随机场、条件随机场、人工神经网络、卷积神经网络、循环神经网络等经典模型,并辅以详尽的数学推导与代码实现。本书贯彻“代码驱动”的教学理念,以丰富的实例深入解析复杂的机器学习原理,通过案例实践强化读者的工程实践能力。本书适合作为人工智能、智能科学与技术、计算机等相关专业的高年级本科生和研究生教材,也可供机器学习工程师、数据科学家及行业从业者参考学习。
前言
在20世纪,让机器像人一样具备“听、说、读、写、看”的能力,还是一个遥不可及的梦想,然而今天,这一切已经成为现实。在不到百年的机器学习研究历程中,人类逐渐揭开了机器智能的奥秘,并取得了诸多辉煌的成就。当我们为机器的神奇表现而惊叹时,常常不禁会问: 机器究竟是如何学习的?
其实,机器学习并没有想象中那么复杂,本书将为你揭开其神秘的面纱。本书特别强调运用“概率思维”理解各种机器学习模型的原理和实现,从基础模型开始,逐步进入机器学习的前沿,循序渐进地帮你掌握各种模型的工作机制,为深入探索机器学习技术打下坚实基础。
本书主要面向机器学习的初学者,特别是在校本科生和研究生。学习机器学习需要一定的数学基础和编程技能。尽管许多读者可能已经接触过高等数学、线性代数和概率论等课程,但在实际应用这些知识时,往往会感到困难,而由于编程能力有差异,很多初学者在面对复杂的机器学习算法时无法进行有效的代码实现,进而影响了对模型的理解和应用。为了解决这些问题,本书在内容设计上特别注重以下三大特色。
1. 精心挑选学习内容
本书秉承“精讲细讲”的原则,从众多机器学习模型中精选了一些常用且重要的模型,尤其是那些代表机器学习未来发展趋势的模型,如神经网络模型、概率图模型、生成式模型等。通过对这些典型模型的详细讲解,帮助读者逐步掌握机器学习的核心原理。本书并非简单罗列模型,而是深入分析它们之间的区别与联系,揭示它们的演化关系,培养读者的机器学习思维和实际问题解决能力。学习完本书后,读者不仅能理解各种模型的工作原理,甚至能够创新并设计自己的模型。
2. 深入解析数学推导
本书详细介绍了各模型的工作原理及公式推导,方便读者自学。机器学习的核心理论离不开严谨的数学描述,为简明准确地描述机器学习模型,系统而全面的数学符号和公式推导是必不可少的。本书尽可能系统地呈现相关数学公式和推导过程,在尽量避免烦琐的数学证明的同时结合实例验证,使读者能够直观理解公式的实际应用。数学公式作为一种符号语言,随着使用频率的增加,它们将不再陌生。相反,若忽视数学,一味回避数学,则机器学习之路将难以走远。
3. 深度结合编程实践
本书采用“代码驱动”的教学方式,通过实际代码帮助读者更好地理解模型和算法。正如物理学家费曼所言: “What I cannot create, I do not understand.”在机器学习的学习过程中,亲手实现模型是理解其本质的关键。虽然市面上已有大量机器学习书籍,但大多仅介绍原理和算法,鲜有涉及代码实现。为了弥补这一空缺,本书不仅用数学语言精确描述模型,还提供了模型的代码实现和应用案例,帮助读者将理论知识转换为实际能力。
在本书的写作期间恰逢大模型的爆发期,作者敏锐地把握这一技术浪潮,将其作为重要的创作工具,显著地提升了本书的内容深度与质量水准。大模型不仅为本书提供了丰富的机器学习技术参考资料,其卓越的代码生成能力更是展现了超越人类编程效率的优势。特别值得一提的是,本书中相当比例的代码源自大模型的智能生成,这些代码经过作者的严谨验证与精心优化后得以采用。通过深入研读这些代码,读者不仅能透彻理解机器学习的核心概念,还能提高在人工智能开发与应用方面的能力。本书全部代码均在Python 3.10下运行通过。
资源下载提示
素材(源码)等资源: 扫描目录上方的二维码下载。
本书的出版离不开许多人的支持和帮助。感谢清华大学出版社赵佳霓编辑,对全书进行了细致的文字校对和排版指导,使本书内容更加完善。感谢硕士研究生张哲、本科生刘卓、博士研究生王慧妍参与部分代码的编写和调试。感谢孙航博士在采用本书授课过程中提出的宝贵意见和建议。感谢2023、2024级研究生在教材试用中指出错误并提出改进意见。书中参考了一些网络作者的博客,在此一并表示感谢。最后,但并非最不重要,我要感谢我的家人。父亲王锡安、母亲何美媛经常询问本书的写作进展,妻子邢利霞、女儿王慧妍在本书的写作过程中给予大力支持,这些都是我努力学习机器学习技术、完成书稿的原动力。
由于笔者水平有限,加之时间仓促,书中难免存在疏漏,欢迎读者批评指正。
2026年1月 于沈阳理工大学
王琢,沈阳理工大学副教授,硕士研究生导师,主要研究方向为机器学习、异常检测等。在国内外学术期刊和国际会议发表论文30余篇,其中以第一作者在Knowledge-basedsystems、Appliedintelligence、Dataminingandknowledgediscovery等国际知名期刊发表SCI检索论文6篇,谷歌学术引用300余次。担任国际知名期刊Knowledge-basedsystems,Informationsciences,InformationFusion等国际知名期刊审稿人。
目录
配书资源(教学课件、源码等)
有监督学习篇
第1章绪论
1.1机器学习发展历程
1.1.1机器学习简史
1.1.2人工智能大事年表
1.2机器学习模型
1.2.1模型的定义和术语
1.2.2机器学习模型的三要素
1.2.3机器学习模型的分类
1.2.4为什么神经网络属于概率模型
1.3学习本书的前提和方法
1.3.1必备基础
1.3.2学习方法
1.3.3本书的符号约定
1.4概率论基础
1.4.1概率的定义和基本运算
1.4.2随机变量和分布函数
1.4.3常见随机变量的分布
1.4.4期望和方差
1.4.5多维随机变量
1.4.6最大似然估计
第2章线性回归
2.1用sklearn做线性回归
2.1.1创建数据集
2.1.2划分训练集和测试集
2.1.3一元线性回归
2.1.4二元线性回归
2.1.5三元线性回归
2.2线性回归的模型结构和预测
2.2.1数据集表示
2.2.2模型结构和模型预测
2.3线性回归模型的损失函数
2.3.1残差平方和损失
2.3.2负对数似然损失
2.4线性回归的模型训练
2.4.1最小二乘法
2.4.2梯度下降法
2.5岭回归
2.5.1L2正则化与岭回归
2.5.2Lp范数
2.6线性自回归: AR
2.6.1AR模型结构和预测
2.6.2AR模型训练
2.7线性回归模型的评估指标
2.7.1均方误差
2.7.2R2
2.8练习题
第3章逻辑回归
3.1用sklearn实现逻辑回归
3.1.1生成用于分类的模拟数据集
3.1.2用sklearn对样本进行分类
3.2逻辑回归的模型结构和预测
3.2.1数据集表示
3.2.2模型结构和预测
3.3逻辑回归模型的损失函数
3.3.1确定似然函数
3.3.2确定损失函数
3.4逻辑回归的模型训练
3.5多分类逻辑回归
3.6线性回归模型的扩展
3.6.1对数概率回归
3.6.2多项式回归
3.7分类性能评估指标
3.7.1多分类性能评估指标
3.7.2二分类性能评估指标
3.8逻辑回归实践: 用sklearn实现鸢尾花分类
3.9练习题
第4章支持向量机
4.1用sklearn中的SVC实现分类
4.2支持向量机的模型结构和预测
4.2.1数据集表示
4.2.2模型结构
4.2.3模型预测
4.3支持向量机的损失函数
4.4支持向量机模型训练
4.4.1线性可分的情况
4.4.2线性不可分的情况
4.4.3再论支持向量机的损失函数
4.5核技巧
4.6多分类支持向量机
4.7支持向量机实践: 乳腺癌筛查
4.7.1k重交叉验证
4.7.2乳腺癌良性恶性分类
4.8练习题
第5章K近邻与决策树
5.1用sklearn实现K近邻
5.2K近邻的模型结构和预测
5.2.1K近邻模型结构
5.2.2K近邻模型预测
5.2.3K近邻模型的决策边界
5.3使用sklearn构建鸢尾花分类决策树
5.4决策树的模型结构和预测
5.5决策树模型训练
5.5.1用分治策略构建决策树
5.5.2分裂节点的选择
5.5.3基于分治和基尼不纯度实现鸢尾花决策树
5.6常用决策树模型
5.6.1单棵决策树模型
5.6.2集成学习模型
5.7练习题
第6章朴素贝叶斯
6.1贝叶斯分类器
6.1.1贝叶斯分类器模型结构和预测
6.1.2构造ACHW数据集
6.1.3一个简单的贝叶斯分类器
6.2朴素贝叶斯
6.2.1朴素贝叶斯模型结构和预测
6.2.2非高斯朴素贝叶斯
6.2.3其他问题
6.3朴素贝叶斯实践: 文本分类
6.4练习题
无监督学习篇
第7章K?Means和高斯混合模型
7.1用sklearn实现K?Means聚类
7.2K?Means模型结构和预测
7.2.1模型结构
7.2.2模型预测
7.3K?Means模型的损失函数
7.4K?Means的模型训练
7.4.1迭代优化: K?Means 算法
7.4.2K?Means++: 改进的初始化方法
7.4.3超参数K的选择
7.5聚类度量指标
7.5.1轮廓系数
7.5.2DB指数
7.6用sklearn实现高斯混合模型聚类
7.6.1使用ACHW数据集训练高斯混合模型
7.6.2用高斯混合模型生成新样本
7.7高斯混合模型的模型结构和预测
7.7.1模型结构
7.7.2模型的可视化
7.7.3模型预测
7.8高斯混合模型的模型训练
7.8.1确定似然函数
7.8.2EM算法
7.9K?Means和高斯混合模型实践: 鸢尾花聚类
7.9.1K?Means聚类
7.9.2高斯混合模型聚类
7.10练习题
第8章低秩近似和表征学习
8.1用sklearn做主成分分析
8.1.1鸢尾花数据集的可视化
8.1.2鸢尾花数据集的降维
8.2主成分分析原理
8.2.1向量空间的数据变换
8.2.2PCA降维
8.2.3PCA作为一种机器学习模型
8.2.4PCA与低秩近似
8.3奇异值分解原理
8.3.1奇异值分解及其降维
8.3.2奇异值分解作为一种机器学习模型
8.4矩阵补全原理
8.4.1矩阵分解
8.4.2矩阵补全与SVD的比较
8.5表征学习
8.5.1表征学习的历史
8.5.2表征学习相关技术
8.5.3奇异值分解与表征学习
8.6练习题
概率图模型篇
第9章贝叶斯推断
9.1什么是贝叶斯推断
9.1.1象棋大战
9.1.2为什么最大似然估计不可靠
9.1.3贝叶斯推断的核心思想
9.2先验分布
9.2.1Beta分布
9.2.2Beta分布应用于象棋大战问题
9.2.3没有免费的午餐定理
9.3贝叶斯处理
9.3.1象棋大战问题的后验分布估计
9.3.2共轭分布
9.3.3后验分布更新过程的可视化
9.4最大后验估计
9.5贝叶斯逻辑回归
9.5.1参数的先验分布
9.5.2观测值的似然函数
9.5.3参数的后验分布
9.6贝叶斯逻辑回归求解: 最大后验估计
9.6.1最大后验估计
9.6.2代码实现
9.7贝叶斯逻辑回归求解: 采样近似法
9.7.1Metropolis?Hastings采样法
9.7.2用Metropolis?Hastings采样计算近似后验分布
9.7.3使用近似后验样本进行预测
9.7.4代码实现
9.8练习题
第10章概率图模型
10.1用概率图模型表示联合分布
10.2有向图模型
10.2.1常用概率模型的有向图表示
10.2.2贝叶斯网络及其概率推理
10.2.3三种基本概率推理模式
10.3D?分隔
10.3.1三种基本阻塞结构
10.3.2用pgmpy验证D?分隔
10.3.3D?分隔实例
10.3.4马尔可夫毯
10.4无向图模型
10.4.1马尔可夫网络和吉布斯分布
10.4.2无向图模型中的独立性
10.5概率图模型的学习和推断
10.5.1模型学习
10.5.2模型推断
10.6练习题
第11章马尔可夫链和隐马尔可夫模型
11.1马尔可夫链
11.1.1三硬币问题
11.1.2马尔可夫链的一般形式
11.1.3马尔可夫链的收敛性
11.1.4马尔可夫链的训练和推断
11.2隐马尔可夫模型结构
11.2.1模型结构
11.2.2生成式模型
11.3隐马尔可夫模型的解码
11.3.1使用hmmlearn做推断
11.3.2Viterbi算法
11.3.3Viterbi算法的实现
11.4隐马尔可夫模型的训练
11.4.1用hmmlearn训练隐马尔可夫模型
11.4.2Baum?Welch算法
11.4.3Baum?Welch算法的实现
11.5练习题
第12章马尔可夫随机场
12.1马尔可夫随机场模型
12.1.1模型结构
12.1.2模型训练和推断
12.2马尔可夫随机场实践1: 图像去噪
12.2.1伊辛模型
12.2.2图像去噪模型
12.2.3模型推断: ICM
12.2.4代码实现
12.3马尔可夫随机场实践2: 立体视觉问题
12.3.1立体视觉问题
12.3.2马尔可夫随机场建模
12.3.3模型推断: 循环置信传播
12.3.4代码实现
12.4练习题
第13章条件随机场
13.1生成式模型和判别式模型
13.1.1常见的生成式模型和判别式模型
13.1.2生成式模型和判别式模型的区别
13.2条件随机场模型
13.2.1两个条件随机场的例子
13.2.2线性链条件随机场
13.2.3一般形式的条件随机场
13.3特征工程
13.3.1特征函数的构建方法
13.3.2特征工程示例: 拼音输入法
13.4模型推断和训练
13.4.1模型推断
13.4.2模型训练
13.5条件随机场实践: 拼音输入法
13.5.1构建训练集
13.5.2模型训练与预测
13.6练习题
深度学习篇
第14章人工神经网络
14.1M?P神经元
14.2感知机
14.2.1感知机的结构和预测
14.2.2感知机的训练
14.2.3感知机的局限性
14.2.4常用激活函数
14.3多分类感知机: Softmax回归
14.3.1Softmax回归模型结构和预测
14.3.2Softmax回归模型训练
14.3.3Softmax回归代码实现
14.4多层感知机: 前馈神经网络
14.4.1多层感知机模型结构和预测
14.4.2VC维与通用逼近定理
14.5多层感知机的训练
14.5.1损失函数
14.5.2梯度计算
14.5.3后向传播算法
14.6神经网络自动求导
14.6.1神经网络常用层的构造
14.6.2基于常用层搭建神经网络
14.7梯度优化器
14.7.1优化器工作原理
14.7.2不同优化器的代码实现
14.8其他优化方法
14.8.1权重初始化
14.8.2权重正则化
14.9人工神经网络实践: 手写数字识别
14.10练习题
第15章卷积神经网络
15.1图像分类问题
15.1.1全连接层的局限性
15.1.2深度网络的必要性
15.2卷积神经网络的结构
15.2.1单通道、单卷积核的卷积层
15.2.2卷积运算
15.2.3单通道池化层
15.2.4多输入通道、多输出通道卷积
15.2.5多通道池化
15.3一个简单的卷积神经网络——SCNN
15.3.1SCNN的结构
15.3.2SCNN的前向传播
15.4SCNN卷积神经网络的训练
15.4.1池化层的后向传播
15.4.2ReLU层的后向传播
15.4.3卷积层的后向传播
15.5SCNN卷积神经网络的代码实现
15.6常用卷积神经网络简介
15.7卷积神经网络实践: CIFAR?10图像分类
15.8练习题
第16章循环神经网络
16.1一个简单的语言模型: 预测下一个单词
16.2循环神经网络的模型结构和预测
16.2.1模型结构
16.2.2模型预测: 前向传播算法
16.3循环神经网络的训练
16.3.1后向传播算法: BPTT
16.3.2BPTT代码实现
16.4循环神经网络的变体
16.4.1多层循环神经网络
16.4.2双向循环神经网络
16.4.3可变长度序列的循环神经网络
16.5改进的循环神经网络: LSTM和GRU简介
16.5.1LSTM的模型结构和预测
16.5.2GRU的模型结构和预测
16.5.3Transformer简介
16.6循环神经网络实践: 中文句子生成
16.7练习题
参考文献