书海网短评:
初学者学习机器学习课程通常会碰到两大障碍,一大障碍——数学基础,机器学习需要学习者具备数学基础,对于那些已经走向工作岗位的学习者来说,困难更大一些,从头开始学习和理解数据分布和模型背后的数学原理需要花费很长的时间和精力,学习
初学者学习机器学习课程通常会碰到两大障碍,一大障碍——数学基础,机器学习需要学习者具备数学基础,对于那些已经走向工作岗位的学习者来说,困难更大一些,从头开始学习和理解数据分布和模型背后的数学原理需要花费很长的时间和精力,学习周期非常漫长。第二大障碍——编程实践,并不是所有人都擅长编代码,只有亲手用代码实现机器学习的各种算法,亲眼见到算法解决了实际问题,才能更深入地理解算法。
《机器学习基础——原理、算法与实践》就是为了让初学者顺利入门而精心设计的。通过学习帮助读者扫除机器学习的两大学习障碍。书中讲述了机器学习常用算法的基本原理,读者在学习并深入理解这些精挑细选的算法后,能够理解并学会使用适合的算法来解决实际问题。此外,《机器学习基础——原理、算法与实践》使用MATLABR2015b实现了常用的机器学习算法,读者能够亲眼看见算法的工作过程和结果,加深对抽象公式和算法的理解,进而逐步掌握机器学习的原理和技能,拉近理论与实践的距离。
《机器学习基础——原理、算法与实践》讲述机器学习的基本原理,使用MATLAB实现涉及的各种机器学习算法。通过理论学习和实践操作,使读者了解并掌握机器学习的原理和技能,拉近理论与实践的距离。《机器学习基础——原理、算法与实践》共分12章,主要内容包括:机器学习介绍、线性回归、逻辑回归、贝叶斯分类器、模型评估与选择、K-均值和EM算法、决策树、神经网络、HMM、支持向量机、推荐系统、主成分分析。《机器学习基础——原理、算法与实践》源码全部在MATLABR2015b上调试通过,每章都附有习题和习题参考答案,供读者参考。
《机器学习基础——原理、算法与实践》系统讲解了机器学习的原理、算法和应用,内容全面、实例丰富、可操作性强,做到理论与实践相结合。《机器学习基础——原理、算法与实践》适合机器学习爱好者作为入门和提高的技术参考书使用,也适合用作计算机专业高年级本科生和研究生的教材或教学参考书。
袁梅宇,北航工学博士,硕士导师,现在昆明理工大学计算机系任教。为本科生和研究生主讲Java程序设计、JavaEE技术、数据库原理、人工智能、DotNet技术等核心课程,参加过863CIMSNet建设、中欧合作项目DRAGON和多项国家基金和省基金项目,第1作者公开发表论文十余篇,软件著作权(颁证)六项。第1作者专著有《JavaEE企业级编程开发实例详解》、《数据挖掘与机器学习——WEKA应用技术与实践》(第1版、第2版)、《求精要诀11JavaEE编程开发案例精讲》1
目录
第1章机器学习介绍1
1.1机器学习简介2
1.1.1什么是机器学习2
1.1.2机器学习与日常生活3
1.1.3如何学习机器学习4
1.1.4MATLAB优势5
1.2基本概念5
1.2.1机器学习的种类6
1.2.2有监督学习6
1.2.3无监督学习7
1.2.4机器学习术语7
1.2.5预处理9
1.3MATLAB数据格式10
1.3.1标称数据10
1.3.2序数数据11
1.3.3分类数据11
1.4示例数据集12
1.4.1天气问题12
1.4.2鸢尾花15
1.4.3其他数据集16
1.5了解你的数据16
习题20
第2章线性回归21
2.1从一个实际例子说起22
2.1.1模型定义23
2.1.2模型假设23
2.1.3模型评估24
2.2最小二乘法24
2.2.1最小二乘法求解参数25
2.2.2用最小二乘法来拟合奥运会数据26
2.2.3预测比赛结果27
2.3梯度下降27
2.3.1基本思路28
2.3.2梯度下降算法29
2.3.3梯度下降求解线性回归问题30
2.4多变量线性回归32
2.4.1多变量线性回归问题33
2.4.2多变量梯度下降34
2.4.3随机梯度下降38
2.4.4正规方程40
2.5多项式回归42
2.5.1多项式回归算法42
2.5.2正则化45
习题47
第3章逻辑回归49
3.1逻辑回归介绍50
3.1.1线性回归用于分类50
3.1.2假设函数51
3.1.3决策边界52
3.2逻辑回归算法53
3.2.1代价函数53
3.2.2梯度下降算法54
3.2.3MATLAB优化函数56
3.2.4多项式逻辑回归58
3.3多元分类60
3.3.1一对多60
3.3.2一对一62
3.3.3Softmax回归64
习题66
第4章贝叶斯分类器67
4.1简介68
4.1.1概述68
4.1.2判别模型和生成模型68
4.1.3极大似然估计69
4.2高斯判别分析72
4.2.1多元高斯分布72
4.2.2高斯判别模型73
4.3朴素贝叶斯75
4.3.1朴素贝叶斯算法76
4.3.2文本分类81
习题86
第5章模型评估与选择87
5.1简介88
5.1.1训练误差与泛化误差88
5.1.2偏差和方差89
5.2评估方法90
5.2.1训练集、验证集和测试集的划分91
5.2.2交叉验证92
5.3性能度量95
5.3.1常用性能度量95
5.3.2查准率和查全率96
5.3.3ROC和AUC98
5.4偏差与方差折中100
5.4.1偏差与方差诊断101
5.4.2正则化与偏差方差102
5.4.3学习曲线103
习题104
第6章K-均值算法和EM算法107
6.1聚类分析108
6.1.1K-means算法描述108
6.1.2K-means算法应用112
6.1.3注意事项113
6.2EM算法114
6.2.1基本EM算法114
6.2.2EM算法的一般形式115
6.2.3混合高斯模型118
习题123
第7章决策树125
7.1决策树介绍126
7.2ID3算法127
7.2.1信息熵127
7.2.2信息增益计算示例127
7.2.3ID3算法描述132
7.2.4ID3算法实现134
7.3C4.5算法134
7.3.1基本概念135
7.3.2剪枝处理139
7.3.3C4.5算法描述140
7.3.4C4.5算法实现142
7.4CART算法144
7.4.1CART算法介绍144
7.4.2CART算法描述147
7.4.3CART算法实现149
习题150
第8章神经网络151
8.1神经网络介绍152
8.1.1从一个实例说起152
8.1.2神经元153
8.1.3神经网络结构154
8.1.4简化的神经网络模型157
8.1.5细节说明160
8.2神经网络学习161
8.2.1代价函数161
8.2.2BP算法162
8.2.3BP算法实现166
8.2.4平方代价函数的情形171
习题171
第9章隐马尔科夫模型173
9.1隐马尔科夫模型基本概念174
9.1.1离散马尔科夫过程174
9.1.2扩展至隐马尔科夫模型176
9.1.3HMM的组成和序列生成179
9.1.4三个基本问题181
9.2求解HMM三个基本问题182
9.2.1评估问题183
9.2.2解码问题187
9.2.3学习问题190
习题196
第10章支持向量机197
10.1支持向量机介绍198
10.2最大间隔超平面198
10.2.1SVM问题的形式化描述199
10.2.2函数间隔和几何间隔199
10.2.3最优间隔分类器201
10.2.4使用优化软件求解SVM203
10.3对偶算法204
10.3.1SVM对偶问题204
10.3.2使用优化软件求解对偶SVM206
10.4非线性支持向量机208
10.4.1核技巧208
10.4.2常用核函数210
10.5软间隔支持向量机213
10.5.1动机及原问题213
10.5.2对偶问题214
10.5.3使用优化软件求解软间隔对偶SVM215
10.6SMO算法218
10.6.1SMO算法描述218
10.6.2简化SMO算法实现221
10.7LibSVM226
10.7.1LibSVM的安装226
10.7.2LibSVM函数228
10.7.3LibSVM实践指南230
习题232
第11章推荐系统233
11.1推荐系统介绍234
11.1.1什么是推荐系统234
11.1.2数据集描述235
11.1.3推荐系统符号236
11.2基于用户的协同过滤236
11.2.1相似性度量237
11.2.2算法描述239
11.2.3算法实现240
11.3基于物品的协同过滤241
11.3.1调整余弦相似度和预测241
11.3.2SlopeOne算法描述与实现243
11.4基于内容的协同过滤算法与实现247
11.4.1算法描述247
11.4.2算法实现250
习题251
第12章主成分分析253
12.1主成分分析介绍254
12.2本征值与奇异值分解255
12.2.1本征值分解255
12.2.2奇异值分解256
12.3PCA算法描述256
12.3.1PCA算法257
12.3.2从压缩表示中重建258
12.3.3确定主成分数量258
12.4PCA实现260
12.4.1假想实例260
12.4.2MNIST实例264
习题265
习题参考答案267
符号表294
参考文献295
第1章机器学习介绍
机器学习试图让机器像人类那样去理解数据,从大量的数据中发现规律和提取知识,不断地完善自我。机器学习是人工智能的一个重要研究方向,研究如何从数据中提取一些潜在的有用模式的算法。
本章首先介绍机器学习的基本概念,然后介绍MATLAB的数据格式和示例数据集,最后介绍如何使用各种统计度量来描述数据分布特征。
1.1机器学习简介
机器学习是人工智能研究领域中极其重要的研究方向,也是发展最快的分支。每过一段时间,我们都能听到一些新的应用在各个领域大展宏图的消息,如谷歌DeepMind团队研发的人工智能程序AlphaGo战胜世界围棋名将李世石、最强最新AlphaGoZero的横空出世、无人驾驶公交客车正式上路,等等。相比这些新闻,我们也许更关心其背后的支撑技术,机器学习就是AlphaGo和无人驾驶等背后的重要技术。
1.1.1什么是机器学习
机器学习是一门多领域交叉学科,其涉及概率论、统计学、优化理论、算法复杂度理论等多门学科,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构并使之不断改善自身的性能。
至今,还没有统一的机器学习定义,而且也很难给出一个公认和准确的定义。一种经常引用的英文定义来自TomMitchell的《机器学习》一书,原文是:AcomputerprogramissaidtolearnfromexperienceEwithrespecttosomeclassoftasksTandperformancemeasureP,ifits’performanceattasksinT,asmeasuredbyP,improveswithexperienceE.对应的中文译文是:如果用P来衡量计算机程序在任务T上的性能,根据经验E在任务T上获得性能改善,那么我们称该程序从经验E中学习。
不同于通过编程告诉计算机如何计算来完成特定任务,机器学习是一种数据驱动方法(data-drivenapproach),意味着方法的核心是数据。也许读者对此有疑问,让我们举例进行说明。
普通意义上的学习是通过观察获得技能的过程,学习过程如图1-1所示。例如,某天大人告诉小孩子前面那只深棕色的小动物是猫,小孩子通过观察认识猫的颜色和形态。另一天大人告诉小孩子前面那只白色的小动物也是猫,小孩子观察到尽管毛色不同,但猫的形态一样,学习到辨识猫的技能是不管毛色,只重形态。因此,下次如果遇到一只黑猫,小孩子也能准确地叫出猫。
图1-1普通学习过程
机器学习是通过数据来获取模式的过程,模式可以视为对象的组成成分或影响因素间存在的规律性关系,简单地说,模式相当于事物的规律,机器学习过程如图1-2所示。机器学习能够自动识别数据中的模式,然后使用已发现的模式去预测未来的数据,或者在不确定条件下进行某种决策。
图1-2机器学习过程
我们已经知道,使用计算机语言编程能够做很多事情,但是,如果要求编程实现在一堆照片中识别并标记出猫或狗,我们却不知道该怎样做。技术难点在于我们不知道该怎样对猫和狗的照片进行建模,也就是说,一些模式我们无法通过数据直接进行归纳总结。机器学习恰好能解决这类问题,我们将一些标记为猫和狗的照片让某个分类器(如神经网络)进行学习,分类器自动识别照片中猫和狗的模式,经过训练后,分类器分别得到猫和狗的模型,然后使用模型来识别未标记照片中是否有猫或狗。
机器学习的主要内容是研究如何从数据中构建模型的学习算法。有了学习算法之后,将已有数据(称为训练数据集)提供给它,算法就能根据这些数据构建模型,从而使用模型进行预测。因此,机器学习的一个核心内容就是研究学习算法。
前言
机器学习无疑是当今最炙手可热的领域,机器学习工程师、数据科学家和大数据工程师逐渐成为最为热门的新兴职业,各行各业的公司都在寻求具备这些技能的人才。技术职位的爆炸式增长吸引了很多在校大学生、社会IT人员将机器学习职位纳入自己的职业规划中。由于具备机器学习相关技能才更有可能在上述新兴职业中获得成功,因此一本容易上手的入门书籍肯定会对初学者有着莫大的帮助,《机器学习基础——原理、算法与实践》就是为初学者精心编写的。
初学者学习机器学习课程一般会面临两大障碍:第一大障碍是数学基础,机器学习要求学习者具备数学基础,书籍中大量的公式是初学者最大的噩梦,尤其是对于已经离开大学走向工作岗位的爱好者,要从头开始去学习和理解数据分布及模型背后的数学原理需要花费很长的时间和精力,学习周期非常漫长;第二大障碍是编程实践,并不是所有人都擅长编代码,学习者只有自己亲手用代码实现机器学习的各种算法,亲眼见到算法解决了实际问题,才能更深入地理解算法。除非想做高精尖的前沿研究,理论研究和公式推导并非是大多数人的专长,如果只是想更合理地应用机器学习来解决实际问题,必需的数学知识就可以降低到大多数人都可以理解的程度,使用MATLAB编程实现机器学习算法也比使用C++或Java等语言容易得多。
《机器学习基础——原理、算法与实践》就是为了让初学者顺利入门而设计的。首先,《机器学习基础——原理、算法与实践》只讲述机器学习常用算法的基本原理,并不追求各种算法大而全但简略的罗列,学习并深入理解这些精挑细选的算法后,能够了解基本的机器学习算法,使用适合的算法来解决实际问题。其次,《机器学习基础——原理、算法与实践》使用MATLABR2015b实现了常用的机器学习算法,读者能亲眼看见算法的工作过程和结果,加深对抽象公式和算法的理解,逐步掌握机器学习的原理和技能,拉近理论与实践的距离。再次,每章都附有习题和习题参考答案,其中,一部分习题是为了理解正文内容而设置的,另一部分习题是为了降低正文中的数学要求,将一些必要但枯燥的公式推导放在习题中,供读者有选择性地学习。最后,《机器学习基础——原理、算法与实践》专门设有读者QQ群,群号为278724996,欢迎读者加群,下载书中源代码,与作者直接对话探讨书中技术问题。
《机器学习基础——原理、算法与实践》共分12章。第1章介绍机器学习的基本概念、MATLAB的数据格式和示例数据集;第2章介绍线性回归,主要内容包括线性回归的模型定义及模型假设和评估、最小二乘法、梯度下降、多变量线性回归、随机梯度下降、正规方程、多项式回归和正则化;第3章介绍逻辑回归,主要内容包括逻辑回归的假设函数、决策边界、梯度下降算法、MATLAB优化函数、多项式逻辑回归、多元分类、Softmax回归;第4章介绍贝叶斯分类器,主要内容包括判别模型和生成模型的概念、极大似然估计、高斯判别分析、朴素贝叶斯和文本分类;第5章介绍模型评估与选择,主要内容包括训练集验证集测试集划分、交叉验证、性能度量,以及偏差与方差折中;第6章介绍K-均值和EM算法,主要内容包括聚类分析的基本概念、K-means算法应用、EM算法,以及混合高斯模型;第7章介绍决策树,主要内容包括决策树的基本概念、ID3算法、C4.5算法,以及CART算法的原理与实现;第8章介绍神经网络,主要内容包括神经元、神经网络结构、反向传播算法原理与实现;第9章介绍隐马尔科夫模型,主要内容包括HMM的基本概念、HMM的组成和序列生成、求解HMM三个基本问题的算法,以及MATLAB代码实现;第10章介绍支持向量机,主要内容包括支持向量机的基本概念、最大间隔超平面、对偶算法、非线性支持向量机、软间隔支持向量机、SMO算法和LibSVM库的使用;第11章介绍推荐系统,主要内容包括推荐系统的基本概念、基于用户的协同过滤算法、基于物品的协同过滤算法和基于内容的协同过滤算法;第12章介绍主成分分析,主要内容包括主成分分析的基本概念、本征值分解和奇异值分解、PCA算法的计算步骤、如何从压缩表示中重建、如何选取主成分的数量以及PCA实现。
《机器学习基础——原理、算法与实践》的编写异常艰难,从选题到付梓花费约两年时间。和大多数人一样,笔者的脑袋也是单任务处理系统,不善于同时处理多个任务,因此经常迷失在算法、代码、习题、绘图和文字的沼泽中不能自拔,多亏朋友和家人的支持才能坚持到最后。尽管在写作中付出很多艰辛的劳动,限于笔者的学识、能力和精力,书中难免会存在一些缺陷,甚至错误,敬请各位读者批评指正。感谢提供宝贵建议的贡献者,昆明理工大学计算机系吴霖老师经常与笔者讨论机器学习问题,并为《机器学习基础——原理、算法与实践》的内容选取提出了很多建设性建议,感谢吴霖老师的贡献。另外,还要感谢昆明理工大学提供的宽松的研究环境。感谢清华大学出版社的编辑老师在出版方面提出的建设性意见和给予的无私帮助。感谢购买《机器学习基础——原理、算法与实践》的朋友,欢迎批评指正,你们的批评建议都会受到重视,并在将来再版中改进。
袁梅宇
于昆明理工大学









