降维与度量学习

 

  1. 降维与度量学习

  2. K近邻学习

    K近邻学习(k-Nearest Neighbor)学习是一种经常使用的监督学习方法,其工做机制很是简单:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本,而后基于这k个"邻居"的信息来进行预测。一般,在分类任务中可以使用"投票法",即选择这k个样本中出现最多的类别标记做为预测结果;在回归任务中可以使用"平均法",即将这k个样本的实值输出标记的平均值做为预测结果;还能够基于距离远近进行加权平均或加权投票,距离越近的样本权重越大。 html

    K近邻学习属于"懒惰学习"的一种,它在训练阶段仅仅把样本保存起来,训练时间开销为零,待收到测试样本后再进行处理;相对应的,再训练阶段就对样本进行学习处理的方法,成为"急切学习"。 算法

  3. 低维嵌入

    k近邻学习基于一个重要假设:任意测试样本附近人意小的距离范围内总能找到一个训练样本,即训练样本的密度足够大,或称为"密采样"。然而,这个假设在现实任务中一般很难知足,例如,若是,仅考虑单个属性,则仅需1000个样本点平均分布在归一化后的属性取值范围,便可使得任意测试样本在其附近0.001距离范围内总能找到一个训练样本。然而,这是在维度为1 的时候,若是有更多的属性,则状况会发生显著的变化。现实应用中属性维度常常成千上万,要知足密采样条件,则须要不少的样本数,几乎是没法达到的天文数字;此外,不少学习方法涉及到距离计算,而高维空间给距离计算带来很大的麻烦,例如当维度很高的时候甚至连计算内积都不容易。 机器学习

    事实上,在高维情形下出现的样本稀疏、距离计算困难等问题,是全部机器学习方法共同面临的严重障碍,被称为"维数灾难"。 函数

    缓解维数灾难的一个重要途径是降维,"维数约简",即经过某种数学变换将原始高维属性空间转变为一个低维"子空间",这个字空间中样本密度大幅提升,距离计算也变得更加容易。 学习

  4. PCA
     

    mouse1测试

    2优化

    3lua

    4spa

    5rest

    6

    gene1

    10

    11

    8

    3

    2

    1

    gene2

    6

    5

    4

    3

    2.8

    1

    gene3

    12

    9

    10

    2.5

    1.3

    2

    4 or more dimensions of data, and make 2 dimensional plot.

    We'll also talk about how PCA can tell us which gene (or variable) is the most valuable for clustering the data.

    1)绘制二维的数据,而后将数据中心点移到原点;

    2)找出最佳的拟合直线:投影点到原点的距离和最大,或者点到投影直线间的距离最小。

    3)这里的曲线的斜率能够代表,这两个基因之间的关系;对曲线进行缩放,找到其中的一个单元大小。这里的1个单元由两个部分组成,0.97的基因1和0.242的基因2。这两个值,称为"singular vector"或者是PC1的特征向量;投影点到原点的距离和称之为PC1的特征向量;开根号后称之为Singular Value for PC1;

    4)PC2和PC1垂直perpendicular;-0.242的基因1和0.97的基因2;

    5)convert the ss into variation around the origin(0,0) by dividing by the sample size minus 1.

    PC1的variation = 15; PC2的variation=3;

    总的variation = 18;

    能够解释 PC1 占比83%;每一个PC的variation;

     

    PCA-practial tips:

    主要讲如下三个方面的内容:

    1)Scaling your data;

    2)Centering your data;

    3)How many principal components you should expect to get.

    1. 数据的归一化;

    2. 数据中心要过原点;

    3. 多少个主成分须要被找到;

     

    PCA的使用:

    1.如何获得能够运用PCA的数据;

    2.如何使用sklearn中的PCA进行主成分分析

    3.如何决定每一个主成分所占的变化比例;

    4.如何使用matplotlib绘制PCA

    几乎全部的variation都汇集在第一个pc上,所以,使用PC1和PC2能够很好的表示数据。

    在一个正交属性空间中,如何使用一个超平面(直线的高维推广)对全部样本进行恰当的表达?

    容易想到,这个超平面应该具备这样的性质:

    1)最近重构性:样本点到这个超平面的距离足够近;

    2)最大可分性:样本点在这个超平面上的投影尽量分开。

    基于最近重构性和最大可分性能够获得两种等价推导:

    1)基于最近重构性的推导:

    假定数据样本进行了中心化,即;再假定投影变换后获得的新坐标系为,其中是标准正交向量,,。若丢弃新坐标系中的部分坐标,即将维度下降到,则样本点在低维坐标系中的投影是,其中是在低维坐标系下第j维的坐标。若基于来重构,则会获得.

    如下内容参考:http://blog.codinglabs.org/articles/pca-tutorial.html

    为何基的模为1?

    AB=|A||B|cos(a)

    若是|B|=1,则直接为A在B上的投影。

    故,利用内积能够表示一个向量在某个基下的坐标表示。

    通常的,若是咱们有M个N维向量,想将其变换为由R个N维向量表示的新空间中,那么首先将R个基按行组成矩阵A,而后将向量按列组成矩阵B,那么两矩阵的乘积AB就是变换结果,其中AB的第m列为A中第m列变换后的结果

    其中pi是一个行向量,表示第i个基,aj是一个列向量,表示第j个原始数据记录

    特别要注意的是,这里R能够小于N,而R决定了变换后数据的维数。也就是说,咱们能够将一N维数据变换到更低维度的空间中去,变换后的维度取决于基的数量。所以这种矩阵相乘的表示也能够表示降维变换。

    最后,上述分析同时给矩阵相乘找到了一种物理解释:两个矩阵相乘的意义是将右边矩阵中的每一列列向量变换到左边矩阵中每一行行向量为基所表示的空间中去。更抽象的说,一个矩阵能够表示一种线性变换。不少同窗在学线性代数时对矩阵相乘的方法感到奇怪,可是若是明白了矩阵相乘的物理意义,其合理性就一目了然了。

    协方差矩阵和其优化目标

    咱们但愿投影后投影值尽量分散,而这种分散程度,能够用数学上的方差来表述。此外,一个字段的方差能够看做是每一个元素与字段均值的差的平方和的均值,即

    因为上步已经将每一个字段的均值都化为0了,那么方差就能够直接用每一个元素的平方和除以元素个数表示:

    因而,上述问题被形式化表示为:寻找一个一维基,使得全部数据变换为这个基上的坐标表示后,方差值最大。

    协方差:

    对于上面的二维降成一维的问题来讲,找到那个使得方差最大的方向就能够了。可是对于更高维,还有一个问题须要解决。

    数学上采用协方差来表示其相关性,因为让每一个字段均值都为0:

    能够看到,在字段均值为0的状况下,两个字段的协方差简洁的表示为其内积处以元素m.

    至此,咱们获得了降维问题的优化目标:将一组N维向量降为K维(K大于0,小于N),其目标是选择K个单位(模为1)正交基,使得原始数据变换到这组基上后,各字段两两间协方差为0,而字段的方差则尽量大(在正交的约束下,取最大的K个方差)

    协方差矩阵:

    假设咱们只有a和b两个字段,那么咱们将他们按行组成矩阵X:

    而后咱们用X乘以X的转置,并乘上系数1/m:

    这个矩阵对角线上的两个元素分别是两个字段的方差,而其余元素是a和b的协方差,二者被统一到了一个矩阵中。

    根据矩阵相乘的运算法则,这个结论很容易被推广到通常状况:

    设咱们有m个n维数据记录,将其排列为n乘m的矩阵x,设C=,则C是一个对称矩阵,其对角线分别是各个字段的方差,而第i行和第j列元素相同,表示i和j两个字段的协方差。

    协方差矩阵对角化

    根据上述推导,咱们发现要达到优化目前,等价于将协方差矩阵对角化:即除对角线外的其余元素化为0,而且在对角线上将元素按从小到大从上到下排列,这样咱们就达到了优化的目的。

    设原始数据矩阵X对应的协方差矩阵为C,而P是一组基按行组成的矩阵,设Y=PX,则Y为X对P作基变换后的数据。设Y的协方差矩阵为D,推导D和C的关系:

    如今的目标变成,须要找到P,能让D为协方差矩阵对角化的P。

    换言之,优化目标变成了寻找一个矩阵P,知足是一个对角矩阵,而且对角元素按从大到小依次排列,那么P的前K行就是要寻找的基,用P的前K行组成的矩阵乘以X就使得X从N维降到了K维并知足上述优化条件。

    由上文可知,协方差矩阵C是一个对称矩阵,在线性代数上,实对称矩阵有一系列很是好的性质:

    1)实对称矩阵不一样特征值对应的特征向量必然正交;

    2)设特征向量重数为r,则必然存在r个线性无关的特征向量对应于,设这n个特征向量为,将其按列组成矩阵,

    则对协方差矩阵C有以下结论:

    根据上面对PCA的数学原理的解释,咱们能够了解到一些PCA的能力和限制。PCA本质上是将方差最大的方向做为主要特征,而且在各个正交方向上将数据"离相关",也就是让它们在不一样正交方向上没有相关性。

    所以,PCA也存在一些限制,例如它能够很好的解除线性相关,可是对于高阶相关性就没有办法了,对于存在高阶相关性的数据,能够考虑Kernel PCA,经过Kernel函数将非线性相关转为线性相关,关于这点就不展开讨论了。另外,PCA假设数据各主特征是分布在正交方向上,若是在非正交方向上存在几个方差较大的方向,PCA的效果就大打折扣了。

    最后须要说明的是,PCA是一种无参数技术,也就是说面对一样的数据,若是不考虑清洗,谁来作结果都同样,没有主观参数的介入,因此PCA便于通用实现,可是自己没法个性化的优化。

  5. 核化线性降维

  6. 流形学习

  7. 等度量映射

  8. 局部线性嵌

     

  9. Multiple dimensional scaling (MDS)

    若要求原始空间中样本之间的距离在低维空间中得以保持,即"多维缩放",一种经典的降维方法。

    假定m个样本在原始空间中的距离矩阵为,其中第i 行j列元素为样本到样本的距离。咱们的目的就是得到样本在d'维空间的表示,,且任意两个样本在维空间中的欧式距离等于原始空间中的距离,即。

    令,其中B为降维后样本的内积矩阵,

    对B矩阵进行特征值分解,,其中,为特征值构成的对角矩阵。V为特征向量矩阵。

    假定有个非零特征值,它们构成对角矩阵,令表示相应的特征向量矩阵,则Z可表达为:

    在现实应用中,为了有效降维,每每仅需降维后的距离与原始空间中的距离尽量接近,而没必要严格相等。此时,可取个最大特征值构成对角矩阵

  10. 度量学习

相关文章
相关标签/搜索