统计学习方法
概念
统计学习是指:从给定的、有限的、用于学习的训练数据集合出发,假设数据是独立同分布产生的;并且假设要学习的模型属于某个函数的集合,称为假设空间;应用某个评价准则,从假设空间中选取一个最优模型;最优模型的选取由算法实现。
分类
按学习分类
- 监督学习
- 无监督学习
- 强化学习
- 半监督学习
- 主动学习
按模型分类
- 概率模型和非概率模型
- 线性模型和非线性模型
- 参数化模型和非参数化模型
按算法分类
- 在线学习和批量学习
按技巧分类
- 贝叶斯学习
- 核方法
三要素
模型
决策函数组成的假设空间
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))=(Y−f(X))2
- 绝对损失函数:L(Y,f(X))=|Y−f(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)=1NN∑i=1L(yi,f(xi))根据大数定理,当样本数量N趋于无穷时,经验风险趋于期望风险。我们可以用经验风险来估计期望风险。
监督学习的基本策略有两种:
- 经验风险最小化(ERM)
- 结构风险最小化(SRM)
经验风险最小化选择经验风险最小的模型,它在样本容量足够大的情况下效果很好,但是样本容量较小的时候会发生过拟合。
结构风险最小化可以避免过拟合,结构风险是在经验风险的基础上加上表示模型复杂度的正则化项。
算法
我们需要设计良好的算法,在假设空间中找到风险最小的模型。
过拟合
正则化
随着模型的复杂度上升,训练误差会逐步降低,但是测试误差在选择模型复杂度低于真实模型复杂度的时候降低,高于真实模型复杂度的时候升高。
一种避免过拟合的方法是正则化,采用结构风险最小化策略。其一般形式为:
minf∈F1NN∑i=1L(yi,f(xi))+λJ(f)正则化项可以采用参数向量的L1或L2范数。
从贝叶斯估计的角度来看,正则化项对应于模型的先验概率,假设越复杂的模型出现的概率越低。
交叉验证
另外一种方式是交叉验证。
如果给定的样本数量足够,可以将数据集随机地切分为三部分:训练集,验证集,测试集。其中训练集用于训练模型,验证集用于挑选模型,而测试集用于对模型的泛化能力进行评估。
但是实际上数据是不充足的,为了选择更好的模型,可以采用交叉验证的方式。
- 简单交叉验证:随机地将已知数据分为两部分,一部分作为训练集,另一部分作为测试集。然后用训练集在各种条件下训练模型,之后选择在测试集上测试误差最小的模型
- S折交叉验证:随机将数据切分为S个互不相交、大小相同的子集;然后利用S−1个子集的数据训练模型,利用剩下的一个子集测试模型;总共可以进行S次,选择S次评测中平均测试误差最小的模型。
- 留一交叉验证:S则交叉验证的特殊情况,此时S=N(即每个子集大小都是1),适用于数据极度缺乏的情况。
泛化能力
泛化误差用来评价学习方法的泛化能力。泛化误差等价于模型的期望风险,我们实践中一般用测试误差来估计泛化误差。
学习方法的泛化能力的比较一般通过研究泛化误差的概率上界进行,简称为泛化误差上界。
对于二类分类问题,如果假设空间是有限的且大小为d,对任意一个函数f∈F,至少以概率1−δ使得下面不等式成立,其中0<δ<1:
R(f)≤ˆR(f)+√12Nlogdδ感知机
感知机是二类分类的线性分类模型。输出值为{+1,−1}。
感知机学习旨在求出将训练数据进行线性划分的分离超平面。
假设输入空间是X⊆Rn,输出空间是Y={+1,−1}。输出x∈X表示实例的特征向量,对应于输入空间的点,输出y∈Y表示实例的类别。由输入空间到输出空间的如下函数:
f(x)=sign(w⋅x+b)称为感知机。其中w和b称为感知机模型参数,w∈Rn叫做权值向量,b∈R叫做偏置。
感知机的几何解释是线性方程w⋅x+b是Rn中的一个超平面S,其中w是超平面的法向量,b是超平面的截距。这个超平面将特征空间划分为两个部分,两个部分中的点分别被分类为正负两类。而超平面S称为分离超平面。
损失函数
感知机的损失函数的定义,一个自然的选择是误分类点的总数,但是这样的损失函数不是参数w和b的连续可导函数,不易优化。另外一个选择是使用误分类点到超平面S的总距离。
定义任一点x0到超平面S的距离为:
1‖w‖|w⋅x0+b|其次对误分类的数据(xi,yi)来说有:
−yi(w⋅xi+b)>0因此误分类点到超平面S的距离是
−1‖w‖yi(w⋅xi+b)记所有误分类点的集合为M,那么总距离为
−1‖w‖∑xi∈Myi(w⋅xi+b)定义损失函数为
L(w,b)=−∑xi∈Myi(w⋅xi+b)学习算法
感知机学习算法是误分类驱动的,具体采用随机梯度下降法。首先任意选择一个超平面w0,b0,之后不断用梯度下降法极小化损失函数。极小化过程中不是一次使M中所有误分类点的梯度下降,而是一次随机选取一个误分类点并使其梯度下降。
假设误分类点集合M是固定的,那么损失函数L(w,b)的梯度由
∇wL(w,b)=−∑xi∈Myixi∇bL(w,b)=−∑xi∈Myi随机选取一个误分类点(xi,yi),对w,b进行更新:
w←w+ηyixib←b+ηyi其中η是步长(学习率),取值范围为0<η≤1。
重复上述流程直到不存在误分类点。
算法的收敛性
设训练数据集T是线性可分的,则:
(1) 存在满足条件$|\widehat{w}{opt}|=1的超平面\widehat{w}{opt}\cdot \widehat{x}=0将训练数据完全正确分开,且存在\gamma>0,对于任意1\leq i\leq N$,有
yi(ˆwopt⋅ˆxi)≥γ(2) 令R=max1≤i≤N‖ˆxi‖,则感知机算法在训练数据集上的误分类次数k满足不等式:
k≤(Rγ)2k近邻法
k近邻法(k-NN):给定一个训练数据集,训练数据被分到不同的类中。对新的输入,在训练数据集中找到与该实例最近的k个训练实例,这k个实例的多数属于某个类,就把该输入实例分为这个类。
对于输入点x,记最近k个训练点组成的集合为Nk(x)。之后在Nk(x)中根据分类决策规则来决定x的类别y。
当k=1的时候是特殊情况,这时候称为最近邻算法。
特征空间中,对每个训练实例点xi,距离该点比其他点更近的所有点组成一个区域叫做单元(cell)。每个训练实例点都有一个单元,所有训练实例点的单元构成对特征空间的一个划分。
距离度量
采用的距离可以是Lp距离
Lp(xi,xj)=(n∑l=1|x(l)i−x(l)j|p)1pL1称为曼哈顿距离,L2称为欧式距离,而L∞则计算的是所有坐标距离的最大值。
k值选择
如果k值较小,则仅使用较小的邻域进行预测,容易受到噪音点的干扰,发生过拟合。
如果选择较大的k值,这时候较远的点也会对预测起作用,整个模型变得简单。当k=N的时候只有一种可能的分类。
分类决策规则
k近邻法中的分类决策规则往往是多数表决,即由输入实例的k个邻近的训练实例的多数类决定输入实例的类。
算法实现
k近邻可以通过kd树来实现高效的搜索。
朴素贝叶斯法
原理
考虑输入空间X⊆Rn,输出集合Y={c1,…,cK}。
设P(X,Y)是X和Y的联合概率分布。训练数据集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)第二个式子我们需要存储k∏nj=1Sj,其中Sj表示x(j)中可能的取值数。
朴素贝叶斯法对条件概率分布作了条件独立性的假设。因此有
P(X=x|Y=ck)=n∏jP(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)=1NN∑i=1I(yi=ck)条件概率P(X(j)=aj,l|Y=ck)的极大似然估计是
P(X(j)=aj,l‖Y=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,l‖Y=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)>0Sj∑l=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,则算法如下:
- 计算数据集D的经验熵
- 计算特征A对数据集的经验条件熵
- 计算信息增益
信息增益比
使用信息增益作为特征的挑选准则,偏向于选择取值较多的特征的问题。使用信息增益比可以对这一问题进行校正。其定义如下:
gR(D,A)=g(D,A)HA(D)其中
HA(D)=−n∑i=1|Di||D|log2DiDID3算法
ID3算法用极大似然法进行概率模型的选择。
输入:训练数据集D,特征集A和阈值ϵ; 输出:决策树T。
- 若D中所有实例属于同一类,则T为单结点树。并将该类作为该结点的类标记,返回T。
- 若A=∅,则T为单结点树,并将D中实例数最大的类Ck作为该结点的标记,返回T。
- 否则,计算不同特征对D的信息增益,选择信息增益最大的特征Ag。
- 如果Ag的信息增益小于阈值ϵ,则T为单结点树,并将D中实例数最大的类Ck作为该结点的类标记,返回T。
- 否则,对Ag的每一可能值ai,依Ag=ai将D分割为若干子集,将Di中实例数最大的类作为标记,构建子结点,由结点及其子结点构成树T,返回T。
- 对第i个子结点,以Di为训练集,以A−Ag作为特征集,递归构建决策树。
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,kNtCART算法
分类回归树(CART)既可以用于分类也可以用于回归。
CART用于计算P(Y|X),它假设决策树为二叉树,内部结点特征的取值为“是否”值,左分支代表是,右分支代表否。这时候决策树等价于递归地二分每个特征,将输入空间即特征空间划分为有限个单元,并在这些单元上确定预测的概率分布。
生成决策树时,对回归树用平方误差作为损失函数,对分类树用基尼指数作为损失函数。
生成回归树
假设输入空间被划分为M个单元R1,…,RM,并且在每个单元Rm上有一个固定的输出值,于是回归树模型可以表示为
f(x)=M∑m=1cmI(x∈Rm)此时平方误差为
∑xi∈Rm(yi−f(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[minc1∑xi∈R1(j,s)(yi−c1)2+minc2∑xi∈R2(j,s)(yi−c2)2]生成分类树
分类树用基尼指数作为损失函数。假设有K个类,样本点属于第k类得概率为pk,则概率分布得基尼指数定义为:
Gini(p)=K∑k=1pk(1−pk)=1−K∑k=1p2k而对于给定的样本集合D,其基尼指数为
Gini(D)=1−K∑k=1(|Ck||D|)2如果将样本集合D划分为D1和D2两部分,则
Gini(D,A)=|D1||D|Gini(D1)+|D2||D|Gini(D2)Logistic回归与最大熵模型
Logisitic分布:设X是连续随机变量,X服从Logistics分布是指X具有下列分布函数和密度函数
F(x)=P(X≤x)=11+e−(x−μ)/γf(x)=F′(x)=e−(x−μ)/γγ(1+e−(x−μ)/γ)2Logistics的分布函数是一条S形曲线,该曲线以点(μ,12)为中心对称,并且在中心附近增长快,在两端增长速度较慢。
二项Logistic回归模型
二项Logistic回归模型是如下的条件概率分布:
P(Y=0|x)=11+exp(w⋅x+b)P(Y=1|x)=1−P(Y=0|x)Logistic回归比较两个条件概率值得大小,将实例x分到概率值较大的分类。
一个事件发生的几率(odds)是指事件发生的概率除上事件不发生的概率。几率的对数值为:
logP(Y=1|x)1−P(Y=1|x)=w⋅x线性函数w⋅x越接近无穷,概率趋向于1,越接近负无穷,概率越接近0。
对于模型参数,可以使用极大似然估计法估计模型参数,设π(x)=P(Y=1|x),对于样本集合T={(x1,y1),…,(xn,yn)},有似然函数
N∏i=1[π(xi)]yi[1−π(xi)]1−yi其对数似然函数为:
L(w)=n∑i=1[yi(w⋅xi)−log(1+exp(w⋅xi))]多项Logistic回归
假设共有K类,则
P(Y=k|x)=exp(wk⋅x)1+∑K−1k=1exp(wk⋅x),1≤k<KP(Y=K|x)=11+∑K−1k=1exp(wk⋅x)最大熵模型
最大熵原理是概率模型学习的一个准则:在所有可能的概率模型中,熵最大的模型是最好的模型。
最大熵原理认为在没有足够的信息情况下,那些不确定的部分都是等可能的。