文章目录
统计学习:基于数据构建概率统计模型,再用这些模型对新数据进行预测和分析
总述
- 基于数据,所以是数据驱动的学科。对数据的分析可以让我们获取新知识,新发现。
- 学习的对象:数据,data。数据很多样,包括各种数字,文字,图像,视频和音频以及他们的组合
- 对于数据的假设,也是统计学习的前提:同类数据具有一定的统计规律性。这样才可以用概率方法去分析和处理,比如用随机变量描述数据的特征(一般都用离散随机变量),用概率分布描述数据的统计规律。
- 目的:对数据进行预测和分析
- 对数据进行预测和分析的手段/方法:构建概率统计模型
- 核心:模型/方法,用这些方法来分析数据
- 交叉学科:信息论,概率论,统计学,最优化,计算机科学
所以,总结起来,其实统计学习,就是基于一组收集起来的同类数据,考虑使用什么模型去学习,以及怎么学习,以便有效率地(提高学习率)对数据做到准确分析和准确的预测。
统计学习方法的分类
对统计学习方法的研究分为三种(科研不也是这样吗):
- 统计学习方法研究
开发新的学习方法 - 统计学习理论研究
探究已有统计学习方法的有效性和效率 - 统计学习应用研究
把已有的统计学习方法用到实际问题中去,解决实际问题
统计学习本身可以分为四类:
- 监督学习
是统计学习中研究最丰富,应用最广泛的分支。因为监督学习是对给定的所有输入和相应的输出做一个好的预测,计算机基本操作也是一个输入产生一个输出。 - 无监督学习
- 半监督学习
- 强化学习
统计学习方法这本书主要介绍监督学习。
监督学习
从给定的有限的用于学习的训练数据(training data)的集合出发,假设数据是独立同分布的,假设要学习的模型属于某个函数集合(假设空间hypothesis space),用某个评价准则(evaluation criterion),从假设空间中选出一个最优的模型(这个选择就是由算法来实现),使它对已知训练数据和未知的测试数据(test data)在给定评价准则下有最优预测。
所以,概括起来,监督学习的三大要素就是:模型的假设空间,模型选择的准则(即评价准则),模型学习的算法
监督学习的目的:学习一个从输入到输出的映射。这个映射就是学到的模型。
监督学习从训练数据中学习模型,然后把学到的模型用在测试数据上进行分析和预测。
监督学习的预测任务一般有三类:分类,标注,回归。
- 分类
输出变量是有限个离散变量的预测问题。
- 标注
输入变量和输出变量都是变量序列的预测问题。
- 回归
输入变量和输出变量都是连续变量的预测问题。
别看只有三类,其实就这些监督学习算法,在计算机视觉,自然语言处理,信息检索,文本数据挖掘等领域都有非常广泛的应用。
基本概念
- 输入空间:input space, 输入的所有可能取值的集合
把输入看做是输入空间上一个随机变量取值。
- 输出空间:output space, 输出的所有可能取值的集合
把输出看做是输出空间上一个随机变量取值。
输入输出空间可以是有限元素的集合,也可以是整个欧式空间;
且二者可以是同一个空间,也可以不同;
通常输出空间远远小于输入空间。
-
实例,instance:一个具体的输入。一般是由特征向量feature vector来表示的。
-
特征空间:feature space。所有特征向量构成的空间。
特征空间的每一维对应了一个特征。
有时候把输入空间就当做特征空间(不提取特征,使用原始数据raw data),有的时候要把输入空间映射为特征空间。
模型是定义在特征空间上的。
- 训练集
输入对和输出对也称为样本点。
- 联合概率分布
统计学习假设输入和输出的随机变量们服从一个联合概率分布 P ( X , Y ) P(X, Y) P(X,Y)(完全是假设而已,假设数据存在一定的统计规律,X和Y具有一个联合概率分布,是监督学习对数据的基本假设)
但是其实对于学习系统而言,这个联合概率分布的具体定义是未知的。我们假设训练数据和测试数据都是按照这个联合概率分布来产生的,即独立同分布的。
- 假设空间
前面说了,监督学习就是要学出一个从输入到输出的最优映射,每一个映射都是一个函数,或者一个模型,而最优的那个函数或者模型就是我们要通过评价准则等办法努力学习到的。那么所有可能的映射/函数/模型的集合,就是假设空间。
通常,假设空间是由一个参数向量决定的函数族,而参数向量又取值于n维欧式空间
R
n
R^n
Rn,即参数空间parameter space。
假设空间可以框定学习的范围。
监督学习的模型可以是概率模型和非概率模型。如果是概率模型,一般用条件概率分布来表示模型,
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X);
而如果是非概率模型,则用决策函数表示模型,
Y
=
f
(
X
)
Y=f(X)
Y=f(X)。(所以说白了,模型就是一个条件概率分布或者决策函数而已)
用决策函数表示的模型叫做非概率模型,其假设空间是由一个参数向量决定的决策函数族/集合;
用条件概率表示的模型是概率模型,其假设空间是由一个参数向量决定的条件概率分布族/集合。
建模
已经很清楚了,监督学习就是先用训练数据学习出模型,然后用模型进行预测。抽象建模为下图,分为一个学习系统和一个预测系统
统计学习方法为什么很重要
- 是目前处理海量数据最有效的方法。即使数据挖掘的重要手段。
这是一个信息爆炸的时代,而海量数据蕴含着大量知识和规律,掌握这些规律可以带来很大的经济效益。但是现实数据不仅规模大,而且有很多不确定性,除了统计学习以外,就只有深度学习黑盒子可以挖掘这些数据隐含的知识了。 - 是实现人工智能的重要方法。
- 也是计算机科学领域发展的重要组成部分。
统计学习三要素:模型,策略,算法
前面说了,监督学习中,其实模型就是一种条件概率分布或者决策函数。模型的假设空间就是一个函数集合,包含了所有可能的条件概率分布或决策函数。
三大要素是模型的假设空间,简称为模型;从模型的假设空间中选取出最优模型的方法,即学习方法,简称为策略,统计学习的目的就是要从假设空间中选出最优模型;而筛选的方法,即最优化问题的求解算法,简称为算法。
统计学习方法看似多种多样,实际就是由这三大要素框起来的,只有三个要素在变来变去,抓住了三个要素,统计学习方法就明明白白,赤果果地被你看穿了。
模型的假设空间
见上面基本概念。
关于假设空间的学习还是很有收获的,从很高很系统的角度去理解了监督学习到底在干嘛,原来所谓机器学习模型就是一个大集合,是所有可能的参数向量决定的所有函数的集合,而机器学习就是根据一种学习策略去选出最佳的一个函数,或者说是选出最优的一组参数,来作为这个任务的决策函数,然后让这个决策函数去面对未知的测试数据,并期待它给出好的可信赖的结果。
之前没有系统来学习过这些基本概念,我觉得还是很有必要的,基本概念的熟悉掌握会让人对整个机器学习有一个大体抽象的整体认识,会帮助我们简化复杂的问题,把复杂多样的问题回归到简单统一的本质上,牢牢把控了机器学习的本质,就不会觉得它很难很玄妙很高大上又捉摸不透了。
学习策略(损失函数,风险函数)
损失函数度量模型一次预测的好坏;风险函数度量平均意义下的模型预测的好坏。
太经典了,这总结。
要在整个假设空间中选择一个最优模型,那么什么是最优?当然是预测错误越少的越优,所以学习的关键就是用数学模型去量化每一次预测的错误程度,这就是损失函数loss function或代价函数cost function。
损失函数是 f ( X ) f(X) f(X)和Y的非负实值函数,记作 L ( Y , f ( X ) ) L(Y, f(X)) L(Y,f(X)).
损失函数的值越小,表示模型越好。
常见损失函数
- 0-1损失函数 (0-1 loss function)
好简单,就是错误预测的数目。
L
(
Y
,
f
(
X
)
)
=
{
0
,
f
(
X
)
=
Y
1
,
f
(
X
)
≠
Y
L(Y, f(X))=\left\{ \begin{aligned} 0, &f(X)=Y\\ 1, &f(X)\neq Y\\ \end{aligned} \right.
L(Y,f(X))={0,1,f(X)=Yf(X)=Y
-
平方损失函数 (quadratic loss function)
多用于回归问题。很像最小二乘拟合。
-
绝对损失函数 (absolute loss function)
也是回归用的多吧。分类不好用这种的。
-
对数损失函数 (logarithmic loss function)
也叫做对数似然损失函数,log-likelihood loss function
风险函数/期望损失:理论上,模型关于输入输出的联合分布的平均意义下的损失
risk function
expected loss
统计机器学习总是从概率的角度去建模的,从概率统计学的角度看,**输入X和输出Y都是随机变量,并且他们服从一个联合概率分布P(X, Y),**基于这种假设,我们可以进一步使用概率论的期望来计算一下模型f(X)关于这个联合分布P(X,Y)的平均损失,即风险函数,或者叫做期望损失。
R
e
x
p
(
f
)
=
E
p
[
L
(
Y
,
f
(
X
)
)
]
=
∫
(
x
,
y
)
L
(
y
,
f
(
x
)
)
P
(
x
,
y
)
d
x
d
y
R_{exp}(f) = E_p[L(Y, f(X))] = \int_{(x,y)}L(y,f(x))P(x, y)dxdy
Rexp(f)=Ep[L(Y,f(X))]=∫(x,y)L(y,f(x))P(x,y)dxdy
可以看到,这是纯粹的理论分析,是基于联合分布假设的。而损失函数则是根据每一次实际的预测结果进行计算的。
所以损失函数是代码和工程中使用的学习策略,是实打实地要计算的数值。风险函数只是在理论上去评估一个模型的好坏,由于不知道联合分布的具体形式,所以根本无法计算(有的问题也许可以假设一个联合分布,比如二维联合正态分布,信号检测中会这么做)。
我们当然想要学到一个期望损失尽可能小的模型,但是很可惜,期望损失是不可以计算的。因为联合分布未知。
联合分布是未知的,因为它从始至终就是整个监督学习框架的一个基本假设,正是因为有这么一个假设,才有这么多蓬勃的算法。不过从实际结果也可以证明,这个假设绝对不是空穴来风,而是确实存在的,输入和输出确实有某种概率规律,但我们永远也不可能知道建模这种规律的联合分布的具体形式。
如果我们知道了联合分布P(X,Y),也就根本不需要机器学习了,还有监督学习什么事儿。直接用边缘概率P(X)和联合概率求出来条件概率P(Y|X)不就结了?正是因为不知道,所以才要用足够多的数据去学习,去逼近,去探索。
这么一看,感觉输入输出的联合分布是好顶层的东西啊,一定存在但是又永远不可能得知其具体形式。或者说是好底层的东西啊,是监督学习大厦的坚实地基,你知道地基真的存在并且在发挥作用,但是你看不到地基下到底是啥样。比喻不恰当,但是真的感受到了这个联合分布的牛逼和高级,统计学习,概率论建模,最后的建模方式很简单,就是一个联合分布。
我们孜孜不倦探索的,就是这个一定存在但又一定不知具体形式的联合分布,只要能近似它,对我们的任务就有很大成效了。
接下来我们顺着近似估计期望损失的思路,介绍经验风险,然而引入到两种学习策略(经验风险最小化,结构风险最小化),即统计学习的第二要素,把经验风险和结构风险作为目标函数,把监督学习转化为经验风险和结构风险的最优化问题。
经验风险/经验损失:模型f(X)关于训练集的平均损失
empirical risk
empirical loss
由于期望损失不可直接计算,所以人们就想到用别的方法去估计,近似。
这种估计和近似当然是要基于实际数据的,即训练集,把上面的理论积分公式,近似为了下面的离散求和公式:
R e m p ( f ) = 1 N ∑ i = 1 N L ( y i , f ( x i ) ) R_{emp}(f) = \frac{1}{N}\sum_{i=1}^NL(y_i, f(x_i)) Remp(f)=N1i=1∑NL(yi,f(xi))
即每一条训练数据的损失的和的均值。
期望风险是模型关于联合分布的平均损失,而经验风险是模型f(X)关于训练集的平均损失。
根据大数定律,当样本容量N趋近于无穷,经验风险$R_{emp}(f) 就 会 趋 近 于 期 望 风 险 就会趋近于期望风险 就会趋近于期望风险R_{exp}(f) $。
可惜的是,实际情况中,训练集往往规模很小,因为标注需要人力,所以没法用经验风险去估计期望风险,估计的结果很差。
经验风险最小化(广泛应用)
empirical risk minimization ,ERM
经验风险最小化是监督学习的一种基本学习策略(另一种基本学习策略是结构风险最小化),这种策略认为,经验风险最小的模型是最优模型。
最小化经验风险,这是一个最优化问题,所以按照这种学习策略学习的话,学习的本质就是求解这个最优化问题。
min
f
∈
F
1
N
∑
i
=
1
N
L
(
y
i
,
f
(
x
i
)
)
\min_{f\in F}\frac1N\sum_{i=1}^NL(y_i, f(x_i))
f∈FminN1i=1∑NL(yi,f(xi))
F
F
F是假设空间。
样本容量足够大的时候,经验风险最小化是可以保证很好的学习效果的,所以实际学习中一般都用。
但是如果样本数量太少,经验风险最小化的效果就不好了,会过拟合。
极大似然估计:ERM的例子
maximum likelihood estimation
当模型是条件概率分布,损失函数是对数损失函数时,经验风险最小化就等价于极大似然估计。
结构风险最小化(专为防止过拟合而提出的学习策略, 等价于正则化)
structural risk minimization,SRM
结构风险是基于经验风险的,它在经验风险上再加上表示模型复杂度的正则化项regularizer,或者惩罚项penalty term:
R s r m ( f ) = 1 N ∑ i = 1 N L ( y i , f ( x i ) ) + λ J ( f ) R_{srm}(f) = \frac1N \sum_{i=1}^N L(y_i, f(x_i)) + \lambda J(f) Rsrm(f)=N1i=1∑NL(yi,f(xi))+λJ(f)
J ( f ) J(f) J(f)表示模型的复杂度,是定义在假设空间上的泛函。
泛函就是函数的函数,即函数的参数是函数,因为模型就是函数,所有可能模型的集合是假设空间,而J(f)的参数是模型,所以是定义在假设空间上的泛函。
λ ≥ 0 \lambda\geq0 λ≥0,是系数,用于平衡经验风险和模型复杂度。
结构风险最小化就是要经验风险和模型复杂度都小,这样就可以缓解过拟合,从而对未知测试数据也表现出好的越策效果。
结构风险最小化的学习策略当然认为结构风险最小的模型是最优模型,所以学习问题也是一个最优化问题:
min f ∈ F 1 N ∑ i = 1 N L ( y i , f ( x i ) ) + λ J ( f ) \min_{f\in F}\frac1N\sum{i=1}^NL(y_i, f(x_i)) + \lambda J(f) f∈FminN1∑i=1NL(yi,f(xi))+λJ(f)
最大后验概率估计:SRM的例子
MAP, maximum posterior probability estimation
当模型是条件概率分布,损失函数是对数损失函数时,模型复杂度由模型的先验概率表示时,结构风险最小化就等价于最大后验估计。
贝叶斯估计中,假设复杂模型的先验
总结
先假设输入输出都是随机变量,假设二者服从某种形式的联合概率分布,然后基于这种分布和某种损失函数求出平均意义下的理论损失,然后去近似这种理论期望损失,从而提出了经验风险,然后为了缓解实际中出现的过拟合,又提出了结构风险,并把结构风险或者经验风险作为目标函数,把学习问题(即从模型的假设空间中选择一个最优模型)转化为了一个最优化问题。
注意其中经验风险和结构风险都是基于损失函数的,他们是对损失函数的平均,所以损失函数和经验风险/结构风险是两回事,前者是后者的组成部分,后者是最优化问题的目标函数。
可见,才说了统计学习的两大要素,模型(假设空间)和策略(学习策略,经验风险最小化和结构风险最小化),就已经一步步循序渐进推进了这么多了,先是概率论建模出一个联合分布,然后建模出几种损失函数,然后基于损失函数和联合分布又建模出经验风险,又为了缓解过拟合而建模了模型复杂度,从而建模了结构风险,至此为止就把监督学习完全建模成了一个最优化问题。步步为营,精心巧构,数学的力量啊,一步一步,一个公式一个公式,不动声色的就完成了整个建模。
算法(求解最优化问题的算法)
从上面的两大要素的逐步介绍和梳理,以及上面热乎乎的总结可以看到,监督学习已经被归结为一个最优化问题。所以最优化问题的求解就成了下一步的核心任务。
如果最优化问题有显式的解析解,那么很简单;如果没有,就需要用数值计算的方法来求解。
最优化数值求解的关键:保证找到全局最优解,且求解过程高效迅速。