注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

行走的馒头

Stay Hungry, Stay Foolish

 
 
 

日志

 
 

二、线性分类器  

2012-08-31 22:25:07|  分类: 统计学习初探索 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

    在分类问题中,因变量Y可以看做是数据的label,属于分类变量。所谓分类问题,就是能够在数据的自变量X空间内找到一些decision boundaries,把label不同的数据分开,如果某种方法所找出的这些decision boundaries在自变量X空间内是线性的,这时就说这种方法是一种线性分类器。

 

Linear Regression of an Indicator Matrix

    假设我们的label共有K个类,标记为,这里我们可以用一个长度为K的指示向量来表示因变量Y,比如label属于类i, 则这个向量中第i个元素为1,其余元素全为0。这样所有样本的label就可以表示成为一个 的矩阵。这时如果我们用linear regression中的多变量回归,假设各个类之间相互独立,就容易得到下面的解

其中 参数矩阵为 

这样,对于一个新来的没有label的数据,我们使用下面的策略

计算 ,可以看出这是一个K维向量

选出这个向量中最大的那个元素,把其对应的类作为label。 

我们来分析一下这样来分类的道理是什么。可以证明 ,所以看起来线性回归得到的第k类的值可以作为其属于第k类的概率,但是这里也存在问题, 可以小于0或者大于1,因为在线性回归中我们对因变量Y没有其一定要限制在0到1之间,但是在实际应用中这个model一般都可以良好的运用,其最终的效果跟其他的线性分类器也相差无几。 但是,当分类的数目 时,用线性回归的方法分类的效果就会很差,下面是一个用线性回归和LDA分类效果的示意图。可以看出用线性回归完全把蓝色的类给忽略掉了。

      

 

 

Linear Discriminant Analysis (LDA)

     对于分类问题,从统计决策的角度去看,我们可以定义把本来所属的类误分到其他类的一个 的损失矩阵。明显这个矩阵的对角线元素为0,其他每个位置的值对应的误分类时的损失程度,如果其他位置的值全部都一样,我们可以发现这时如果根据的原则 找到所对应的类就能够最小化贝叶斯误差(Bayes Error)。贝叶斯误差是这样定义的, ,其中 表示label为第k类的所有样本点所包括的特征空间。

所以通常情况下,我们需要计算 。现在对于每一种label,我们设置一个先验概率 ,表示这种label出现的可能性的大小。明显有 。根据贝叶斯公式我们可以轻易的得到

这样一来我们只要知道了X在第K类中的分布 就可以轻易的计算出 ,从而可以拿来作为分类的决策依据。

    在LDA中,我们假设自变量在每一类中都服从高斯分布,可如下表示

,并且这儿我们还有一个假定那就是,即所有类中的协方差矩阵都是一样的,这跟线性回归中做最小二乘时的假定是相似的。这样一来我们看到

随意对于任意两个类 是一个超平面,

因为是任意选取的,所以我们知道最终分类的decision boundaries都是线性的。    

因为高斯分布中的参数和先验分布中都是未知的,我们需要从样本中去估计。通过似然函数的方法,容易得到

,其中是所有样本中属于第k类的样本的数目。

从另一个角度看,我们可以定义一个线性判别函数(liner discriminant function)

我们可以根据 给数据分类。可以看出来,这种用线性判别函数的函数和前面LDA得出的decision boundaries是一致的。

 

Quadratic Discriminant Analysis (QDA)

我们知道在LDA的假定条件中,每个类对应的都是一样的,当我们处理更复杂的情况的时候,我们可以考虑不一样的情况,这时就叫做QDA。在参数估计的时候,可以轻易的看出同前面LDA一样,而分别需要在每一个类中去估计。这时对应的线性判别函数为

 

Regularized Discriminant Analysis(RDA)

    RDA介于QDA和LDA之间,其对每个类的协方差矩阵的处理如下

其中为QDA中每个类中估计的方差矩阵,为LDA中估计的方差矩阵,是参数,可以用cross validation的方法去估计。

 

LDA和QDA的比较

可以看出,LDA共有(K-1)个decision boundaries,所以对应有个参数,而QDA对应有个参数,可见QDA比LDA的参数要多出不少,尤其是当p非常大的时候。而在实际运用中,LDA和QDA的效果往往相差无几。

Fisher Discriminant Analysis

    LDA被广泛应用的一个重要原因是对其稍作修改得到Fisher Discriminant Analysis,类似于PCA,其可以把数据reduce到一个低维的空间上去分析。

    在PCA中,我们降维所用的方法依次寻找正交的并且variance最大的方向,因为variance能够最大程度的保存原特征空间中的信息。其实在LDA中,降维也是类似的,因为现在我们的数据有label,Fisher所采用的方法就是通过一个线性变换,把每个类的中心点映射到一个新的空间,使得在这个新的空间上,一方面各个中心点之间的距离(这里可称之为类间距离)尽量保持足够大,另一方面每个类里面的点到其中心点的距离(这里可称之为类内距离)尽量小。假设这个线性变换可表示为,其为的矩阵。

在原空间中类内距离可表示为

在原空间中总距离可以表示为

这里表示的是总的距离,它可以分解为类内距离和类间距离之和,即

    

那么,类间距离可以表示为

那么在通过线性变换得到的特征空间我们可以轻易的得到类内距离可表示为,类间距离可表示为。前面提到,Fisher Discriminant Analysis 要要是类间距离尽量的大,类内距离尽量的小,一般采用的一个标准是使得下面的式子值最大。

这样通过训练集的样本我们可以求解,得到线性变换,然后对以后的测试样本在变换后的空间里去做LDA。下面的图是降维到不同维度(即不同的q)的分类误差图。

 

Logistic Regression

