oimz

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

   前几天学习了PCA,LDA算法,都是经典的降维算法。第一种为无监督学习,第二种为监督学习。

   今天看了另一种监督学习的降维算法LPP(Locality Preserving Projection),在此记录下自己的心得体会。

    就从算法的步骤上来说,LDA和LPP有着惊人的相似,以至于我怀疑他们之间只是同一种方法的不同表示。为了验证我的想法,我采用这两组算法对相同的数据进行降维,降维后的数据证明了我的想法是错的。但是降维后的数据确实非常的相近。还请各路大神指导两者之间的关系。

    LPP算法先需要用明确类别的样本进行训练。

    如有n个K维训练样本,X1,X2...Xn构成矩阵X,样本分为C种。我们需要先构造一个N*N的权重矩阵W.

    Wij的值对应样本Xi和样本Xj的关系。Wij有两种表示方法,我在此就介绍简单的一种,即当且仅当Xi和Xj是同一类的数据时,Wij为1,其余为0。这样我们就可以够着一个N*N的矩阵了。

     接着构造一个对角矩阵D,其中Dii等于W矩阵中第i行或者第i列的和(W为对称阵)。

     最后构造拉普拉斯矩阵L = D - W(至于为什么这样做,我也不清楚,求指导)。

     令X'为X的装置矩阵,求解XLX'a = kXDX'a。求实数k和向量a。

     两边同乘XDX'的逆,这个方程就变成求特征值和特征向量了。确实和LDA很像,LDA中XLX'为类内离散度矩阵,XDX'为类间离散度矩阵。

     求出特征值后,按特征值从大到小排列,取出前m个特征值对应的特征向量,就可以将n维数据降至m维了。

     附上自制实验:

     X =

     1     5     2     4     4     6

     5     3     4     2     6     5 

     两个样本1,3,5为一类,2,4,6为一类(根据x和y的大小分类)

     1.构造权重矩阵W=

     0     0     1     0     1     0

     0     0     0     1     0     1

     1     0     0     0     1     0

     0     1     0     0     0     1

     1     0     1     0     0     0

     0     1     0     1     0     0

     2.构造对角阵D=

     2     0     0     0     0     0

     0     2     0     0     0     0

     0     0     2     0     0     0

     0     0     0     2     0     0

     0     0     0     0     2     0

     0     0     0     0     0     2    

    3.构造拉普拉斯矩阵L=

     2     0    -1     0    -1     0

     0     2     0    -1     0    -1

    -1     0     2     0    -1     0

     0    -1     0     2     0    -1

    -1     0    -1     0     2     0

     0    -1     0    -1     0     2

     4.计算T1 = X*L*X'            T2 = X*D*X'

    T1 =                                 T2 = 
    20    15                             196   180
    15    20                             180   230
     5.计算T = inv(T2)*T1
     T =
     0.1498   -0.0118
    -0.0521    0.0962
     6.求出T的特征值VC和特征向量VA。    [VA,VC] = eig(T)
    VA =
    0.7726    0.1836
   -0.6348    0.9830
    VC =
    0.1596         0
         0    0.0865
     7.取第一个特征值对应的特征向量对X降维。A= [0.7726,-0.6348]
       Y = A*X
       Y =
         -2.4016    1.9586   -0.9941    1.8209   -0.7185    1.4616
       可以验证1,3,5为一类,2,4,6为一类。
     本文仅仅只是理解了过程,原理尚不明确,若有人知晓,望指导。

posted on 2011-08-25 17:42  oimz  阅读(22215)  评论(8编辑  收藏  举报