内容简介
本书讨论了机器学习在统计学、模式识别、神经网络、人工智能、信号处理等不同领域的应用,其中涵盖了监督学习、贝叶斯决策理论、参数方法、多元方法、多层感知器、局部模型、隐马尔可夫模型、分类算法评估和比较以及增强学习。
本书可供完成计算机程序设计、概率论、微积分和线性代数课程的本科生和研究生使用,也可供对机器学习感兴趣的工程技术人员参考。
目录
IntroductiontoMachineLearning,SecondEdition
出版者的话
中文版序
译者序
前言
致谢
关于第2版
符号表
第1章绪论1
1 1什么是机器学习1
1 2机器学习的应用实例3
1 2 1学习关联性3
1 2 2分类3
1 2 3回归6
1 2 4非监督学习7
1 2 5增强学习8
1 3注释8
1 4相关资源10
1 5习题11
1 6参考文献12
第2章监督学习13
2 1由实例学习类13
2 2VC维15
2 3概率逼近正确学习16
2 4噪声17
2 5学习多类18
2 6回归19
2 7模型选择与泛化21
2 8监督机器学习算法的维23
2 9注释24
2 10习题25
2 11参考文献25
第3章贝叶斯决策定理27
3 1引言27
3 2分类28
3 3损失与风险29
3 4判别式函数31
3 5效用理论31
3 6关联规则32
3 7注释33
3 8习题33
3 9参考文献34
第4章参数方法35
4 1引言35
4 2似然估计35
4 2 1伯努利密度36
4 2 2多项密度36
4 2 3高斯(正态)密度37
4 3评价估计:偏倚和方差37
4 4贝叶斯估计38
4 5参数分类40
4 6回归43
4 7调整模型的复杂度:偏倚/方差两难选择45
4 8模型选择过程47
4 9注释50
4 10习题50
4 11参考文献51
第5章多元方法52
5 1多元数据52
5 2参数估计52
5 3缺失值估计53
5 4多元正态分布54
5 5多元分类56
5 6调整复杂度59
5 7离散特征61
5 8多元回归62
5 9注释63
5 10习题63
5 11参考文献64
第6章维度归约65
6 1引言65
6 2子集选择65
6 3主成分分析67
6 4因子分析71
6 5多维定标75
6 6线性判别分析77
6 7等距特征映射80
6 8局部线性嵌入81
6 9注释83
6 10习题84
6 11参考文献85
第7章聚类86
7 1引言86
7 2混合密度86
7 3k-均值聚类87
7 4期望化算法90
7 5潜在变量混合模型93
7 6聚类后的监督学习94
7 7层次聚类95
7 8选择簇个数96
7 9注释96
7 10习题97
7 11参考文献97
第8章非参数方法99
8 1引言99
8 2非参数密度估计99
8 2 1直方图估计100
8 2 2核估计101
8 2 3k邻估计102
8 3到多元数据的推广103
8 4非参数分类104
8 5精简的邻105
8 6非参数回归:光滑模型106
8 6 1移动均值光滑106
8 6 2核光滑108
8 6 3移动线光滑108
8 7如何选择光滑参数109
8 8注释110
8 9习题111
8 10参考文献112
第9章决策树113
9 1引言113
9 2单变量树114
9 2 1分类树114
9 2 2回归树118
9 3剪枝119
9 4由决策树提取规则120
9 5由数据学习规则121
9 6多变量树124
9 7注释125
9 8习题126
9 9参考文献127
第10章线性判别式129
10 1引言129
10 2推广线性模型130
10 3线性判别式的几何意义131
10 3 1两类问题131
10 3 2多类问题132
10 4逐对分离132
10 5参数判别式的进一步讨论133
10 6梯度下降135
10 7逻辑斯谛判别式135
10 7 1两类问题135
10 7 2多类问题138
10 8回归判别式141
10 9注释142
10 10习题143
10 11参考文献143
第11章多层感知器144
11 1引言144
11 1 1理解人脑144
11 1 2神经网络作为并行处理的典范145
11 2感知器146
11 3训练感知器148
11 4学习布尔函数150
11 5多层感知器151
11 6作为普适近似的MLP153
11 7后向传播算法154
11 7 1非线性回归154
11 7 2两类判别式157
11 7 3多类判别式158
11 7 4多个隐藏层158
11 8训练过程158
11 8 1改善收敛性158
11 8 2过分训练159
摘要与插图
绪论第1章
第1章
绪论
第1章绪论
1.1什么是机器学习
为了在计算机上解决问题,我们需要算法。算法是指令的序列,它把输入变换成输出。例如,我们可以为排序设计一个算法,输入是数的集合,而输出是它们的有序列表。对于相同的任务可能存在不同的算法,而我们感兴趣的是如何找到需要的指令或内存,或者二者都的效算法。
然而,对于某些任务,我们没有算法;例如,我们没有将垃圾邮件与正常邮件分开的算法。我们知道输入是邮件文档,单的情况是一份字符文件。我还知道输出应该是指出消息是否为垃圾邮件的“是”或“否”,但是我们不知道如何把这种输入变换成输出。所谓的垃圾邮件随时间而变,因人而异。
我们缺乏的是知识,作为补偿我们有数据。我们可以很容易地编辑数以千计的实例消息,其中一些我们知道是垃圾邮件,而我们要做到的是希望从中“学习”垃圾邮件的结构。换言之,我们希望计算机(机器)自动地为这一任务提取算法。不需要学习如何将数排序,因为我们已经有这样的算法;但是,对于许多应用而言,我们确实没有算法,而是有实例数据。
随着计算机技术的发展,我们现在已经拥有存储和处理海量数据以及通过计算机网络从远程站点访问数据的能力。目前大多数的数据存取设备都是数字设备,
1记录的数据也很可靠。以一家连锁超市为例,它拥有遍布全国各地的数百家分店,并且在为数百万顾客提供数千种商品的服务。销售点的终端设备记录每笔交易的详细资料,包括日期、顾客识别码、购买商品和数量、消费总额等。这是典型的每日几个G字节的数据。连锁超市希望能够预测某种产品可能的顾客。对于这一任务,算法同样并非是显然的;它随时间而变,因地域而异。只有分析这些数据,并且将它转换为可以利用的信息时,这些存储的数据才能变得有用,例如做预测。
我们并不确切地知道哪些人倾向于购买这种口味的冰淇淋,或者这位作家的下一本书是什么,也不知道谁喜欢看这部新电影、访问这座城市,或点击这一链接。我们不能确切地知道哪些人比较倾向于购买哪种特定的商品,也不知道应该向喜欢读海明威作品的人哪位作者。如果我们知道,我们就不需要任何数据分析;我们只管供货并记录下编码就可以了。但是,正因为我们不知道,所以才只能收集数据,并期望从数据中提取这些问题或相似问题的答案。