统计学习方法

Published: by Creative Commons Licence

  • Tags:

概念

统计学习是指:从给定的、有限的、用于学习的训练数据集合出发,假设数据是独立同分布产生的;并且假设要学习的模型属于某个函数的集合,称为假设空间;应用某个评价准则,从假设空间中选取一个最优模型;最优模型的选取由算法实现。

分类

按学习分类

  • 监督学习
  • 无监督学习
  • 强化学习
  • 半监督学习
  • 主动学习

按模型分类

  • 概率模型和非概率模型
  • 线性模型和非线性模型
  • 参数化模型和非参数化模型

按算法分类

  • 在线学习和批量学习

按技巧分类

  • 贝叶斯学习
  • 核方法

三要素

模型

决策函数组成的假设空间

F={fθ|Y=fθ(X),θRn}

条件概率组成的假设空间

F={Pθ|Pθ(Y|X),θRn}

其中θ是模型参数,它的取值范围Rn称为参数空间。

策略

损失函数度量模型一次预测的好坏,风险函数度量平均意义下模型预测的好坏。

损失函数记作L(Y,f(X))。常用的有

  • 0-1损失函数:L(Y,f(X))=[Y=f(X)]
  • 平方损失函数:L(Y,f(X))=(Yf(X))2
  • 绝对损失函数:L(Y,f(X))=|Yf(X)|
  • 对数损失函数:L(Y,P(Y|X))=logP(Y|X)

损失函数越小,模型就越好。模型的输入(X,Y)遵循联合分布P(X,Y),所以损失函数的期望为:

Rexp(f)=EP[L(Y,f(X))]=X×YL(y,f(x))P(x,y)dxdy

学习的目标是寻找期望风险最小的模型。但是由于联合分布是未知的,因此我们无法比较不同模型的期望风险。

对于训练数据集

T={(xi,yi)|i[1,N]}

模型f(X)关于T的平均损失称为经验风险

Remp(f)=1NNi=1L(yi,f(xi))

根据大数定理,当样本数量N趋于无穷时,经验风险趋于期望风险。我们可以用经验风险来估计期望风险。

监督学习的基本策略有两种:

  • 经验风险最小化(ERM)
  • 结构风险最小化(SRM)

经验风险最小化选择经验风险最小的模型,它在样本容量足够大的情况下效果很好,但是样本容量较小的时候会发生过拟合。

结构风险最小化可以避免过拟合,结构风险是在经验风险的基础上加上表示模型复杂度的正则化项。

算法

我们需要设计良好的算法,在假设空间中找到风险最小的模型。

过拟合

正则化

随着模型的复杂度上升,训练误差会逐步降低,但是测试误差在选择模型复杂度低于真实模型复杂度的时候降低,高于真实模型复杂度的时候升高。

一种避免过拟合的方法是正则化,采用结构风险最小化策略。其一般形式为:

minfF1NNi=1L(yi,f(xi))+λJ(f)

正则化项可以采用参数向量的L1L2范数。

从贝叶斯估计的角度来看,正则化项对应于模型的先验概率,假设越复杂的模型出现的概率越低。

交叉验证

另外一种方式是交叉验证。

如果给定的样本数量足够,可以将数据集随机地切分为三部分:训练集,验证集,测试集。其中训练集用于训练模型,验证集用于挑选模型,而测试集用于对模型的泛化能力进行评估。

但是实际上数据是不充足的,为了选择更好的模型,可以采用交叉验证的方式。

  • 简单交叉验证:随机地将已知数据分为两部分,一部分作为训练集,另一部分作为测试集。然后用训练集在各种条件下训练模型,之后选择在测试集上测试误差最小的模型
  • S折交叉验证:随机将数据切分为S个互不相交、大小相同的子集;然后利用S1个子集的数据训练模型,利用剩下的一个子集测试模型;总共可以进行S次,选择S次评测中平均测试误差最小的模型。
  • 留一交叉验证:S则交叉验证的特殊情况,此时S=N(即每个子集大小都是1),适用于数据极度缺乏的情况。

泛化能力

泛化误差用来评价学习方法的泛化能力。泛化误差等价于模型的期望风险,我们实践中一般用测试误差来估计泛化误差。

学习方法的泛化能力的比较一般通过研究泛化误差的概率上界进行,简称为泛化误差上界。

对于二类分类问题,如果假设空间是有限的且大小为d,对任意一个函数fF,至少以概率1δ使得下面不等式成立,其中0<δ<1

R(f)ˆR(f)+12Nlogdδ

感知机

感知机是二类分类的线性分类模型。输出值为{+1,1}

感知机学习旨在求出将训练数据进行线性划分的分离超平面。

