深度学习(二):主成分分析算法

版权声明:本文为博主原创文章,转载请注明出处和作者,商业转载请联系作者(huxingfei097@163.com),谢谢合作!

本节内容涉及对主成分分析算法的推导,推导主要应用线性代数知识,如果对线性代数知识不太熟悉,可以参考我的上一篇文章:深度学习(一):线性代数基础

  • 概念:
      主成分分析(principal components analysis, PCA)是一个简单的机器学习降维算法。通俗的讲,PCA降维就是通过线性变换,减少数据维度,保留数据主要的信息。在机器学习中,该技术多应用于数据可视化和特征选择,由于处理的数据是无标签的,通过维度的线性变换而来,所以是无监督降维方法。
  • 直观解释:
      数据集合中的样本由实数空间(正交坐标系)中的点表示,空间中的一个坐标轴表示一个变量,规范化处理后得到的数据分布在原点(空间中的原点)附近。主成分分析就是对坐标系进行旋转变换,将数据投影到新坐标系的坐标轴上:新坐标系的第一坐标轴、第二坐标轴等分别表示第一主成分、第二主成分等,数据在每一轴上的坐标值的平方表示相应变量的方差,并且,这个坐标系是在所有可能的新的坐标系中,坐标轴上的方差最大的。下图展示了在二维空间中对一个斜椭圆进行主成分分析(其中,x1,x2为原坐标轴,y1,y2为主成分分析变换之后的坐标系,y1为第一主成分对应原椭圆的长轴,y2为第二主成分对应原椭圆的短轴):
主成分分析示例 主成分分析的几何解释

  上方右图是主成分分析的几何解释。主成分分析要求在新的坐标轴中方差最大,即意味着,对于样本点 A,B,C,投影到y1上得到A',B',C',OA'2 + OB'2 + OC'2最大,等价于样本点到y1轴的距离的平方和AA'2 + AB'2 + AC'2最小。所以,主成分分析在旋转变换中等价于选取离样本点的距离平方和最小的轴,作为第一主成分,第二主成分的选取,在保证与已选坐标轴正交的条件下,类似的进行。

  • 算法过程:
      主成分分析,首先要对给定数据进行规范化,使得每一变量的平均值为0,方差为1,然后顺序地找一组相互正交的坐标轴。其中,第一个新坐标轴选择是原始数据中方差最大的方向,第二个新坐标轴选取是与第一个坐标轴正交的平面中使得方差最大的,第三个轴是与第1,2个轴正交的平面中方差最大的。依次类推,可以得到n个这样的坐标轴。通过这种方式获得的新的坐标轴,大部分方差都包含在前面k个坐标轴中,后面的坐标轴所含的方差几乎为0。于是,可以忽略余下的坐标轴,只保留前面k个含有绝大部分方差的坐标轴。事实上,这相当于只保留包含绝大部分方差的维度特征,而忽略包含方差几乎为0的特征维度,从而实现对数据特征的降维处理。
  • 主成分分析的求解:
      ** 设 x 是 m 维随机变量,∑ 是x的协方差矩阵,∑的特征值分别是 λ1 ≥ λ1 ≥ λ2 ≥ ... ≥ λm ≥ 0,特征值对应的单位向量分别是 α1α2 ... αm,则 x 的第k主成分是:
           yk = αkT x = α1kx1 + α2kx2 + ... +αmkxm
    x 的第k主成分的方差是:
           var(yk) = αkT Σ αk,   k = 1,2,3,...,m
    即协方差矩阵的第k个特征值(若特征值有重根,对应的特征向量组成m维空间Rm的一个子空间,子空间的维数等于重根数,在子空间任取一个正交坐标系,这个坐标系的单位向量可作为特征向量,取法不唯一!)。
  • 具体推导(拉格朗日乘子法):
      先求 x 的第一主成分 y1 = α1T x。即求系数向量 α1,其中 α1 是在α1T α1 = 1的条件下,x 的所有线性变换中使方差 var(α1 x) = α1T Σα1 ( 注意:Σ 不是求和符号,而是协方差矩阵,Σ = cov( x , x ) =E[( x - μ)( x - μ)T] )达到最大(求解约束最优化问题)。
          maxα1 = α1T Σ α1   s.t α1T α1 = 1
    定义拉格朗日函数:
          α1T Σα1 - λ(α1T α1 - 1)
    α1 求导,并令其为0,得:
          Σα1 - λ α1 = 0
    因此,λ 是Σ 的特征值,α1 是对应的单位向量。即:
          α1T Σ α1 = α1T λ α1 = λ α1T α1 = λ
    所以,α1T x,构成第一主成分,其方差对于协方差矩阵的最大特征值:
          var(α1T x) = α1T Σ α1 = λ1
      接着求x的第二主成分 y2 = α2T x,第二主成分是在α2 是在α2Tα2 = 1,且 α2T xα1T x 不相关的条件下,x 的所有线性变换中使方差 var(α2T x ) = α2T Σ α2 达到最大的。
      求第二主成分同样需要求解约束最优化问题。
             maxα2 α2T Σ α2α1T Σ α2 = 0,α2T Σ α1α2T α2 = 0
    注意到:
         α1T Σ α2 = α2T Σ α1 = α2T λα1 = λ α2T α1 = λ α1T α2
    并且:
         α1T α2 = 0    α2T α1 = 0
    定义拉格朗日函数:
         α2T Σ α2 - λ(α2T α2 - 1) - фα2T α1
    其中 λ,ф都是拉格朗日乘子,对 α2 求导,并令其为0,得到:
         2Σ α2 - 2λ α2 - фα1 = 0
    将方程左乘 α1T
         2α1TΣα2 - 2λ α1T α2 - фα1T****α1 = 0
    此式子前两项为0,且 α1T****α1 = 1,得出 ф = 0,则拉格朗日函数导数可以表示为:
          Σα2 - λ α2 = 0
    因此,λ是Σ的特征值,α2是对应的单位向量。即:
          α2T Σ α2 = α2T λ α2 = λα2T α2 = λ
    于是 α2T x 构成第二主成分,其方差对于协方差矩阵的第二大特征值:
          var(α2T x) = α2T α2 = λ2
      以此类推, x 的第 k 主成分是 αkT x,并且 var(αkT x) = λk,其中,λk是 Σ 的第k个特征值,并且是 αk 对应的单位特征向量。

