一、绪论
出处:
Datawhale吃瓜教程(https://www.bilibili.com/video/BV1Mh411e7VU)
案例:
水果摊旁,挑个根蒂蜷缩,敲起来声音浊响的青绿西瓜。期待是皮薄后瓤甜的瓜
1.1 引言
机器学习
研究如何通过计算的手段,利用经验来改善系统自身的性能。
- 经验以数据形式存在
学习算法
在计算机上从数据中产生模型的算法
模型
泛指从数据中学到的结果
机器学习分类
根据训练数据是否拥有标记信息
-
监督学习(supervised learning)
:分类、回归 -
非监督学习(unsupervised learning)
:聚类
1.2 基本术语
数据
-
数据集(data set)
:记录的集合 -
样本(sample)/示例(instance)
:单条记录【一个示例可以称为一个"特征向量(feature vector)"】 -
属性(attribute)/特征(feature)
:反映事件或对象在某方面的表现或性质的事项,例如:色泽、根蒂、敲声 -
属性值
:属性上的取值 -
维度(dimensionality)
:单个样本所包含的属性个数
学习
通过对训练集 { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } \{(x_1,y_1),(x_2,y_2),...,(x_m,y_m)\} {(x1,y1),(x2,y2),...,(xm,ym)}进行学习,建立一个从输入空间 X \mathcal{X} X到输出空间 Y \mathcal{Y} Y的映射 f : X → Y f : \mathcal{X} \rightarrow \mathcal{Y} f:X→Y
-
学习/训练
:从数据中学得模型的过程 -
训练数据(training data)
:训练过程中使用的数据 -
训练样本
-
训练集
:训练样本的集合 -
学习器
:模型 -
样例(example)
:拥有标记信息【有结果】的示例 -
分类(classification)
:预测的结果是离散值。【好瓜、坏瓜】-
二分类(binary classification)
:只涉及两个分类。 Y = { − 1 , + 1 } \mathcal{Y}=\{-1,+1\} Y={−1,+1}或 { 0 , 1 } \{0,1\} {0,1} -
多分类(multi-class classificaiton)
: ∣ Y ∣ > 2 |\mathcal{Y}|>2 ∣Y∣>2
-
-
回归(regression)
:预测的结果是连续的。 Y = R \mathcal{Y}=\mathbb{R} Y=R
测试
-
测试(testing)
:学到模型后,使用其进行预测的过程称为“测试” -
测试样本(testing sample)
:被预测的样本 -
验证集(validation set)
:评估测试的数据集 -
泛化(generalization)能力
:模型在新样本的能力
1.3 假设空间
归纳(induction)
- 从特殊到一般的泛化过程
- 从具体的事实归纳出一般性规律
演绎(deduction)
- 从一般到特殊的“特化(specialization)”过程,从基础原理推演出具体情况
版本空间(version space)
与训练集一直的“假设集合”
【模型都有归纳偏好】
二、模型评估与选择
2.1 经验误差与过拟合
错误率(error rate):分类错误的样本数a占样本总数m的比例
E = a m E = \frac{a}{m} E=ma
精度(accuracy): 1 − E 1-E 1−E
误差(error):模型的实际预测输出与样本的真实输出之间的差异
-
训练误差(training error)/经验误差(empirical error)
:模型在训练集上的误差 -
泛化误差(generalization error)
:在新样本上的误差
【我们希望的是泛化误差最小化,但是在新样本不确定的情况下,我们努力使经验误差最小化】
-
过拟合(overfitting)
:经验误差很小,但泛化误差很大(将训练样本自身的性质作为了一般性质)。过拟合只能缓解 -
欠拟合(underfitting)
:经验误差很大(对训练样本的一般性质尚未学好)
2.2 评估方法
我们通过实验测试来对学习器的泛化误差进行评估进而选择合适的模型,因此需要一个测试集(testing set)来测试学习器对新样本的判别能力,将测试集上的测试误差作为泛化误差的近似。
假设测试样本也是从样本真实分布中独立同分布采样而得。一般测试集尽可能与训练集互斥(测试样本尽量不再训练集中出现)
当我们只有一个包含m个样例得数据集D,既要训练也要测试,此时需要对D进行适当得处理,从中产生出训练集S和测试集T
2.2.1 留出法(hold-out)
直接将数据集D划分为两个互斥得集合,其中一个集合作为训练集S,另一个作为测试集T。 D = S ∪ T D=S\cup T D=S∪T , S ∩ T = ∅ S\cap T=\varnothing S∩T=∅,在S上训练出模型后,用T来评估测试误差,作为泛化误差得估计。
注意:
- 训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响。
- 单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。
不足:
- 留出法需要划分训练/测试集,划分的比例无法确定
- 一般将大约2/3~4/5的样本作为训练,剩余样本用于测试
2.2.2 交叉验证法(cross validation)
步骤:
- 先将数据集D划分k个大小相似的互斥子集,即 D = D 1 ∪ D 1 ∪ . . . ∪ D k D=D_1\cup D_1\cup ...\cup D_k D=D1∪D1∪...∪Dk, D i ∩ D j = ∅ ( i ≠ j ) D_i\cap D_j=\varnothing(i\neq j) Di∩Dj=∅(i=j),每个子集 D i D_i Di尽可能保持数据分布的一致性,从D中通过分层抽样得到。
- 每次用k-1个子集的并集作为训练集,余下的子集作为测试集;这样可获得k组训练/测试集,从而进行k次训练和测试
- 最终返回的是这k个测试结果的均值
【交叉验证法评估结果的稳定性和保真性取决于k的取值,一般k取10】
优化:
由于将数据集D划分为k个子集同样存在多种划分方式,为减少因样本划分不同而引入的差别,k折交叉验证通常要随机使用不同的划分重复p次。最终的评估结果是这p次k折交叉验证结果的均值。
留一法:
假定数据集D中包含m个样本,令k=m,则交叉验证法变为留一法。
- 留一法不受随机样本划分方式的影响
- 在绝大多数情况下,留一法中被实际评估的模型与期望评估的用D训练出的模型很相似
- 留一法的结果往往被认为是比较准确的。
留一法缺点:
- 在数据集比较大时,计算量过大
- 留一法的结果未必永远比其他评估方法准确
2.2.3 自助法(bootstrapping)
我们希望评估的是用D训练出来的模型,但是留出法和交叉验证法中,保留了一部分样本用于测试,因此实际评估的模型所使用的训练集比D小,这样会引入因训练样本规模不同而导致的估计偏差。
自助法可以减少训练样本规模不同造成的影响,同时还能比较高效地进行实验估计。
步骤:
- 对给定包含m个样本的数据集D进行采样,产生数据集 D ′ D' D′:每次随机从D中挑选一个样本,将其拷贝放入 D ′ D' D′,然后再将该样本放回初始数据集D中,使得该样本下次采样时仍可以被采到(有放回抽样)
- 这个过程重复执行m次后,得到一个包含m个样本的数据集
D
′
D'
D′
- 每个样本被抽到的概率为 1 m \frac{1}{m} m1,始终不被抽中的概率为 ( 1 − 1 m ) m (1-\frac{1}{m})^m (1−m1)m,取极限得到结果 1 e ≈ 0.368 \frac{1}{e} \approx 0.368 e1≈0.368
- 将
D
′
D'
D′用作训练集,
D
D
D-
D
′
D'
D′用作测试集
- 实际评估的模型与期望评估的模型使用的都是m个训练样本,保留了约36.8%的没在训练集中出现的样本用于测试,这样的测试结果称为包外估计(out-of-bag-estimate)
优点:
- 在数据集较小、难以有效划分训练和测试集时很有用。
- 自助法能从初始数据集中产生多个不同的训练集,对集成学习有很大好处
缺点:
- 自助法产生的数据集改变了初始数据集的分布,会引入估计误差
- 在初始数据量足够时,留出法和交叉验证法更常用
2.2.4 调参与最终模型
大多数算法都有参数(parameter)需要设定,参数配置不同,学习模型的性能往往有显著差异。在模型评估与选择时,除了对适用学习算法进行选择,还需对算法参数进行设定,俗称“调参(parameter tuning)”
调参方法:
对每个参数选定一个范围和变化步长
最终模型选择:
给定包含m个样本的数据集D,在模型评估与选择过程中由于需要留出一部分数据进行评估测试,实际上只使用了一部分数据训练模型。因此,在模型选择完成后,学习算法和参数配置已选定,此时需要用数据集D重新训练模型,这个模型在训练过程中使用了所有m个样本,才是我们最终交付的模型
2.3 性能度量(performance measure)
性能度量反映了任务需求,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判结果;意味着模型的”好坏“是相对的,什么样的模型是好的,取决于算法、数据和任务需求。
在预测任务中,给定样例集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } D=\{(x_1,y_1),(x_2,y_2),...,(x_m,y_m)\} D={(x1,y1),(x2,y2),...,(xm,ym)},其中 y i y_i yi是 x i x_i xi的真实标记。要评估学习器 f f f的性能,就要将预测结果 f ( x ) f(x) f(x)与真实标记 y y y进行比较。
回归中的==”均方误差”==(mean squared error):
E
(
f
;
D
)
=
1
m
∑
i
=
1
m
(
f
(
x
i
)
−
y
i
)
2
E(f;D) =\frac{1}{m}\sum_{i=1}^m(f(x_i)-y_i)^2
E(f;D)=m1i=1∑m(f(xi)−yi)2
对于数据分布
D
\mathcal D
D和概率密度函数
p
(
⋅
)
\mathcal p(·)
p(⋅),均方误差可描述为
E
(
f
;
D
)
=
∫
x
∼
D
(
f
(
x
)
−
y
)
2
p
(
x
)
d
x
E(f;D)=\int_{x \sim D}(f(x)-y)^2p(x)dx
E(f;D)=∫x∼D(f(x)−y)2p(x)dx
2.3.1 错误率和精度
适用于二分类和多分类
- 错误率:分类错误的样本数占样本总数的比例
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ E(f;D) &= \fra…
- 精度:分类正确的样本数占样本总数的比例
$$
\begin{align}
acc(f;D) &= \frac{1}{m}\sum_{i=1}^{m}I(f(x_i)= y_i) \
&= \int_{x\sim D}I(f(x)=y)p(x)dx \
&=1-E(f;D)
\end{align}
$$
2.3.2 查准率、查全率与F1
查准率(precision)、查全率(recall)适用于基于信息检索结果的性能度量
- 查准率P【目的是找到预测结果为正的所有值中正确预测的值】
P = T P T P + F P P = \frac{TP}{TP+FP} P=TP+FPTP
- 查全率R【目的是找到所以真实情况为正的值】
R = T P T P + F N R = \frac{TP}{TP+FN} R=TP+FNTP
理解:
查准率和查全率是一对矛盾的度量。查准率高时,查全率往往偏低;查全率高时,查准率偏低。
如果希望所有的好瓜被选出来,则通过增加选瓜的数量来实现,此时查准率就会较低;希望选出的瓜中好瓜的比例尽可能高,则可挑选最有把握的瓜,此时会漏掉不少好瓜,使查全率较低
【根据学习器的预测结果对样例进行排序,排在前面的是学习器认为“最可能”是正例的样本,排在后面的是学习器认为“最不可能”是正例的样本,按次顺序逐个将样本作为正例进行预测,每次可以计算出当前的查全率、查准率,得到P-R曲线】
- 如果一个学习器的P-R曲线被另一个学习器的曲线完全“包住”,则后者的性能优于前者。A优于C
- 如果两个学习器的P-R曲线交叉。则需要根据实际情况判断,可以通过比较P-R曲线下面积的大小
F1度量:找到合适的学习器
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ F1 &= \frac{2\…
在一些应用中,对查准率和查全率的重视程度有所不同,在商品推荐中,为了尽可能少打扰用户,更希望推荐内容是用户感兴趣的,此时查准率很重要。在逃犯信息检索系统中,更希望尽可能少漏掉逃犯,查全率更重要。
因此,F1的一般形式
F
β
F_\beta
Fβ:
F
β
=
(
1
+
β
2
)
×
P
×
R
(
β
2
×
P
)
+
R
F_\beta = \frac{(1+\beta ^2) \times P \times R}{(\beta ^2 \times P)+R}
Fβ=(β2×P)+R(1+β2)×P×R
- β > 0 \beta >0 β>0读来给你了查全率对查准率的相对重要性
- β = 1 \beta =1 β=1退化为F1
- β > 1 \beta >1 β>1查全率有更大影响
- β < 1 \beta <1 β<1查准率有更大影响
n个二分类混淆矩阵的查准率和查全率:
宏
现在各个混淆矩阵上分别计算出查准率和查全率,记为
(
P
1
,
R
1
)
,
(
P
2
,
R
2
)
,
.
.
.
,
(
P
n
,
R
n
)
(P_1,R_1),(P_2,R_2),...,(P_n,R_n)
(P1,R1),(P2,R2),...,(Pn,Rn),再计算平均值,得到宏查准率(macro-P)、宏查全率(macro-R)、宏F1
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ macro-P &= \fr…
微
先将各混淆矩阵的对应元素进行平均,得到TP、FP、TN、FN的平均值,分别记为
T
P
‾
\overline{TP}
TP、
F
P
‾
\overline{FP}
FP、
T
N
‾
\overline{TN}
TN、
F
N
‾
\overline{FN}
FN,再基于这些平均值计算出微查准率(micro-P)、微查全率(micro-R)、微F1
$$
\begin{align}
micro-P &= \frac{\overline{TP}}{\overline{TP}+\overline{FP}} \
micro-R &= \frac{\overline{TP}}{\overline{TP}+\overline{FN}} \
micro-F1 &=\frac{2\times micro-P \times micro-R}{micro-P+micro-R}
\end{align}
$$