先简单介绍一下生成模型(generative model)和判别模型(discriminant model)。所谓生成模型,就是我们在对一个问题建模时,我们考虑联合分布,因为在,所以常常我们考虑x的分布和y在x下的条件分布。判别模型则只考虑,对于x的分布不关心。可以看出来生成模型具有更强的假设,因为假定了我们已经知道x的分布形式,所以在我们知道x确实满足这种情况的时候,生成模型的效果往往较好,但是如果我们对x的了解比较少,假定的分布形式很可能不正确,这时候用生成模型得到的结果可能就有点南辕北辙了;判别模型直接就不关心自变量x的分布,只关心条件分布因为,这样一来我们只关心结果,不关心数据本身是怎样产生的,因为相比于生成模型条件放宽了,这种模型在我们对数据本身不是很了解的时候效果往往都不错。

可以看到前面的LDA是一种生成模型, 因为在LDA中我们对每一类的数据都假设其自变量X是属于高斯分布的。下面我们可以看到Logistic Regression就是一种典型的判别模型,其直接对条件概率建模:

这里采用logit函数的形式是为了保证条件概率的和加起来为1。当然选择其他的函数,只要在这里其具有和logit函数相似的性质都是可行的。

这样对每个类的条件概率我们可以得到如下的形式

明显,这些条件概率的和加起来等于1。我们要估计的参数可表示为

在logistic regression中,给定了条件概率,我们就可以用似然函数的方法来进行参数估计。

似然函数可以表示为

其中    

我们来看看对于只有两类()的情况怎么来求解。这时我们假设如果样本点i属于类1,则其,如果属于类2,则其对应

我们令,则 。这时似然函数可以表示为

这里的参数为 , 对应着截距,是一个p维的向量,对应着自变量feature空间每个维度的系数。为了最大化似然函数,我们求其一阶导数为0。

因为关于是非线性的,所以上面一阶导数的这个方程关于也是非线性的,所以直接对其求解非常困难,这时我们可以用优化里面的梯度下降(gradient descent)或者牛顿方法(newto-raphson)来求解,当然这样得到的解可能只是一个局部最优解,不能保证其刚好就是我们要求的全局最优解。下面简单介绍一下用牛顿方法来求解

对似然函数求二阶导可得

,这个矩阵叫做Hessian Matrix。

牛顿法是一种迭代的方法,首先定义一个初始值,然后在迭代过程中不断更新直至收敛。在每一次迭代过程中可表示为

如果用表示当前的条件概率 ,表示一个对角矩阵,其对角线上第i行第i列对应的元素为,那么可以把上面这些式子写成矩阵的形式

可以看到在每一轮的迭代过程中,都要变化。其实在每一轮的迭代过程中,我们首先计算的值,在上面最后的一步中明显其形式跟而最小二乘的解的形式非常相似,其实它要解决的是一个加权的最小二乘问题,表示如下

这个算法也叫做iteratively reweighted least square (IRLS)。在一般情况下,是一个不错的初始化设置。

 

对于K>2的问题,logistic regression也可以用类似的方法求解。只是在实际应用中,logistic regression很多时候都被用来处理二分类的问题。类似于linear regression中的shrinking方法,我们同样可以在logistic regression增加参数的约束条件,比如使用的regularization,我们的目标如下面的式子所示

我们可以使用coordinate descent的方法来求解。

 

题外话

我们可以看到logistic regression,特别是二分类的logistic regression跟linear regression非常类似。其实logistic regression属于广义线性模型的一种。先来看看广义线性模型是什么。

在线性模型中,我们有,这里是指对原来的feature空间做basis expansion,扩展到新的空间使其线性可分。的分布是正太分布或者近正态分布,即。广义线性模型的其中一个推广就是,其中h为严格单调、充分光滑的函数。这样,h的反函数称为联系函数(link function), 有。因为我们知道条件概率总在0到1之间,故h应该满足,所以可供选择的h有

  1.  ( N(0,1)的分布 ), 联系函数为,这时称为probit模型。
  2. ,联系函数为,这时称之为log-log模型。
  3. ,联系函数为,这时称之为logit(logistic)模型。

在我们的logistic regression中,。由此可见,logistic regression只是广义线性模型的一个特例。

 

     

    

Perceptron Learning Algorithm

先回顾一下超平面的知识,对于任意的一个超平面L,其定义为 ,其具有如下的一些性质

  1. 对于空间内任意在超平面L上的两个点,我们有,因此单位法向量可以表示为
  2. 对于平面L上的任意一个点,我们有
  3. 任意一点到平面L的signed distance可表示为

 

这里,我们的Perceptron Learning Algorithm要做的就是使所有误分类的点到decision boundary的距离和最小。如果我们使用前面提到的linear regression的方法来处理分类,即当时,;当时,,那么我们的目标就是使下面的函数最小

其中  表示所有误分类的点的集合。求和项中的每一项正比于这一点到超平面 的距离。

目标函数的梯度可表示为

我们可以用随机梯度下降 (stochastic gradient descent) 的方法来求解。在使用随机梯度下降时,在每次的迭代过程中,我们不使用所有的误分类数据来计算梯度(在梯度下降算法中,使用所有数据的方法叫做batch梯度下降算法),取而代之,我们使用的是随机从误分类数据中采样一个样本来计算梯度,因此,在每次迭代中更新的式子可表示为

其中,表示下降的速率,在实际中常常设置为1。这个算法本来存在一些问题,比如这里假定了误分类集合M是已知的,我们知道不同的分类面对应不同的误分类集合,事前不可能确定。还有迭代的过程可能非常漫长。另外,当样本确实是线性可分的时候,使用随机梯度算法最终会收敛,然而如果样本线性不可分,这时算法就不会收敛。


  评论这张
 
阅读(18119)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017