假设输入空间是XRn,输出空间是Y={+1,1}。输出xX表示实例的特征向量,对应于输入空间的点,输出yY表示实例的类别。由输入空间到输出空间的如下函数:

f(x)=sign(wx+b)

称为感知机。其中wb称为感知机模型参数,wRn叫做权值向量,bR叫做偏置。

感知机的几何解释是线性方程wx+bRn中的一个超平面S,其中w是超平面的法向量,b是超平面的截距。这个超平面将特征空间划分为两个部分,两个部分中的点分别被分类为正负两类。而超平面S称为分离超平面。

损失函数

感知机的损失函数的定义,一个自然的选择是误分类点的总数,但是这样的损失函数不是参数wb的连续可导函数,不易优化。另外一个选择是使用误分类点到超平面S的总距离。

定义任一点x0到超平面S的距离为:

1w|wx0+b|

其次对误分类的数据(xi,yi)来说有:

yi(wxi+b)>0

因此误分类点到超平面S的距离是

1wyi(wxi+b)

记所有误分类点的集合为M,那么总距离为

1wxiMyi(wxi+b)

定义损失函数为

L(w,b)=xiMyi(wxi+b)

学习算法

感知机学习算法是误分类驱动的,具体采用随机梯度下降法。首先任意选择一个超平面w0,b0,之后不断用梯度下降法极小化损失函数。极小化过程中不是一次使M中所有误分类点的梯度下降,而是一次随机选取一个误分类点并使其梯度下降。

假设误分类点集合M是固定的,那么损失函数L(w,b)的梯度由

wL(w,b)=xiMyixibL(w,b)=xiMyi

随机选取一个误分类点(xi,yi),对w,b进行更新:

ww+ηyixibb+ηyi

其中η是步长(学习率),取值范围为0<η1

重复上述流程直到不存在误分类点。

算法的收敛性

设训练数据集T是线性可分的,则:

(1) 存在满足条件$|\widehat{w}{opt}|=1\widehat{w}{opt}\cdot \widehat{x}=0\gamma>01\leq i\leq N$,有

yi(ˆwoptˆxi)γ

(2) 令R=max1iNˆxi,则感知机算法在训练数据集上的误分类次数k满足不等式:

k(Rγ)2

k近邻法

k近邻法(k-NN):给定一个训练数据集,训练数据被分到不同的类中。对新的输入,在训练数据集中找到与该实例最近的k个训练实例,这k个实例的多数属于某个类,就把该输入实例分为这个类。

对于输入点x,记最近k个训练点组成的集合为Nk(x)。之后在Nk(x)中根据分类决策规则来决定x的类别y

k=1的时候是特殊情况,这时候称为最近邻算法。

特征空间中,对每个训练实例点xi,距离该点比其他点更近的所有点组成一个区域叫做单元(cell)。每个训练实例点都有一个单元,所有训练实例点的单元构成对特征空间的一个划分。

距离度量

采用的距离可以是Lp距离

Lp(xi,xj)=(nl=1|x(l)ix(l)j|p)1p

L1称为曼哈顿距离,L2称为欧式距离,而L则计算的是所有坐标距离的最大值。

k值选择

如果k值较小,则仅使用较小的邻域进行预测,容易受到噪音点的干扰,发生过拟合。

如果选择较大的k值,这时候较远的点也会对预测起作用,整个模型变得简单。当k=N的时候只有一种可能的分类。

分类决策规则

k近邻法中的分类决策规则往往是多数表决,即由输入实例的k个邻近的训练实例的多数类决定输入实例的类。

算法实现

k近邻可以通过kd树来实现高效的搜索。

朴素贝叶斯法

原理

考虑输入空间XRn,输出集合Y={c1,,cK}

P(X,Y)XY的联合概率分布。训练数据集T是由P(X,Y)独立同分布产生。

朴素贝叶斯法通过训练数据集学习联合概率分布P(X,Y)。具体的,学习以下先验概率分布及条件概率分布。先验概率分布:

P(Y=ck)P(X=x|Y=ck)=P(X(1)=x(1),,X(n)=x(n)|Y=ck)

第二个式子我们需要存储knj=1Sj,其中Sj表示x(j)中可能的取值数。

朴素贝叶斯法对条件概率分布作了条件独立性的假设。因此有

P(X=x|Y=ck)=njP(X(j)=x(j)|Y=ck)

朴素贝叶斯法实际上学到生成数据的机制,所以属于生成模型。

对给定的输入x,学习到的后验概率为:

P(Y=ck|X=x)=P(X=x|Y=ck)P(Y=ck)iP(X=x|Y=ci)P(Y=ci)=P(Y=ck)jP(X(j)=x(j)|Y=ck)iP(Y=ci)jP(X(j)=x(j)|Y=ci)

朴素贝叶斯分类器可以写作:

