统一视角 看分类问题

现在的分类学习算法太多了,有时候我们不仅要问:这么多算法,都是做的分类问题,那它们有没有一个共同的源头?如果有,那么从这个共同的源头出发,它们各自是怎么发展起来的?如果能看清这些本质,对分类学习算法的理解应该能够更加深刻. 本文尝试从一种自上而下,类似高屋建瓴的方式来为众多的分类学习算法建立一个统一的视角. 通常,一个学习过程会涉及到3个步骤:提出假设—>建立模型(如凸优化问题)—>求解模型(如用凸优化算法求解). 这里只会涉及到前两个步骤, 并且不会涉及到具体的学习算法. 由于水平所限,将不把贝叶斯机器学习纳入考虑的范畴.

首先,我们需要搞清楚的是,分类学习算法这几个字里面蕴含的问题:1,谁在学习?2,从什么中学习?3,要学到什么?4,用什么标准来评判学习的好坏?可以用一句话来回答这4个问题:分类学习算法就是让一个算法(学习者)从一堆观测数据中,依据最小化总体损失的标准,从一个函数集合里面学习(或者说挑选)一个函数。我们用一些符号来稍微刻画一下这句话:设 F = { h ( x ; θ ) | θ Θ } 是一个函数集合,或者说假设空间. 对于 h , 我们有时候称其为函数,有时候称其为假设,都是表达同一个意思. 不同的函数 h 之间通过不同的参数 θ 进行区分. ( h ( x ; θ ) , y ) 是衡量假设 h 在随机向量 ( X , Y ) = ( x , y ) 点处的损失,称为0-1损失函数,其中 Y { 1 , 2 , . . . , c } . P ( X , Y ) 是随机向量 ( X , Y ) 的联合分布函数,由于很多情况下,所有的分量不全是连续型或是离散型,所以 P ( X , Y ) 实际上是一个混合型的联合分布。那么,选择假设 h 所造成的总体损失,或说期望损失就是

E ( h ) = ( x , y ) ( h ( x ; θ ) , y ) P ( x , y ) d x d y (1)

如果把 E ( h ) 看成是 h 的函数,那么我们实际上就是要寻找 E ( h ) 的最小值.

min h E ( h ) 这个问题开始,产生了概率框架和非概率框架[1]的分支节点.

1. 概率框架

在概率框架中,认为函数 h ( x ; θ ) 的值域就是随机变量 Y 的值域, 即 h ( x ; θ ) { 1 , 2 , . . . , c } , 然后把对于 h ( x ; θ ) 的学习转化为对于概率分布的学习. 我们从函数 E ( h ) 的表达式出发,看看 h ( x ; θ ) 到底应该长什么样,才能使得 E ( h ) 达到最小值。注意到随机变量 Y 的取值是离散的并且 ( h ( x ; θ ) , y ) = I { h ( x ; θ ) y } ( I 是指示函数,自变量取值为True时, I = 1 , 否则 I = 0 ), 我们将 E(h) 展开:

