1. 绪论
1.2 假设空间
[!note]+ 概念
归纳(induction)与演绎(deduction)是科学推理的两大基本手段.
- 前者是从特殊到一般的“泛化”(generalization)过程,即从具体的事实归结出一般性规律;
- 后者则是从一般到特殊的“特化 ”(specialization)过程,即从基础原理推演出具体状况.
狭义的归纳学习又被称为“概念学习”,要求从训练数据中学得概念;其中最基本的是布尔概念学习(是非判断)。
将所有的假设构成一个假设空间,那么学习的过程就是在该空间之中搜索到与训练集fit的假设,并不断对空间中的假设进行删减,最终得到一个与训练集一致的假设,即是最后的模型。
空间及规模大小随着假设的表示确定而确定,如下就是四种假设:
在现实中,对问题的描述是复杂的,假设空间也会很大;但学习过程是基于有限的样本训练集的。因而,在现实中会存在许多与训练集一致的假设(或模型),也就是存在一个与训练集一致的假设的集合,称之为==“版本空间”==(version space)。这是一切试图拟合规律的模型的集合。
1.3 归纳偏好
由于在现实中与有限训练集一致的假设不唯一,模型在不同的假设下对于同一输入的输出也会有所差别。这些假设并不是“等效”的,模型对不同的假设之间必然会有所偏好,这种对于某种类型假设的偏好在学习过程中产生,称作==“归纳偏好”==(inductive bias)。
所谓“假设”指用于模拟规律的模型,那么“偏好”也就是对于不同的模型进行选择的一种价值观。常用的价值观如**“奥卡姆剃刀原则”**。
值得注意,如果一个学习算法 L a \mathfrak{L}_a La在某些方面上的表现比 L b \mathfrak{L}_b Lb好,那么必然存在另一些问题使得 L b \mathfrak{L}_b Lb的表现比 L a \mathfrak{L}_a La更好 —— “没有免费午餐”定理(NFL定理)
这一定理适用于问题等概率出现的情况,但现实中我们总需要处理某一类具体的问题。
So,脱离问题谈方法,纯纯扯淡。
[!example]- 举例说明
我们可以讨论一个简单的场景。假设样本空间与假设空间都是离散的,并考虑二分类问题,则算法 L a \mathfrak{L}_a La在训练集之外所有样本上的误差,与算法 L a \mathfrak{L}_a La本身无关。推导见[[机器学习 (周志华).pdf#page=24&selection=193,0,200,1|机器学习 (周志华), page 24]]
其中 ∑ f I ( h ( x ) ≠ f ( x ) \sum_{f}\mathbb{I}(h(x)\not= f(x) ∑fI(h(x)=f(x),若 f f f均匀分布,即 f f f取得假设的概率均匀随机,则至少有一半的 f f f的预测结果与模式 h h h不同,且离散样本下 f f f的总可能个数为 2 ∣ χ ∣ 2^{|\chi|} 2∣χ∣,因此结果为 1 2 2 ∣ χ ∣ \frac{1}{2}2^{|\chi|} 212∣χ∣
2. 模型评估与选择
[!note]+ 概念
“误差”(error):模型预测输出与样本真实输出之间的差异;在训练集上的误差称为“训练误差”,在测试集上的误差称为“测试误差”(test error),在新样本的误差称为“泛化误差”
2.1 评估方法
[!note] 概念
“评估”:通过实验测试对模型的泛化误差进行评估,进而为模型选择提供参考——使用“验证集”来测试模型,并将“验证误差”看作泛化误差的近似。“测试集”:实际使用中遇到的数据;
”验证集“(validation set):用于评估测试的数据;
从有限的数据集 D D D中产生训练集 S S S和验证集 T T T的方法——
留出法
直接将数据集 D D D划分为两个互斥的集合,即 D = S ∪ T , S ∩ T = ∅ D=S\cup T,S \cap T=\emptyset D=S∪T,S∩T=∅
- 需要尽可能保持数据分布的一致性,避免划分操作引入额外的偏差(如保持类别比例一致);
- 即使确定了划分的比例,依旧存在不同的选取方式。因此一般要采用若干次随机划分、重复进行实验评估后取平均值作为评估结果;
但依旧存在“ S S S较大,评估不准”与“ T T T较大则, S S S与 D D D差别大”的矛盾
交叉验证法(cross validation,k折交叉验证)
- 先将数据集 D D D划分为 k k k个大小相似的互斥子集,每个子集 D i D_i Di都尽可能保持数据分布的一致性;
- 进行 k k k次训练与测试,每次用 k − 1 k-1 k−1个子集的并集训练,余下的子集用于测试;
- 将k次测试结果取平均返回;
- 划分为 k k k个子集的方法也有许多,一般是随机使用不同的划分方法重复 p p p次,最终取这 p p p次 k k k折交叉验证的结果均值。
- 令样本个数为 m m m,当取 k = m k=m k=m,称作**“留一法”(LLO)**,使得我们评估的对象最接近原始模型。这样一来不受随机样本划分的影响,且因只差一个样本、评估模型与训练模型很相似。但缺点在于计算开销极大。
自助法
以自助采样法(bootstrap sampling)为基础——
对于包含
m
m
m个样本的数据集
D
D
D,进行
m
m
m次采样,每次采样都随机从
D
D
D中有放回地挑选一个样本,最终得到包含
m
m
m个样本的数据集
D
′
D'
D′。如此,
D
D
D中有一部分样本会在
D
′
D'
D′中多次出现。
- 适用于数据集小、难以进行有效划分的情况,也能产生多个不同的训练集;
- 但新产生的训练集改变了初始数据分布,引入了估计偏差。
[!example]- 简单计算
样本在 m m m次采样中始终不被采到的概率为 ( 1 − 1 m ) m {(1-\frac{1}{m})}^m (1−m1)m,取极限可得:
lim m → ∞ ( 1 − 1 m ) m → 1 e ≈ 0.368 (2.1) \lim_{m \to \infty} (1- \frac{1}{m})^m \to \frac{1}{e} \approx 0.368 \tag{2.1} m→∞lim(1−m1)m→e1≈0.368(2.1)
实际评估的模型与期望评估的模型都使用 m m m个训练样本,而我们仍有数据总量约1 / 3 的、没在训练集中出现的样本用于测试。
这样的测试结果,亦称 “包外估计”(out-of-bag estimate).
[!attention]+
在完成模型选择后,学习的算法与参数配置已经确定,之后应该使用数据集 D D D重新训练模型,使得其使用了全部的 m m m个样本。
2.2 性能度量
2.2.1 回归任务
均方误差
E
(
f
;
D
)
=
1
m
∑
i
=
1
m
(
f
x
i
−
y
i
)
2
(2.2)
E(f;D) = \frac{1}{m} \sum^m_{i=1} (f{x_i}-y_i)^2 \tag{2.2}
E(f;D)=m1i=1∑m(fxi−yi)2(2.2)
更一般的,对于数据分布
D
\mathcal{D}
D和概率密度函数
p
(
⋅
)
p(\cdot)
p(⋅),均方误差可描述为
E
(
f
;
D
)
=
∫
x
∼
D
(
f
(
x
)
−
y
)
2
p
(
x
)
d
x
(2.3)
E(f;\mathcal{D}) = \int_{x \sim \mathcal{D}} (f(x)-y)^2 p(x) dx \tag{2.3}
E(f;D)=∫x∼D(f(x)−y)2p(x)dx(2.3)
2.2.2 分类任务
错误率与精度
- 错误率(error rate):分类错误的样本占比;
- 对样例集 D D D: E ( f ; D ) = 1 m ∑ i = 1 m I ( f ( x i ) ≠ y i ) (2.4) E(f;D) = \frac{1}{m} \sum^{m}_{i=1} \mathbb{I}(f(x_i) \not= y_i) \tag{2.4} E(f;D)=m1i=1∑mI(f(xi)=yi)(2.4)
- 对于数据分布 D \mathcal{D} D和概率密度函数 p ( ⋅ ) p(\cdot) p(⋅): E ( f ; D ) = ∫ x ∼ D I ( f ( x ) ≠ y ) p ( x ) d x (2.6) E(f;\mathcal{D}) = \int_{x \sim \mathcal{D}} \mathbb{I}(f(x) \not= y) p(x) dx \tag{2.6} E(f;D)=∫x∼DI(f(x)=y)p(x)dx(2.6)
- 精度(accuracy):分类正确的样本占比,即1-“错误率”;
- 对样例集
D
D
D:
a c c ( f ; D ) = 1 m ∑ i = 1 m I ( f ( x i ) = y i ) = 1 − E ( f ; D ) \begin{equation} \begin{aligned} acc(f;D) &= \frac{1}{m} \sum^{m}_{i=1} \mathbb{I}(f(x_i) = y_i) \tag{2.5} \\ ~&= 1-E(f;D) \end{aligned} \end{equation} acc(f;D) =m1i=1∑mI(f(xi)=yi)=1−E(f;D)(2.5) - 对于数据分布
D
\mathcal{D}
D和概率密度函数
p
(
⋅
)
p(\cdot)
p(⋅):
KaTeX parse error: No such environment: eqnarray at position 7: \begin{̲e̲q̲n̲a̲r̲r̲a̲y̲}̲ acc(f;\math…
- 对样例集
D
D
D:
查准率P、查全率R与F1
- 查准率P:在预测的正例中,真实的正例占比;(讲究预测正例的准确性)
- 查全率R:正确的预测分类中,预测正例的占比;(讲究真实正例是否充分找出)
这两个度量往往是相互矛盾的。为了提高查全率,我们往往需要提高预测的次数,但如此查准率就可能下降。
查准率:
P
=
T
P
T
P
+
F
P
(2.8)
查准率:P = \frac{TP}{TP+FP} \tag{2.8}
查准率:P=TP+FPTP(2.8)
查全率:
R
=
T
P
T
P
+
F
N
(2.9)
查全率:R=\frac{TP}{TP+FN} \tag{2.9}
查全率:R=TP+FNTP(2.9)
- P-R图
可直观显示学习器在样本总体上的查全率和查准率:
- 在比较时,若学习器A的曲线完全“包住”了学习器C,则A的性能优于C;但若两者的曲线发生了交叉,就难以全局评判;
- **“平衡点”(BEP)****是 P = R P=R P=R时的取值,如 B E P C = 0.64 BEP_C=0.64 BEPC=0.64,基于这一度量可粗略比性能。
- F1度量
F1度量的一般形式如下: F β = ( 1 + β 2 ) × P × R ( β 2 × P ) + R (2.11) F_\beta = \frac{(1+\beta^2)\times{P}\times{R}} {(\beta^2\times{P})+R} \tag{2.11} Fβ=(β2×P)+R(1+β2)×P×R(2.11)等效于==加权调和平均 1 F β = 1 1 + β 2 ( 1 P + β 2 R ) \frac{1}{F_{\beta}}= \frac{1}{1+\beta^2}{}(\frac{1}{P}+\frac{\beta^2}{R}) Fβ1=1+β21(P1+Rβ2)
其中 β \beta β度量查全率R对查准率P的相对重要性,以 β = 1 \beta=1 β=1为基准,此处退化为F1:
F 1 = 2 × P × R P + R = 2 × T P 样例总数 + T P − T N (2.10) F_1 = \frac{2\times{P}\times{R}} {P+R} = \frac{2\times{TP}} {样例总数+TP-TN} \tag{2.10} F1=P+R2×P×R=样例总数+TP−TN2×TP(2.10)等价于调和平均== 1 F β = 1 1 + 2 ( 1 P + 2 R ) \frac{1}{F_\beta} = \frac{1}{1+2}(\frac{1}{P} + \frac{2}{R}) Fβ1=1+21(P1+R2)
当我们面临多个二分类混淆矩阵,如进行多次测试或在多个数据集上进行训练时,希望能够在 n n n个混淆矩阵上综合考虑P和R;
- 可以分别计算P、R、F1,再取平均值,得到“宏查准率”、“宏查全率”和“宏F1”。如 m a c r o − P = 1 n ∑ i = 1 n P i macro-P = \frac{1}{n} \sum^n_{i=1}P_i macro−P=n1∑i=1nPi
- 也可先将各混淆矩阵的对应元素进行平均,再基于这些均值计算得到“微查准率”、“微查全率”和“微F1”。如 m i c r o − P = T P ‾ T P ‾ + F P ‾ micro-P = \frac{\overline{TP}} {\overline{TP}+\overline{FP}} micro−P=TP+FPTP
ROC与AUC
[!note]
许多学习器在预测时都是为样例附上一个概率,指示其为正例的可能性,于是自然对应一个递减的序列。在序列形成后,设置一个截断阈值,即可输出分类结果。ROC的目的在于考察序列本身。
根据预测的结果,依据样例为正的可能性对样例进行排序;按此顺序逐个将样本作为正例预测,并考量 T P R TPR TPR和 F P R FPR FPR两个值。
T P R TPR TPR(真正例率)和 F P R FPR FPR(假正例率)分别指在预测样例为正的情况下,成功与失败的占比;
T P R = T P T P + F N (2.18) TPR=\frac{TP}{TP+FN} \tag{2.18} TPR=TP+FNTP(2.18) F P R = F P T N + F P (2.19) FPR=\frac{FP}{TN+FP} \tag{2.19} FPR=TN+FPFP(2.19)
之后通过调整分类阈值,依次设置为每个样例的预测值(即依次设置为正例),绘制ROC曲线。
[!attention]+
ROC图的横纵坐标不涉及“反例”,不存在“和为0”的恒等关系。而曲线上凸正是算法“能用”的体现。
- 与P-R图类似,若学习器A的曲线完全“包住”了学习器C,则A的性能优于C;
- 但若两者的曲线发生了交叉,就难以全局评判,一般还可根据ROC曲线下的面积,即AUC进行比较(计算源自梯形面积);
A U C = 1 2 ∑ i = 1 m − 1 ( x i + 1 − x i ) ( y i + y i + 1 ) (2.20) AUC=\frac{1}{2} \sum^{m-1}_{i=1}(x_{i+1}-x_i)(y_i+y_{i+1}) \tag{2.20} AUC=21i=1∑m−1(xi+1−xi)(yi+yi+1)(2.20)
也可定义该排序的“损失”(loss),其中 m + m^+ m+、 m − m^- m−分别为真实的正例反例数,令 D + D^+ D+、 D − D^- D−分别表示正反例集合 l r a n k = 1 m + m − ∑ x + ∈ D + ∑ x − ∈ D − ( I ( f ( x + ) < f ( x − ) ) + 1 2 I ( f ( x + ) = f ( x − ) ) ) (2.21) {l_{rank} = \frac{1}{m^+m^-} \sum_{x^+\in{D^+}} \sum_{x^-\in{D^-}}(\mathbb{I}(f(x^+)<f(x^-))+\frac{1}{2}\mathbb{I}(f(x^+)=f(x^-)))} \tag{2.21} lrank=m+m−1x+∈D+∑x−∈D−∑(I(f(x+)<f(x−))+21I(f(x+)=f(x−)))(2.21)
相当于考虑每一对正反例,若正例预测值小于反例则计一个“罚分”,若相等则计0.5个“罚分”;
可知其表示的是AUC曲线上方的面积,因此可得 A U C = 1 − l r a n k (2.22) AUC=1-l_{rank} \tag{2.22} AUC=1−lrank(2.22)[!example]- 式(2.22)推导
首先明确,对于前一个标记点 ( x , y ) (x,y) (x,y),若当前为真正例,则坐标为 ( x , y + 1 m + ) (x,y+\frac{1}{m^+}) (x,y+m+1);若为假正例,则坐标为 ( x + 1 m − , y ) (x+\frac{1}{m^-},y) (x+m−1,y)。换言之,每个示例在轴上对应的步长为 1 m + \frac{1}{m^+} m+1或 1 m − \frac{1}{m^-} m−1。
KaTeX parse error: No such environment: eqnarray at position 7: \begin{̲e̲q̲n̲a̲r̲r̲a̲y̲}̲ l_{rank} &=& …
这里同样是梯形面积计算,其中 ∑ x + ∈ D + \sum_{x^+\in{D^+}} ∑x+∈D+是将所有的小梯形累加起来:
- “高”与y轴平行,大小为 1 m + \frac{1}{m^+} m+1;
- “下底”为“下端点”到y轴的距离,等于预测值大于 f ( x + ) f(x^+) f(x+)的示例所占长度,即 1 m − ∑ x − ∈ D − I ( f ( x + ) < f ( x − ) ) \frac{1}{m^-} \sum_{x^-\in{D^-}} \mathbb{I}(f(x^+)<f(x^-)) m−1x−∈D−∑I(f(x+)<f(x−))
- “上底”为“上端点”到y轴的距离,等于预测值大于等于 f ( x + ) f(x^+) f(x+)的示例所占长度,即 1 m − ( ∑ x − ∈ D − I ( f ( x + ) < f ( x − ) ) + ∑ x − ∈ D − I ( f ( x + ) = f ( x − ) ) ) \frac{1}{m^-}( \sum_{x^-\in{D^-}} \mathbb{I}(f(x^+)<f(x^-)) +\sum_{x^-\in{D^-}} \mathbb{I}(f(x^+)=f(x^-))) m−1(x−∈D−∑I(f(x+)<f(x−))+x−∈D−∑I(f(x+)=f(x−)))