zoukankan      html  css  js  c++  java
  • 主成分分析(Principal components analysis)最小平方误差解释

     接上篇
    3.2 最小平方误差理论

         clip_image001

         假设有这样的二维样本点(红色点),回顾我们前面探讨的是求一条直线,使得样本点投影到直线上的点的方差最大。本质是求直线,那么度量直线求的好不好,不仅仅只有方差最大化的方法。再回想我们最开始学习的线性回归等,目的也是求一个线性函数使得直线能够最佳拟合样本点,那么我们能不能认为最佳的直线就是回归后的直线呢?回归时我们的最小二乘法度量的是样本点到直线的坐标轴距离。比如这个问题中,特征是x,类标签是y。回归时最小二乘法度量的是距离d。如果使用回归方法来度量最佳直线,那么就是直接在原始样本上做回归了,跟特征选择就没什么关系了。

         因此,我们打算选用另外一种评价直线好坏的方法,使用点到直线的距离d’来度量。

         现在有n个样本点clip_image003,每个样本点为m维(这节内容中使用的符号与上面的不太一致,需要重新理解符号的意义)。将样本点clip_image005在直线上的投影记为clip_image007,那么我们就是要最小化

         clip_image009

         这个公式称作最小平方误差(Least Squared Error)。

         而确定一条直线,一般只需要确定一个点,并且确定方向即可。

         第一步确定点:

         假设要在空间中找一点clip_image011来代表这n个样本点,“代表”这个词不是量化的,因此要量化的话,我们就是要找一个m维的点clip_image011[1],使得

         clip_image012

         最小。其中clip_image014是平方错误评价函数(squared-error criterion function),假设m为n个样本点的均值:

         clip_image015

         那么平方错误可以写作:

         clip_image017

         后项与clip_image019无关,看做常量,而clip_image021,因此最小化clip_image014[1]时,

         clip_image023 

         clip_image019[1]是样本点均值。

         第二步确定方向:

         我们从clip_image019[2]拉出要求的直线(这条直线要过点m),假设直线的方向是单位向量e。那么直线上任意一点,比如clip_image007[1]就可以用点me来表示

         clip_image025 

         其中clip_image027clip_image029到点m的距离。

         我们重新定义最小平方误差:

         clip_image030

         这里的k只是相当于iclip_image032就是最小平方误差函数,其中的未知参数是clip_image034e

         实际上是求clip_image032[1]的最小值。首先将上式展开:

         clip_image036

         我们首先固定e,将其看做是常量,clip_image038,然后对clip_image027[1]进行求导,得

         clip_image039

         这个结果意思是说,如果知道了e,那么将clip_image041e做内积,就可以知道了clip_image043e上的投影离m的长度距离,不过这个结果不用求都知道。

         然后是固定clip_image027[2],对e求偏导数,我们先将公式(8)代入clip_image032[2],得 

         clip_image044

         其中clip_image045 与协方差矩阵类似,只是缺少个分母n-1,我们称之为散列矩阵(scatter matrix)。

         然后可以对e求偏导数,但是e需要首先满足clip_image038[1],引入拉格朗日乘子clip_image047,来使clip_image049最大(clip_image032[3]最小),令

         clip_image050

         求偏导

         clip_image051

         这里存在对向量求导数的技巧,方法这里不多做介绍。可以去看一些关于矩阵微积分的资料,这里求导时可以将clip_image049[1]看作是clip_image053,将clip_image055看做是clip_image057

         导数等于0时,得

         clip_image058

         两边除以n-1就变成了,对协方差矩阵求特征值向量了。

         从不同的思路出发,最后得到同一个结果,对协方差矩阵求特征向量,求得后特征向量上就成为了新的坐标,如下图:

         clip_image059

         这时候点都聚集在新的坐标轴周围,因为我们使用的最小平方误差的意义就在此。

    4. PCA理论意义

         PCA将n个特征降维到k个,可以用来进行数据压缩,如果100维的向量最后可以用10维来表示,那么压缩率为90%。同样图像处理领域的KL变换使用PCA做图像压缩。但PCA要保证降维后,还要保证数据的特性损失最小。再看回顾一下PCA的效果。经过PCA处理后,二维数据投影到一维上可以有以下几种情况:

         clip_image060

         我们认为左图好,一方面是投影后方差最大,一方面是点到直线的距离平方和最小,而且直线过样本点的中心点。为什么右边的投影效果比较差?直觉是因为坐标轴之间相关,以至于去掉一个坐标轴,就会使得坐标点无法被单独一个坐标轴确定。

         PCA得到的k个坐标轴实际上是k个特征向量,由于协方差矩阵对称,因此k个特征向量正交。看下面的计算过程。

         假设我们还是用clip_image062来表示样例,m个样例,n个特征。特征向量为eclip_image064表示第i个特征向量的第1维。那么原始样本特征方程可以用下面式子来表示:

         前面两个矩阵乘积就是协方差矩阵clip_image066(除以m后),原始的样本矩阵A是第二个矩阵m*n。

         clip_image068

         上式可以简写为clip_image070

         我们最后得到的投影结果是clip_image072,E是k个特征向量组成的矩阵,展开如下:

         clip_image074

         得到的新的样例矩阵就是m个样例到k个特征向量的投影,也是这k个特征向量的线性组合。e之间是正交的。从矩阵乘法中可以看出,PCA所做的变换是将原始样本点(n维),投影到k个正交的坐标系中去,丢弃其他维度的信息。举个例子,假设宇宙是n维的(霍金说是11维的),我们得到银河系中每个星星的坐标(相对于银河系中心的n维向量),然而我们想用二维坐标去逼近这些样本点,假设算出来的协方差矩阵的特征向量分别是图中的水平和竖直方向,那么我们建议以银河系中心为原点的x和y坐标轴,所有的星星都投影到x和y上,得到下面的图片。然而我们丢弃了每个星星离我们的远近距离等信息。

         clip_image075

    5. 总结与讨论

         这一部分来自http://www.cad.zju.edu.cn/home/chenlu/pca.htm

         PCA技术的一大好处是对数据进行降维的处理。我们可以对新求出的“主元”向量的重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从而简化模型或是对数据进行压缩的效果。同时最大程度的保持了原有数据的信息。

         PCA技术的一个很大的优点是,它是完全无参数限制的。在PCA的计算过程中完全不需要人为的设定参数或是根据任何经验模型对计算进行干预,最后的结果只与数据相关,与用户是独立的。
    但是,这一点同时也可以看作是缺点。如果用户对观测对象有一定的先验知识,掌握了数据的一些特征,却无法通过参数化等方法对处理过程进行干预,可能会得不到预期的效果,效率也不高。

         clip_image076

         图表 4:黑色点表示采样数据,排列成转盘的形状。
         容易想象,该数据的主元是clip_image077或是旋转角clip_image078

         如图表 4中的例子,PCA找出的主元将是clip_image077[1]。但是这显然不是最优和最简化的主元。clip_image077[2]之间存在着非线性的关系。根据先验的知识可知旋转角clip_image078[1]是最优的主元(类比极坐标)。则在这种情况下,PCA就会失效。但是,如果加入先验的知识,对数据进行某种划归,就可以将数据转化为以clip_image078[2]为线性的空间中。这类根据先验知识对数据预先进行非线性转换的方法就成为kernel-PCA,它扩展了PCA能够处理的问题的范围,又可以结合一些先验约束,是比较流行的方法。

         有时数据的分布并不是满足高斯分布。如图表 5所示,在非高斯分布的情况下,PCA方法得出的主元可能并不是最优的。在寻找主元时不能将方差作为衡量重要性的标准。要根据数据的分布情况选择合适的描述完全分布的变量,然后根据概率分布式

         clip_image079

         来计算两个向量上数据分布的相关性。等价的,保持主元间的正交假设,寻找的主元同样要使clip_image080。这一类方法被称为独立主元分解(ICA)。

         clip_image081

         图表 5:数据的分布并不满足高斯分布,呈明显的十字星状。
         这种情况下,方差最大的方向并不是最优主元方向。

         另外PCA还可以用于预测矩阵中缺失的元素。

    6. 其他参考文献

         A tutorial on Principal Components Analysis LI Smith – 2002

         A Tutorial on Principal Component Analysis J Shlens

         http://www.cmlab.csie.ntu.edu.tw/~cyy/learning/tutorials/PCAMissingData.pdf

         http://www.cad.zju.edu.cn/home/chenlu/pca.htm

  • 相关阅读:
    Oracle常用命令大全(很有用,做笔记)
    表格驱动编程在代码中的应用
    mac 利用svn下载远程代码出现Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo.
    FAILURE: Build failed with an exception.
    There is an internal error in the React performance measurement code.Did not expect componentDidMount timer to start while render timer is still in progress for another instance
    react native TypeError network request failed
    Android向系统相册中插入图片,相册中会出现两张 一样的图片(只是图片大小不一致)
    react-native Unrecognized font family ‘Lonicons’;
    react-native SyntaxError xxxxx/xx.js:Unexpected token (23:24)
    Application MyTest has not been registered. This is either due to a require() error during initialization or failure to call AppRegistry.registerComponent.
  • 原文地址:https://www.cnblogs.com/jerrylead/p/2020216.html
Copyright © 2011-2022 走看看