内容简介
《计算机科学丛书:机器学习基础教程》介绍机器学习技术及应用的主要算法,重点讲述理解主流的机器学习算法所需的核心数学和统计知识。书中介绍的算法涵盖机器学习的主要问题:分类、聚类和投影。由于本书是机器学习基础课程的教材,所以尽量减少了数学难度,仅对一小部分重要算法给出详细的描述和推导,而对大部分算法仅给出简单介绍,目的在于使学生打好基础,增强信心和兴趣,鼓励他们进一步学习该领域的高级主题或从事相关研究工作。
《计算机科学丛书:机器学习基础教程》是机器学习导论课程教材,适合作为计算机、自动化及相关专业高年级本科生或研究生的教材,也可供研究人员和工程技术人员参考。
作者简介
作者:(英)罗杰斯、吉罗拉米 译者:郭茂祖、王春宇、刘扬、刘晓燕
Simon Rogers英国格拉斯哥大学计算机科学学院讲师,主讲硕士生的机器学习课程。Rogers博士是机器学习领域的一位活跃研究者,研究兴趣包括代谢组学数据分析和概率机器学习技术在人机交互领域的应用。
Mark Girolami英国伦敦大学学院(UCL)统计系主任和计算机科学系荣誉教授,并担任计算统计学和机器学习研究中心主任。他还是英国统计协会研究组成员,英国工程和科学研究委员会高级研究员,英国工程技术学会会员,爱丁堡皇家学会院士。
内页插图
目录
出版者的话
译者序
前言
第1章 线性建模:最小二乘法
1.1 线性建模
1.1.1 定义模型
1.1.2 模型假设
1.1.3 定义什么是好的模型
1.1.4 最小二乘解:一个有效的例子
1.1.5 有效的例子
1.1.6 奥运会数据的最小二乘拟合
1.1.7 小结
1.2 预测
1.2.1 第二个奥运会数据集
1.2.2 小结
1.3 向量/矩阵符号
1.3.1 例子
1.3.2 数值的例子
1.3.3 预测
1.3.4 小结
1.4 线性模型的非线性响应
1.5 泛化与过拟合
1.5.1 验证数据
1.5.2 交叉验证
1.5.3 K折交叉验证的计算缩放
1.6 正则化最小二乘法
1.7 练习
其他阅读材料
第2章 线性建模:最大似然方法
2.1 误差作为噪声
2.2 随机变量和概率
2.2.1 随机变量
2.2.2 概率和概率分布
2.2.3 概率的加法
2.2.4 条件概率
2.2.5 联合概率
2.2.6 边缘化
2.2.7 贝叶斯规则介绍
2.2.8 期望值
2.3 常见的离散分布
2.3.1 伯努利分布
2.3.2 二项分布
2.3.3 多项分布
2.4 连续型随机变量--概率密度函数
2.5 常见的连续概率密度函数
2.5.1 均匀密度函数
2.5.2 β密度函数
2.5.3 高斯密度函数
2.5.4 多元高斯
2.5.5 小结
2.6 产生式的考虑(续)
2.7 似然估计
2.7.1 数据集的似然值
2.7.2 最大似然
2.7.3 最大似然解的特点
2.7.4 最大似然法适用于复杂模型
2.8 偏差方差平衡问题
2.9 噪声对参数估计的影响
2.9.1 参数估计的不确定性
2.9.2 与实验数据比较
2.9.3 模型参数的变异性--奥运会数据
2.10 预测值的变异性
2.10.1 预测值的变异性--一个例子
2.10.2 估计值的期望值
2.10.3 小结
2.11 练习
其他阅读材料
第3章 机器学习的贝叶斯方法
3.1 硬币游戏
3.1.1 计算正面朝上的次数
3.1.2 贝叶斯方法
3.2 精确的后验
3.3 三个场景
3.3.1 没有先验知识
3.3.2 公平的投币
3.3.3 有偏的投币
3.3.4 三个场景--总结
3.3.5 增加更多的数据
3.4 边缘似然估计
3.5 超参数
3.6 图模型
3.7 奥运会100米数据的贝叶斯处理实例
3.7.1 模型
3.7.2 似然估计
3.7.3 先验概率
3.7.4 后验概率
3.7.5 1阶多项式
3.7.6 预测
3.8 边缘似然估计用于多项式模型阶的选择
3.9 小结
3.10 练习
其他阅读材料
第4章 贝叶斯推理
4.1 非共轭模型
4.2 二值响应
4.3 点估计:最大后验估计方案
4.4 拉普拉斯近似
4.4.1 拉普拉斯近似实例:近似γ密度
4.4.2 二值响应模型的拉普拉斯近似
4.5 抽样技术
4.5.1 玩飞镖游戏
4.5.2 Metropolis-Hastings算法
4.5.3 抽样的艺术
4.6 小结
4.7 练习
其他阅读材料
第5章 分类
5.1 一般问题
5.2 概率分类器
5.2.1 贝叶斯分类器
5.2.2 逻辑回归
5.3 非概率分类器
5.3.1 K近邻算法
5.3.2 支持向量机和其他核方法
5.3.3 小结
5.4 评价分类器的性能
5.4.1 准确率--0/1损失
5.4.2 敏感性和特异性
5.4.3 ROC曲线下的区域
5.4.4 混淆矩阵
5.5 判别式和产生式分类器
5.6 小结
5.7 练习
其他阅读材料
第6章 聚类分析
6.1 一般问题
6.2 K均值聚类
6.2.1 聚类数目的选择
6.2.2 K均值的不足之处
6.2.3 核化K均值
6.2.4 小结
6.3 混合模型
6.3.1 生成过程
6.3.2 混合模型似然函数
6.3.3 EM算法
6.3.4 例子
6.3.5 EM寻找局部最优
6.3.6 组分数目的选择
6.3.7 混合组分的其他形式
6.3.8 用EM估计MAP
6.3.9 贝叶斯混合模型
6.4 小结
6.5 练习
其他阅读材料
第7章 主成分分析与隐变量模型
7.1 一般问题
7.2 主成分分析
7.2.1 选择D
7.2.2 PCA的局限性
7.3 隐变量模型
7.3.1 隐变量模型中的混合模型
7.3.2 小结
7.4 变分贝叶斯
7.4.1 选择Q(θ)
7.4.2 优化边界
7.5 PCA的概率模型
7.5.1 Qτ(τ)
7.5.2 Qxn(xn)
7.5.3 Qwn(wm)
7.5.4 期望值要求
7.5.5 算法
7.5.6 例子
7.6 缺失值
7.6.1 缺失值作为隐变量
7.6.2 预测缺失值
7.7 非实值数据
7.7.1 概率PPCA
7.7.2 议会数据可视化
7.8 小结
7.9 练习
其他阅读材料
词汇表
索引
精彩书摘
1.5 泛化与过拟合
1.4节提出了1阶与8阶多项式哪个更好的问题。假定原来建立这些模型的目的是做预测,那么不难理解最好的模型就是可以使预测最精确的那个,即可以泛化训练样本以外数据的模型(例如,到2008年的奥运会数据)。理想情况下,我们更喜欢选择在不可见数据上性能最好的模型(即最小化损失),但是由于问题本身的原因,数据无法得到。
图1-10表明,可应用训练数据上的损失选择用于预测的模型。曲线显示训练数据上8阶多项式拟合男子100米数据的损失比1阶多项式更低。而8阶多项式对于未来奥运会的预测非常糟糕。基于8阶多项式的模型过于关注训练数据(过拟合),因此不能很好地泛化新数据。由于模型越来越复杂,所以也越来越逼近可观测数据。不幸的是,当超过某点,预测的质量就会迅速退化。为了克服过拟合,能够很好地泛化,确定最优模型的复杂度将会非常有挑战性。这个折中问题经常被认为是偏置一方差平衡,将在2.8节中简单地介绍。
1.5.1 验证数据
克服过拟合问题的一般方法是使用第二个数据集,即验证集。用验证集来验证模型的预测性能。验证数据可以单独提供或者从原始训练集中拿出一部分。例如,在100米数据中,可以从训练集中拿出1980年以后的所有奥运会数据作为验证集。为了进行模型选择,可以在缩小的训练集上训练每一个模型,然后计算它们在验证集上的损失。图1-12a、b依次给出了训练和(10g)验证损失的曲线。训练损失随着多项式阶(模型复杂度)的增加单调递减。而验证损失随着多项式阶的增加而快速增长,这表明1阶多项式有最好的泛化能力,能够产生最可靠的预测。很容易测试这个假设。在图113中,可以看到数据集(已标记的训练集和验证集)与1阶、4阶和8阶多项式函数(MATLAB脚本:olympval.m)。1979年已经执行了这个任务,很明显1阶模型的确能够给出最好的预测。
……
前言/序言
目前机器学习日益成为计算机科学重要的实践、研究与开发领域之一,一方面这反映在它的学术研究规模上,另一方面反映在新的机器学习从业人员遍布于主要的国际银行和金融机构,以及微软、谷歌、雅虎和亚马逊等公司。
从某种角度来讲,这种发展源于人们对世界认知方式的数量和种类的增加。一个特别显著的例子是,在首个基因组测序完成之前,不断涌现出了各种生物检测新技术。不久前,检测生物体的复杂分子状态是难以想象的,因为这已经远远超出了我们的认识能力。现在,机器学习方法在生物体中有用分子结构提取方面的广泛应用,使其成为可能。
本书改编自英国格拉斯哥大学计算机科学学院机器学习课程的讲义,该课程包括20学时的授课和10学时的实验,面向高年级本科生开设并由研究生讲授。如此少的教学时数不可能涵盖机器学习所有的内容,所以该课的目的是为理解流行的机器学习算法提供核心数学知识和统计技术,并描述其中部分算法,这些算法涵盖了机器学习中的分类、聚类和投影等主要问题。通过本课程的学习,学生应该具备通过考察机器学习相关文献来寻求适合他们所需方法的知识和能力,希望本书的读者也能做到这一点。
鉴于选学该课学生的数学水平参差不齐,我们只假定需要很少的数学知识,计算机科学、工程类、物理学(或其他数值处理类学科)的本科生阅读本书应该没有问题,没有以上经历的读者也可以阅读本书,因为穿插在文中的注解框内给出了相应的数学解释。此外,突出强调了重要公式(公式加阴影),在继续阅读前,花些时间理解这些公式是值得的。
选学该课的学生通常会发现其中的实践环节非常有用,实验有助于将涉及的各种算法和概念由抽象的等式转化为解决实际问题的工具。
最后,本书选择的机器学习方法是我们认为学生应该掌握的,在有限的篇幅和时间内,更有必要给出一小部分算法的详细描述和研究进展,而不是泛泛地描述许多算法,因而多数读者在本书中可能找不到他们最喜欢的算法!
Simon Rogers
Mark Girolami
《算法思维:解构复杂问题的构建之道》 在信息爆炸的时代,我们每天都面临着无数的挑战,从日常的决策到宏观的规划,无一不与“问题”紧密相连。而解决问题的能力,尤其是以一种系统、高效、可复用的方式来解决问题的能力,已成为个人成长与事业发展不可或缺的核心竞争力。本书,《算法思维:解构复杂问题的构建之道》,正是为你量身打造的一场关于“如何思考”的深度探索。它并非一本技术手册,不涉及具体的编程语言或工具,而是聚焦于算法思维这一普适性的底层逻辑,教授你一套系统化的方法论,让你能够清晰地分析问题,巧妙地设计解决方案,并最终有效地实现目标。 为什么需要算法思维? 我们常常惊叹于某些人的解决问题的能力,他们似乎总能找到最简洁、最有效的路径。这并非天赋异禀,而是他们掌握了一种名为“算法思维”的强大工具。算法思维,顾名思义,是将现实世界的问题抽象化,理解其本质,然后运用一系列清晰、明确、有序的步骤(即算法)来解决。它是一种结构化的思考方式,帮助我们: 看清问题的本质: 面对纷繁复杂的表象,算法思维引导我们剥离无关紧要的干扰,直击问题的核心。 化繁为简: 将一个庞大、棘手的问题分解成一系列更小、更易于管理的部分,逐个击破。 设计高效方案: 探索多种可能的解决方案,并从中挑选出最优化、最省时省力的一种。 预见并规避风险: 在设计解决方案时,提前考虑可能出现的瓶颈和潜在问题,并制定应对策略。 清晰沟通与协作: 拥有清晰的思维逻辑,能够更有效地与他人沟通你的想法和解决方案。 本书将带你走进算法思维的世界,领略其非凡的力量。 核心内容概览: 本书将循序渐进地引导你构建和强化算法思维,从基础概念到高级应用,内容涵盖以下几个核心模块: 第一部分:拨开迷雾——理解问题与抽象化 问题的定义与分类: 我们将首先探讨什么是“问题”,以及如何将不同类型的问题进行有效的分类。了解问题的本质是解决它的第一步。我们将区分“优化问题”、“决策问题”、“搜索问题”等,并分析它们的共性与差异。 抽象的力量: 现实世界是无比复杂的,直接处理这些复杂性往往难以入手。本书将强调抽象的重要性,教会你如何忽略细节,抓住事物的关键特征,构建一个简化的模型来代表真实世界的问题。我们会通过大量的例子,例如从地图导航到行程规划,展示抽象如何将复杂问题变得可控。 数据结构的直觉: 问题往往涉及数据。理解不同数据结构(如列表、集合、树、图等)的特性,以及它们如何影响解决方案的设计,是算法思维的重要组成部分。我们不会深入到技术实现,而是侧重于建立对这些结构在逻辑层面的直观理解,知道何时何地使用何种结构能够更高效地组织和处理信息。 从描述到模型: 如何将一个模糊的自然语言描述的问题,转化为一个清晰、明确的数学或逻辑模型?本书将提供实用的技巧和框架,帮助你进行这种转化,确保模型的准确性和完整性。 第二部分:构建蓝图——设计解决之道 分解与组合: “分而治之”是解决复杂问题的经典策略。本章将深入探讨如何有效地将一个大问题分解成若干个小问题,并学习如何将这些小问题的解决方案重新组合起来,形成一个完整的解决之道。我们将介绍递归和迭代的思想,展示它们在分解问题中的强大作用。 策略与模式: 算法设计并非从零开始的创造,而是建立在前人智慧的基石之上。本书将介绍一系列经典的算法设计策略,例如: 贪心算法 (Greedy Algorithms): 在每一步都选择局部最优解,期望最终达到全局最优。我们将探讨贪心算法的适用场景、局限性以及如何判断一个问题是否适合采用贪心策略。 分治算法 (Divide and Conquer Algorithms): 将问题分解为规模更小的子问题,分别解决后再合并。我们将通过经典的例子,如归并排序和快速排序(仅从概念层面理解其分治思想),来阐释其威力。 动态规划 (Dynamic Programming): 通过将问题分解为相互重叠的子问题,并存储子问题的解来避免重复计算。我们将用通俗易懂的语言解释其核心思想,以及如何识别适合动态规划的问题。 回溯法 (Backtracking): 一种通过探索所有可能的解,并在发现无效解时“回溯”的搜索技术。我们将探讨其在组合搜索问题中的应用。 寻找模式与规律: 很多看似独立的问题,在更深的层次上可能共享着相似的解决模式。本书将帮助你培养识别这些模式的能力,从而将已有的解决方案迁移到新的问题上。 第三部分:精益求精——优化与权衡 效率的度量: 解决问题的方式多种多样,但效率却往往是关键的衡量标准。本书将介绍理解算法效率的基本概念,包括时间复杂度和空间复杂度,并教你如何从定性的角度评估不同解决方案的效率,而无需深入到复杂的数学推导。 搜索策略: 在庞大的可能性空间中寻找最优解,需要高效的搜索策略。我们将探讨不同的搜索方法,如广度优先搜索 (BFS) 和深度优先搜索 (DFS) 的基本思想,以及它们在图和树结构上的应用。 权衡与取舍: 在现实世界中,很少有完美的解决方案。时间、空间、资源等都是有限的。本书将引导你理解如何在不同的约束条件下进行权衡和取舍,找到最适合特定场景的解决方案。例如,在追求速度的同时,是否可以牺牲一些内存? 启发式搜索与近似算法: 对于一些极其复杂的问题,找到精确的最优解可能非常困难或耗时。我们将介绍启发式搜索的概念,以及如何设计能够快速找到“足够好”的近似解的算法。 第四部分:付诸实践——算法思维的应用 从理论到实践的桥梁: 本章将带领你回顾前面所学,并通过一系列精心设计的案例,展示如何将算法思维应用到各种实际场景中。这些案例可能涵盖: 个人时间管理与规划: 如何用算法思维安排日程,提高效率。 项目管理与任务分解: 如何将复杂项目分解为可执行的任务。 日常生活中的决策: 如何用结构化的方法做出更优的决策。 沟通与表达的清晰化: 如何用逻辑化的思维来组织语言。 培养批判性思维: 算法思维不仅是关于“怎么做”,更是关于“为什么这样做”。本书将鼓励你质疑假设,评估解决方案的合理性,培养独立思考和批判性分析的能力。 持续学习与成长: 算法思维不是一蹴而就的技能,而是一种需要持续实践和打磨的思维方式。本书将为你提供持续学习的思路和方法,让你能够在未来的学习和工作中不断精进。 本书的独特之处: 普适性与通用性: 本书的核心在于“思维方式”,而非具体的工具或技术。这意味着无论你的背景如何,无论你从事何种职业,都能从中获益。算法思维是解决任何复杂问题的通用语言。 拒绝枯燥的理论: 我们将避免使用晦涩难懂的专业术语,而是通过丰富的案例、生动的比喻和形象的图示,让算法思维的概念深入人心。 强调“悟”与“用”: 本书的目标是让你真正“理解”算法思维,并能够将其“运用”到实际生活中。我们将提供大量的练习和思考题,引导你主动去实践。 非技术导向: 你无需具备任何编程基础即可阅读和理解本书。重点在于逻辑、结构和解决问题的策略。 谁应该阅读本书? 学生: 无论你是否学习计算机科学,培养良好的问题解决能力对你的学业和未来发展都至关重要。 职场人士: 面对日益复杂的项目和挑战,掌握算法思维将助你脱颖而出,成为团队中的佼佼者。 产品经理、项目经理: 理解如何分解问题、设计流程、优化资源,是你的核心竞争力。 创业者: 任何创业都需要清晰的战略规划和高效的执行力,算法思维是实现这一切的基石。 任何渴望提升解决问题能力的人: 如果你觉得自己在面对复杂情况时感到无从下手,或者希望找到更有效率的解决方案,本书将是你的理想选择。 《算法思维:解构复杂问题的构建之道》 邀请你踏上一段思维的旅程。在这里,你将学会如何像一位建筑师一样,以清晰的逻辑和精妙的构思,去拆解、理解、构建解决问题的蓝图。这不仅是一本书,更是一把解锁你潜在解决问题能力的钥匙。让我们一起,用算法的智慧,拥抱更美好的未来。