导论
统计学习概述
统计学习(statistical learning)是一套以理解数据为目的的庞大工具集,是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的一门学科,也称统计机器学习。
统计学习的对象是数据(data),从数据出发,提取数据的特征,抽象出数据的模型,发现数据中的知识,又回到对数据的分析与预测中去。
统计学习关于数据的基本假设是同类数据具有一定的统计规律性,这是统计学习的前提。
统计学习总的目标就是考虑学习什么样的模型和如何学习模型,以使模型能对数据进行准确的预测与分析,同时也要考虑尽可能地提高学习效率。
统计学习的工具可分为两大类:有指导的(supervised) 学习和无指导的(unsupervised) 学习。有指导的统计学习工具主要有两种用途:一是面向预测的统计模型建立,二是对一个或多个给定的输入(input) 估计某个输出(output)。在无指导的统计学习问题中,有输入变量但不指定输出变量,建模的主旨是学习数据的关系和结构。
这里主要讨论有指导的学习,也称监督学习:从给定的、有限的、用于学习的训练数据(training data)集合出发,假设数据是独立同分布产生的;并且假设要学习的模型属于某个函数的集合,称为假设空间(hypothesis space);应用某个评价准则(evaluation criterion),从假设空间中选取一个最优的模型,使它对已知训练数据及未知测试数据(test data) 在给定的评价准则下有最优的预测;最优模型的选取由算法实现。统计学习方法包括模型假设空间、模型选择的准则以及模型学习的算法,称为统计学习方法的三要素,简称模型(model)、策略(strategy)和算法(algorithm)。
实现统计学习方法的步骤:
(1)得到一个有限的训练数据集合;
(2)确定包含所有可能的模型的假设空间,即学习模型的集合;
(3)确定模型选择的准则,即学习的策略;
(4)实现求解最优模型的算法,即学习的算法;
(5)通过学习方法选择最优模型;
(6)利用学习的最优模型对新数据进行预测或分析。
假设观察到一个定量的响应变量
Y
Y
Y 和
p
p
p 个不同的预测变量
X
1
,
X
2
,
⋯
,
X
p
X_1,X_2,\cdots,X_p
X1,X2,⋯,Xp 。假设这个
Y
Y
Y 和
X
=
(
X
1
,
X
2
,
⋯
,
X
p
)
X=(X_1,X_2,\cdots,X_p)
X=(X1,X2,⋯,Xp) 有一定关系,可表达为:
Y
=
f
(
X
)
+
ε
,
f
(
X
)
=
E
(
Y
∣
X
)
Y=f(X)+\varepsilon\ \ \ \ \ \ ,\ \ \ f(X)=E(Y|X)
Y=f(X)+ε , f(X)=E(Y∣X)
ε
\varepsilon
ε 是均值为零的误差项,可以通过下式预测
Y
Y
Y :
Y
^
=
f
^
(
X
)
\hat{Y}=\hat{f}(X)
Y^=f^(X)
容易证明:
E
(
Y
−
Y
^
)
2
=
E
[
f
(
X
)
+
ε
−
f
^
(
X
)
]
2
=
[
f
(
X
)
−
f
^
(
X
)
]
2
+
V
a
r
(
ε
)
E(Y-\hat{Y})^2=E[f(X)+\varepsilon-\hat{f}(X)]^2=[f(X)-\hat{f}(X)]^2+Var(\varepsilon)
E(Y−Y^)2=E[f(X)+ε−f^(X)]2=[f(X)−f^(X)]2+Var(ε)
前一项为可约误差(reducible error) ,后一项为不可约误差(irreducible error) 。
如何估计 f f f
通常情况下,确切的X=4的数据点很少,所以不能计算出 E ( Y ∣ X = x ) E(Y|X=x) E(Y∣X=x)。
放宽定义并令:
f ^ ( x ) = A v e ( Y ∣ X ∈ N ( x ) ) \hat{f}(x)=Ave(Y|X\in\Nu(x)) f^(x)=Ave(Y∣X∈N(x))
这里 N ( x ) \Nu(x) N(x) 是指 x x x 的一些近邻点。对于较小的p来说,最近邻平均法的效果是很好的。但当p很大时,最近邻方法可能很糟糕。近邻法在维度较高时会更加偏离。
假设已经观测到一组 n n n 个不同点,这些观测点为训练数据(training data),通过这些点去训练估计 f f f。
令 x i j x_{ij} xij 表示观测点 i i i 的第 j j j 个预测变量或输入变量值,其中 i = 1 , 2 , ⋯ , n , j = 1 , 2 , ⋯ , p i=1,2,\cdots,n,j=1,2,\cdots,p i=1,2,⋯,n,j=1,2,⋯,p。令 y i y_i yi 表示第 i i i 个观测点的响应变量值。训练数据记作 { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x n , y n ) } \{(x_1,y_1),(x_2,y_2),\cdots,(x_n,y_n)\} {(x1,y1),(x2,y2),⋯,(xn,yn)} ,其中 x i = ( x i 1 , x i 2 , ⋯ , x i p ) T x_i=(x_{i1},x_{i2},\cdots,x_{ip})^T xi=(xi1,xi2,⋯,xip)T。
参数方法
线性模型(linear model) 是参数模型的一个重要例子:
f
L
(
X
)
=
β
0
+
β
1
X
1
+
β
2
X
2
+
⋯
β
p
X
p
f_L(X)=\beta_0+\beta_1X_1+\beta_2X_2+\cdots\beta_pX_p
fL(X)=β0+β1X1+β2X2+⋯βpXp
线性模型以(p+1)个参数表示。一旦模型被选定,就要用训练数据集去拟合(fit) 或训练(train) 模型。
线性模型通常可以作为一个对未知的实际函数 f ( X ) f(X) f(X) 的很好的和可解释的近似,但有时选择的模型会与 f ( X ) f(X) f(X) 差距很大。一种解决思路是尝试通过选择光滑(flexible) 模型来进行拟合,但拟合光滑度更强的模型需要更多的参数估计,也有可能导致过拟合(overfitting) 现象的出现,这表示这些模型拟合了错误或噪声(noise)。
非参数方法
非参数方法不用对函数 f f f 的形式事先做明确的假设,不限定函数的具体形式,在去粗和光滑处理后尽可能与更多的数据点接近。但其有个致命缺点:无法将估计 f f f 的问题简化到仅仅对少数参数进行估计的问题,这使得非参数估计往往需要大量的观测点。
红点是从下列关于income的方程得到的模拟值:
i n c o m e = f ( e d u c a t i o n , s e n i o r i t y ) + ε income = f(education, seniority)+\varepsilon income=f(education,seniority)+ε
f是蓝色平面。用线性回归模型拟合模拟数据:
f ^ L ( e d u c a t i o n , s e n i o r i t y ) = β ^ 0 + β ^ 1 ∗ e d u c a t i o n + β ^ 2 ∗ s e n i o r i t y \hat{f}_L(education, seniority) = \hat{\beta}_0+\hat{\beta}_1*education+\hat{\beta}_2*seniority f^L(education,seniority)=β^0+β^1∗education+β^2∗seniority更光滑的回归模型 f ^ S ( e d u c a t i o n , s e n i o r t y ) \hat{f}_S(education,seniorty) f^S(education,seniorty) 适合模拟数据。下图运用了薄板样条(thin-plate spline) 来拟合一个光滑的平面,控制了拟合表面的粗糙度。
甚至更光滑的样条回归模型 f ^ S ( e d u c a t i o n , s e n i o r t y ) \hat{f}_S(education,seniorty) f^S(education,seniorty) 适合模拟数据。在这里,拟合模型会产生过拟合。
一些权衡问题
预测精度与模型解释性
线性模型很容易解释,而薄板样条不是。
好的拟合与过拟合、拟合不足
如何判断拟合恰好正确。
简约模型与黑箱
我们通常更喜欢一个涉及到更少变量的更简单的模型,而不是一个涉及到所有这些变量的黑箱预测器
评价模型精度
拟合效果检验
假设我们将一个模型 f ^ ( x ) \hat{f}(x) f^(x) 拟合到一些训练数据 T r = { x i , y i } 1 N Tr=\{x_i,y_i\}_1^N Tr={xi,yi}1N,我们希望看看它的表现如何。
计算训练数据的预测均方误差:
M
S
E
T
r
=
A
v
e
i
∈
T
r
[
y
i
−
f
^
(
x
i
)
]
2
MSE_{Tr}=Ave_{i\in Tr}[y_i-\hat{f}(x_i)]^2
MSETr=Avei∈Tr[yi−f^(xi)]2
但更重要的,我们要计算测试数据
T
e
=
{
x
i
,
y
i
}
1
M
Te=\{x_i,y_i\}^M_1
Te={xi,yi}1M 的测试均方误差:
M
S
E
T
e
=
A
v
e
i
∈
T
e
[
y
i
−
f
^
(
x
i
)
]
2
MSE_{Te}=Ave_{i\in Te}[y_i-\hat{f}(x_i)]^2
MSETe=Avei∈Te[yi−f^(xi)]2
选择的模型应该让测试均方误差
M
S
E
T
e
MSE_{Te}
MSETe 尽可能小。、
例子:
左图:黑色线是真实的 f f f,橙色线是线性回归拟合,蓝色和绿色曲线是由不同的光滑度产生的光滑样条拟合。从图中看,光滑度水平增加时,拟合的曲线与实际观测的数据更接近,绿色曲线光滑性最强,与实际数据匹配最好,但拟合真正的函数(黑色)不好,绿线过度拟合了。右图:灰色曲线表示训练均方误差关于光滑度的函数,光滑度又可以叫*度(degree of freedom)。限定性强且曲线平坦的模型比锯齿形曲线具有更小的*度。当拟合函数的光滑度增加时,训练均方误差单调递减。红色曲线表示测试均方误差,其一开始随光滑度水平的增加而降低,但在某个水平上开始增加。蓝色曲线有最小的测试均方误差,为最优。
当光滑度增加时,观测到的训练均方误差单调递减,而测试均方误差呈U型分布。
当模型产生一个较小的训练均方误差,但有一个较大的测试均方误差,就称为过拟合。
这里真实的模型是平滑的,所以所以平滑的拟合和线性模型拟合较好。
这里真实的模型是摇摆的,噪声也很低,所以更光滑灵活的拟合更好。
偏差-方差均衡
假设我们将一个模型
f
^
(
x
)
\hat{f}(x)
f^(x) 拟合到一些训练数据
T
r
Tr
Tr 中,并且设
(
x
0
,
y
0
)
(x_0,y_0)
(x0,y0) 为从总体中提取的检验观察值。如果真实模型为
Y
=
f
(
X
)
+
ε
Y=f(X)+\varepsilon
Y=f(X)+ε,其中
f
(
X
)
=
E
(
Y
∣
X
=
x
)
f(X)=E(Y|X=x)
f(X)=E(Y∣X=x),那么有:
E
(
y
0
−
f
^
(
x
0
)
)
2
=
V
a
r
(
f
^
(
x
0
)
)
+
[
B
i
a
s
(
f
^
(
x
0
)
)
]
2
+
V
a
r
(
ε
)
其
中
,
B
i
a
s
(
f
^
(
x
0
)
)
=
E
[
f
^
(
x
0
)
]
−
f
(
x
0
)
E(y_0-\hat{f}(x_0))^2=Var(\hat{f}(x_0))+[Bias(\hat{f}(x_0))]^2+Var(\varepsilon)\\其中,Bias(\hat{f}(x_0))=E[\hat{f}(x_0)]-f(x_0)
E(y0−f^(x0))2=Var(f^(x0))+[Bias(f^(x0))]2+Var(ε)其中,Bias(f^(x0))=E[f^(x0)]−f(x0)
通常,随着
f
^
\hat{f}
f^ 的光滑度增加,其方差增加,其偏差减小。因此,基于平均测试误差选择光滑度相当于一种偏差-方差权衡(bias-variance trade-off)。
蓝线表示在不同光滑度下的偏差的平方,橙线表示方差,水平虚线表示不可约误差,即
V
a
r
(
ε
)
Var(\varepsilon)
Var(ε),红线是三个量之和。
左图,偏差迅速减小,使期望测试均方误差急剧减小。
中图,真实的 f f f 接近于线性,当模型光滑度增加时,偏差只发生了微小的变化,且测试均方误差在由方差增大所引起的迅速增长前仅出现了轻微下降。
右图,由于真实的 f f f 是非线性的,随着模型光滑度的增加,偏差会急剧减小,而方差仅有很小的增加,这时的测试均方误差在由模型光滑度的增加所引起的小增加之前出现了大幅下降。
偏差-方差权衡(bias-variance trade-off) 关键在于如何找到一个方法使得方差和偏差同时很小。
分类模型
此时的 y i y_i yi 不再是数值变量,而是定型变量。
(1)构建一个分类器 C ( X ) C(X) C(X),将类标签从 C C C 分配给未来未标记观察 X X X。
(2)评估每个分类的不确定性。
(3)了解不同预测因素对 X = ( X 1 , X 2 , ⋯ , X p ) X=(X_1,X_2,\cdots,X_p) X=(X1,X2,⋯,Xp)的作用。
建模的目标是在训练集{
(
x
1
,
y
1
)
,
⋯
,
(
x
n
,
y
n
)
(x_1,y_1),\cdots,(x_n,y_n)
(x1,y1),⋯,(xn,yn)}上寻找对
f
f
f 的估计,其中
y
1
,
⋯
,
y
n
y_1,\cdots,y_n
y1,⋯,yn 是定性变量。最常用的是训练错误率(error rate):
1
n
∑
i
=
1
n
I
(
y
i
≠
y
^
i
)
\frac{1}{n}\displaystyle \sum^n_{i=1}I(y_i\neq\hat{y}_i)
n1i=1∑nI(yi=y^i)
I
(
y
i
≠
y
^
i
)
I(y_i\neq\hat{y}_i)
I(yi=y^i) 表示一个示性变量,当
y
i
≠
y
^
i
y_i\neq\hat{y}_i
yi=y^i 时,值为1,否则为0。如果
I
(
y
i
≠
y
^
i
)
=
0
I(y_i\neq\hat{y}_i)=0
I(yi=y^i)=0,那么第i个观测值用分类模型实现了正确的分类。
通常我们使用测试错误率,测试那些不在训练集中的观测所产生的错误率例如
(
x
0
,
y
0
)
(x_0,y_0)
(x0,y0):
E
r
r
T
e
=
A
v
e
i
∈
T
e
I
[
y
0
≠
y
^
0
]
Err_{Te}=Ave_{i\in Te}I[y_0\neq\hat{y}_0]
ErrTe=Avei∈TeI[y0=y^0]
贝叶斯分类器
将一个待判的
x
0
x_0
x0 分配到下式最大的
j
j
j 类:
p
k
(
x
0
)
=
P
r
(
Y
=
j
∣
X
=
x
0
)
p_k(x_0)=Pr(Y=j|X=x_0)
pk(x0)=Pr(Y=j∣X=x0)
该式为给定了观测向量
x
0
x_0
x0 条件下
Y
=
j
Y=j
Y=j 的概率。这类简单的分类方法称为贝叶斯分类器(Bayes classifier)。例如,在二分类问题中,只有两个可能的响应值,一个称为类别1,一个称为类别2。如果
P
r
(
Y
=
1
∣
X
=
x
0
)
>
0.5
Pr(Y=1|X=x_0)>0.5
Pr(Y=1∣X=x0)>0.5,贝叶斯分类器就将该观测的类别预测为1,否则为类别2。
(1)构建一个分类器 C ( X ) C(X) C(X),将类标签从 C C C 分配给未来未标记观察 X X X。
(2)评估每个分类的不确定性。
(3)了解不同预测因素对 X = ( X 1 , X 2 , ⋯ , X p ) X=(X_1,X_2,\cdots,X_p) X=(X1,X2,⋯,Xp)的
在 x 0 x_0 x0 处的贝叶斯最优分类器是
C ( x 0 ) = j i f p j ( x 0 ) = m a x { p 1 ( x 0 ) , p 2 ( x 0 ) , ⋯ , p K ( x 0 ) } C(x_0)=j \ \ \ \ if\ \ \ p_j(x_0)=max\{p_1(x_0),p_2(x_0),\cdots,p_K(x_0)\} C(x0)=j if pj(x0)=max{p1(x0),p2(x0),⋯,pK(x0)}
例子:
图中给出了由预测变量 X 1 , X 2 X_1,X_2 X1,X2 构成的二维空间的一个模拟数据的例子。橙色和蓝色空心点分别来自两个不同类别的训练观测值。橙色的阴影部分显示的是 P r ( Y = o r a n g e ∣ X ) Pr(Y=orange|X) Pr(Y=orange∣X) 大于50%的点,而蓝色区域表示概率低于50%的点,紫色虚线表示那些概率等于50%的点,这条线称为贝叶斯决策边界(Bayes decision boundary)。贝叶斯分类器的预测由贝叶斯决策边界决定。
贝叶斯分类器产生最低的测试错误率,称为贝叶斯错误率。易知,贝叶斯分类器选择
p
k
(
x
0
)
p_k(x_0)
pk(x0) 最大的类,在
X
=
x
0
X=x_0
X=x0 处的错误率是
1
−
m
a
x
j
P
r
(
Y
=
j
∣
X
=
x
0
)
1-max_jPr(Y=j|X=x_0)
1−maxjPr(Y=j∣X=x0)。整个的贝叶斯错误率是:
1
−
E
(
m
a
x
j
P
r
(
Y
=
j
∣
X
)
1-E(max_jPr(Y=j|X)
1−E(maxjPr(Y=j∣X)
其中期望平均了所有
X
X
X 可能值上的概率。
K最近邻方法
许多方法尝试在给定 X X X 后先估计 Y Y Y 的条件分布,然后将一个给定的观测分类到估计分布概率最大的类别中。其中一个方法就是 K K K 最近邻(KNN)分类器。
给一个正整数
K
K
K 和一个测试观测值
x
0
x_0
x0,KNN分类器从识别训练集中
K
K
K 个最靠近
x
0
x_0
x0 的点集开始,用
N
0
N_0
N0 表示
K
K
K 个点的集合,然后对每个类别
j
j
j 分别用
N
0
N_0
N0 中的点估计一个分值作为条件概率的估计。
P
r
(
Y
=
j
∣
X
=
x
0
)
=
1
K
∑
i
∈
N
0
I
(
y
i
=
j
)
Pr(Y=j|X=x_0)=\frac{1}{K}\displaystyle \sum_{i\in N_0}I(y_i=j)
Pr(Y=j∣X=x0)=K1i∈N0∑I(yi=j)
最后,对KNN方法运用贝叶斯规则将测试值
x
0
x_0
x0 分到概率最大的类中。
K的选择对获得KNN分类器有根本性的影响。
当 K = 1 K=1 K=1 时,KNN方法的训练错误率为0,但测试错误率可能会很高。一般而言,当使用光滑度较高的分类方法时,训练错误率将减少但测试错误率则不一定很小。当K增加时,模型的光滑性减弱,得到一个接近线性的决策边界,该分类器方差较低但偏差却较高。
上图是KNN训练误差和测试误差对
1
K
\frac{1}{K}
K1 的变化函数。当
1
K
\frac{1}{K}
K1 增加时,方法的柔性增强。在回归设置中,当光滑度增加时,训练错误率会持续递减,但测试误差显示为U形,表明模型过度光滑和过拟合时,测试误差先递减后递增,递增后便出现了过拟合和过度光滑现象。