第 1 章 绪论
1.2 基本术语
根据训练数据是否拥有标记信息,学习任务可大致划分为两大类:“监督学习“(supervised learning)和“无监督学习"(unsupervised learning),分类和回归是前者的代表,而聚类则是后者的代表.
监督学习:若我们欲预测的是离散值,例如“好瓜” “坏瓜”,此类学习任务称为 “分类" (classification);若欲预测的是连续值,例如西瓜成熟度0.95、0.37, 此类学习任务称为“回归”(regression ).
无监督学习:我们还可以对西瓜做“聚类" (clustering),即将训练集中的西瓜分成若干组,每组称为一个“簇”(cluster);这些自动形成的簇可能对应一些潜在的概念 划分,例如“浅色瓜” “深色瓜"甚至“本地瓜” “外地瓜”.这样的学习过 程有助于我们了解数据内在的规律,能为更深入地分析数据建立基础.需说明 的是,在聚类学习中,“浅色瓜” “本地瓜”这样的概念我们事先是不知道的, 而且学习过程中使用的训练样本通常不拥有标记信息.
通常假设样本空间中全体样本服从一个未知“分布" (d i s t r ib u t io n )我们获得的每个样本都是独立 地从这个分布上采样获得的,即“独立同分布" (independent and identically distributed,简称i.i.d.
机器学习的目标是使学得的模型能很好地适用于“新样本" 而不是仅仅在训练样本上工作得很好;即便对聚类这样的无监督学习任务,我 们也希望学得的簇划分能适用于没在训练集中出现的样本.学得模型适用于 新样本的能力,称为“泛化" (generalization)能力
1.4 归纳偏好
第 2 章 模型评估与选择
2.1 经验误差与过拟合
学习器的实际预测输出与样本的真实输出之间的差异称为“误差”(error), 学习器在训练集上的误差称为“训练误差”(training error)或“经验误差” (empirical e rro r),在新样本上的误差称为“泛化误差”(generalization e rro r)
然而,当学习器把训练样本学得“太好” 了的时候,很可能已经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降.这种现象在机器学习中称为 “过拟合" (overfitting).与“过拟合”相对的是“欠拟合" (imderRtting),这是指对训练样本的一般性质尚未学好
有多种因素可能导致过拟合,其中最常见的情况是由于学习能力过于强大,以至于把训练样本所包含的不太一般的特性都学到了,而欠拟合则通常是由于学习能力低下而造成的.欠拟合比较容易克服,例如在决策树学习中扩展分支、在神经网络学习中增加训练轮数等,而过拟合则很麻烦.在后面的学习中我们将看到,过拟合是机器学习面临的关键障碍,各类学习算法都必然带有一些针对过拟合的措施;然而必须认识到,过拟合是无法彻底避免的,我们所能做的只是“缓解”,
这套算法是怎样缓解overfitting的?这种缓解的技术在什么时候会失效
是机器学习中的“模型选择”(modelselection)问题.理想的解决方案当然是对候选模型的泛化误差进行评估,然后选择泛化误差最小的那个模型.然而如上面所讨论的,我们无法直接获得泛化误差,而训练误差又由于过拟合现象的存在而不适合作为标准,那么,在现实中如何进行模型评估与选择呢?
2.2 评估方法
A. 留出法
“留出法”(hold-out)直接将数据集。划分为两个互斥的集合,其中一个 集合作为训练集S ,另一个作为测试集T ,即0 = S U T, S n T = 0 .在S 上训 练出模型后,用T 来评估其测试误差,作为对泛化误差的估计.
需注意的是,训练/测试集的划分要尽可能保持数据分布的一致性,避免 因数据划分过程引入额外的偏差而对最终结果产生影响,例如在分类任务中 至少要保持样本的类别比例相似.如果从采样(sampling)的角度来看待数据 集的划分过程,则保留类别比例的采样方式通常称为“分层采样"(stratified sam p lin g ).例如通过对D 进行分层采样而获得含70%样本的训练集S 和含 30%样本的测试集T ,若D 包含500个正例、500个反例,则分层采样得到的 S 应包含350个正例、350个反例,而T 则包含150个正例和150个反例;若 S、T 中样本类别比例差别很大,则误差估计将由于训练/测试数据分布的差异 而产生偏差.
另一个需注意的问题是,即便在给定训练/测试集的样本比例后,仍存在多 种划分方式对初始数据集。进行分割.例如在上面的例子中,可以把0 中的样 本排序,然后把前350个正例放到训练集中,也可以把最后350个正例放到训 练集中,……这些不同的划分将导致不同的训练/测试集,相应的,模型评估的 结果也会有差别.因此,单次使用留出法得到的估计结果往往不够稳定可靠,在 使用留出法时,一般要采用若干次随机划分、重复进行实验评估后取平均值作 为留出法的评估结果.例如进行100次随机划分,每次产生一个训练/测试集用 于实验评估,100次后就得到100个结果,而留出法返回的则是这100个结果的 平均.
这个问题没有完美的解决方案,常见做法是将大约2/3〜4/ 5的 样本用于训练,剩余样本用于测试.
B. k折交叉验证法
“交叉验证法”(cross validation)先将数据集D 划分为k 个大小相似的 互斥子集。每个子集D i 都 尽可能保持数据分布的一致性,即从。中通过分层采样得到.然后,每次用 k - 1 个子集的并集作为训练集,余下的那个子集作为测试集;这样就可获得k 组训练/测试集,从而可进行k 次训练和测试,最终返回的是这k 个测试结果 的均值.显然,交叉验证法评估结果的稳定性和保真性在很大程度上取决于k 的取值,为强调这一点,通常把交叉验证法称为“ k 折交叉验证”(k-fold cross validation), k 最常用的取值是1 0 ,此时称为1 0折交叉验证;其他常用的k 值 有5、2 0等
与留出法相似,将数据集D划分为k 个子集同样存在多种划分方式.为 减小因样本划分不同而引入的差别,k 折交叉验证通常要随机使用不同的划分 重复p 次,最终的评估结果是这p 次k 折交叉验证结果的均值,例如常见的有 “ 1 0次1 0折交叉验证”.
假定数据集D 中包含m 个样本,若令k = m,则得到了交叉验证法的一 个特例:留一法(Leave-One-Out,简称LO O ).
C.自助法
我们希望评估的是用0 训练出的模型.但在留出法和交叉验证法中,由于 保留了一部分样本用于测试,因此实际评估的模型所使用的训练集比。小,这 必然会引入一些因训练样本规模不同而导致的估计偏差.留一法受训练样本规 模变化的影响较小,但计算复杂度又太高了.有没有什么办法可以减少训练样 本规模不同造成的影响,同时还能比较高效地进行实验估计呢?
m个样本取m次:
即通过自助采样,初始数据集。中约有36.8%的样本未出现在采样数据集D f 中.于是我们可将。用作训练集,0 \ D 用作测试集;这样,实际评估的模型与 期望评估的模型都使用馆个训练样本,而我们仍有数据总量约1 /3的、没在训 练集中出现的样本用于测试.这样的测试结果,亦称“包外估计”
自助法在数据集较小、难以有效划分训练/测试集时很有用;此外,自助法能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处.然而,自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差.因此,在初始数据量足够时,留出法和交叉验证法更常用一些.
调参与最终模型
2.3 性能度量
回归 任务常用 均方误差
而对于 分类 这样的任务,最简单的是 错误率,而 精度 就是反过来
查准率vs查全率vsF1
F1这样使得较小的值不会被忽视掉