第1章 绪论
引言
机器学习致力于研究如何通过计算的手段,利用经验来改善系统自身的性能。
“经验”通常以“数据”的形式存在。
机器学习研究的主要内容: 在计算机上从数据中产生“模型”(model)的算法,即“学习算法”。(learning alorithm)
机器学习是研究“学习算法”的学问。
如何运用
有了学习算法,将经验数据传给学习算法后,产生相应模型;在面对新情况时,模型将会给出相应的判断。
基本术语
-
数据集(data set)
-
示例(instance)/样本(sample)
-
属性(attribute)/特征(feature):反映事件或对象在某方面的表现或性质
-
属性值(attribute value):属性上的取值
-
属性空间(attribute space)/样本空间(sample space): 属性张成的空间
-
特征向量(feature vector)
-
学习/训练:从数据中学得模型的过程
-
训练数据:训练过程中使用的数据
-
训练样本:训练过程中使用的每一个样本
-
训练集:训练样本组成的集合
-
假设:学得模型对应了关于数据的某种潜在规律
-
真相/真实:这种潜在规律自身
-
标记(label) yi:样本xi的标记
-
样例:拥有了标记信息的示例,则称为样例。一般地,用 (xi,yi) 表示第 i 个样例,其中 xi 是特征向量,yi 是这个样本的标记
-
标记空间(label space):所有标记的集合
根据预测结果的类型,可以将机器学习任务分为二类。 -
分类(classification):预测离散值
-
回归(regression):预测连续值
预测任务是希望通过对训练集进行学习,建立一个从样本空间到标记空间的映射
学得模型后,使用其进行预测的过程称为测试
- 测试样本:被预测的样本被称为测试样本
- 聚类(clustering)
- 簇(cluster)
- 聚类学习中使用的训练样本通常不拥有标记信息
根据训练数据是否拥有标记信息,学习任务也可大致划分为两大类 - 监督学习(supervised learning) e.g.分类和回归
- 无监督学习(unsupervised learning) e.g.聚类
- 泛化(generalization)能力:学得的模型适用于新样本的能力
通常假设样本空间中全体样本服从一个未知“分布”(distribution),每个样本都是独立地从这个分布上采样获得的,即“独立同分布”(independent and identically distributed, i.i.d.)
第2章 模型评估与选择
经验误差与过拟合
错误率:分类错误的样本数占样本总数的比例。即如果在m个样本中有a个样本分类错误,则错误率E= a/m;相应的,1 - a/m称为“精度”,即“精度= 1 - 错误率”。
误差:学习器的实际预测输出与样本的真实输出之间的差异,学习器在训练集上的误差称为“训练误差”或“经验误差”,在新样本上的误差称为“泛化误差”。
我们希望学习器能在新样本上表现得很好,为了达到这个目的,应该从训练样本中尽可能学出适用于所有潜在样本的“普遍规律”,这样才能在遇到新样本时做出正确的判别。
overfitting:学得“过于好”,以至于很可能把训练样本内部的一些特点当作了所有潜在样本都会具有的一般性质,导致泛化性能下降
(过拟合原因,最常见的情况是由于学习能力过于强大,以至于把训练样本所包含的不太一般的特性都学到了。过拟合是无法彻底避免的。原文链接:https://blog.csdn.net/fjyalzl/article/details/126797300)
- 欠拟合(underfitting):没有能够学习到本质特征,易克服
欠拟合的原因,通常是由学习能力低下而造成的。
2.2 评估方法
我们可通过实验测试来对学习器的泛化误差进行评估并进而做出选择。为此需要使用“测试集”来测试学习器对新样本的判别能力,然后以测试集上的“测试误差”作为泛化误差的近似。测试集应尽可能与训练集互斥,测试集样本尽量不在测试集中出现、未在训练过程中使用。
- 以测试误差作为泛化误差的近似。
- 测试样本也是从样本真实分布中独立同分布采样得来,测试样本要尽量与训练样本不同。
- 即测试模型“举一反三”的能力。
已知我们需要互斥的训练集和测试集,下面将介绍几种常见的对单个数据集进行处理,使其产生一个训练集和一个测试集的方法。
留出法
“留出法”直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T。在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响。如果从采样角度来看待数据集的划分过程,则保留类别比例的采样方式通常称为“分层采样”。
单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。
局限性:我们希望评估的是用D训练出的模型的性能,但留出法需划分训练/测试集,这会导致若令训练集S包含绝大多数样本,则训练出的模型可能更接近于用D训练出的模型,但由于T比较小,评估结果可能不够稳定准确;若令训练集T多包涵一些样本,则训练集S与D差别更大了,被评估的模型与用D训练出的模型相比可能有较大差别,从而降低了评估结果的保真性。这个问题没有完美的解决方法,常见做法是将大约2/3~4/5的样本用于训练,剩余样本用于测试。
交叉验证法
(注意的是划分方式的不同可能会对结果造成比较大的影响,采样一般采取分层采样,一般会使用多次取均值)
“交叉验证法”先将数据集D划分为k个大小相似的互斥子集,即。每个子集Di都尽可能保持数据分布的一致性,即从D中通过分层采样得到。然后,每次用k -1个子集的并集作为训练集,余下的那个子集作为测试集;这样就可获得组训练/测试集,从而可进行k次训练和测试,最终返回的是这k个测试结果的均值。
显然,交叉验证法评估结果的稳定性和保真性在很大程度上取决于k的取值,为强调这一点,通常把交叉验证法称为“k折交叉验证”。k最常用的取值是10,此时称为10折交叉验证;其他常用的k值有5、20等。
留一法:假定数据集D中包含m个样本,令k = m。留一法不受随机样本划分方式的影响,因为m个样本只有唯一的方式划分为m个子集——每个自己包含一个样本;留一法使用的训练集与初始数据集相比只少了一个样本,这就使得在绝大多数情况下,留一法中被实际评估的模型与期望评估的用D训练出的模型很相似。因此,留一法的评估结果往往被认为比较准确。
缺陷:数据集比较大时,训练m个模型的计算开销可能是难以忍受的,而这还是在未考虑算法调参的情况下。另外,留一法的估计结果也未必永远比其他评估方法准确。
自助法
“自助法”以自助采样法为基础:给定包含m个样本的数据集D,我们对它进行采样产生数据集D’:每次随机从D中挑选一个样本,将其拷贝放入D’,然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行m次后,我们就得到了包含m个样本的数据集D’。
显然,D中有一部分样本会在D’中多次出现,而另一部分样本不出现。
通过自助采样,初始数据集D中约有36.8%的样本未出现在采样数据集D’中。于是我们可将D’用作训练集,D\D’用作测试集;这样,实际评估的模型与期望评估的模型都使用m个训练样本,而我们仍有数据总量约1/3的、没在训练集中出现的样本用于测试。这样的测试结果,称为“包外估计”。
自助法在数据集较小、难以有效划分训练/测试集时很有用;此外,自助法能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处。然而,自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差。因此,在初始数据量足够时,留出法和交叉验证法更常用。
2.3 性能度量
衡量模型的泛化能力的评价标准。
对学习器的泛化性能进行评估,不仅需要有效可行的试验估计方法,还需要有衡量模型泛化能力的评价标准,这就是性能度量。
性能度量反映了任务需求,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判结果;这意味着模型的“好坏”是相对的,什么样的模型是好的,不仅取决于算法和数据,还决定于任务需求。
回归任务最常用的性能度量是“均方误差”(RMSE)
2.3 性能度量
对学习器的泛化性能进行评估,不仅需要有效可行的试验估计方法,还需要有衡量模型泛化能力的评价标准,这就是性能度量。
性能度量反映了任务需求,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判结果;这意味着模型的“好坏”是相对的,什么样的模型是好的,不仅取决于算法和数据,还决定于任务需求。
回归任务最常用的性能度量是“均方误差”
更一般的,对于数据分布D和概率密度函数p(·),均方误差可描述为:
还有MAE, MAPE, RMSE, MSE,R2
2.3.1 错误率与精度
错误率与精度是分类任务中最常用的两种性能度量,既适用于二分类任务,也适用于多分类任务。错误率是分类错误的样本数占样本总数的比例,精度则是分类正确的样本数占样本总数的比例。对于样例集D,分类错误率定义为
精度则定义为
更一般的,对于数据分布D和概率密度函数p(·),错误率与精度可分别描述为:
2.3.2 查准率、查全率与F1
分类结果混淆矩阵:
查准率P和查全率R:
查准率和查全率是一对矛盾的度量,一般查准率高时,查全率偏低;而查全率高时,查准率往往偏低。
我们可以根据学习器的预测结果对样例进行排序,排在前面的是学习器认为“最可能”是正例的样本,排在最后的则是学习器认为“最不可能”是正例的样本。按此顺序逐个把样本作为正例进行预测,则每次可以计算出当前的查全率、查准率。以查准率为纵轴、查全率为横轴作图,就得到了查准率-查全率曲线,简称“P-R曲线”。
在进行比较时,若一个学习器的P-R曲线被另一个学习器的曲线完全“包住”,则可断言后者的性能优于前者,例如图中A优于C;如果两个学习器曲线发生交叉,例如A与B,则难以一般性地断言两者孰优孰劣,只能在具体的查准率或查全率条件下进行比较。
“平衡点”(BEP)是一个用于综合考虑查准率、查全率的性能度量,它是“查准率=查全率”时的取值。
F1度量是比BEP更复杂的度量:
F1度量的一般形式——Fβ能表达出对查准率/查全率的不同偏好:
其中β>0度量了查全率对查准率的相对重要性。β=1时退化为标准的F1;β>1时查全率有更大影响;β<1时查准率有更大影响。
当我们有多个二分类混淆矩阵时,我们希望在n个二分类混淆矩阵上综合考察查准率和查全率。
一种直接的做法是先在各混淆矩阵上分别计算出查准率和查全率,记为(P1,R1),(P2,R2),...,(Pn,Rn),再计算平均值,这样就得到“宏查准率”(macro-P)、“宏查全率”(macro-R),以及相应的“宏F1”(macro-F1):
还可先将各混淆矩阵的对应元素进行平均,得到TP、FP、TN、FN的平均值,分别记为、、、,再基于这些平均值计算出“微查准率”(micro-P)、“微查全率”(micro-R)和“微F1”(micro-F1):