这是学习周志华老师《机器学习》的一些重要概念的简要笔记 ,仅防个人忘记
文章目录
经验误差与过拟合
错误率(error rate) = 分类错误样本数 / 样本总数
精度(accuracy)= 1 - 错误率
误差(error)
- 训练误差(training error)/ 经验误差(empirical error):在训练集上的误差
- 泛化误差(generalization error):在新样本上的误差
过拟合(overfitting):学习器将训练样本自身的一些特定视为所有潜在样本都会具有的一般性质,这会导致泛化性下降
- 常见因素是由于学习器的学习能力过强,导致将训练样本包含的不太一般的特性都学到
- 过拟合是ML面临的关键障碍,各类学习算法都必然带有一些针对过拟合的措施;然而过拟合是无法彻底避免的,仅能“缓解”,即减少其带来的风险
欠拟合(underfitting):对训练样本的一般性质尚未学好
- 常见因素是由于学习器的学习能力低下造成
评估方法
使用测试集(testing set)来测试学习器对新样本的判别能力,以测试误差(testing error)作为泛化误差的近似
通常假设测试样本也是从样本真实分布中独立同分布采样获得。注意,测试集应尽可能与训练集互斥
留出法(hold-out)
hold-out 直接将数据集 D D D 划分为两个互斥的集合,一个为训练集 S S S ,另一个为测试集 T T T,常用比例是 2 3 ∼ 4 5 \frac{2}{3}\sim\frac{4}{5} 32∼54 的比例作为 S S S,剩下的作为 T T T。
注意, S , T S,T S,T 的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果造成影响。例如在分类任务中至少要保持样本的类别比例相似。若从采样的角度来看待数据划分过程,则保留类别比例的采样方式通常称为”分层采样“(stratified sampling)。若 S , T S,T S,T 中样本类别比例差别很大,则误差估计将由于训练/测试数据分布的差异而产生偏差
然而,不同的划分将导致不同的 S , T S,T S,T,模型评估的结果也会不同。因此,单次使用 hold-out 得到的估计结果往往不够稳定可靠,在使用 hold-out 时,一般要采用若干次随机划分、重复进行实验评估后取平均值作为 hold-out 的评估结果(即若使用 n n n 次hold-out,意味着要训练 n n n 个模型,然后取这些模型的平均估计作为最终的估计结果)
交叉验证法(cross validation)
cross validation,亦称” k k k 折交叉验证“(k-fold cross validation, k k k 常取 5,10,20 等), 先将数据集 D D D 划分为 k k k 个大小相似的互斥子集 D 1 , ⋯   , D k D_1,\cdots,D_k D1,⋯,Dk,每个子集 D i D_i Di 都要尽可能保持数据分布的一致性,即从 D D D 中通过分层采样得到。然后,在每次训练一个完整的模型时(注意不是每迭代一次),用 k − 1 k-1 k−1 个子集的并集作为训练集,余下的作为测试集。这样在 k k k 组训练/测试集上,会获得 k k k 个模型,用这 k k k 个模型在各自的测试集上的测试结果的均值作为最终的测试结果
hold-out 与 cross validation 结合:缓解 cross validation 因不同划分所造成的不同评估结果。具体操作如下( p p p 次 k k k 折交叉验证):
- 对数据集进行 k-fold cross validation 划分获得 k k k 组训练集/测试集
- 在这 k k k 组训练集/测试集上分别训练 k k k 个模型,用这 k k k 个模型平均评估结果作为本次评估结果 e i e_i ei
- 重复步骤 1,2 直至达到了 p p p 次。用 p p p 次的评估结果 e 1 , ⋯   , e p e_1,\cdots,e_p e1,⋯,ep 的平均作为最终的评估结果
留一法(Leave-One-Out,简称 LOO):仅留一个样本作为测试集,其余作为训练集,是 cross validation 的一个特例
- 优点:在绝大多数情况下,留一法中被实际评估的模型与期望评估的用 D D D 训练出的模型很相似,因此,留一法的评估结果往往被认为比较准确
- 缺点:
- 当数据集比较大时,所需训练的模型数量庞大,需要的计算开销难以忍受
- 留一法的评估结果未必永远比其它评估方法准确
自助法(bootstrapping)
目的:希望评估的是用 D D D 训练出的模型,但留出法和交叉验证法由于保留了一部分样本用于测试,因此实际评估的模型所使用的训练集比 D D D 小,而这必然会引入一些因训练样本规模不同而导致的估计偏差;而留一法的计算复杂度太高,不适合使用。因此,bootstrapping 是一种比较好的解决方法
自助采样:
- 给定数据集 D D D,初始化一个空集 D ′ D' D′
- 随机从 D D D 中挑选一个样本并将其拷贝到 D ′ D' D′,然后将该样本放回 D D D,注意, D ′ D' D′ 可包含重复元素
- 重复步骤 2 直至 ∣ D ∣ = ∣ D ′ ∣ |D| = |D'| ∣D∣=∣D′∣
注意,通过自助采样后, D D D 中有一部分样本会在 D ′ D' D′ 中重复出现,另一部分不出现。而样本在 ∣ D ∣ |D| ∣D∣ 次采用中始终不被采到的概率为 ( 1 − 1 ∣ D ∣ ) ∣ D ∣ (1 - \frac{1}{|D|})^{|D|} (1−∣D∣1)∣D∣,取极限可得:
lim ∣ D ∣ → ∞ ( 1 − 1 ∣ D ∣ ) ∣ D ∣ = 1 e ≈ 0.368 \lim_{|D| \to \infty} \left(1 - \frac{1}{|D|}\right)^{|D|} = \frac{1}{e} \approx 0.368 ∣D∣→∞lim(1−∣D∣1)∣D∣=e1≈0.368
因此,通过自助采样,初始数据集 D D D 中约有 36.8 % 36.8\% 36.8% 的样本未出现在采样数据集 D ′ D' D′ 中
自助法就是通过自助采样法获得 D , D ′ D,D' D,D′,然后将 D ′ D' D′ 作为训练集, D \ D ′ D \backslash D' D\D′ 作为测试集。这样,实际评估的模型与期望评估的模型都使用了 ∣ D ∣ |D| ∣D∣ 个训练样本,而我们仍有数据总量约 1/3 的、没在训练集中出现的样本用于测试。这样的测试结果,亦称“包外估计”(out-of-bag estimate)
自助法:
- 适用场景:数据集较小、难以有效划分训练/测试集时
- 缺点:改变初始数据集的分布,会引入估计偏差。因此,在初始数据量足够时,留出法及交叉验证法更常用些
调参与最终模型
调参方式主要分为两种:网格搜索与随机搜索,详见ML模型超参数调节:网格搜索、随机搜索与贝叶斯优化
最终模型:给定包含 m m m 个样本的数据集 D D D 并用训练/测试集中评估并选择好模型后,即学习算法及参数配置确定后,再用整个 D D D 重新训练模型,给模型作为最终模型
一般,数据集为划分:
- 训练集(training set)
- 验证集(validation set):用于进行模型的选择和调参
- 测试集(testing set):用于评估模型的泛化性能
性能度量
回归任务
均方误差
回归中最常用的性能度量是“均方误差”(mean squared error, MSE),即:
(1) E ( f ; D ) = 1 ∣ D ∣ ∑ i = 1 ∣ D ∣ ( f ( x i ) − y i ) 2 = ∫ x ∼ D ( f ( x ) − y ) 2 p ( x ) d x E(f;D) = \frac{1}{|D|} \sum_{i=1}^{|D|} (f(x_i) - y_i)^2 = \int_{x \sim D} (f(x) - y)^2 p(x) dx \tag{1} E(f;D)=∣D∣1i=1∑∣D∣(f(xi)−yi)2=∫x∼D(f(x)−y)2p(x)dx(1)
其中 D D D 为数据分布,即为数据集, p ( ⋅ ) p(\cdot) p(⋅) 为概率密度函数
分类任务
错误率与精度
分类中最常用的两种性能度量,即:
(2) E ( f ; D ) = 1 ∣ D ∣ ∑ i = 1 ∣ D ∣ 1 ( f ( x ) =