花书上采用的是计算 Frobenius 范数来推导的,个人感觉要难懂一些,感兴趣可以看一下
推导过程:
 通常使用矩阵乘法来实现PCA。对于每一个点x(i)∈Rn,会存在一个编码后的对应向量c(i)∈Rl(一般l会小于n)。为了简化,使用矩阵乘法将编码后的向量映射回 Rn,即满足 x ≈ g(c) = D c,其中D∈Rn * l 是定义的解码矩阵。
  PCA算法限定 D 中的列向量彼此正交,并且都有单位范数。
  首先需要明确的是如何根据每一个输入 x 得到一个最优编码 c 。一种做法是使用 L2 范数来衡量原始向量 x 与重映射后的结果 g(c)之间的距离。在PCA算法中,使用 L2 范数:

  可以使用平方 L2 范数来替代L2范数,即:
该最小化函数可以简化为:
          (x -g(c))T (x -g(c))
        = xT x - xT g(c) - g(c)T x + g(c)T g(c)
        = xT x - 2xT g(c) + g(c)T g(c) (g(c)Tx是一个标量,转置为自身)
  因为第一项xT x不依赖于c,所以可以忽略得到下述优化目标:
        c* = (arg min)c - 2xT g(c) + g(c)T g(c)
  更进一步,代入g(c)的定义可得:
        c* = (arg min)c - 2xT D c + cT DT D c
(矩阵D的正交性和单位范数约束)
          = (arg min)c - 2xT D c + cT Il c
          = (arg min)c - 2xT D c + cTc
  可以通过向量微积分来求解该最优化问题(如果不太清楚矩阵求导,可以参考:矩阵求导术)
         ∇c (- 2xT D c + cTc) = 0
           - 2DT x + 2c = 0
             c = DT x
  即若要得到最优编码 c,只需要一个矩阵向量乘法即可,可令 f(x) = DT x,进一步使用矩阵乘法,还可以定义PCA重构(即重新升维到x的维度)操作:
         (x≈)r(x) = g(f(x)) = D DT x
  接下来需要挑选编码矩阵D。可以采用最小化所有维度上点的误差矩阵的Frobenius范数:
为了推导求D* 的算法,可以先考虑 l = 1 的情况(即降维至一维),这种情况下D 是一个单一向量 d,带入r(x)上式可化为:
进一步整理可得(dT x(i) 是一个标量):
将表示各点的向量堆叠成一个矩阵,记为X∈Rm * n ,其中Xi, = x(i)T。则原问题可以重新描述为:
暂不考虑约束,可以将Frobenius范数简化为如下形式(采用迹运算来表示Frobenius范数):
(因为与d无关的项不会影响到arg min)
(因为循环改变迹运算中相乘矩阵的顺序不影响,可进一步变换)
此时再来考虑约束条件:
这个优化问题可以通过特征分解来求解,即最优的dXTX最大特征值对应的特征向量。
  以上的推导是基于 l =1 的情况的,仅仅得到了第一个主成分。当我们希望得到主成分的基时,矩阵D由前l个最大的特征值对应的特征向量组成。

参考资料:
  《深度学习》
  《统计学习方法》

本系列相关文章
深度学习(六):前向传播算法和后向传播算法
深度学习(五):机器学习基础
深度学习(四):数值计算基础
深度学习(三):概率与信息论基础
深度学习(一):线性代数基础

深度学习新手,文章若有疏漏,欢迎及时指正!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容