1.1 统计学习
首先要知道何为统计学习,蓝皮书给出的定义是:
统计学习(statistical learning) 是关于计算机基于数据构建概率统计模型并运用模型对数据进行 预测和分析 的一门学科,又称统计机器学习。笼统地来说,统计学习的研究对象是数据,目的是对数据进行预测和分析。
1.1.1 统计学习的对象
上面有说到统计学习的对象是数据,即从数据出发,提取特征,抽象出模型。而数据本身是多种多样的,可以是数字文字图像语音视频以及它们的组合等。统计学习关于数据的基本假设是同类数据具有一定的统计规律性,因此可以用概率统计的方法来加以处理。
1.1.2 统计学习的目标
统计学习用于对数据进行预测和分析,尤其是对未知数据进行预测和分析,所以总的目标是考虑学习什么样的模型和如何学习模型,在考虑模型的准确性的同时也要考虑到模型学习的效率。
1.1.3 统计学习的方法
统计学习主要可以分为监督学习、半监督学习、非监督学习和强化学习。蓝皮书主要讨论的是监督学习,其方法可以概括如下:首先从给定有限的训练数据集出发,假设数据是独立同分布的,并假设要学习的模型属于某个函数的集合,称为 假设空间,再应用某个评价准则从假设空间中选取一个最优的模型(使该模型有最优预测)。步骤如下:
- 从一个有限的训练数据集开始
- 锁定包含所有可能模型的假设空间,即学习模型的集合
- 确定模型选择的准则,即学习的策略
- 实现求解最优模型的算法,即学习的算法
- 通过学习方法选择最优模型
- 利用最终得到的模型对数据进行分析预测
总结下来就是统计学习的三要素:模型、策略、算法
1.2 监督学习
蓝皮书指出:监督学习的任务就是学习一个模型使得他能够对任意给定输入得到一个好的预测,即输出。先介绍一下基本概念。
1.2.1 基本概念
1.输入空间、输出空间、特征空间
输入输出空间:输入与输出所有可能取值的集合。
特征空间:每个具体的输入是一个实例,通常由特征向量表示,所有特征向量存在的空间称为特征空间。特征空间的每一维对应一个特征。需要注意的是,有时特征空间和输入空间是相同的空间,但有时不是,需要将实例从输入空间映射到特征空间。
将输入输出看作随机变量,分别记作
X
,
Y
X,Y
X,Y,其实例即取值可以记作
x
,
y
x,y
x,y,比如输入变量的实例
x
x
x可以写作:
x
=
(
x
(
1
)
,
x
(
2
)
,
.
.
.
,
x
(
n
)
)
T
(1-1)
x=(x^{(1)},x^{(2)},...,x^{(n)})^T\tag{1-1}
x=(x(1),x(2),...,x(n))T(1-1)
其中
x
(
i
)
x^{(i)}
x(i)表示
x
x
x的第
i
i
i个特征。训练数据由输入和输出对组成:
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
n
,
y
n
)
}
(1-2)
T=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\}\tag{1-2}
T={(x1,y1),(x2,y2),...,(xn,yn)}(1-2)
输入与输出均为连续变量的预测问题就称为回归问题,输出变量为有限个离散变量的预测问题称为分类问题,而输入与输出变量均为变量序列的预测问题可称为标注问题。
另外监督学习模型可以是概率模型或非概率模型,分别由条件概率分布 P ( Y ∣ X ) P(Y|X) P(Y∣X)或决策函数 Y = f ( X ) Y=f(X) Y=f(X)表示。而监督学习的整个过程可以概括如下:
对于一个给定的训练集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } T=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\} T={(x1,y1),(x2,y2),...,(xn,yn)},其中 ( x i , y i ) (x_i,y_i) (xi,yi)即是一个样本,还需假设训练数据和测试数据是依联合概率分布 P ( X , Y ) P(X,Y) P(X,Y)独立同分布产生的。然后学习系统利用训练集学习得到一个模型表示为条件概率分布 P ( Y ∣ X ) P(Y|X) P(Y∣X)或决策函数 Y = f ( X ) Y=f(X) Y=f(X),模型对于给定的输入 x N x_N xN得到输出: y N = a r g m a x y N P ( y N ∣ x N ) y_N=arg\ max_{y_N}P(y_N|x_N) yN=arg maxyNP(yN∣xN)或者 y N = f ( x N ) y_N=f(x_N) yN=f(xN),那么模型预测的好坏就取决于通过模型得到的输出与原样本中的输出的差值大小,差值越小预测效果就越好。
1.3 三要素
上面有说到统计学习方法的三要素可以简单地概括为:模型、策略、算法。
1.3.1 模型
这块要考虑的问题是要学习怎样的模型,按之前所说就是需要学习怎样的条件概率分布或者决策函数,模型的假设空间(hypothesis space)包含所有可能的条件概率分布或决策函数,假设空间中模型一般有无数个。假设空间记为
H
H
H,若其是决策函数的集合,则可以表示为:
H
=
{
f
∣
Y
=
f
(
X
)
}
(1-3)
H=\{f|Y=f(X)\}\tag{1-3}
H={f∣Y=f(X)}(1-3)
通常
H
H
H是由一个参数向量决定的函数族:
H
=
{
f
∣
Y
=
f
θ
(
X
)
,
θ
∈
R
n
}
(1-4)
H=\{f|Y=f_\theta(X),\theta \in R^n\}\tag{1-4}
H={f∣Y=fθ(X),θ∈Rn}(1-4)
其中参数向量
θ
\theta
θ属于n维欧氏空间
R
n
R^n
Rn,称为参数空间。当然如上所说,假设空间也可以是条件概率的集合:
H
=
{
P
∣
P
(
Y
∣
X
)
}
(1-5)
H=\{P|P(Y|X)\}\tag{1-5}
H={P∣P(Y∣X)}(1-5)
这里
H
H
H通常是由一个参数向量决定的条件概率分布族:
H
=
{
P
∣
P
θ
(
Y
∣
X
)
,
θ
∈
R
n
}
(1-6)
H=\{P|P_\theta(Y|X),\theta \in R^n\}\tag{1-6}
H={P∣Pθ(Y∣X),θ∈Rn}(1-6)
这里蓝皮书将决策函数表示的模型称为非概率模型,而条件概率函数表示的模型称为概率模型。
1.3.2 策略
策略即按什么样的准则来选择模型,从假设空间中选择最优模型,首先需要引入损失函数和风险函数的概念。
1.损失函数和风险函数
先来说说损失函数。损失函数实际上就是衡量模型对于输入
X
X
X得到的输出与真实的输出
Y
Y
Y之间的一致性。损失函数是关于
f
(
X
)
f(X)
f(X)和
Y
Y
Y的非负实值函数,可记作
L
(
Y
,
f
(
X
)
)
L(Y,f(X))
L(Y,f(X))
常用的损失函数:
(1)0-1损失
L
(
Y
,
f
(
X
)
)
=
{
1
,
Y
≠
f
(
X
)
0
,
Y
=
f
(
X
)
(1-7)
L(Y,f(X))=\left\{ \begin{aligned} 1,\ Y\not= f(X)\\ 0,\ Y=f(X)\tag{1-7} \end{aligned} \right.
L(Y,f(X))={1, Y=f(X)0, Y=f(X)(1-7)
(2)平方损失
L
(
Y
,
f
(
X
)
)
=
(
Y
−
f
(
X
)
)
2
(1-8)
L(Y,f(X))=(Y-f(X))^2\tag{1-8}
L(Y,f(X))=(Y−f(X))2(1-8)
(3)绝对损失
L
(
Y
,
f
(
X
)
)
=
∣
Y
−
f
(
X
)
∣
(1-9)
L(Y,f(X))=|Y-f(X)|\tag{1-9}
L(Y,f(X))=∣Y−f(X)∣(1-9)
(4)对数损失/对数似然损失
L
(
Y
,
P
(
Y
∣
X
)
)
=
−
l
o
g
P
(
Y
∣
X
)
(1-10)
L(Y,P(Y|X))=-logP(Y|X)\tag{1-10}
L(Y,P(Y∣X))=−logP(Y∣X)(1-10)
显然损失函数越小越好。
接下来是风险函数。将输入输出
(
X
,
Y
)
(X,Y)
(X,Y)看作随机变量,且遵循联合分布
P
(
X
,
Y
)
P(X,Y)
P(X,Y),那么损失函数的期望是:
R
e
x
p
(
f
)
=
E
P
[
L
(
Y
,
f
(
X
)
)
]
=
∫
L
(
y
,
f
(
x
)
)
P
(
x
,
y
)
d
x
d
y
(1-11)
R_{exp}(f)=E_P[L(Y,f(X))]=\int L(y,f(x))P(x,y)dxdy\tag{1-11}
Rexp(f)=EP[L(Y,f(X))]=∫L(y,f(x))P(x,y)dxdy(1-11)
式(1-11)是
f
(
x
)
f(x)
f(x)关于联合分布
P
(
X
,
Y
)
P(X,Y)
P(X,Y)的平均意义下的损失,称为风险函数,即损失的期望,也称 期望风险。
那么我们直观的想法就是:去选择风险函数最小的模型。但问题来了,这个联合分布
P
(
X
,
Y
)
P(X,Y)
P(X,Y)我们并不知道,其实如果知道了就可以通过
P
(
Y
∣
X
)
=
P
(
X
,
Y
)
P
(
X
)
P(Y|X)=\frac{P(X,Y)}{P(X)}
P(Y∣X)=P(X)P(X,Y)得到条件概率分布,就不需要学习了。
给定一个训练集:
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
N
,
y
N
)
}
T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\}
T={(x1,y1),(x2,y2),...,(xN,yN)},则式(1-12)称为 经验风险,或者经验损失,记作
R
e
m
p
R_{emp}
Remp:
R
e
m
p
(
f
)
=
1
N
∑
i
=
1
N
L
(
y
i
,
f
(
x
i
)
)
(1-12)
R_{emp}(f)=\frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i))\tag{1-12}
Remp(f)=N1i=1∑NL(yi,f(xi))(1-12)
这里的一个想法就是当样本容量N趋于无穷时,经验风险
R
e
m
p
R_{emp}
Remp是趋于期望风险
R
e
x
p
R_{exp}
Rexp的,用
R
e
m
p
R_{emp}
Remp去替代
R
e
x
p
R_{exp}
Rexp。但是,因为样本数量有限,这样做效果并不理想。因此引入了一个基本策略:经验风险最小化和结构风险最小化。
2.经验风险最小化和结构风险最小化
经验风险最小化(empirical risk minimization, ERM)的策略认为:经验风险最小的模型就是最优的模型,即求:
m
i
n
f
∈
F
1
N
∑
i
=
1
N
L
(
y
i
,
f
(
x
i
)
)
(1-13)
min_{f \in F}\frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i))\tag{1-13}
minf∈FN1i=1∑NL(yi,f(xi))(1-13)
当样本容量足够大时该策略的效果还是不错的,当模型是条件概率分布且损失函数是对数损失函数时,经验风险最小化就变成了极大似然估计。
结构风险最小化(structural risk minimization, SRM)的提出则是为了防止过拟合。笼统点说就是要加上正则化项:
R
s
r
m
(
f
)
=
1
N
∑
i
=
1
N
L
(
y
i
,
f
(
x
i
)
)
+
λ
J
(
f
)
(1-14)
R_{srm}(f)=\frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i))+\lambda J(f)\tag{1-14}
Rsrm(f)=N1i=1∑NL(yi,f(xi))+λJ(f)(1-14)
式(1-14)是结构风险
R
s
r
m
R_{srm}
Rsrm,其中
J
(
f
)
J(f)
J(f)是模型的复杂度,模型越复杂,该值越大。
1.3.3 算法
算法指的是学习模型的具体计算方法,即用怎样的方法在最小化损失的问题上求解出模型 f f f(比如梯度下降法)。
1.4 模型评估与模型选择
1.4.1 训练误差和测试误差的概念
损失函数给定时,基于损失函数的模型的训练误差和测试误差自然成为评估学习方法的标准。假设学习到的模型是
Y
=
f
(
X
)
Y=f(X)
Y=f(X),训练误差是关于训练集的平均损失:
R
e
m
p
(
f
)
=
1
N
∑
i
=
1
N
L
(
y
i
,
f
(
x
i
)
)
(1-15)
R_{emp}(f)=\frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i))\tag{1-15}
Remp(f)=N1i=1∑NL(yi,f(xi))(1-15)
N
N
N为训练样本容量。
同理测试误差是关于测试集的平均损失:
e
t
e
s
t
=
1
N
′
∑
i
=
1
N
′
L
(
y
i
,
f
(
x
i
)
)
(1-16)
e_{test}=\frac{1}{N^{'}}\sum^{N^{'}}_{i=1}L(y_i,f(x_i))\tag{1-16}
etest=N′1i=1∑N′L(yi,f(xi))(1-16)
N
′
N^{'}
N′为测试样本容量。
显然测试误差小的方法具有更好的泛化能力。
1.4.2 过拟合和模型选择
世界上没有完美的东西,所以也没有所谓的“完美模型”,所以我们选择模型是对“完美模型”的一种逼近。若一味追求提高模型的预测能力,训练的结果就会变得过于复杂,即复杂度比“完美模型”要高,这就称为过拟合。所以在模型选择时,不仅要考虑对已知数据的预测能力,还要考虑对未知数据的预测能力。
1.5 正则化和交叉验证(模型选择方法)
1.5.1 正则化
正则化其实就是之前说的结构风险最小化,即在经验风险上加一个正则化项,其一般是模型复杂度的单调递增函数,如式(1-14)所示,其中参数
λ
\lambda
λ是用来权衡经验风险和模型复杂度。
正则化项可以取不同的形式,比如回归问题中损失函数取平方损失,正则化项可以是参数向量的
L
2
L_2
L2范数:
L
(
w
)
=
1
N
∑
i
=
1
N
(
f
(
x
i
;
w
)
−
y
i
)
2
+
λ
2
∣
∣
w
∣
∣
2
(1-17)
L(w)=\frac{1}{N}\sum_{i=1}^{N}(f(x_i;w)-y_i)^2+\frac{\lambda}{2}||w||^2\tag{1-17}
L(w)=N1i=1∑N(f(xi;w)−yi)2+2λ∣∣w∣∣2(1-17)
正则化项也可以参数的
L
1
L_1
L1范数:
L
(
w
)
=
1
N
∑
i
=
1
N
(
f
(
x
i
;
w
)
−
y
i
)
2
+
λ
2
∣
∣
w
∣
∣
1
(1-18)
L(w)=\frac{1}{N}\sum_{i=1}^{N}(f(x_i;w)-y_i)^2+\frac{\lambda}{2}||w||_1\tag{1-18}
L(w)=N1i=1∑N(f(xi;w)−yi)2+2λ∣∣w∣∣1(1-18)
正则化的想法很贴合奥卡姆剃刀原理:在选择模型时,能够很好地解释已知数据且十分简单才是最好的模型。
1.5.2 交叉验证
在数据充足的情况下,可以很自然地将数据集划分为训练集(训练模型)、验证集(模型的选择)、测试集(模型评估)。but实际中有些时候数据并不充足,这是可以采用交叉验证的方法,即重复利用数据:把给定的数据进行切分,将切分的数据集组合为训练集和测试集,反复进行训练测试和模型选择。
简单交叉验证:随机将已知数据集分为两部分:训练集和测试集(比如70%数据为训练集,30%数据为测试集),然后用训练集在各种条件下(比如不同参数个数)训练模型,从而得到不同模型,再在测试集上评价各个模型的测试误差,选出测试误差最小的模型。
S折交叉验证(用的比较多):将已知数据集随机划分为S个互不相交大小相同的子集,然后利用其中S-1个子集的数据训练模型,剩余子集用来测试模型。显然一共有S种选择,重复进行,最后选择S次测评中平均测试误差最小的模型。当S=N(样本容量)时称为留一交叉验证。
1.6 泛化能力
泛化误差和泛化误差上界
如果只是用测试误差来评估模型其实是有失偏颇的,因为这样的评估结果依赖于测试集,换句话说,如果测试集不可靠,那么评估结果也就同样不可靠。这就引入了泛化误差的概念:所学得的模型对未知数据预测的误差即为泛化误差,而泛化误差实际上就是期望风险,如式(1-11)所示。
但有个问题之前有提过,那就是这个联合分布
P
(
X
,
Y
)
P(X,Y)
P(X,Y)并不知道,因此学习方法的泛化能力分析往往是通过研究泛化误差的概率上界来进行的,简称 泛化误差上界。泛化误差上界是样本容量的函数,样本容量增加时,泛化上界趋于0,同时它也是假设空间容量的函数,假设空间越大模型越难学,泛化误差上界就越大。
定理1.1(泛化误差上界):对二分类问题,当假设空间是有限个函数的集合
F
=
{
f
1
,
f
2
,
.
.
.
,
f
d
}
F=\{f_1,f_2,...,f_d\}
F={f1,f2,...,fd}时,对任意函数
f
∈
F
f\in F
f∈F,至少以概率
1
−
δ
1-\delta
1−δ,以下不等式成立:
R
(
f
)
≤
R
^
(
f
)
+
ε
(
d
,
N
,
δ
)
(1-19)
R(f) \leq \hat{R}(f)+\varepsilon(d,N,\delta)\tag{1-19}
R(f)≤R^(f)+ε(d,N,δ)(1-19)
其中
ε
(
d
,
N
,
δ
)
=
1
2
N
(
l
o
g
d
+
l
o
g
1
δ
)
\varepsilon(d,N,\delta)=\sqrt{\frac{1}{2N}(logd+log\frac{1}{\delta})}
ε(d,N,δ)=2N1(logd+logδ1),
R
(
f
)
R(f)
R(f)为泛化误差,不等式右边为泛化误差上界,第一项
R
^
(
f
)
\hat{R}(f)
R^(f)为训练误差,训练误差越小泛化误差也越小,第二项中
N
N
N为样本容量,
d
d
d为假设空间容量。证明要用到霍夫丁(Hoeffding)不等式,这里略。
1.7 生成模型与判别模型
监督学习学得的模型要么是决策函数 Y = f ( X ) Y=f(X) Y=f(X)要么是条件概率分布 P ( Y ∣ X ) P(Y|X) P(Y∣X),其方法又可分为生成方法和判别方法,所学到的模型分别叫做 生成模型 和 判别模型。
生成方法由数据学习联合概率分布 P ( X , Y ) P(X,Y) P(X,Y),这样就可以求出条件概率分布 P ( Y ∣ X ) P(Y|X) P(Y∣X)来作为预测模型: P ( Y ∣ X ) = P ( X , Y ) P ( X ) P(Y|X)=\frac{P(X,Y)}{P(X)} P(Y∣X)=P(X)P(X,Y),自己所以叫生成模型是因为模型表示了给定输入 X X X产生输出 Y Y Y的生成关系。典型的生成模型有:朴素贝叶斯方法和隐马尔可夫模型。
判别方法是由数据直接学习决策函数 f ( X ) f(X) f(X)或者条件概率分布 P ( Y ∣ X ) P(Y|X) P(Y∣X),判别模型更侧重于给定输入 X X X时应该预测什么样的输出,典型的判别模型有:knn、感知机、决策树、逻辑斯蒂回归等。
1.8 分类问题
分类问题是监督学习的一个核心问题,分类问题中输出变量
Y
Y
Y是有限个离散值,而输入变量
X
X
X可以是连续的也可以是离散的。评价准则一般采用准确率(accuracy),即对于给定的测试集,分类器正确分类的样本数与总样本数之比。
对于二分类问题常用的评价指标是精确率(precision)与召回率(recall)。如下表所示给出了几个简称:
真实情况\预测情况 | 正类 | 反类 |
---|---|---|
正类 | TP | FN |
反类 | FP | TF |
则 精确率(查准率) 可以表示为:
P
=
T
P
T
P
+
F
P
(1-20)
P=\frac{TP}{TP+FP}\tag{1-20}
P=TP+FPTP(1-20)
召回率(查全率) 可表示为:
R
=
T
P
T
P
+
F
N
(1-21)
R=\frac{TP}{TP+FN}\tag{1-21}
R=TP+FNTP(1-21)
另外可以定义
F
1
F_1
F1的值:
F
1
=
2
T
P
2
T
P
+
F
P
+
F
N
(1-22)
F_1=\frac{2TP}{2TP+FP+FN}\tag{1-22}
F1=2TP+FP+FN2TP(1-22)
1.9 标注问题
标注问题也是监督学习问题的一种,它的输入是一个观测序列,输出则是一个标记序列或状态序列。比如用B,E,O分别表示名词短语的开始、结束、其他,给一个观测序列即英文句子,标注系统可以利用以上标记产生一个标注序列:
输入:At Microsoft Research, we have an insatiable curiosity and the desire to create new technology that will help define the computing experience.
输出:O B E, O O O B E O O BE O O B E O O O O O B E.
1.10 回归问题(函数拟合)
回归模型表示从输入变量到输出变量之间映射的函数,其学习等价于函数拟合。回归问题按照输入变量个数分为一元回归和多元回归,按输入变量和输出变量之间关系的类型可分为线性回归和非线性回归。当损失函数是平方损失时,回归问题可以由最小二乘法来求解。