第一章 绪论
1.1 基本概念
机器学习致力于研究如何通过计算的手段,利用“数据”来改善系统自身的性能,是研究关于“学习算法”的学问。
机器学习的目标是使学得的模型能很好地适用于“新样本”
1.2 基本术语
- 数据集:记录的集合
示例:每条记录关于一个时间或对象的描述
属性(或特征):反映事件或对象在某方面的表现或性质的事项
属性值:属性上的取值
属性空间(或样本空间、输入空间):属性张成的空间
特征向量:一个事例
维数:每个事例有d个属性描述,即维数为d - 学习(或训练):从数据中学得模型的过程
训练数据:训练过程中使用的数据
训练样本:训练数据中的每个样本
训练集:训练样本组成的集合
测试:学得模型后,使用其进行预测的过程
测试样本:被预测的样本 - 泛化能力:学得模型适用于新样本的能力
版本空间:学习过程是基于有限样本训练集进行的,可能有多个假设与训练集一致,即存在着一个与训练集一致的“假设集合”,称之为“版本空间”
归纳偏好:机器学习算法在学习过程中对某种类型假设的偏好,称之为“会拿偏好”或简称为”偏好“。(其必然存在)
1.3 基本定理
- ”没有免费的午餐“定理(NFL定理):
定义:无论是什么算法,他们的期望性能相同
前提:所有”问题“出现的机会相同、或所有问题同等重要(但实际情况不是这样)
寓意:要谈论算法的相对优劣,必须要针对具体的学习问题;学习算法自身的归纳偏好与问题是否相配,往往会起到决定性的作用
第二章 模型评估与选择
2.1 经验误差与过拟合
- 假设在m个样本中有a个样本分类错误:
错误率(分类错误的样本数占样本总数的比例): E = a / m E=a/m E=a/m
精度(精度 = 1 - 错误率): 1 − a / m 1-a/m 1−a/m
更一般地,我们把学习器的实际预测输出与样本的真实输出之间的差异称为”误差“。
学习器在训练集上的误差称为”训练误差“或”经验误差
在新样本上的误差称为”泛化误差“
- 过拟合:当学习器把训练样本自身的特点当作了所有潜在样本都会具有的一般性质时,泛化性能下降,这种现象在机器学习中称为”过拟合“。它是机器学习面临的关键障碍,是无法避免的。
欠拟合: 指对训练样本的一般性质尚未学好。
模型选择:对候选模型的泛化误差进行评估,然后选择泛化误差最小的模型
2.2 评估方法
通常可通过实验测试来对学习器的泛化误差进行评估并进而做出选择。
需要使用一个测试集来测试学习器对新样本的判别能力,然后以测试集上的测试误差作为泛化误差的近似。
测试集应尽可能与训练集互斥,即测试样本尽量不在训练集中出现、未在训练过程中使用过。
- 将数据集分为训练集S和测试集T的方法:
留出法 | 交叉验证法 | 自助法 | |
---|---|---|---|
流程 | 直接将D划分为两个互斥的集合 | 先将数据集D划分为k个大小相似的互斥子集,然后每次用k-1个子集的并集作为训练集,余下的一个子集作为测试集 | 以自助采样法为基础,将D‘作为训练集,D\D’作为测试集 |
要求 | 训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响 | 随即使用不同的划分重复p次 | 每次随机从D中挑选的样本拷贝到D’中后仍要将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能被采到 |
优点 | 初始数据量足够时比较常用 | 初始数据量足够时比较常用 | 在数据集较小、难以有效划分训练/测试集时很有用;能从初始数据集中产生多个不同的训练集,对集成学习等方法有很大的好处 |
缺点 | 自助法产生的数据集改变了初始数据集的分布,会引入估计偏差 |
- 调参与最终模型
参数配置不同,学得模型的性能会有显著的差别。对算法参数的设定就是常说的”参数调节“,简称为”调参“。
参数调的好不好往往对最终模型性能有关键性影响。
2.3 性能度量
衡量模型泛化能力的评价标准称为性能度量。
使用不同的性能度量往往会导致不同的审判结果,什么样的模型是好的不仅取决于算法和数据,还决定于任务需求。
例如,回归任务中最常用的性能度量是”均方误差“:
E
(
f
;
D
)
=
1
m
Σ
i
=
1
m
(
f
(
x
i
)
−
y
i
)
2
E(f;D)=\frac{1}{m}\Sigma_{i=1}^{m}(f(x_i)-y_i)^2
E(f;D)=m1Σi=1m(f(xi)−yi)2
对于数据分布D和概率密度函数p(·),均方误差可描述为:
E
(
f
;
D
)
=
∫
x
∼
D
(
f
(
x
i
)
−
y
)
2
p
(
x
)
d
x
E(f;D)=\int_{x \sim D}(f(x_i)-y)^2p(x)dx
E(f;D)=∫x∼D(f(xi)−y)2p(x)dx
分 类 任 务 中 常 用 的 性 能 度 量 : 错 误 率 与 精 度 ; 查 准 率 、 查 全 率 与 F 1 ; R O C 与 A U C ; 代 价 敏 感 错 误 率 与 代 价 曲 线 \red{分类任务中常用的性能度量:错误率与精度;查准率、查全率与F1;ROC与AUC;代价敏感错误率与代价曲线} 分类任务中常用的性能度量:错误率与精度;查准率、查全率与F1;ROC与AUC;代价敏感错误率与代价曲线
-
错误率与精度
错误率是分类错误的样本数占样本总数的比例;
对样例集D:
E ( f ; D ) = 1 m Σ i = 1 m Ⅱ ( f ( x i ) ≠ y i ) E(f;D)=\frac{1}{m}\Sigma_{i=1}^{m}Ⅱ(f(x_i)≠y_i) E(f;D)=m1Σi=1mⅡ(f(xi)=yi)对数据分布D和概率密度函数p(·):
E ( f ; D ) = ∫ x ∼ D Ⅱ ( f ( x i ) ≠ y i ) p ( x ) d x E(f;D)=\int_{x \sim D}Ⅱ(f(x_i)≠y_i)p(x)dx E(f;D)=∫x∼DⅡ(f(xi)=yi)p(x)dx
精度是分类正确的样本数占样本总数的比例。
对样例集D:
a c c ( f ; D ) = 1 m Σ i = 1 m Ⅱ ( f ( x i ) = y i ) acc(f;D)=\frac{1}{m}\Sigma_{i=1}^{m}Ⅱ(f(x_i)=y_i) acc(f;D)=m1Σi=1mⅡ(f(xi)=yi)对数据分布D和概率密度函数p(·):
a c c ( f ; D ) = ∫ x ∼ D Ⅱ ( f ( x i ) = y i ) p ( x ) d x acc(f;D)=\int_{x \sim D}Ⅱ(f(x_i)=y_i)p(x)dx acc(f;D)=∫x∼DⅡ(f(xi)=yi)p(x)dx -
查准率、查全率与F1
查准率(准确率):P:检索出的信息中有多少比例是感兴趣的
查全率(召回率):R:感兴趣的信息中有多少被检索出来了
P = T P T P + F P P=\frac{TP}{TP+FP} P=TP+FPTP R = T P T P + F N R=\frac{TP}{TP+FN} R=TP+FNTPP-R图以查准率为纵轴,以查全率为横轴,可以直观地显示出学习器在样本总体上的查全率、查准率。
查准率=查全率的点是”平衡点“,简称为 BEP
用 BEP 进行比较会过于简化,更常用的是F1度量:
F 1 = 2 × P × R P + R = 2 × T P 样 例 总 数 + T P − T N F1=\frac{2\times P \times R}{P+R}=\frac{2\times TP}{样例总数+TP-TN} F1=P+R2×P×R=样例总数+TP−TN2×TPF1度量的一般形式为 F β F_ \beta Fβ:
F β = ( 1 + β 2 ) × P × R ( β 2 × P ) + R = { β = 1 , 标准的F1 β > 1 , 查全率影响更大 β < 1 , 查准率影响更大 F_\beta=\frac{(1+{\beta}^2)\times P\times R}{({\beta}^2\times P)+R}=\begin{cases} \beta=1,& \text{标准的F1} \\ \beta>1, & \text{查全率影响更大} \\ \beta<1, & \text{查准率影响更大} \\ \end{cases} Fβ=(β2×P)+R(1+β2)×P×R=⎩⎪⎨⎪⎧β=1,β>1,β<1,标准的F1查全率影响更大查准率影响更大在n个二分类混淆矩阵上综合考察查准率和查全率的做法:
a. 先分别计算,再计算平均值,得到”宏查准率“、”宏查全率“、”宏F1“
b. 先将对应元素求平均,再基于平均值计算,得到”微查准率“、”微查全率“、”微F1“ -
ROC与AUC
a. ROC
排序本身的质量好坏,体现了综合考虑学习器在不同任务下的“期望泛化性能”的好坏,或者说,“一般情况下”泛化性能的好坏,ROC曲线则是从这个角度出发来研究学习器泛化性能的有力工具,它以“真正例率”(TPR)为纵轴,以“假正例率”(FPR)为横轴。
T P R = T P T P + F N TPR=\frac{TP}{TP+FN} TPR=TP+FNTP F P R = F P T N + F P FPR=\frac{FP}{TN+FP} FPR=TN+FPFP绘制ROC曲线的过程:
先对样例进行排序,把分类阈值设为最大,即把所有样例均预测为反例;然后在坐标(0,0)处标记一个点;将分类阈值一次设为每个样例的预测值,即依次将每个样例划分为正例;用线段连接相邻点。
b. AUC
AUC即ROC曲线下的面积,可通过对ROC曲线下各部分的面积求和而得。
可估算为: A U C = 1 2 Σ i = 1 m − 1 ( x i + 1 − x i ) ⋅ ( y i + y i + 1 ) AUC=\frac{1}{2}\Sigma_{i=1}^{m-1}(x_{i+1}-x_i)·(y_i+y_{i+1}) AUC=21Σi=1m−1(xi+1−xi)⋅(yi+yi+1)形式化的看,AUC考虑的是样本预测的排序质量,因此它与排序误差有紧密联系。
给定m+个正例和m-个反例,令D+和D-分别表示正、反例集合,则排序“损失”定义为 l r a n k = 1 m + + m − Σ x + ∈ D + Σ x − ∈ D − ( Ⅱ ( f ( x + ) < f ( x − ) ) + 1 2 Ⅱ ( f ( x + ) = f ( x − ) ) ) l_{rank}=\frac{1}{m^++m^-}\Sigma_{x^+∈D^+}\Sigma_{x^-∈D^-}(Ⅱ(f(x^+)<f(x^-))+\frac{1}{2}Ⅱ(f(x^+)=f(x^-))) lrank=m++m−1Σx+∈D+Σx−∈D−(Ⅱ(f(x+)<f(x−))+21Ⅱ(f(x+)=f(x−)))对应的是ROC曲线之上得面积
因此有 A U C = 1 − l r a n k AUC=1-l_{rank} AUC=1−lrank -
代价敏感错误率与代价曲线
为权衡不同类型错误所造成的不同损失,可将错误赋予“非均等代价”, c o s t i j cost_{ij} costij表示将第 i 类样本预测为第 j 类样本的代价。
损失程度越大, c o s t 01 cost_{01} cost01与 c o s t 10 cost_{10} cost10值的差别越大。
引入非均等代价,希望最小化“总体代价”
在非均等代价下,ROC曲线不能直接反应出学习器的期望总体代价,而“代价曲线”可达到目的。代价曲线以“正例概率代价”(P(+)cost)为横轴,以“归一化代价”(cost_{norm})为纵轴。
P ( + ) c o s t = p × c o s t 01 p × c o s t 01 + ( 1 − p ) × c o s t 10 P(+)cost=\frac{p\times cost_{01}}{p \times cost_{01}+(1-p)\times cost_{10}} P(+)cost=p×cost01+(1−p)×cost10p×cost01
c o s t n o r m = F N R × p × c o s t 01 + F P R × ( 1 − p ) × c o s t 10 p × c o s t 01 + ( 1 − p ) × c o s t 10 cost_{norm}=\frac{FNR\times p\times cost_{01}+FPR\times (1-p)\times cost_{10}}{p\times cost_{01}+(1-p)\times cost_{10}} costnorm=p×cost01+(1−p)×cost10FNR×p×cost01+FPR×(1−p)×cost10
2.4 比较检验
先使用某种实验评估方法测得学习器的某个性能度量结果,然后对这些结果进行比较。但机器学习的比较会很复杂,引入了统计假设检验。基于假设检验结果能够推断出,若在测试集上观察到学习器A比B好,则A的泛化性能是否在统计意义上优于B,以及这个结论的把握有多大。
想要进行有效的假设检验,一个重要的前提是测试错误率俊为泛化错误率的独立采样。
(本节默认以错误率为性能度量,用 ε 表示)
统计假设检验的大致分类如下:
细分情况:
a. 二项检验:
测试错误率为
ϵ
^
\hat{\epsilon}
ϵ^的概率
P
(
ϵ
^
,
ϵ
)
=
C
m
ϵ
^
×
m
ϵ
ϵ
^
×
m
(
1
−
ϵ
)
m
−
ϵ
^
×
m
P(\hat{\epsilon},\epsilon)=C_{m}^{\hat{\epsilon}\times m}\epsilon^{{\hat{\epsilon}\times m}}(1-\epsilon)^{m-\hat{\epsilon}\times m}
P(ϵ^,ϵ)=Cmϵ^×mϵϵ^×m(1−ϵ)m−ϵ^×m
临界值
ϵ
ˉ
\bar \epsilon
ϵˉ为:
ϵ
ˉ
=
min
ϵ
\bar \epsilon =\min \epsilon
ϵˉ=minϵ
s
.
t
.
Σ
i
=
ϵ
0
×
m
+
1
m
ϵ
i
(
1
−
ϵ
)
m
−
i
<
α
s.t.\Sigma_{i=\epsilon_0\times m+1}^{m}\epsilon^i(1-\epsilon)^{m-i}<\alpha
s.t.Σi=ϵ0×m+1mϵi(1−ϵ)m−i<α
在α的显著度下,若测试错误率小于临界值,假设“ε≤ε0”不能被拒绝,即在α的显著度下可认为学习器的泛化错误率大于
ϵ
0
\epsilon_0
ϵ0
b. t检验
在得到多个测试错误率时,可以使用t检验
k个测试错误率可看作泛化错误率
ϵ
0
\epsilon_0
ϵ0的独立采样,变量
τ
t
\tau_t
τt为:
τ
t
=
k
(
μ
−
ϵ
0
)
σ
\tau_t=\frac{\sqrt{k}(\mu -\epsilon_0) }{\sigma}
τt=σk(μ−ϵ0)
其中
μ
=
1
k
Σ
i
=
1
k
ϵ
i
^
\mu =\frac{1}{k}\Sigma_{i=1}^{k}\hat{\epsilon_i}
μ=k1Σi=1kϵi^,
σ
2
=
1
k
Σ
i
=
1
k
(
ϵ
i
^
−
μ
)
2
\sigma^2=\frac{1}{k}\Sigma_{i=1}^{k}(\hat{\epsilon_i}-\mu)^2
σ2=k1Σi=1k(ϵi^−μ)2
临界值范围是:
[
t
−
α
/
2
,
t
α
/
2
]
[t_{-\alpha /2},t_{\alpha /2}]
[t−α/2,tα/2](查表可得)
c. 交叉验证t检验
基本思想:若两个学习器的性能相同,则它们使用相同的训练/测试集得到的测试错误率应相同,即
ϵ
i
A
=
ϵ
i
B
\epsilon_i^A=\epsilon_i^B
ϵiA=ϵiB
变量
τ
t
\tau_t
τt为:
τ
t
=
∣
k
μ
σ
∣
\tau_t=|\frac{\sqrt{k}\mu}{\sigma}|
τt=∣σkμ∣
临界值为:
t
α
/
2
,
k
−
1
t_{\alpha /2,k-1}
tα/2,k−1(查表可得)
d. McNemar检验
变量为:
τ
χ
2
=
(
e
01
−
e
10
−
1
)
2
e
01
+
e
10
\tau_{\chi^2}=\frac{(e_{01}-e_{10}-1)^2}{e_{01}+e_{10}}
τχ2=e01+e10(e01−e10−1)2
临界值为:
χ
α
2
\chi_\alpha^2
χα2(查表可得)
e. Friedman检验
Friedman检验基于算法排序。先使用留出法或交叉验证法得到每个算法在每个数据集上的测试结果,然后在每个数据集上根据测试性能由好到坏排序,并赋予序值,最终求序值的平均,令
r
i
r_i
ri表示第 i 个算法的平均序值。
变量为:
τ
F
=
(
N
−
1
)
τ
χ
2
N
(
k
−
1
)
−
τ
χ
2
\tau_F=\frac{(N-1)\tau_{\chi^2}}{N(k-1)-\tau_{\chi^2}}
τF=N(k−1)−τχ2(N−1)τχ2
其中
τ
χ
2
=
k
−
1
k
⋅
12
N
k
2
−
1
Σ
i
=
1
k
(
r
i
−
k
+
1
2
)
2
\tau_{\chi^2}=\frac{k-1}{k}·\frac{12N}{k^2-1}\Sigma_{i=1}^{k}(r_i-\frac{k+1}{2})^2
τχ2=kk−1⋅k2−112NΣi=1k(ri−2k+1)2
=
12
N
k
(
k
+
1
)
(
Σ
i
=
1
k
r
i
2
−
k
(
k
−
1
)
2
4
)
=\frac{12N}{k(k+1)}(\Sigma_{i=1}^{k}r_i^2-\frac{k(k-1)^2}{4})
=k(k+1)12N(Σi=1kri2−4k(k−1)2)
f. Nemenyi后续检验
在McNemar检验中,如果“所有算法的性能相同”的假设被拒绝,则需要Nemenyi后续检验来进一步区分各算法。
临界值域CD为:
C
D
=
q
α
k
(
k
+
1
)
6
N
CD=q_\alpha \sqrt{\frac{k(k+1)}{6N}}
CD=qα6Nk(k+1)
其中,
q
α
q_\alpha
qα是Tukey分布的临界值(查表可得)
两个算法的平均序列之差:
∣
r
i
−
r
j
∣
|r_i-r_j|
∣ri−rj∣
2.5 偏差与方差
方差(Variance):
v
a
r
(
x
)
=
E
D
[
(
f
(
x
;
D
)
−
f
ˉ
(
x
)
)
2
]
var(x)=E_D[(f(x;D)-\bar{f}(x))^2]
var(x)=ED[(f(x;D)−fˉ(x))2]
偏差(Bias):
b
i
a
s
2
(
x
)
=
(
f
ˉ
(
x
)
−
y
)
2
bias^2(x)=(\bar{f}(x)-y)^2
bias2(x)=(fˉ(x)−y)2
其中,
f
ˉ
(
x
)
=
E
D
[
f
(
x
;
D
)
]
\bar{f}(x)=E_D[f(x;D)]
fˉ(x)=ED[f(x;D)]
噪声为:
ϵ
2
=
E
D
[
(
y
D
−
y
)
2
]
\epsilon^2=E_D[(yD-y)^2]
ϵ2=ED[(yD−y)2]
可得到:
E
(
f
;
D
)
=
b
i
a
s
2
(
x
)
+
v
a
r
(
x
)
+
ϵ
2
E(f;D)=bias^2(x)+var(x)+\epsilon^2
E(f;D)=bias2(x)+var(x)+ϵ2即,泛化误差可分解为偏差、方差与噪声之和。
偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了算法本身的拟合能力;
方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响;
噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。
如上图所示,Bias表示离中心点的偏离程度;Variance表示示例点离
E
[
f
∗
]
=
f
E[f^*]=f
E[f∗]=f的偏离程度。
简单地model,有较大的Bias,较小的Variance,导致欠拟合;
复杂的model,有较小的Bias,较大的Variance,导致过拟合。