这个系列的内容大部分来源于李航的《统计学习方法》,最近开始二刷这本书,我将会把重要的知识点、推导过程根据自己的理解记录在博客中,作为自己的学习笔记。在推导时,我会尽量将自己的理解书写得详细,把书中没有提到的逻辑关系理顺,希望大多数看书理解不了的推导,在我的博客里都能找到答案。对于《统计学习方法》没有涉及到的内容,例如ROC与AUC、MCMC采样、XGBoost等细碎知识点,计划之后进行补充。若有错误,欢迎指出。
1、统计学习
统计学习也叫统计机器学习,是基于数据构建概率统计模型并运用模型对数据进行预测与分析的一门学科。统计学习包括了监督学习(supervised learning)、非监督学习(unsupervised learning)、半监督学习(semi-supervised learning)和强化学习(reinforcement learning)等。
《统计学习方法》主要讨论的是监督学习,一般的方法如下:从训练数据出发,假设数据是独立同分布产生的;假设要学习的模型属于某个函数的集合,称为假设空间;应用某个评价准则,从假设空间中选取一个最优的模型;最优模型的选取由算法实现。因此,模型(model)、策略(strategy)和算法(algorithm)是统计学习方法的三要素。
2、监督学习
监督学习(supervised learning)的任务是学习一个模型,使模型能够对任意给定的输入,对其相应的输出做出一个好的预测。
训练集通常表示为T={(x1,y1),(x2,y2),⋯ ,(xN,yN)}T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\}T={(x1,y1),(x2,y2),⋯,(xN,yN)} 一般以xi(j)x_i^{(j)}xi(j)表示第iii个输入变量的第jjj个特征,即xi=(xi(1),xi(2),⋯ ,xi(n))Tx_i=(x_i^{(1)},x_i^{(2)},\cdots,x_i^{(n)})^Txi=(xi(1),xi(2),⋯,xi(n))T 监督学习假设输入与输出的随机变量XXX、YYY遵循联合概率分布P(X,Y)P(X,Y)P(X,Y),训练数据与测试数据被看作是依联合概率分布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)表示。
3、统计学习三要素
统计学习方法由三要素构成,可以简单地表示为
方法=模型+策略+算法方法=模型+策略+算法方法=模型+策略+算法 模型的假设空间(hypothesis space)包含所有可能的条件概率分布或决策函数。若用FFF表示假设空间,则F={f∣Y=f(x)}F=\{f|Y=f(x)\}F={f∣Y=f(x)}F={P∣P(Y∣X)}F=\{P|P(Y|X)\}F={P∣P(Y∣X)} 有了模型的假设空间,接着需要考虑按照什么样的准则学习或选择最优模型。如果一个模型很好,那它的预测值f(X)f(X)f(X)与真实值YYY应该十分一致,因此可以用一个损失函数(loss function)或代价函数(cost function)来度量模型预测错误的程度,记作L(Y,f(X))L(Y,f(X))L(Y,f(X))。
常用的损失函数有以下几种
(1)0-1损失函数(0-1 loss function)
L(Y,f(X))={1,Y≠f(X)0,Y=f(X) L(Y,f(X))=\left\{\begin{array}{rcl}1,&{Y \neq f(X)}\\0,&{Y=f(X)}\end{array} \right. L(Y,f(X))={1,0,Y̸=f(X)Y=f(X) (2)平方损失函数(quadratic loss function)
L(Y,f(X))=(Y−f(X))2L(Y,f(X))=(Y-f(X))^2L(Y,f(X))=(Y−f(X))2 (3)绝对损失函数(absolute loss function)
L(Y,f(X))=∣Y−f(X)∣L(Y,f(X))=|Y-f(X)|L(Y,f(X))=∣Y−f(X)∣ (4)对数损失函数(logarithmic loss function)或对数似然损失函数(log-likelihood loss function)
L(Y,P(Y∣X))=−logP(Y∣X)L(Y,P(Y|X))=-logP(Y|X)L(Y,P(Y∣X))=−logP(Y∣X) 损失函数越小,模型就越好。上面三个损失函数评估的是真实值YYY与预测值f(X)f(X)f(X)之间的差异;第四个对数损失函数评估的是由输入XXX预测得到正确值YYY的概率大小,若概率为1,则损失函数为0,概率越小,损失函数越大。
损失函数的期望是
Rexp(f)=EP[L(Y,f(X))]=∫x×yL(y,f(x))P(x,y)dxdyR_{exp}(f)=E_P[L(Y,f(X))]=\int_{x\times y}L(y,f(x))P(x,y)dxdyRexp(f)=EP[L(Y,f(X))]=∫x×yL(y,f(x))P(x,y)dxdy 这个很好理解,损失函数的期望是其关于联合概率分布P(X,Y)P(X,Y)P(X,Y)的积分,也被称为风险函数(risk function)或期望损失(expected loss)。
事实上,统计学习的目的就是找到期望风险最小的模型,但联合概率分布P(X,Y)P(X,Y)P(X,Y)是未知的(要不然也就不需要学习了,直接根据P(X,Y)P(X,Y)P(X,Y)求出P(Y∣X)P(Y|X)P(Y∣X)就行了),所以无法直接评估一个模型的期望风险,但我们可以转而去评估经验风险(empirical risk)。
给定训练数据集T={(x1,y1),(x2,y2),⋯ ,(xN,yN)}T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\}T={(x1,y1),(x2,y2),⋯,(xN,yN)} 模型f(X)f(X)f(X)关于训练数据集的平均损失成为经验风险或经验损失,记作RempR_{emp}Remp:
Remp=1N∑i=1NL(yi,f(xi))R_{emp}=\frac{1}{N} \sum_{i=1}^{N}L(y_i,f(x_i))Remp=N1i=1∑NL(yi,f(xi)) 期望风险Rexp(f)R_{exp}(f)Rexp(f)是模型关于联合分布的期望损失,经验风险Remp(f)R_{emp}(f)Remp(f)是模型关于训练样本集的平均损失。根据大数定律,当样本容量NNN趋于无穷时,经验风险Remp(f)R_{emp}(f)Remp(f)趋于期望风险Rexp(f)R_{exp}(f)Rexp(f)。
因此经验风险最小化(empirical risk minimization, ERM)策略认为,经验风险最小的模型是最优的模型,即
minf∈F1N∑i=1NL(yi,f(xi))\min_{f\in F} \frac{1}{N}\sum_{i=1}^NL(y_i,f(x_i))f∈FminN1i=1∑NL(yi,f(xi)) 因为样本容量大的时候,经验风险接近期望风险,所以经验风险最小化能保证有很好的学习效果。极大似然估计(maximum likelihood estimation)就是经验风险最小化的例子,当然其模型是条件概率分布,其损失函数是对数损失函数。
但当样本容量很小时,经验风险与期望风险的偏差较大,学习得到的模型虽然经验风险小了,但期望风险仍然很大,而我们想要的是期望风险小的模型,这就是过拟合(over-fitting)现象。
结构风险最小化(structural risk minimization, SRM)是为防止过拟合而提出来的策略,其等价于正则化(regularization)。结构风险的定义是
Rsrm(f)=1N∑i=1NL(yi,f(xi))+λJ(f)R_{srm}(f)=\frac{1}{N}\sum_{i=1}^NL(y_i,f(x_i))+\lambda J(f)Rsrm(f)=N1i=1∑NL(yi,f(xi))+λJ(f) 即
Rsrm(f)=Remp(f)+λJ(f)R_{srm}(f)=R_{emp}(f)+\lambda J(f)Rsrm(f)=Remp(f)+λJ(f) 其中J(f)J(f)J(f)是模型的复杂度,模型fff越复杂,J(f)J(f)J(f)越大。根据奥卡姆剃刀,能够很好地解释已知数据并且十分简单才是最好的模型,越复杂的模型越容易过度拟合已有数据,造成泛化能力下降。
因此结构风险小的模型,其经验风险与模型复杂度都很小,往往对训练数据及未知的测试数据都有较好的预测。贝叶斯估计中的最大后验概率估计(maximum posterior probability estimation, MAP)就是结构风险最小化的例子,当然其模型是条件概率分布、损失函数是对数损失函数、模型复杂度由模型的先验概率表示。
有了模型及策略,统计学习问题归结为最优化问题,再考虑使用哪种算法。在统计学习三要素中,模型指的是所要学习的条件概率分布或决策函数,例如线性函数等;策略指的是评估模型好坏的标准,这样便能给假设空间中的模型打分,找出最优的那个;算法指的是最优化问题的具体计算方法。
4、模型评估与模型选择
略
5、正则化与交叉验证
正则化就是结构风险最小化的实现,正则化项可以取不同的形式,例如可以是参数向量的L2L_2L2范数:
L(w)=1N∑i=1N(f(xi;w)−yi)2+λ2∣∣w∣∣2L(w)=\frac{1}{N}\sum_{i=1}^N(f(x_i;w)-y_i)^2+\frac{\lambda}{2}||w||^2L(w)=N1i=1∑N(f(xi;w)−yi)2+2λ∣∣w∣∣2 这里∣∣w∣∣||w||∣∣w∣∣代表参数向量的L2L_2L2范数。正则化项也可以是参数向量的L1L_1L1范数:
L(w)=1N∑i=1N(f(xi;w)−yi)2+λ∣∣w∣∣1L(w)=\frac{1}{N}\sum_{i=1}^N(f(x_i;w)-y_i)^2+\lambda||w||_1L(w)=N1i=1∑N(f(xi;w)−yi)2+λ∣∣w∣∣1 这里∣∣w∣∣1||w||_1∣∣w∣∣1代表参数向量的L1L_1L1范数。
另一种常用的模型选择方法是交叉验证(cross validation),包括三种方法。
(一)简单交叉验证
随机将数据分为两个部分,一部分作为训练集,一部分作为测试集,用训练集得到模型并在测试集上评估模型,选出测试误差最小的模型。
(二)SSS折交叉验证
将数据分为SSS个互不相交、大小相同的子集,利用S−1S-1S−1个子集的数据训练模型,用余下的一个子集测试,将上述过程对可能的SSS种选择重复进行。
(三)留一交叉验证
令SSS折交叉验证中的S=NS=NS=N,NNN是给定数据集的容量。
6、泛化能力
泛化能力(generalization ability)是指模型对未知数据的预测能力,一般通过测试误差评价泛化能力。如果学到的模型是f^\hat{f}f^,那么用这个模型对未知数据预测的误差即为泛化误差(generalization error)
Rexp(f^)=EP[L(Y,f^(X))]=∫x×yL(y,f^(x))P(x,y)dxdyR_{exp}(\hat{f})=E_P[L(Y,\hat{f}(X))]=\int_{x\times y}L(y,\hat{f}(x))P(x,y)dxdyRexp(f^)=EP[L(Y,f^(X))]=∫x×yL(y,f^(x))P(x,y)dxdy 可以看到,泛化误差就是模型的期望风险。
一般通过比较两种学习方法的泛化误差上界来比较它们的优劣。泛化误差上界有以下性质:样本容量增加时,泛化上界趋于0;假设空间容量越大,模型越难学,泛化误差上界越大。
考虑二分类问题,假设空间是F={f1,f2,⋯ ,fd}F=\{f_1,f_2,\cdots,f_d\}F={f1,f2,⋯,fd},设fff是从FFF中选取的函数,损失函数是0-1损失函数,关于fff的期望风险和经验风险分别是
R(f)=E[L(Y,f(X))]R(f)=E[L(Y,f(X))]R(f)=E[L(Y,f(X))]R^(f)=1N∑i=1NL(yi,f(xi))\hat{R}(f)=\frac{1}{N}\sum_{i=1}^NL(y_i,f(x_i))R^(f)=N1i=1∑NL(yi,f(xi)) 定理:对二分类问题,对任意一个函数f∈Ff\in Ff∈F,至少以概率1−δ1-\delta1−δ,以下不等式成立
R(f)≤R^(f)+ε(d,N,δ)R(f)\leq \hat{R}(f)+\varepsilon(d,N,\delta)R(f)≤R^(f)+ε(d,N,δ) 其中
ε(d,N,δ)=12N(logd+log1δ)\varepsilon(d,N,\delta)=\sqrt{\frac{1}{2N}(logd+log\frac{1}{\delta})}ε(d,N,δ)=2N1(logd+logδ1) 可以看到,经验风险越小,期望风险也越小;ε(d,N,δ)\varepsilon(d,N,\delta)ε(d,N,δ)是样本数量NNN的单调递减函数,当NNN趋于无穷时,其区域零;ε(d,N,δ)\varepsilon(d,N,\delta)ε(d,N,δ)也是logd\sqrt{logd}logd阶的函数,即假设空间FFF规模越大,其值越大。
上述定理的具体证明过程就不写了。
7、生成模型与判别模型
监督学习方法可分为生成方法(generative approach)和判别方法(discriminative approach)。
生成方法由数据先学习得到联合概率分布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) 典型的生成模型有:朴素贝叶斯法、隐马尔科夫模型等。
判别方法由数据直接学习决策函数f(X)f(X)f(X)或条件概率分布P(Y∣X)P(Y|X)P(Y∣X)作为判别模型,典型的判别模型有:kkk近邻法、感知机、决策树、逻辑回归、最大熵模型、支持向量机、提升方法和条件随机场等。
生成方法可以还原联合概率分布P(X,Y)P(X,Y)P(X,Y),而判别方法不能;生成方法学习收敛速度更快;当存在隐变量时,只能用生成方法。
判别方法直接学习P(Y∣X)P(Y|X)P(Y∣X)或f(X)f(X)f(X),准确率更高;可以对数据进行各种程度的抽象、定义特征、使用特征,简化学习问题。
8、分类问题
对二分类问题的常用评价指标是精准率(accuracy)与召回率(recall)。首先明确下面四个符号含义
{TP,将正类预测为正类数(真正)FN,将正类预测为负类数(假负)FP,将负类预测为正类数(假正)TN,将负类预测为负类数(真负) \left\{\begin{array}{rcl}TP,&{将正类预测为正类数(真正)}\\FN,&{将正类预测为负类数(假负)}
\\FP,&{将负类预测为正类数(假正)}\\TN,&{将负类预测为负类数(真负)}\end{array} \right. ⎩⎪⎪⎨⎪⎪⎧TP,FN,FP,TN,将正类预测为正类数(真正)将正类预测为负类数(假负)将负类预测为正类数(假正)将负类预测为负类数(真负) 精准率定义为
P=TPTP+FPP=\frac{TP}{TP+FP}P=TP+FPTP 召回率定义为
R=TPTP+FNR=\frac{TP}{TP+FN}R=TP+FNTP 可以将精准率理解为查准率,将召回率理解为查全率。
此外还有F1F_1F1值,是精准率和召回率的调和均值,即
2F1=1P+1R\frac{2}{F_1}=\frac{1}{P}+\frac{1}{R}F12=P1+R1
9、标注问题
标注问题的输入时一个观测序列,输出是一个标记序列或状态序列。标注常用的统计学习方法有:隐马尔科夫模型、条件随机场。
10、回归问题
回归学习常用的损失函数是平方损失函数,在此情况下回归问题可以由最小二乘法(least squares)求解。