第一章的重点主要在于明确机器学习中经常使用的几个概念,以及交叉验证法的思路。
定义和概念
机器学习广义上可被定义为基于经验提升性能或者进行精准预测的学习方法。“经验”指学习器可以利用的过去的信息,这些信息常常以电子数据的形式存在,即带标注的训练集。
机器学习关注如何设计高效和准确的预测算法;在机器学习中主要从两个方面衡量算法质量,一个是时间和空间复杂度(概念类的复杂度),一个是样本复杂度(训练样本的规模)。
一些主要的学习问题列举如下。
分类:为每个事项指定类别。
回归:预测每个事项的实值。
排序:根据某种准则将事项进行排序。
聚类:将事项划分为同质区域。
降维(流形学习):将事项的原始表示转化为这些事项的低维表示。
一些定义与术语:
样本:用于学习或评估的数据事项或实例。
特征:与样本关联的属性集合,通常表示为向量。特征的选择反映了使用者对于学习任务的先验知识,对实际性能结果影响很大。
标签:分配给样本的数值或者类别。
训练样本:用于训练学习算法的样本。
验证样本:用于调整学习算法参数的样本。
测试样本:用来评估学习算法性能的样本。
损失函数:衡量预测标签和真实标签之间差异或损失的函数。将所有的标签集合记为
Y
\mathcal{Y}
Y,将可能的预测集合记为
Y
′
\mathcal{Y}'
Y′,那么损失函数为映射
Y
×
Y
′
→
R
+
\mathcal{Y}\times\mathcal{Y}'\rightarrow\mathbb{R}_+
Y×Y′→R+。在大多数情况下
Y
=
Y
′
\mathcal{Y}=\mathcal{Y}'
Y=Y′且损失函数有界,但这些条件不一定总是成立。
假设集*:将特征(特征向量)映射到标签集合
Y
\mathcal{Y}
Y的函数集合。或更一般地,假设集中的假设可以是将特征映射到不同集合
Y
′
\mathcal{Y}'
Y′的函数。比如进行垃圾邮件判别的时候,
Y
=
{
垃
圾
,
非
垃
圾
}
\mathcal{Y}=\{垃圾,非垃圾\}
Y={垃圾,非垃圾},但假设可能是将特征向量映射到正实数(得分)的线性函数,即映射到
Y
′
=
R
+
\mathcal{Y}'=\mathbb{R}_+
Y′=R+,得分越高,越有可能是垃圾邮件。
算法的性能是基于其在测试样本上的表现即测试误差来进行评估的,而不是在训练样本上的表现。一个学习算法可能是一致的(对训练数据完全无误地划分),但在测试数据上表现很差,比如许多由复杂决策平面定义的一致学习器。
交叉验证
可用的带标签样本数量往往很少,甚至少到无法留出验证样本,否则可能使得训练样本量不足。这时可以考虑n-折交叉验证。具体如下。
设样本量为
m
m
m,令
θ
\bm{\theta}
θ表示算法自由参数向量。对于给定的
θ
\bm{\theta}
θ值,首先将样本集
S
S
S随机划分为
n
n
n组子样本,或称
n
n
n折,其中第
i
i
i折为样本规模为
m
i
m_i
mi的带标签样本
{
(
x
i
1
,
y
i
1
)
,
⋯
,
(
(
x
i
m
i
,
y
i
m
i
)
)
}
\{(x_{i1},y_{i1}),\cdots,((x_{im_i},y_{im_i}))\}
{(xi1,yi1),⋯,((ximi,yimi))}。
对于任意
i
=
1
,
2
,
⋯
,
n
i=1,2,\cdots,n
i=1,2,⋯,n,学习算法在除了第
i
i
i折之外的所有数据上进行训练,并生成假设
h
i
h_i
hi,
h
i
h_i
hi的性能在第
i
i
i折上进行测试。基于假设
h
i
h_i
hi的平均误差,称为交叉验证误差。使用误差
R
^
C
V
(
θ
)
\hat{R}_{CV}(\bm{\theta})
R^CV(θ)对参数
θ
\bm{\theta}
θ进行评估,
R
^
C
V
(
θ
)
\hat{R}_{CV}(\bm{\theta})
R^CV(θ)定义为
R
^
C
V
(
θ
)
=
1
n
∑
i
=
1
n
1
m
i
∑
j
=
1
m
i
L
(
h
i
(
x
i
j
)
,
y
i
j
)
\hat{R}_{CV}(\bm{\theta})={1\over{n}}\sum_{i=1}^n{{1\over{m_i}}\sum_{j=1}^{m_i}{L(h_i(x_{ij}),y_{ij})}}
R^CV(θ)=n1i=1∑nmi1j=1∑miL(hi(xij),yij)选择使得
R
^
C
V
(
θ
)
\hat{R}_{CV}(\bm{\theta})
R^CV(θ)取得最小值的参数值
θ
0
\bm{\theta}_0
θ0即可。
得到
θ
0
\bm{\theta}_0
θ0后,在全部训练样本上训练算法,并在测试样本上评估其性能。
一般地,每折有相同的大小,即对任意
i
=
1
,
2
,
⋯
,
n
i=1,2,\cdots,n
i=1,2,⋯,n,有
m
i
=
m
/
n
m_i=m/n
mi=m/n,且
n
n
n一般取5或10.
n-折交叉验证也常用于性能评估。在这种情况下,给定参数向量
θ
\bm{\theta}
θ,将全部带标签样本划分为n折,而不区分测试样本和训练样本。用于评估的性能是全部样本上的n-折交叉验证误差以及每折误差的标准差。