写在前面
最近读了李航老师的《统计学习方法》,计划写一些相关的随笔。虽然不知道能否填完这个坑,不过姑且先立下这个flag吧,希望别被自己打脸。本文计划先介绍统计学习中的基本概念。
统计学习的概念
所谓“学习”,指的是一个系统能通过执行某个过程改进其本身的性能。统计学习简单来说就是计算机系统通过运用数据及统计方法提高系统性能的机器学习。如今所说的机器学习大多指的是统计学习。
统计学习的目的与方法
统计学习用于对数据进行预测与分析,特别是对未知新数据进行预测分析(所谓泛化能力)。一般来说统计学习的方法主要包括监督学习(Supervised Learning)、非监督学习(Unsupervised Learning)与强化学习(Reinforcement Learning),此外还有半监督学习(Semi-supervised Learning)、迁移学习(Transfer Learning)与主动学习(Active Learning)等。
对于有监督学习,统计学习方法可概括如下(摘自《统计学习方法》):
从给定的、有限的、用于学习的训练数据(training data)集合出发,假设数据是独立同分布(independent and identically distributed)的;并且假设要学习的模型属于某个函数的集合,称为假设空间(hypothesis space);应用某个评价准则(evaluation criterion),从假设空间中选取一个最优的模型,使它对已知训练数据及未知测试数据(test data)在给定的评价准则下有最优的预测;最优的模型选取由算法实现。这样,可以总结出统计学习的三要素:
模型(model)
、策略
与算法(algorithm)
。
监督学习概述
输入空间、特征空间与输出空间
输入空间(input space)、输出空间(output space)分别指的是学习系统所有输入输出实例(instance)与可能的取值的集合,在实际应用中通常为欧式空间
Rn
R
n
或其子空间。特征空间(feature space)则是模型的输入空间,即所有特征向量的空间,模型一般是定义在特征空间上的(如果直接定义在输入空间则是所谓的“端到端学习”)。
监督学习的任务是从假设空间中找到一个最优的从特征空间到输出空间的映射。一般将输入记作
X
X
,输出记作。而输入实例
x
x
记作列向量
监督学习的不同任务:
- 回归:输入输出变量均为连续变量。
- 分类:输出为有限个离散变量。
- 标注:输入变量与输出变量均为变量序列。
联合概率分布
监督学习假设输入输出变量服从一个确定但未知的联合概率分布 P(X,Y) P ( X , Y ) ,而训练数据与测试数据均由之独立同分布产生。该假设是监督学习的基本假设。
假设空间
前面提到,监督学习的目的是从假设空间中找到一个最符合评价标准的模型,假设空间就是输入到输出的映射(即模型)的集合。模型写作 P(Y|X) P ( Y | X ) 或 Y=f(X) Y = f ( X ) ,分别对应概率模型与非概率模型。通过学习得到的模型写作 P^(Y|X) P ^ ( Y | X ) 或 Y=f^(X) Y = f ^ ( X ) ,给定输入 xN+1 x N + 1 时,输出为 yN+1=argmaxyN+1P^(yN+1|xN+1) y N + 1 = a r g max y N + 1 P ^ ( y N + 1 | x N + 1 ) (表示选取给定输入 xN+1 x N + 1 时使得条件概率最大的 yN+1 y N + 1 作为输出)或者 yN+1=f^(xN+1) y N + 1 = f ^ ( x N + 1 ) 。
统计学习三要素
模型
如同前面所说,模型即是从输入到输出的映射。具体来说,就是要学习的条件概率分布函数或者决策函数。而模型的假设空间包含所有可能的条件概率分布或者决策函数。
假设空间记作
F
F
,对于决策函数假设空间可写作
一般而言 F F 是由参数 θ θ 决定的函数族,即
条件模型的假设空间的形式类似,不再赘述。
策略
所谓策略,即是按照什么样的标准来选取最优的模型,或者说是模型的评价标准,一般由损失函数(loss function)或者风险函数(risk function)。损失函数描述一次预测的好坏,风险函数描述平均意义下模型的好坏。
损失函数与风险函数
常见损失函数如下
- 0-1损失函数(0-1 loss function)
L(Y,f(X))=1(Y=f(X)) L ( Y , f ( X ) ) = 1 ( Y = f ( X ) ) - 平方损失函数(quadratic loss function)
L(Y,f(X))=(Y−f(X))2 L ( Y , f ( X ) ) = ( Y − f ( X ) ) 2 - 绝对损失函数(absolute loss function)
L(Y,f(X))=|Y−f(X)| L ( Y , f ( X ) ) = | Y − f ( X ) | - 对数损失函数(logarithmic loss function)或者对数似然损失函数(log-likelihood loss function)
L(Y,P(Y|X))=−logP(Y|X) L ( Y , P ( Y | X ) ) = − l o g P ( Y | X )
风险函数为损失函数的期望,即
实际上,如果我们知道联合分布 P(x,y) P ( x , y ) 的话则可以直接计算出 Rexp(f) R e x p ( f ) 并得到最优的 P(x,y) P ( x , y ) 了,也就不需要“学习”了。
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/bbee2d0885886166ab434ebc9fa2a705.jpeg)
而实际上我们是无法得知 P(x,y) P ( x , y ) 的,因此我们对于一个给定的数据集,定义了 经验风险(empirical risk)如下
根据大数定律, limN→∞Remp=Rexp lim N → ∞ R e m p = R e x p 。而实际上由于条件所限样本是有限的,当样本容量过小时可能会出现模型对训练集刻画的很好,而在测试集上表现很差的现象,称为 过拟合(overfitting)。
正则化
前面提到,如果我们的样本容量不够大,而采用的模型又相对复杂时,很容易出现过拟合的现象。正则化(regularization)是防止出现过拟合的一个方法,具体来说就是采用所谓的结构化风险(structural risk),其定义如下
其中 J(f) J ( f ) 表示模型 f f 的复杂度,称为正则化项(regularizaer)是假设空间上随 f f 的复杂度的增加而增大的泛函。
例如在多项式拟合(回归)问题中,试图使用下面的次多项式函数进行预测
如果 M M 选取得过大,模型虽然能拟合更为复杂的曲线,但是也会更容易将噪声的影响带入模型的评价中,因此我们通常选择系数向量的范数 ∥w∥1 ‖ w ‖ 1 或者 L2 L 2 范数 ∥w∥2 ‖ w ‖ 2 作为正则化项。正则化项的加入使得算法倾向于选择范数较小的 w w 作为学得的模型,可以在一定程度上避免过拟合。
算法
这里的算法就是求解上述最优化问题的方法。如果该问题有解析解,则问题是很简单的。而问题实际上往往是没有解析解甚至是非凸(non-convex)的,需要使用一些特别的数值方法来求解。
交叉验证
所谓交叉验证(cross validation),就是以一定比例将数据集分为2部分(训练集与测试集)或者3部分(训练集、验证集与测试集)。采用交叉验证可以一定程度上防止过拟合,并可用于选取超参数(hyper parameter),例如神经网络隐层数目即每层神经元的数目、卷积网络的卷积核类型与大小等。
交叉验证有如下几种常见方法
- 简单交叉验证
按一定比例(如常用的)将数据集随机地分为训练集和测试集,然后用训练集采用不同参数训练模型,在测试集上评估模型。-
S
S
折交叉验证
随机将数据集划分为个互不相交的等大小的子集,利用其中 S−1 S − 1 个子集训练模型,在剩余的子集上评估模型;将这一过程重复 S S 次,最后选出平均测试误差最小的模型。 留一交叉验证
即上述折交叉验证中 S=N S = N 的特殊情况。泛化能力
泛化能力是指模型对于未知数据的预测能力,常用泛化误差(generalization error)来描述,其定义如下
Rexp(f)^=Ep[L(Y,f^(X))]=∫X×YL(Y,f^(X))P(x,y)dxdy R e x p ( f ) ^ = E p [ L ( Y , f ^ ( X ) ) ] = ∫ X × Y L ( Y , f ^ ( X ) ) P ( x , y ) d x d y
从表达式可以看出泛化误差实际上就是学习到的模型的期望风险,实际上常用测试集上的经验风险来估计泛化误差。泛化误差上界
泛化误差上界 (generalization error bound)指的是泛化误差的概率上界。其通常具有以下性质
- 是样本容量的函数,样本容量增加时趋向于 0 0 。
- 是假设空间容量的函数,随假设空间增大而增大(即过拟合)。
生成模型与判别模型
监督学习方法可分为生成方法(generative approach)与判别方法(discriminative approach),所学到的模型即生成模型(generative model)与判别模型(discriminative model)。生成模型直接学习联合分布并通过Bayes公式得到预测模型
P(Y|X)=P(X,Y)P(X) P ( Y | X ) = P ( X , Y ) P ( X )
而判别模型则是学习条件概率分布 P(Y|X) P ( Y | X ) 或 Y=f(X) Y = f ( X ) 。- 典型判别模型:朴素贝叶斯,隐马尔科夫模型。
特点:学习联合分布 P(X,Y) P ( X , Y ) 收敛快,当样本容量增加时能更快地收敛到真实模型,存在隐变量时也可以使用。 - 典型生成模型:k近邻,感知机,决策树,支持向量机。
特点:学习条件分布 P(Y|X) P ( Y | X ) 或判别函数 Y=f(X) Y = f ( X ) ,直接面对预测,通常准确率更高,可以对数据进行各种程度的抽象。
分类问题
对于分类问题的评价指标一般是准确率(accuracy),即分类正确的样本数与总样本数之比。
对于二分类问题,我们通常用精确率(precision)与召回率(recall)描述。- TP(True Positive)—— 将正类预测为正类数。
- FN(False Negative)—— 将正类预测为负类数。
- FP(False Positive)—— 将负类预测为正类数(有时称为虚警数)。
- TN(True Negative)—— 将负类预测为负类数。
精确率定义如下,其意义为预测的正类的中正确的比例
P=TPTP+FP P = T P T P + F P
召回率定义如下,其意义为正类中有多少比例被正确预测
R=TPTP+FN R = T P T P + F N标注问题
在标注(tagging)问题中,输入时一个观测序列,输出是一个标记序列。可能的标记个数是有限的,但随着序列长度的增加其组合数呈指数增长。
标注问题中,训练集可表示如下
T={(x1,y1),(x2,y2),⋯,(xN,yN)} T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x N , y N ) }
其中 xi=(x(1)i,x(2)i,⋯,x(n)i)T x i = ( x i ( 1 ) , x i ( 2 ) , ⋯ , x i ( n ) ) T 是输入观测序列, yi=(y(1)i,y(2)i,⋯,y(n)i)T y i = ( y i ( 1 ) , y i ( 2 ) , ⋯ , y i ( n ) ) T 是相应的输出标记序列, n n 是序列长度,是样本容量,一般而言有 n≪N n ≪ N 。标注问题的目的是学习到一个条件概率分布函数
P(Y(1),Y(2),⋯,Y(n)|X(1),X(2),⋯,X(n)) P ( Y ( 1 ) , Y ( 2 ) , ⋯ , Y ( n ) | X ( 1 ) , X ( 2 ) , ⋯ , X ( n ) )
常用方法有隐马尔科夫模型、条件随机场。回归问题
回归(regression)问题中,训练数据集形式如下
T={(x1,y1),(x2,y2),⋯,(xN,yN),xi∈Rn,yi∈R} T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x N , y N ) , x i ∈ R n , y i ∈ R }
根据训练数据集学到一个模型 f^ f ^ ,对于新的输入 xN+1 x N + 1 给出预测输出 yN+1=f^(xN+1) y N + 1 = f ^ ( x N + 1 ) 。根据输入变量个数可分为一元回归和多元回归;按照输入输出变量之间的关系,可分为线性回归和非线性回归。常用方法有最小二乘法。
-
S
S
折交叉验证