编辑推荐
187张图解轻松入门
提供可执行的Matlab程序代码
覆盖机器学习中经典、用途广的算法
专业实用
东京大学教授、机器学习专业专家执笔,浓缩机器学习的关键知识点
图文并茂
187张图示帮助理解,详略得当,为读懂大部头开路。
角度新颖
实战导向
配有可执行的MATLAB程序代码,边学习边实践。
内容简介
《图解机器学习》用丰富的图示,从ZUI小二乘法出发,对基于ZUI小二乘法实现的各种机器学习算法进行了详细的介绍。第Ⅰ部分介绍了机器学习领域的概况;第Ⅱ部分和第Ⅲ部分分别介绍了各种有监督的回归算法和分类算法;第Ⅳ部分介绍了各种监督学习算法;第Ⅴ部分介绍了机器学习领域中的新兴算法。书中大部分算法都有相应的MATLAB程序源代码,可以用来进行简单的测试。
作者简介
杉山将,1974年生于大阪。东京工业大学计算机工程学博士毕业,现为东京大学教授、日本国立信息学研究所客座教授。主要从事机器学习的理论研究和算法开发,以及在信号和图像处理等方面的应用。2011年获日本信息处理学会长尾真纪念特别奖。著有《统计机器学习》、DensityRatioEstimationinMachineLearning等。同时也是PatternRecognitionandMachineLearning日文版的译者之一。
许永伟,2009年赴东京大学攻读博士学位,现于东京大学空间信息科学研究所从事博士后研究(特任研究员)。主要研究方向为模式识别与机器学习、图像处理与计算机视觉,对数据挖掘、大数据和信息架构有浓厚兴趣。
内页插图
目录
第I部分 绪 论
第1章 什么是机器学习
1.1 学习的种类
1.2 机器学习任务的例子
1.3 机器学习的方法
第2章 学习模型
2.1 线性模型
2.2 核模型
2.3 层级模型
第II部分 有监督回归
第3章 最小二乘学习法
3.1 最小二乘学习法
3.2 最小二乘解的性质
3.3 大规模数据的学习算法
第4章带有约束条件的最小二乘法
4.1 部分空间约束的最小二乘学习法
4.2 l2 约束的最小二乘学习法
4.3 模型选择
第5章 稀疏学习
5.1 l1 约束的最小二乘学习法
5.2 l1 约束的最小二乘学习的求解方法
5.3 通过稀疏学习进行特征选择
5.4 lp约束的最小二乘学习法
5.5 l1+l2 约束的最小二乘学习法
第6章 鲁棒学习
6.1 l1 损失最小化学习
6.2 Huber损失最小化学习
6.3 图基损失最小化学习
6.4 l1 约束的Huber损失最小化学习
第III部分 有监督分类
第7章 基于最小二乘法的分类
7.1 最小二乘分类
7.2 0/1 损失和间隔
7.3 多类别的情形
第8章 支持向量机分类
8.1 间隔最大化分类
8.2 支持向量机分类器的求解方法
8.3 稀疏性
8.4 使用核映射的非线性模型
8.5 使用Hinge损失最小化学习来解释
8.6 使用Ramp损失的鲁棒学习
第9章 集成分类
9.1 剪枝分类
9.2 Bagging学习法
9.3 Boosting 学习法
第10章 概率分类法
10.1 Logistic回归
10.2 最小二乘概率分类
第11 章序列数据的分类
11.1 序列数据的模型化
11.2 条件随机场模型的学习
11.3 利用条件随机场模型对标签序列进行预测
第IV部分 监督学习
第12章 异常检测
12.1 局部异常因子
12.2 支持向量机异常检测
12.3 基于密度比的异常检测
第13章 监督降维
13.1 线性降维的原理
13.2 主成分分析
13.3 局部保持投影
13.4 核函数主成分分析
13.5 拉普拉斯特征映射
第14章 聚类
14.1 K均值聚类
14.2 核K均值聚类
14.3 谱聚类
14.4 调整参数的自动选取
第V部分 新兴机器学习算法
第15章 在线学习
15.1 被动攻击学习
15.2 适应正则化学习
第16章 半监督学习
16.1 灵活应用输入数据的流形构造
16.2 拉普拉斯正则化最小二乘学习的求解方法
16.3 拉普拉斯正则化的解释
第17章 监督降维
17.1 与分类问题相对应的判别分析
17.2 充分降维
第18章 迁移学习
18.1 协变量移位下的迁移学习
18.2 类别平衡变化下的迁移学习
第19章 多任务学习
19.1 使用最小二乘回归的多任务学习
19.2 使用最小二乘概率分类器的多任务学习
19.3 多次维输出函数的学习
第VI部分 结 语
第20章 总结与展望
参考文献
前言/序言
机器学习领域是深不可测的吗?人工智能是天方夜谭吗?时至今日,机器学习研究的重要性与可行性已得到广泛承认,并在模式识别、通信、控制、金融、机器人、生物信息学等许多领域都有着广泛的应用。
如何自动归类筛选邮件和网页?如何向大家推荐你可能感兴趣的人?如何预测整体市场行情的好坏?如何从统计学的角度对照片进行归类?本书就介绍了这样一些算法。
如果想得到最通俗、简洁的讲解,本书最为合适。
如果想立即知道算法的性能,并期望有可运行的源代码,本书最为方便。
很多人都是看着日本的动画长大的。殊不知,大部分日本人都具有熟练的绘画能力。他们总可以把复杂、枯燥的事物用惟妙惟肖的漫画生动地表达出来。广告、网页、海报,甚至政府公告都图文并茂。市面上也有不计其数的“图解……”“图说……”一类的书籍。本书就是其中一例,这也是本书的最大特点。
杉山将博士今年赴任东京大学教授,他在机器学习领域颇有建树。他的研究室吸引了来自世界各地的机器学习研究者。本书承袭了日本特有的绘画特色,依靠作者丰富的机器学习经验,用最精简的文字,将原本复杂抽象的数学原理,用形象的漫画与数据图形进行了清晰的说明。作者也将最前沿和最核心的研究成果汇集到了本书之中。
本书的侧重点不在于机器学习原理的相关推导,而在于结论的分析和应用。读者朋友可以更快地掌握各种算法的特点和使用方法,提纲挈领地消化应用,而不必拘泥于算法的细节不能自拔。另外,本书旁征博引,图文并茂,结构清晰,范例实用丰富,深入浅出地说明了机器学习中最典型和用途最广泛的算法。
本书内容覆盖面广,不但与市面上众多的机器学习书籍并无重复,更可与其互为补充。大部分算法都有简洁、现成的MATLAB源代码,读者朋友可以轻松地进行验证。以此为原型,再稍加修改扩充,即可做出为自己所用的项目代码。
机器学习领域日新月异,书中所涉及的概念和术语数目繁多,且有许多概念和术语目前尚无公认的中文译法。如果有不合读者朋友习惯的术语出现,请参考译者注,确认其原始词意。
本译稿得到了图灵公司编辑的悉心指导,她们为保证本书的质量做了大量的补译、校正及编辑工作,在此表示深深的谢意。
许永伟
2014年12月于东京
《深度探秘:算法的逻辑与创新的实践》 本书并非对某类特定技术或理论的罗列,而是旨在构建一个关于“思考如何解决问题”的通用框架。我们聚焦于那些驱动现代智能技术的核心逻辑,以及这些逻辑如何在现实世界中转化为创新应用。本书的核心在于“理解”,而非“记忆”;在于“推理”,而非“套用”。 第一部分:思维的基石——抽象与建模 在深入探索复杂系统之前,任何学科都需要一套清晰的思维工具。本部分将带领读者回归思维的本源,学习如何将纷繁复杂的世界提炼成易于分析和操作的模型。 一、认识现实的边界:从具象到抽象 1.1 观察与提问:一切分析的起点 我们如何看待和理解周围的事物?本节将探讨不同尺度的观察如何引导我们发现问题的关键。从日常生活现象到科学前沿的观察,我们将学习如何捕捉那些看似微小却蕴含重大意义的细节。 “为什么会这样?”“如果……会怎样?”——学习提出能够引导深入思考和探索的问题,是构建知识体系的第一步。我们将分析提问的艺术,包括开放式提问、限定性提问以及如何通过问题层层递进,触及问题的本质。 1.2 抓住本质:辨别关键特征与忽略噪音 在海量信息中,哪些是真正影响事物运作的要素?本节将介绍识别“关键特征”的方法,例如通过对比分析、归纳总结以及可视化手段,找出事物最核心的属性和行为模式。 “噪音”并非一无是处,但何时需要忽略它?我们将探讨区分“噪音”与“信号”的策略,以及如何避免被无关信息干扰,从而聚焦于核心问题。 1.3 构建模型:思维的蓝图 什么是模型?它为何如此重要?本节将阐述模型的概念,从简单的物理模型、数学模型到更复杂的概念模型,理解模型是如何帮助我们理解、预测和控制现实世界的。 模型的要素:变量、关系与约束。我们将学习如何定义模型的构成部分,如何描述变量之间的相互作用,以及模型的局限性——哪些约束条件决定了模型的适用范围。 从概念到形式:将直观理解转化为结构化描述。本节将引导读者将对现实世界的理解转化为具有逻辑结构的形式化描述,为后续的分析和计算奠定基础。 二、逻辑的语言:符号、规则与推理 2.1 符号系统:构建逻辑的基石 为何需要符号?符号如何承载意义?本节将深入探讨符号的本质,以及它们在不同领域(如数学、编程、自然语言)中扮演的角色。理解符号的抽象性和灵活性是掌握复杂逻辑的关键。 从简单到复杂:符号组合的规则。我们将学习不同的符号组合规则,例如数学运算符号的组合、逻辑运算符的优先级,以及它们如何构建出更复杂的意义。 2.2 规则的力量:指令与约束 规则的类型:显性规则与隐性规则。本节将区分不同类型的规则,例如明确的程序指令、自然界的物理法则,以及社会中的约定俗成。 规则的执行:如何让“行动”成为“逻辑”?我们将探讨规则如何被解释和执行,以及“执行”过程中可能遇到的问题,如歧义、冲突和不完整性。 2.3 推理的艺术:从已知到未知 演绎推理:从一般到特殊。本节将详细讲解演绎推理的原理,包括前提、结论以及推理的有效性。通过具体的例子,理解如何从普遍真理推导出特定结论。 归纳推理:从特殊到一般。我们将探索归纳推理的魅力与挑战,了解如何通过观察大量个例来形成普遍性结论,并讨论归纳推理的局限性以及如何提高其可靠性。 溯因推理(Abduction):寻找最佳解释。本节将介绍溯因推理,即在观察到一系列现象后,寻找最可能解释这些现象的原因。这种推理方式在诊断、故障排除和科学发现中至关重要。 第二部分:算法的灵魂——结构、流程与优化 理解了思维的基石,我们便可以开始构建实现这些思维的“机器”——算法。本部分将深入剖析算法的内在结构、执行流程以及优化之道。 三、算法的架构:数据与指令的舞蹈 3.1 数据结构:信息的组织之道 为何需要结构?不同结构的优势与劣势。本节将探讨数据在计算机中如何被组织和存储,从最基本的数组、链表,到更复杂的树、图等。理解不同数据结构的特性,是选择最高效处理信息的关键。 选择合适的结构:匹配问题与数据的特性。我们将学习如何根据问题的需求和数据的特征,选择最适合的数据结构,从而提高处理效率和降低资源消耗。 抽象数据类型(ADT):隐藏实现细节。本节将介绍ADT的概念,理解它如何提供一种通用的接口,隐藏底层实现的复杂性,使得算法的设计更加灵活和模块化。 3.2 控制流:指令的执行序列 顺序执行:最简单也最基础的指令排列。本节将回顾最基本的指令执行方式,以及如何通过简单的组合实现一系列操作。 分支与判断:让算法“思考”。我们将深入理解条件语句(if-else)、选择语句(switch)等如何让算法根据不同的情况做出不同的决策,这是算法具有智能性的基础。 循环与迭代:重复的力量。本节将探讨各种循环结构(for, while),以及它们如何实现重复性的任务,效率地处理大量数据,并介绍迭代器的概念。 递归:优雅的自我调用。我们将深入理解递归的原理,及其在解决分治问题、树状结构遍历等方面的强大能力,并讨论递归与迭代的相互转化。 四、流程的优化:效率与性能的艺术 4.1 衡量效率:时间与空间复杂度 什么是“效率”?超越直觉的度量。本节将引入时间复杂度和空间复杂度的概念,解释它们如何描述算法随输入规模增长而变化的性能表现。 大O表示法:描述增长趋势的通用语言。我们将学习使用大O表示法来分析和比较不同算法的效率,理解常数时间、对数时间、线性时间、平方时间等概念。 案例分析:不同算法效率的对比。通过具体的例子,例如排序算法(冒泡排序、快速排序)或查找算法(线性查找、二分查找),直观展示不同算法在时间和空间复杂度上的差异。 4.2 算法设计策略:解决问题的通用方法 分治法(Divide and Conquer):化繁为简。本节将深入讲解分治法的思想,如何将大问题分解为小问题,独立解决后再合并结果。 动态规划(Dynamic Programming):避免重复计算的智慧。我们将探讨动态规划的核心思想,如何通过存储子问题的解来避免重复计算,从而高效地解决具有重叠子问题和最优子结构的问题。 贪心算法(Greedy Algorithms):局部最优的追求。本节将介绍贪心算法的策略,即在每一步都做出当前看起来最优的选择,以期获得全局最优解,并讨论其适用条件。 回溯法(Backtracking):试探与剪枝。我们将学习回溯法的思想,如何通过系统地搜索所有可能的解决方案,并在发现当前路径无法达成目标时“回溯”到之前的状态,从而找到解。 4.3 算法的评估与选择:在约束条件下做出明智决策 多种解法:不存在“唯一最优”的算法。本节将强调,对于同一问题,可能存在多种解决算法,每种算法都有其优缺点。 权衡取舍:效率、可读性与实现难度。我们将讨论如何在实际应用中权衡算法的运行效率、代码的可读性、实现的难度以及对特定硬件的要求。 特定场景的优化:针对性地改进。本节将引导读者思考,如何根据具体应用场景的特点,对通用算法进行局部优化,以达到最佳性能。 第三部分:创新的实践——应用与演进 理解了思维的逻辑和算法的精髓,我们便能将这些能力应用于解决现实世界中的各种挑战,并持续推动创新。 五、问题的转化:从业务需求到算法蓝图 5.1 理解痛点:需求分析的深度 “用户想要什么?”——超越表面需求。本节将探讨如何通过深入的访谈、用户调研和场景分析,挖掘用户隐藏的、深层次的需求,而不是仅仅停留在表面的请求。 识别关键瓶颈:在流程中找到“断点”。我们将学习如何分析现有流程或系统,找出效率低下、成本高昂或体验不佳的关键环节,这些环节通常是应用算法的最佳切入点。 量化目标:让“好”有标准。如何将模糊的改进目标转化为可衡量的指标?本节将讨论设定清晰、可量化的成功标准,例如提高准确率、降低延迟、减少错误率等。 5.2 特征工程:为算法注入“理解力” 何为“特征”?数据的“眼睛”。本节将深入阐释特征的概念,即从原始数据中提取出的、能够有效反映问题本质的属性。 特征的来源:原始数据、组合与转换。我们将探索如何从原始数据中提取特征(如文本的词频、图像的像素值),如何通过组合现有特征生成新特征(如年龄段、收入水平),以及如何对数据进行转换(如归一化、离散化)以适应不同算法的需求。 特征的选择与评估:去伪存真。本节将介绍多种特征选择方法,例如过滤法、包裹法和嵌入法,以及如何通过评估特征的重要性来构建更精简、更有效的特征集。 5.3 问题的建模与映射:为算法找到“家” 选择合适的模型类型:分类、回归、聚类……?本节将引导读者了解不同类型的建模任务(如预测一个离散的类别、预测一个连续的数值、发现数据的内在分组),并根据问题性质选择最合适的建模框架。 将问题映射到算法:找到“天生一对”。如何将现实问题转化为算法可以处理的形式?我们将学习如何将业务目标、数据特征与算法的输入输出对应起来。 定义评价指标:衡量算法的“聪明程度”。本节将详细介绍各种评价指标(如准确率、精确率、召回率、F1分数、均方误差等),以及如何根据不同的应用场景选择最合适的评价指标。 六、算法的生命周期:从训练到部署再到迭代 6.1 模型的训练:让算法“学习” 训练数据的准备:质量决定一切。本节将强调训练数据的质量、数量和代表性对模型性能的决定性影响,以及数据划分(训练集、验证集、测试集)的重要性。 算法的学习过程:参数的调整与优化。我们将深入理解模型是如何通过算法在训练数据上调整内部参数,以最小化误差或最大化目标函数的过程。 验证与调参:防止“过拟合”与“欠拟合”。本节将介绍验证集的作用,以及如何通过调整超参数来优化模型性能,避免模型在训练数据上表现优秀但在新数据上表现糟糕(过拟合)或在任何数据上表现都不佳(欠拟合)。 6.2 模型的评估与部署:走向“实战” 在测试集上的最终检验:真实世界的“模拟考试”。本节将强调测试集的重要性,它模拟了模型在未知数据上的表现,是衡量模型泛化能力的关键。 部署的挑战:从实验室到生产环境。我们将讨论将训练好的模型集成到实际应用中可能遇到的技术挑战,如计算资源、延迟要求、数据流处理等。 用户体验与集成:算法融入日常。如何让算法“润物细无声”地服务于用户?本节将关注算法与用户界面、业务流程的顺畅集成,确保用户能够从中受益。 6.3 模型的监控与迭代:持续的改进之路 性能监控:算法的“健康体检”。模型部署后并非一劳永逸,本节将强调持续监控模型在实际运行中的性能,及时发现性能下降或异常。 数据漂移与概念漂移:世界在变,算法也需适应。我们将探讨外部环境变化(如用户行为改变、数据分布偏移)对模型性能的影响,以及如何识别这些变化。 模型的再训练与更新:让算法“永葆青春”。本节将介绍何时需要对模型进行再训练,如何利用新收集到的数据来更新模型,以适应不断变化的世界。 模型的可解释性与透明度:理解“为什么”。在某些关键领域,理解算法做出决策的原因至关重要。本节将探讨可解释性模型的重要性以及相关技术。 结语:探索无限的可能 本书并非提供一套固定不变的“秘籍”,而是致力于开启读者探索未知、解决问题的思维方式。我们相信,理解算法的内在逻辑、掌握抽象与建模的艺术,并能够将这些能力创造性地应用于实践,才是应对未来挑战的关键。愿读者在本书的引导下,能够成为更具洞察力、更富创造力的思考者和实践者。