E ( h ) = ( x , y ) ( h ( x ; θ ) , y ) P ( x , y ) d x d y = x P ( x ( k = 1 c ( h ( x ; θ ) , Y = k ) P ( Y = k | x ) ) d x (2)

要使得 E ( h ) 最小,就是要使得对于每一个 X = x ,都有 k = 1 c ( h ( x ; θ ) , Y = k ) P ( Y = k | x ) 达到最小. 再根据 0 1 损失函数的特点,可以很容易地证明:

h ( x ; θ ) = arg min h H E ( h ) = arg max k { 1 , 2 , . . . , c } P ( Y = k | x ) (3)

我们称 h ( x ; θ ) 为贝叶斯最优分类器[2]. 使用贝叶斯最优分类器,我们可以使函数 E ( h ) 达到最小值 x P ( x ) ( 1 max k { 1 , 2 , . . . , c } { P ( Y = k | x ) } ) d x . 由于我们事先并不知道联合分布 P ( X , Y ) (否则我们可以通过积分的手段求出 P ( Y | X = x ) ,那还叫什么学习?), 所以我们需要从样本中估计出条件分布 P ( Y | X = x ) .从估计条件分布的这个问题开始,又产生了概率框架下判别模型与生成模型[1]的分支节点.

1.1 判别模型

判别模型直接对条件分布 P ( Y | X = x ) 进行建模,通常有两种建模方法:参数方法和非参数方法。参数方法属于参数统计里面的内容,其核心思想是先假设 Y | X = x 服从一个分布形式已知的离散分布,然后去估计这个离散分布里面的未知参数。一般地,设

P ( Y | X = x ) = P ( Y | X = x ; ( θ 1 , θ 2 , . . . , θ c 1 ) )

这样一来,我们就可以用上统计中参数估计的方法,通常是点估计方法,如矩估计,极大似然估计等等。一个有趣的点是,若使用极大似然估计法来估计参数,本质上是在最小化假设分布到真实分布之间的KL距离,通过这种方式来学习假设分布之中的未知参数[3]。非参数方法不去显式假设分布的具体形式,而是用全部的样本数据去表示条件分布 P ( Y | X = x ) 。从这个描述中我们可以看出:参数方法的缺点是概率分布形式的假定有可能出现偏颇,优点是该方法将样本数据中的信息浓缩到少数的参数中,使得预测的时候速度极快;非参数方法基本不存在概率分布形式假定的偏颇问题,因为这种方法真正做到“let the data speaks for itself”,样本容量越大,就能够越逼近真实分布,但由于这种方法在预测的时候要携带全部的样本信息,所以预测速度会很慢。

1.2 生成模型

生成模型间接地对 P ( Y | X = x ) 进行建模。首先对 P ( X , Y ) = P ( X | Y ) P ( Y ) 进行建模,然后利用贝叶斯公式 P ( Y = k | X = x ) = P ( X = x | Y = k ) P ( Y = k ) i = 1 c P ( X = x | Y = i ) P ( Y = i ) ,还原出 P ( Y | X = x ) . 由此看来,我们需要学习随机变量 Y X | Y = k 的分布。对于离散型随机变量 Y ,我们通常假设它服从一个多项分布 P ( Y = k ) = p k ,然后用参数估计的方法去估计这个分布的参数。然后,我们可以用参数或非参数的方法去估计 X | Y = k 的分布[3].

我们简要地概括一下概率框架下参数方法的一个特点:对数据服从的分布形式做出假定(但分布的参数未知),然后通过最小化某种假设分布到真实分布的距离(概率分布距离),来学得假设分布中的未知参数。当然,对于概率分布距离的计算,我们实际上是基于大数定律,用有限的样本信息去表达的,所以未知参数最终从样本中学得。

2,非概率框架

在非概率框架中, 稍微不自然一点,认为函数 h ( x ; θ ) 的值域就是实数域 R , 而随机变量 Y 的值域是 { 1 , 1 } , 然后直接学习 h ( x ; θ ) ,最后在学到的函数 h ( x ; θ ^ ) 外面套一个符号函数即可实现分类, 即 s i g n ( h ( x ; θ ^ ) ) . 因为学习过程不涉及到对概率分布的学习,所以通常把这种框架称为非概率框架. 显然,不像概率框架那样可以直接处理多分类问题,未经过进一步处理的非概率框架只能处理二分类问题. 在非概率框架中,我们同样希望最小化 E(h) ,即

min h H ( x , y ) ( h ( x ; θ ) , y ) P ( x , y ) d x d y min θ Θ ( x , y ) ( h ( x ; θ ) , y ) P ( x , y ) d x d y (4) .

其中 ( h ( x ; θ ) , y ) = I { t < 0 } ( t = y h ( x ; θ ) ) ( 对于二分类问题, 这个损失函数的效果与概率框架下损失函数 ( h ( x ; θ ) , y ) = I { h ( x ; θ ) y } 的效果是一样的).

然而 0 1 损失函数非凸,不好优化,我们通常用其他的替代损失函数如
logistic损失函数: ( h ( x ; θ ) , y ) = l o g ( 1 + e x p ( y h ( x ; θ ) ) ) ,
hinge损失函数: ( h ( x ; θ ) , y ) = m a x { 0 , 1 y h ( x ; θ ) }
exponential损失函数: ( h ( x ; θ ) , y ) = e x p ( y h ( x ; θ ) )
等凸函数来替代它,这样我们接下来的优化工作就好做许多。 用了替代损失函数之后产生的一个问题是:在其他条件相同的情况下,用了这些替代损失函数,最后求得的最优分类函数,会与使用 0 1 损失函数时求得的最优分类函数一致吗?答案是肯定的,这个特点叫做损失函数的一致性[4]. 例如,拿logistic损失函数 ,hinge损失函数做例子对(4)的左端进行求解,很容易求得最后的最优分类函数(套上了符号函数之后的函数)就是我们上面说到的贝叶斯最优分类器,与使用 0 1 损失函数求得的结果一致. 这样一来我们就可以放心地使用替代损失函数. 我们把 ( h ( X ; θ ) , Y ) 看成一个随机变量,它是关于随机向量 ( X , Y ) 的函数. 假设我们有一个容量为 m 的样本,那么,根据大数定律,我们有:

1 m i = 1 m ( h ( X i ; θ ) , Y i ) P ( x , y ) ( h ( x ; θ ) , y ) P ( x , y ) d x d y ( ) (5)

(5)的左端就是我们常说的假设 h 的经验损失. 于是,最小化 E ( h ) 来求得最优分类函数的问题,就可以转化为一个最小化经验误差(ERM)的问题:

min θ Θ 1 m i = 1 m ( h ( x ( i ) ; θ ) , y ( i ) ) (6)

但是,这样的转化也带来了一个疑问:(6)的最优解,是不是就是(4)式右端的最优解?答案也是肯定的:注意到(6)的最优解 θ ^ 其实是样本的一个函数,由于样本是由一些独立同分布的随机向量组成, 所以 θ ^ 其实也是一个随机向量. 可以证明: m d 时, ( x , y ) ( h ( x ; θ ^ ) , y ) P ( x , y ) d x d y P ( x , y ) ( h ( x ; θ ) , y ) P ( x , y ) d x d y (7) [5]

注意(7)中的 h ( x ; θ ) 就是贝叶斯最优分类器. 对于(6)的求解,事先要假定函数 h ( x ; θ ) 的形式. 这与概率框架中事先假定 P ( Y | X = x ) P ( X | Y = k ) P ( Y ) 的分布形式是一样的道理. h ( x ; θ ) 的假定形式一般有三种:

A 属性线性组合法: h ( x ; θ ) = θ T ϕ ( x ) ϕ 是从原始特征空间出发的一个映射

B 复合函数法: h ( x ; θ ) = ( h 1 h 2 . . . h n ) ( x )

C 简单函数线性组合法: h ( x ; θ ) = i = 1 s α i h i ( x ; θ i )

非概率框架下直接学习的函数 h ( x ; θ ) ,也算是判别模型的一种. 在这个框架下面,也有参数与非参数方法之分. 例如,考虑A中的属性线性组合法. 如果把 ϕ 看成是一个从自身到自身的映射, 在原始特征空间中考虑问题, 那么对于参数 θ 的学习就是一种参数学习方法。这样导出来的模型是线性模型,类似地,上面的概率框架中,使用参数方法也可以导出线性模型. 如果把 ϕ 看成是由核函数诱导出来的映射,在可再生核希尔伯特空间中考虑问题,那么对参数 θ 的学习就是一种非参数方法. 这样导出来的模型可以是线性模型,也可以是非线性模型, 类似地,上面的概率框架中,使用非参数方法也可以导出非线性模型.

我们简要地概括一下非概率框架下学习函数 h ( x ; θ ) 中未知参数的一个特点:对函数的形式做出假定,然后选择某种损失函数,通过最小化期望损失的方式来学得函数中的未知参数。当然,对于期望损失的计算,我们实际上是基于大数定律,用有限的样本信息去表达的,所以未知参数最终从样本中学得。

说了这些之后,我们发现:概率框架与非概率框架实质上是在用不同的手法去解决同一个问题. 在这两个框架推演的过程中, 我们发现了许多类似的, 可以对比的地方. 最后,很自然地,可以在这两个框架的基础上提一些问题:概率框架中选定分布距离的度量方法再最小化分布距离的做法,是否可以对应非概率框架中选定替代损失函数再进行期望风险最小化的做法?分布的距离与损失函数有没有对应关系(已知 K L 距离可以对应logistic损失函数,难道是偶然?)?也就是说,这两个问题能否互相转化?若能,需要满足什么条件 ?

转自 https://zhuanlan.zhihu.com/p/30745139

参考文献

[1]李航, 《统计机器学习方法》

[2]Shai Shalev-Shwartz and Shai Ben-David, Understanding Machine Learning: From Theory to Algorithms

[3]Larry Wasserman, All of Statistics

[4]周志华,《机器学习》

[5]王星, 非参数统计

猜你喜欢

转载自blog.csdn.net/harry_128/article/details/80831045
今日推荐