f(x)=\argmax\limits_{c_k}P(Y=c_k|X=x)

其中考虑到分母等价于P(X=x),因此我们需要只是最大化分子:

f(x)=\argmax\limits_{c_k}P(Y=c_k)\prod_jP(X^{(j)}=x^{(j)}|Y=c_k)

后验概率最大化的解释

在使用0-1损失函数的时候,后验概率最大化等价于期望风险最小化。

极大似然估计

要学习P(Y=ck)P(X(j)=x(j)|Y=ck)。可以使用极大似然估计法估计想要的概率。

P(Y=ck)=1NNi=1I(yi=ck)

条件概率P(X(j)=aj,l|Y=ck)的极大似然估计是

P(X(j)=aj,lY=ck)=Ni=1I(x(j)i=aj,l,yi=ck)Ni=1I(yi=ck)

学习算法

(1)先计算先验概率

P(Y=ck)P(X(j)=x(j)|Y=ck)

(2)对于给定的实例x,获得

\argmax\limits_{c_k}P(Y=c_k)\prod_jP(X^{(j)}=x^{(j)}|Y=c_k)

贝叶斯估计

用极大似然估计中可能出现概率值为0的情况,这时候除法操作是未定义的。

可以用贝叶斯估计来解决这个问题,具体地

Pλ(X(j)=aj,lY=ck)=Ni=1I(x(j)i=aj,l,yi=ck)+λNi=1I(yi=ck)+SjλPλ(Y=ck)=Ni=1I(yi=ck)+λN+Kλ

其中λ0。当λ=0的时候就是极大似然估计。通常取λ=1,这时候称为拉普拉斯平滑。这时候有:

Pλ(X(j)=aj,l|Y=ck)>0Sjl=1P(X(j)=aj,l|Y=ck)=1

决策树

分类决策树模型是一种描述对实例分类的树形结构。决策树由结点和有向边组成。结点分为内部结点和叶结点。内部结点表示一个特征或属性,叶结点表示一个类。

用决策树分类,从根结点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到其子结点。重复测试直到抵达叶结点。

决策树于一个if-then规则集合对应,满足互斥且完备的特性。

决策树还表示概率分布,叶结点的分类表示满足所有内部结点测试的实例最可能属于的分类。

学习算法

给定样本集D,其中n为特征个数,Y={1,,K}N为样本容量。

能正确处理样本集的决策树可能有多个,也可能一个没有。在损失函数确定后,我们要选择的是使损失函数最小化的决策树。选择最优决策树是NP完全问题,因此我们采用的是启发式方法,来近似求解。

决策树的构建算法是一个递归的流程。假设我们用一组训练数据构建根结点:

  • 如果数据已经被正确分类了,根结点就是叶结点
  • 否则找到一个最优的特征,按照这一特征将训练数据分割为子集,使得每个子集都有一个在当前条件下最好的分类。之后对每个子集递归构建决策树。

上面生成的决策树可能对训练数据有很好的分类能力,但是对测试数据不具有很好的分类能力,即发生过拟合。我们需要对树自上向下进行剪枝,使树变得更简单,从而提高泛化能力。具体就是删除内部结点下的所有后代,将其转换为根结点。

决策树生成时只需要考虑局部最优,但是决策树剪枝时考虑的是全局最优。

决策树的生成算法有ID3,C4.5,CART。

特征选择

信息增益

当存在多个可用特征的时候,该选择那个特征进行分类。信息增益用来衡量选择的特征的优劣。

信息增益表示得知特征X的信息而使类Y的信息的不确定性减少的程度。记H(X)表示随机分布X的信息熵,H(Y|X)表示条件概率下的信息熵。则特征A对训练数据D的信息增益定义为

g(D,A)=H(D)H(D|A)

每次我们选择拥有最大信息增益的特征进行分类。

计算信息增益的算法如下,设选择特征A拥有n个不同的取值,并将D划分为N个子集Di。记Di中属于类Cj的样本的集合为Di,j,则算法如下:

  1. 计算数据集D的经验熵
H(D)=Kk=1|Ck||D|log2|Ck||D|
  1. 计算特征A对数据集的经验条件熵
H(D|A)=ni=1|Di||D|H(Di)
  1. 计算信息增益
g(D,A)=H(D)H(D|A)

信息增益比

使用信息增益作为特征的挑选准则,偏向于选择取值较多的特征的问题。使用信息增益比可以对这一问题进行校正。其定义如下:

gR(D,A)=g(D,A)HA(D)

其中

HA(D)=ni=1|Di||D|log2DiD

ID3算法

ID3算法用极大似然法进行概率模型的选择。

