译者序
前言
致谢
关于作者
第一部分 分类
第1章 学会分类2
1.1 分类的主要思想2
1.1.1 误差率及其他性能指标2
1.1.2 更详细的评估3
1.1.3 过拟合与交叉验证4
1.2 邻分类5
1.3 朴素贝叶斯7
1.3.1 利用交叉验证进行模型选择9
1.3.2 数据缺失11
编程练习11
第2章 支持向量机和随机森林14
2.1 支持向量机14
2.1.1 铰链损失15
2.1.2 正则化16
2.1.3 通过随机梯度下降来寻找分类器17
2.1.4 λ的搜索19
2.1.5 总结:用随机梯度下降训练20
2.1.6 例子:利用支持向量机分析成人收入21
2.1.7 利用支持向量机进行多类分类23
2.2 利用随机森林进行分类23
2.2.1 构造决策树25
2.2.2 用信息增益来选择划分27
2.2.3 森林29
2.2.4 构造并评估决策森林29
2.2.5 利用决策森林进行数据分类30
编程练习31
MNIST练习33
第3章 学习理论初步35
3.1 用留出损失预测测试损失35
3.1.1 样本均值和期望36
3.1.2 利用切比雪夫不等式37
3.1.3 一个泛化界37
3.2 有限分类器族的测试误差与训练误差38
3.2.1 霍夫丁不等式39
3.2.2 在有限预测器族上训练39
3.2.3 所需样例数量40
3.3 无限预测器集合41
3.3.1 预测器和二值函数41
3.3.2 对称化43
3.3.3 限制泛化误差44
第二部分 高维数据
第4章 高维数据48
4.1 概述及简单绘图48
4.1.1 均值48
4.1.2 杆图和散点图矩阵49
4.1.3 协方差51
4.1.4 协方差矩阵52
4.2 维数灾难53
4.2.1 灾难:数据不是你想象的那样53
4.2.2 维数的小困扰55
4.3 用均值和协方差理解高维数据55
4.3.1 仿射变换下的均值和协方差56
4.3.2 特征向量及矩阵对角化56
4.3.3 通过旋转数据堆来对角化协方差矩阵57
4.4 多元正态分布58
4.4.1 仿射变换与高斯模型59
4.4.2 绘制二维高斯模型:协方差椭圆59
4.4.3 描述统计与期望60
4.4.4 维数灾难的更多内容61
习题61
第5章 主成分分析64
5.1 在主成分上表示数据64
5.1.1 近似数据团块64
5.1.2 例子:变换身高体重堆65
5.1.3 在主成分上表示数据67
5.1.4 低维表示中的误差68
5.1.5 用NIPALS算法提取若干主成分69
5.1.6 主成分和缺失值70
5.1.7 PCA作为平滑方法71
5.2 例子:用主成分表示颜色72
5.3 例子:用主成分表示人脸75
习题77
编程练习78
第6章 低秩近似80
6.1 奇异值分解80
6.1.1 SVD和PCA81
6.1.2 SVD和低秩近似82
6.1.3 用SVD进行平滑82
6.2 多维缩放83
6.2.1 通过高维的距离选择低维的点83
6.2.2 使用低秩近似分解因子84
6.2.3 例子:利用多维缩放进行映射85
6.3 例子:文本模型和潜在语义分析87
6.3.1 余弦距离88
6.3.2 对单词计数进行平滑88
6.3.3 例子:对NIPS文档进行映射89
6.3.4 获得词的含义90
6.3.5 例子:对NIPS数据集的词进行映射92
6.3.6 TFIDF93
习题94
编程练习95
第7章 典型相关分析97
7.1 典型相关分析算法97
7.2 例子:在词和图片上进行CCA99
7.3 例子:在反射率和遮光上进行CCA102
编程练习105
第三部分 聚类
第8章 聚类108
8.1 聚合式聚类和拆分式聚类108
8.2 k均值算法及其变体111
8.2.1 如何选择k的值114
8.2.2 软分配115
8.2.3 聚类和层级式k均值117
8.2.4 k中心点算法117
8.2.5 例子:葡萄牙的杂货117
8.2.6 关于k均值算法的一些见解119
8.3 用向量量化描述重复性120
8.3.1 向量量化121
8.3.2 例子:基于加速度计数据的行为123
编程练习126
第9章 使用概率模型进行聚类130
9.1 混合模型与聚类130
9.1.1 数据团块的有限混合模型130
9.1.2 主题和主题模型132
9.2 EM算法133
9.2.1 例子——高斯混合:E步134
9.2.2 例子——高斯混合:M步136
9.2.3 例子——主题模型:E步136
9.2.4 例子——主题模型:M步137
9.2.5 EM算法的实践137
习题140
编程练习140
第四部分 回归
第10章 回归144
10.1 概述144
10.2 线性回归和二乘法146
10.2.1 线性回归146
10.2.2 选择β147
10.2.3 残差148
10.2.4 R2149
学会分类
分类器是一个接收一个特征集合并为其产生类标签的程序。分类器有用而且有广泛的应用场景,因为很多问题都很自然地属于分类问题。例如,你想确定是否要把广告放到一个网页上,就可以使用一个分类器(即查看该网页,根据某些规则决定是或否)。再如,你在网上找到一个免费的程序,也可以使用分类器来确定运行它是否安全(即查看该程序,根据某些规则决定是或否)。再如,信用卡公司必须确定一笔交易是正常的还是存在欺诈的。
所有这些例子都是二分类问题,但是在很多情况下会自然地有多个类别。比如,可以把分拣要洗的衣服看作多类分类问题,也可以把医生看作复杂的多类分类器:医生接受一个特征集合(你的主诉、对问题的回答等),然后做出答复,每种答复就是一个类别。对任意课程的打分过程也是一个多类分类:接收一个特征集合——考试成绩、作业等,然后产生一个类别标签(由字母表示的等级)。
分类器通常使用一个有标签的训练样例集合来训练,然后通过优化训练数据的代价函数来搜索分类器。训练分类器有趣的一点是,训练数据上的性能并不重要,重要的是在运行时测试数据上的性能。但是因为我们不知道这些数据的正确标签,所以很难评估其性能。例如,我们希望将信用卡交易分类为安全的和存在欺诈的。我们能够得到一个具有正确标签的历史交易数据集,但是我们关心的是新的交易,而判断它的分类结果是否正确是困难的。为了能够完成分类问题,有标签的样例集合必须在某些方面足以代表未来的新样例。我们通常假设有标签的样例是从所有可能样例中抽取出来的独立同分布的样本,虽然我们从未显式地使用这个假设。记住:分类器是一个接收一个特征集合并为其产生类标签的程序。分类器在有标签的样例上训练,而其目标是在训练阶段看不到的数据上得到好的性能。训练一个分类器需要有标签的数据,这些数据可以在一定程度上代表未来的数据。1.1分类的主要思想
我们把训练数据集记作(置嘎)。对于第i个样例,x,表示一组特征的取值。在单的情况下,,。是一个实数向量;在另一些情况下,x;可能包含类别型数据甚至未知的值。虽然j,不一定总是向量,但是我们通常称之为特征向量(feature vector)。标签y.给出了该样例所属的目标类型。我们需要用这些有标签的样例来得到一个分类器。1 1 1误差率及其他性能指标
我们可以用误差(error)或总误差率(total error…e,即分类错误的百分比)和准确率(accuracy,即分类正确的百分比)来概括一个分类器的性能。在大多数实际情况下,即使的分类器也会产生误差。例如,一个外星人尝试只以身高为特征,把人类分类为男人和女人。不管这个外星人的分类器如何使用这个特征,总会有错误分类的情况。这是因为该分类器需要对每个身高值给出男或女的标签,然而,大多数身高值对应的性别都既有男也有女,因此这个外星人的分类器一定会产生一些错误。
如上例所述,一个特定的特征向量x可能会对应不同的标签(比如那个外星人很可能会在训练数据中看到同样6英尺。高的男人和女人,而且未来数据中也一定会出现这种情况)。通常,标签会以观测量为条件以一定概率出现,记为P(yIx)。如果在特征空间的某些部分P(z)相对较大(所以我们期望看到那种类型的观测),同时在这部分对应的P(_lx)对于超过一种标签的取值都相对较大,那么此时的分类器也会具有一个较高的误差事。而如果我们已知P(yIz)(这种情况极少),我们就可以找到具有误差率的分类器并计算其误差率。对于一个特定问题,由的分类器产生的期望误差率称为该问题的贝叶斯风险(Baye~;risk)。在实际中,由于计算贝叶斯风险需要事先知道P(yI x),而P(yIz)通常是不确定的,因此在多数情况下都很难得到贝叶斯风险。
一个分类器的误差率本身并没有多大意义,因为通常不知道对应问题的贝叶斯风险。一种有益的做法是将给定的分类器与一些自然存在的备选方法进行比较。这些被用来比较的备选方法有时也称为基准(baseline)。为一个特定的问题选择合适的基准几乎总是一个应用逻辑问题。单的一种通用性基准是一无所知策略。想象一下分类数据时根本不使用任何特征向量的策略——这样能做到多好?如果(:个类别中的每个类出现的概率都相同,那么把数据均匀且随机地进行标注就可以.这时的分类误差率是1—1/c。如果一个类别比其他类别出现得更频繁,那么可以通过把所有数据都标注成这个类别来得到的分类误差率。这种比较方法通常称为与随机对比(comparmg t0 chatlce)。
实际中一种常见的情况是数据中只有两个类别。你应该知道这意味着可能的误差率是50%——如果你有一个误差率更高的分类器,那意味着你可以通过对输出进行交换来改进它。如果一个类别比另一个类别更常见得多,训练就会变得更复杂,因为策略——把所有数据都标记为这个常见的类别——通常会获得不错的效果,变得很难被比下去。记住:分类器的性能可以由总误差率或准确率来概括。对于一个分类问题,你很难知道一十分类器可能的性能如何。因此,可以和基准方法进行性能比较,其中随机分类通常都是一种超乎预期的基准方法。1.1.2更详细的评估
分类误差率是一种度量分类器性能的粗略的指标。对于一个二类分类器和O 1损失函数,可以报告其假正率(false poretive rate,测试数据中负类样本被错误地划分为正类的比例)和假负率(false negative rate,测试数据中正类样本被错误地划分为负类的比例)。注意同时提供两个指标很重要,因为一个具有较低假正率的分类器会倾向于有较高的假负事。反之亦然。所以,对那些只给出其中一个指标的结果要保持警惕。除了这两个指标外,其他的报告指标还包括灵敏度(sensitivity,正例被分类为正类的比例)和特异度(spe
dficity,负例被分类为负类的比例)。
二类分类器的假正率和假负率可以类似地扩展到多类分类器的评估,为此构建类别混淆矩阵(class—confuslon matrix)。这是一个由许多单元组成的表格,其中第(1,J)个单元表示真实标签为z而预测标签为j的实例数量(也有人计算它们所对应的比例而不是具体的......
机器学习方法已成为各个领域科学家、研究人员、工程师和学生的重要工具。本书面向想要使用机器学习作为主要工具,而并不一定要成为机器学习研究人员的读者。对于计算机科学专业机器学习方向的本科生或低年级研究生,本书可作为教材和工具书。本书为希望使用机器学习过程来解决问题的读者提供了很多知识和经验,强调使用已有的工具和软件包,而不是自己痛苦地编写代码。本书 概述机器学习的主要应用领域,强调应用统计学中标准过程的有用性。 涵盖每个想使用机器学习工具的人应该了解的机器学习思想,无论他们所属的领域或从事的职业是什么。 覆盖的领域足够广泛,以保证读者顺利入门,进而认识到哪些主题值得进一步探索。 强调利用现有的工具和软件包快速解决实际问题。
评论晒单