第一章 绪论
基本概念
-
数据集:一批样本的集合
- 样本/示例:一组关于事物的描述,例如黑色长头发的女人
- 特征:也就是事物的属性,例如又香又甜的地瓜,这里的地瓜就有两个特征,香和甜
- 样本/示例:一组关于事物的描述,例如黑色长头发的女人
-
样本空间:所有样本可能的取值的集合,例如对于人而言,通常情况下只有男女两种性别,那么{男,女}这个集合就是一个简单的样本空间
-
特征向量:这是一个比较抽象的概念,意思是一组特征在样本空间中的坐标信息。为什么要这么做呢?我们从头开始讲吧。
上面提到的样本空间只有一种特征也就是男女。但是正常情况下,一个事物是由非常多的特征组成的,比方说人除了性别之外还有身高体重等等。
假设我们取这一组特征来描述一个人{性别,身高,体重},那么我们就可以认为样本空间是三维的,每个人的特征在这个样本空间里是一个三维坐标。同理{性别,身高,体重,性取向}就可以认为样本空间是四维的,每个人的特征在这个样本空间里是一个四维坐标
那么这么做有什么好处呢?最简单直接的就是判别相似度。比方说我们通常说两个人很像,都是女的,都是180cm,都是180kg。但是这也只是一种口头上的描述,我们需要把它量化。采取的方式就是前面提到的特征向量。
特征向量作为一组特征在样本空间中的坐标信息,我们可以很方便的计算出任意两个特征向量的欧式距离(此处只是举个例子,未必就是用这种方法计算),欧氏距离越近的两个特征向量,它们所代表的事物就越是相似。因此,将一组特征放到样本空间里抽象成特征向量是十分有意义的。
-
学习/训练:从样本生成模型的过程
此处专门介绍一下样本与模型。简单来说,假如我们有一组数据,是10个人的身高和体重,也就是10条类似于这样的数据:{身高,体重}。那么我们就可以称这10条数据为样本。很显然,这10条数据可以拟合出一个函数,我们把这个函数就叫做模型,由这10条数据拟合函数的过程就叫做学习。有了这个模型后,我们可以输入任意的身高来预测体重,这就是模型的用途。
-
训练集:训练过程中用到的样本的集合
-
真实:数据中的真正的规律
-
假设:模型学习到的未必真实的规律
-
标记:前面有提到学习的概念,通俗地讲就是,我们平时学习“1+1=?”的时候,必须知道这个?是2,也就是说知道正确答案才可以。机器学习同理,要把正确答案一起提供才可以。
-
标记空间/输出空间:所有标记的集合。比方说,我们想要根据身高估计体重,那么体重就是标记空间/输出空间
-
聚类:给出一堆数据,计算机自动学习分类特征,然后对其进行分类。其特殊之处在于,我们不需要给出标记,只要把数据丢进去就可以自动进行。
-
监督学习:训练数据有标记信息的学习过程。亦称:有导师学习。
-
无监督学习:训练数据没有标记信息的学习过程。亦称:无导师学习。
-
泛化:机器学习所学得模型适用于陌生数据的能力。比方说,学习了1+1=2,1+2=3后,输入1+1+1能够输出3,这就可以称得上是一种泛化能力。
-
假设空间:机器学习中可能的函数构成的空间。可以理解为可供候选的模型(函数)
- 版本空间:能够正确解释训练集的所有数据的模型
第二章 模型评估与选择
经验误差与过拟合
- 误差:预测的结果与真实结果之间的差别
- 训练误差/经验误差:训练集上的误差
- 泛化误差:测试集上的误差
- 过拟合:训练的太好了导致的泛化能力变差。比方说只知道1+1=2,1+2=3,但是不知道1+1+1=3
评估方法
我们需要划分出测试集对模型进行评估
主要有两条原则:
- 测试集的数据最好不要出现在训练集
- 测试集的数据分布最好跟训练集一致
根据这两条原则,我们能够很容易想到以下几种方法:
- 留出法:将一组数据划分为训练集和测试集两部分。这两部分不相交,通常情况下,训练集占原始数据集的2/3-4/5
- 交叉验证法:留出法是将数据划分为两部分然后进行测试,交叉验证发采用了类似的思想。不同之处在于,交叉验证法将数据划分为了多个大小相似的互斥子集,每次取其中一个作为测试集其他作为训练集。这样就能得到多次训练以及测试的结果,最后对其取均值即使最后的评估结果。
- 自助法:多次从原始数据集 D D D中随机采样得到 D ′ D' D′,然后用 D \ D ′ D \backslash D' D\D′作为训练集,好处是法在数据集较小、难以有效划分训练/测试集时很有用;坏处是会改变数据集分布,因而除非数据太少,否则不常用
性能度量
回归任务中,最常用的度量是均方误差(MSE),假设输入的数据为
x
1
,
x
2
,
.
.
.
,
x
n
{x_1,x_2,...,x_n}
x1,x2,...,xn,模型
f
f
f预测的标记为
f
(
x
i
)
f(x_i)
f(xi),真实的标记为
y
1
,
y
2
,
.
.
.
,
y
n
{y_1,y_2,...,y_n}
y1,y2,...,yn,那么均方误差公式如下:
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
分类任务中的错误率与精度
- 错误率:预测错的概率
- 精度:预测对的概率
错误率与精度的描述太过简单,因此我们需要新的指标
首先我们来定义一些东西:
TP的和TN是预测与真实结果一致,FN是本来是假的但是预测成了真的,FP是本来是是真的结果预测成了假的。
那么我们可以由此得到查准率(精确率)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+FNTP
简单来说,查准率就是有预测的正例有多少是真正的正例,查全率就是有多少正例被查出来了
通常而言,P和R是矛盾的(中国有句古话叫做,宁可错杀一千,不可放过一个)
在P和R这对矛盾中,有一个平衡点(BEP)是P=R时的数值,虽然平衡点已经蛮复杂的了,但是还不够,平时最常用的时
F
1
F1
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×TP
F1值是综合考虑了精确率和召回率的度量指标,通过平衡了这两者来评估模型的性能。F1值适用于数据不平衡的情况下,对于正负样本比例差异较大的数据集,F1值能够提供一个更准确的评估。F1值越高,表示模型在同时考虑预测准确性和召回率方面表现越好。另外F1最大值为1,越高越好
ROC与AUC
此处的内容其实放在后面讲更好一点,但是既然书里在这里说了,那么这里也简单提一下。通常情况下,我们判断一个样本是正例还是反例,要经过两个步骤:
- 用一个函数去对样本的特征进行处理,得到一个值
- 判断第一步中得到的值是否达到阈值,若是则为正例,否则为反例
现在假设我们有10个样本,每个样本都只进行上面提到的第一步,然后将所有样本按照这个值降序排列。再然后,将所有样本都当作正例(也就是说阈值一直在变)来计算TPR(真正例率)和FPR(假正例率)。然后根据这两个值作图就能得到ROC曲线,AUC是ROC曲线包裹的面积:
注意,AUC的面积越大越好,ROC越靠近左上角越好
代价敏感错误率与代价曲线
简单来说,就是给错误加权。以此来达到使某些错误的代价更大进而降低这种错误的犯错概率。
此时,ROC已经无法直接反应出学习器的期望总体代价,我们应该使用代价曲线来达成这一目的。在二分类任务中,正例概率代价为:
P
(
+
)
c
o
s
t
=
p
×
c
o
s
t
01
p
×
c
o
s
t
01
+
(
1
−
p
)
×
c
o
s
t
01
P(+)cost = \frac{p \times cost_{01}}{p \times cost_{01} + (1-p) \times cost_{01}}
P(+)cost=p×cost01+(1−p)×cost01p×cost01
归一化代价为:
c
o
s
t
n
o
r
m
=
F
N
R
×
p
×
c
o
s
t
01
+
F
N
R
×
(
1
−
p
)
×
c
o
s
t
01
p
×
c
o
s
t
01
+
(
1
−
p
)
×
c
o
s
t
01
cost_{norm} = \frac{FNR \times p \times cost_{01}+FNR \times (1-p) \times cost_{01}}{p \times cost_{01} + (1-p) \times cost_{01}}
costnorm=p×cost01+(1−p)×cost01FNR×p×cost01+FNR×(1−p)×cost01
此时期望总体代价如下图所示:
比较检验
概率论的内容(二项分布, χ 2 \chi^2 χ2分布,t分布,f分布),略去不表
偏差与方差
对学习算法除了通过实验估计其泛化性能,人们往往还想了解它为什么有这样的性能,此处用“偏差-方差分解”可以较好地解释。
推导过程略去不表,总之,最后得到的结果是:
E
(
f
;
D
)
=
b
i
a
s
2
(
x
)
+
v
a
r
(
x
)
+
ε
2
E(f;D) = bias^2(x)+var(x)+\varepsilon^2
E(f;D)=bias2(x)+var(x)+ε2
其中
E
(
f
;
D
)
E(f;D)
E(f;D)为泛化误差,其他三个按照顺序为偏差,方差,噪声。
- 偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力
- 方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响
- 噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。
偏差-方差分解说明,泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。给定学习任务,为了取得好的泛化性能,则需使偏差较小,即能够充分拟合数据,并且使方差较小,即使得数据扰动产生的影响小。
另外,偏差与方差是有冲突的,训练前期,偏差占主导;训练后期,方差占主导。在训练到一定程度后,有可能模型就会开始学习训练数据自身的特征,进而导致过拟合。示意图如下:
小结
截止到目前,西瓜书看起来是一本非常典型的教材,先给吹一堆概念,然后再从概念去讲解东西。反正我是不喜欢这么学习,但是也不是看不懂,无非是最后回头还要再梳理一遍罢了。
此外,我大概了解了一些还算基础的概念,预计在学完第7章之后,这两章的内容我才能消化个差不多。