输入:训练数据集D,特征集A和阈值ϵ; 输出:决策树T

  1. D中所有实例属于同一类,则T为单结点树。并将该类作为该结点的类标记,返回T
  2. A=,则T为单结点树,并将D中实例数最大的类Ck作为该结点的标记,返回T
  3. 否则,计算不同特征对D的信息增益,选择信息增益最大的特征Ag
  4. 如果Ag的信息增益小于阈值ϵ,则T为单结点树,并将D中实例数最大的类Ck作为该结点的类标记,返回T
  5. 否则,对Ag的每一可能值ai,依Ag=aiD分割为若干子集,将Di中实例数最大的类作为标记,构建子结点,由结点及其子结点构成树T,返回T
  6. 对第i个子结点,以Di为训练集,以AAg作为特征集,递归构建决策树。

C4.5算法

C4.5算法与ID3类似,只不过使用信息增益比来选择特征。

剪枝

剪枝是从下向上计算的过程。记Cα(T)表示树T的损失函数,如果将某个结点转换为叶结点可以得到更小的损失函数,那么就将其转换为叶结点。

T表示决策树的叶子结点集合,对于叶子t,记Nt表示叶子中样本数,Nt,k表示叶子中类Ck的样本数,决策树的损失函数定义为

Cα(T)=|T|i=1NtHt(T)+α|T|

其中

Ht(T)=kNt,kNtlogNt,kNt

CART算法

分类回归树(CART)既可以用于分类也可以用于回归。

CART用于计算P(Y|X),它假设决策树为二叉树,内部结点特征的取值为“是否”值,左分支代表是,右分支代表否。这时候决策树等价于递归地二分每个特征,将输入空间即特征空间划分为有限个单元,并在这些单元上确定预测的概率分布。

生成决策树时,对回归树用平方误差作为损失函数,对分类树用基尼指数作为损失函数。

生成回归树

假设输入空间被划分为M个单元R1,,RM,并且在每个单元Rm上有一个固定的输出值,于是回归树模型可以表示为

f(x)=Mm=1cmI(xRm)

此时平方误差为

xiRm(yif(xi))2

易知cm最优值ˆcm正好等于Rm上的所有输入实例xi对应的yi的均值。

至于如何选择划分输入空间,这里采用启发式的方法。假设选择的是第j个变量x(j)和它取得值s,作为切分变量和切分点,并定义两个区域:

R1(j,s)={x|x(j)s},R2(j,s)={x|x(j)>s}

至于寻找最优切分变量j和最优切分点s,等价于求解

minj,s[minc1xiR1(j,s)(yic1)2+minc2xiR2(j,s)(yic2)2]

生成分类树

分类树用基尼指数作为损失函数。假设有K个类,样本点属于第k类得概率为pk,则概率分布得基尼指数定义为:

Gini(p)=Kk=1pk(1pk)=1Kk=1p2k

而对于给定的样本集合D,其基尼指数为

Gini(D)=1Kk=1(|Ck||D|)2

如果将样本集合D划分为D1D2两部分,则

Gini(D,A)=|D1||D|Gini(D1)+|D2||D|Gini(D2)

Logistic回归与最大熵模型

Logisitic分布:设X是连续随机变量,X服从Logistics分布是指X具有下列分布函数和密度函数

F(x)=P(Xx)=11+e(xμ)/γf(x)=F(x)=e(xμ)/γγ(1+e(xμ)/γ)2

Logistics的分布函数是一条S形曲线,该曲线以点(μ,12)为中心对称,并且在中心附近增长快,在两端增长速度较慢。

二项Logistic回归模型

二项Logistic回归模型是如下的条件概率分布:

P(Y=0|x)=11+exp(wx+b)P(Y=1|x)=1P(Y=0|x)

Logistic回归比较两个条件概率值得大小,将实例x分到概率值较大的分类。

一个事件发生的几率(odds)是指事件发生的概率除上事件不发生的概率。几率的对数值为:

logP(Y=1|x)1P(Y=1|x)=wx

线性函数wx越接近无穷,概率趋向于1,越接近负无穷,概率越接近0

对于模型参数,可以使用极大似然估计法估计模型参数,设π(x)=P(Y=1|x),对于样本集合T={(x1,y1),,(xn,yn)},有似然函数

Ni=1[π(xi)]yi[1π(xi)]1yi

其对数似然函数为:

L(w)=ni=1[yi(wxi)log(1+exp(wxi))]

多项Logistic回归

假设共有K类,则

P(Y=k|x)=exp(wkx)1+K1k=1exp(wkx),1k<KP(Y=K|x)=11+K1k=1exp(wkx)

最大熵模型

最大熵原理是概率模型学习的一个准则:在所有可能的概率模型中,熵最大的模型是最好的模型。

最大熵原理认为在没有足够的信息情况下,那些不确定的部分都是等可能的。