精华内容
下载资源
问答
  • 首先,该算法不需要估计输入数据的协方差矩阵,利用多级嵌套维纳滤波直接输入数据进行处理,在多级嵌套维纳滤波的前向迭代过程中得到干扰子空间矩阵;其次,干扰子空间矩阵进行QR分解,求出该矩阵的一组正交基,依据该...
  • 降维

    2020-10-19 20:11:37
    常见的降维方法有主成分分析、线性判别分析、等距映射、局部线性嵌入、...在信号处理领域,认为信号具有较大方差,噪声具有较小方差,信号与噪声之比称为信噪比。信噪比越大意味着数据的质量越好,反之,信噪比越小意

    常见的降维方法有主成分分析、线性判别分析、等距映射、局部线性嵌入、拉普拉斯特征映射、局部保留投影。

    1 PCA最大方差理论

    PCA属于一种线性、非监督、全局的降维算法

    问题:如何定义主成分?从这种定义出发,如何设计目标函数使得降维达到提取主成分的目的?针对这个目标函数,如何对PCA问题进行求解?

    PCA旨在找到数据中的主成分,并利用这些主成分表征原始数据,从而达到降维的目的。

    在信号处理领域,认为信号具有较大方差,噪声具有较小方差,信号与噪声之比称为信噪比。信噪比越大意味着数据的质量越好,反之,信噪比越小意味着数据的质量越差。

    引出PCA的目标,即最大化投影方差,也就是让数据在主轴上投影的方差最大。

    向量内积在几何上表示为第一个向量投影到第二个向量上的长度。

    x 投影后的方差就是协方差矩阵的特征值。要找到最大的方差也就是协方差矩阵最大的特征值,最佳投影方向就是最大特征值所对应的特征向量。次投影方向位于最佳投影方向的正交空间中,是第二大特征值对应的特征向量。

    求解PCA的求解方法:
    (1)对样本数据进行中心化处理。
    (2)求样本协方差矩阵
    (3)对协方差矩阵进行特征值分解,将特征值从大到小排列。
    (4)取特征值前d大对应的特征向量

    由于PCA是一种线性降维方法,虽然经典,但具有一定的局限性。可以通过核映射对PCA进行扩展得到核主成分分析(KPCA),也可以通过流形映射的降维方法,比如等距映射、局部线性嵌入、拉普拉斯特征映射等,对一些PCA效果不好的复杂数据集进行非线性降维操作。

    2 PCA最小平方误差理论

    问题:PCA求解的其实是最佳投影方向,即一条直线,这与数学中线性回归问题的目标不谋而合,能否从回归的角度定义PCA的目标并相应地求解问题?

    3 线性判别分析

    线性判别分析是一种有监督学习算法,同时经常被用来对数据进行降维。LDA是目前机器学习、数据挖掘领域中经典且热门的一种算法。

    相比于PCA,LDA可以作为一种有监督的降维算法。在PCA中,算法没有考虑数据的标签(类别),只是把原数据映射到一些方差较大的方向上。

    问题:对于具有类别标签的数据,应当如何设计目标函数使得降维的过程中不损失类别信息?在这种目标下,应当如何进行求解?

    LDA的中心思想——最大化类间距离,最小化类内距离

    最大化的目标对应了一个矩阵的特征值,于是LDA降维变成 了一个求矩阵特征向量的问题。投影方向就是矩阵最大特征值对应的特征向量。

    只需要求样本的均值和类内方差,就可以得出最佳的投影方向w

    LDA相比于PCA更善于对有类别信息的数据进行降维处理,但它对数据的分布做了一些很强的假设,例如,每个类数据都是高斯分布、各个类的协方差相等。
    尽管这些假设在实际中并不一定满足,但LDA已被证明是非常有效的一种降维方法。主要是因为线性模型对于噪声的鲁棒性比较好,但由于模型简单,表达能力有一定局限性,可以通过引入核函数扩展LDA方法以处理分布较为复杂的数据。

    4 线性判别分析与主成分分析

    问题:LDA和PCA作为经典的降维算法,如何从应用的角度分析其原理的异同?从数学推导的角度,两种降维算法在目标函数上有何区别与联系?

    从PCA和LDA两种降维方法的求解过程来看,它们确实有着很大的相似性,但对应的原理却有所区别。

    首先从目标出发,PCA选择的是投影后数据方差最大的方向。由于它是无监督的,因此PCA假设方差越大,信息量越多,用主成分来表示原始数据可以去除冗余的维度,达到降维。而LDA选择的是投影后类内方差小,类间方差大的方向。其用到了类别标签信息,为了找到数据中具有判别性的维度,使得原始数据在这些方向上投影后,不同类别尽可能区分开。

    从应用的角度,一个基本原则——对无监督的任务使用PCA进行降维,对有监督的则应用LDA

    展开全文
  • Principal Component Analysis (PCA)降维算法之一一、概述 这一部分解释什么是主成分,为什么要找主成分以及如何找主成分...补充介绍一下什么是信噪比 在信号处理中存在原始信号和噪声两种 噪声产生:处理过程中...
    Principal Component Analysis (PCA)
    降维算法之一

    一、概述

    这一部分解释什么是主成分为什么要找主成分以及如何找主成分

    (维基百科)为了保留数据中对方差贡献最大的特征。它利用正交变换来对一系列可能相关的变量的观测值进行线性变换,从而投影为一系列线性不相关变量的值,这些不相关变量称为主成分。

    补充介绍一下什么是信噪比

    在信号处理中存在原始信号噪声两种
    1. 噪声产生:处理过程中设备自行产生的,与原始信号无关,没原始信号时,就存在这样的噪声
    2. 噪声特性:无规律,不随原始信号的变化而变化
    3. 我们的目的:希望尽可能的只有原始信号,而没有噪声
    4. 引入信噪比:=原始信号/噪声,音频信号一般用功率,其他信号一般用方差
    5. 结论:信噪比越大,说明混在原始信号里的噪声影响越小,相比较而言原始信号具有较大的方差,噪声具有较小的方差

    理解为什么,可以从几个角度:

    • 数据的主成分可以被看成原始信号,非主成分被看成噪声,想把原始信号(主成分)找出来。
    • 在做数据分类或回归时,提取的特征有很多维,但不是每一维都有用,想找哪几维(主成分)是最重要的,是最明显的。
    最有用的数据往往是差异性最大的,想象一下如果所有数据都聚集在一起,还能找到数据的特征规律吗?而这个差异性可以用方差来衡量。

    如何找呢

    绕着数据中心旋转原坐标轴,每一个角度上都可以计算方差,找到方差最大的方向作为新的坐标轴,如果是多维的坐标轴,同时还希望不同维度能表示不重复的信息,即希望各维度线性无关。这样一个接一个找,直到找到前

    个主成分

    有什么用呢

    可以用来对数据进行压缩,降噪;同时因为各主成分之间的正交性,可以缓解原始数据成分间的相互影响,应用到表征的解耦上。

    问题1:PCA能提高分类器的效果吗?

    不一定能,损失的部分可能也有分类效果

    问题2:特征的可解释性变强了吗?

    没有,主成分是经过了一层变换的,新的维度之间具有一定的模糊性,不如原始数据特征的解释性强。虽然找到了最重要的,但此时的重要已不再是之前的特征。

    二、图解例子

    aee5ba937b2f8aaab8989ac200bec103.png
    出自维基百科

    图中黑线表示的就是主成分方向。

    三、理论推导

    过程中统一省略了零均值化,和求和平均

    现在有

    个原始数据
    ,其中每一个都是
    维的向量,记作

    希望将它降成

    维新数据,记作

    这个过程其实是一个基变换,记作

    根据前面的概述,

    需要满足两个条件:
    • 各个维度的方差最大
    • 不同维度之间协方差为0

    如何能表示方差和协方差呢,协方差矩阵!对角线元素为各个维度的方差,其余为不同维度之间的协方差。

    原始数据

    的协方差矩阵为:

    新数据

    的协方差矩阵为:

    前面提到的两个条件现在需要由

    来满足,即希望得到形如:

    看到这不禁想到了矩阵的特征分解,可以参考链接,对

    进行分解,
    是特征值构成的矩阵,
    是特征向量构成的矩阵。
    为了方便理解,做一步变换,这里需要用到---因为
    是正交矩阵,所以

    这就和标准的特征分解形式一致了,只是需要分解特征向量矩阵转置一下。

    反思:这个过程中我们好像没有去强调方差最大这个问题呀,这里面欠缺的逻辑其实是矩阵的特征向量和特征值是这个矩阵本身的固有性质,分解出来的特征值就是最大的,特征向量就是正交的。

    除了最大方差理论来解释以外,还可以用最小化降维造成的损失来解释。

    四、算法实现

    1. 每一维数据进行零均值化
    2. 写出原数据的协方差矩阵
    3. 求出协方差矩阵的特征值及对应的特征向量
    4. 将特征向量按对应特征值大小从上到下按行排列成矩阵,取前
      行组成新基矩阵
    5. 即为新数据

    代码在matlab以及python中有现存包,使用方法如下:

    # python
    
    from sklearn.decomposition import PCA
    pca = PCA(n_components=3)
    X_new = pca.transform(X)

    如何确定主成分个数

    补充一个点

    数据整体方差:

    数据映射方差:

    选取能够满足该式的最小

    值,
    是阈值范围,
    表示保留了99%的主要信息
    最后一句总结:主成分是数据本身的一个固有性质,不是为了找而找,而是它就在那里。
    展开全文
  • 酉分段形成( unitary beamforming ,简称UB )方法能够随机生成此处首先UB方法的计算过程进行推导,在天基-地基混合多层形成架构下UB方法的抗仿真结果表明, UB方法的期望信号提取和干扰信号置零性能与最小方差...
  • 本文仅常见的无监督学习算法进行了简单讲述,其他的如自动编码器,受限玻尔兹曼机用于无监督学习,神经网络用于无监督学习等未包括。同时虽然整体上分为了聚类和降维两大类,但实际上这两类并非完全正交,很多地方...

    本文仅对常见的无监督学习算法进行了简单讲述,其他的如自动编码器,受限玻尔兹曼机用于无监督学习,神经网络用于无监督学习等未包括。同时虽然整体上分为了聚类和降维两大类,但实际上这两类并非完全正交,很多地方可以相互转化,还有一些变种的算法既有聚类功能又有降维功能,一些新出现的和尚在开发创造中的无监督学习算法正在打破聚类和降维的类别划分。另外因时间原因,可能有个别小错误,如有发现还望指出。

    一.聚类(clustering)

    1.k-均值聚类(k-means)

    这是机器学习领域除了线性回归最简单的算法了。该算法用来对n维空间内的点根据欧式距离远近程度进行分类。

    INPUT:

    K(number of clusters)

    Training set{x1,x2,x3,....xn} (xi belongs to R^n)

    OUTPUT:

    K个聚类中心

    算法工作原理摘要:

    fc549d4f688d7667e58d133bd956b25a.png

    自己手写的python实现K—means:

    #簇数为k

    #数据空间维度为n

    #训练集元素数为m

    defK_means_demo(k,n,m):

    clusters=np.random.randint(0,40,size=[k,n]) #随机生成聚类中心

    tr_set=np.random.randint(0,40,size=[m,n]) #因为是模拟,所以自己随机生成的数据集for iter in range(0,5):

    clu_asist=np.zeros(shape=[k,n],dtype=int)for i in range(0,m): #遍历训练集内每个样本

    min=9999999owner=0for j in range(0,k): #遍历所有聚心找到最近的聚心owner

    dis=0for p inrange(0,n):

    abso=tr_set[i][p] -clusters[j][p]

    dis+=abso*abso #dis为第i个元素和第j个聚心的欧式距离的平方

    if dis-min <0:

    min=dis

    owner=jfor p in range(0,n): #渐进更新均值

    clu_asist[owner][p]+=(tr_set[i][p]-clu_asist[owner][p])//(p+1)

    clusters=clu_asist

    return clusters

    在上面的代码中我手动设定了迭代更新次数为5,因为我做的demo规模比较小,迭代几次便收敛了,而在实际使用中一般用( 迭代次数 || EarlyStop )作为迭代终止条件。

    动画演示:

    b25f69903108efb52c89f1f884bcc458.gif

    通读本算法,可以发现k-means对聚心初始值非常敏感,如果初始情况不好会震荡的。这里可以采取一些措施预判聚心大致要在哪个位置,然后直接将其初始化。

    另外,关于收敛的判断,可以采取多种方法。比如使用代价函数

    equation?tex=%5Cwidetilde%7BJ%7D%3D%5Csum_%7Bi%3D1%7D%5E%7BC%7D%7B%5Csum_%7Bj%3D1%7D%5E%7BN%7D%7B%7Br%7D_%7Bij%7D%5Ctimes%7B%5Cnu%28%7Bx%7D_%7Bj%7D%2C%7B%5Cmu%7D_%7Bi%7D%29%7D%7D%7D,或者F-Measure和信息熵方法。

    K-means优缺点分析:

    - 优点: 算法简单易实现;

    - 缺点: 需要用户事先指定类簇个数; 聚类结果对初始类簇中心的选取较为敏感; 容易陷入局部最优; 只能发现球形类簇。

    2.层次聚类(Hierarchical Clustering)

    顾名思义,层次聚类就是一层一层地进行聚类。既可以由下向上对小的类别进行聚合(凝聚法),也可以由上向下对大的类别进行分割(分裂法)。在应用中,使用较多的是凝聚法。

    INPUT:training_set D,聚类数目或者某个条件(一般是样本距离的阈值)

    OUTPUT:聚类结果

    凝聚法:

    跟竞赛中经常出现的并查集问题略相似,凝聚法指的是先将每个样本当做一个类簇,然后依据某种规则合并这些初始的类簇,直到达到某种条件或者减少到设定的簇数。

    在算法迭代中每次均选取类簇距离最小的两个类簇进行合并。关于类簇距离的计算表示方法主要有以下几种:

    (1)取两个类中距离最小的两个样本的距离作为两个集合的距离

    (2)取两个类中距离最大的两个样本的距离作为两个集合的距离

    (3)计算两个集合中每两两点的距离并取平均值,这种方法要略费时

    (4)比(3)轻松一些,取这些两两点距的中位数

    (5)求每个集合中心点,然后以中心点代表集合来计算集合距离

    (6)......

    迭代会在簇数减少到设定数量时结束,当然,如果设定了阈值f,那么当存在两个距离小于f的集合时则会继续迭代直到不存在这样的两个集合。

    分裂法:

    首先将所有样本归类到一个簇,然后依据某种规则逐渐分裂,直到达到某种条件或者增加到设定的簇数。

    (手写再拍照真不容易QAQ)

    de9646493d6bad37d30caaa0758bf9b4.png

    层次聚类和K-means作比较:

    (1)K-means时间复杂度为O(N),而层次聚类时间复杂度为O(N^2),所以分层聚类不能很好地处理大批量数据,而k-means可以。

    (2)K-means不允许嘈杂数据,而层次聚类可以直接使用嘈杂数据集进行聚类

    (3)当聚类形状为超球形(如2D圆形,3D球形)时,k-means聚类效果更好。

    3.基于密度聚类Mean Shift

    mean shift这种基于核函数估计的爬山算法不仅可以用于聚类,也可用于图像分割与目标跟踪等。这个概念早在1975年就被Fukunaga等人提出,而后1998年Bradski将其用于人脸跟踪则使得其优势大大体现出来。我们这里只谈论作为聚类算法的mean shift。

    什么是漂移向量?

    给定n维空间内数据点集X与中心点x,并以D表示数据集中与中心点x距离小于半径h的点的集合,则漂移向量Mh表示为: Mh=Exi∈D[xi-x]  。

    什么是漂移操作?

    计算得到漂移向量后将中心位置更新一下,使得中心位置始终处于力的平衡位置。更新公式为: x ← x + Mh   。

    另外,mean shift用于聚类时一般不使用核函数,如果用了核函数,权重改变,就不是“均值”漂移了。

    均值飘移算法实现过程:

    1.在未被标记的点中随机选取一个点作为起始中心点center;

    2.找出以center为中心半径为h的空间内所有的点,记作集合D,认为这些点归属于类簇c。同时将这些点属于这个类的概率加1,这个参数将用于最后步骤的分类;

    3.计算D内数据点与中心点center的漂移向量Mh ;

    4.进行漂移操作x ← x + Mh ;

    5.重复步骤2.3.4直到迭代收敛,记下此时的center位置。在这一过程中遇到的点都归类到簇c;

    6.如果收敛时当前簇c的center与其它已存在的簇c‘中心的距离小于阈值,则合并c和c'。否则,把c作为新的聚类,增加1类;

    7.重复步骤1-6直到所有的数据点都被标记访问;

    8.分类:根据每个类对每个点的访问频率,取频率最大的类作为当前点集的所属类。

    shift mean跟k-means作比较,两者都用集合内点的均值进行中心点移动,不同的是shift mean可以自行决定类簇数。

    4.基于密度聚类DBSCAN

    DBSCAN:“深度学习的神经网络,比你们用了几十年的k-means不知道高到哪里去了,我跟他谈笑风生。”  (手动滑稽)DBSCAN可能是聚类领域最迷的算法了,它可以发现任何形状的簇,而且实现简单易懂。至于是谁首先提出的我也不晓得了,就不给各位普及历史了emmm,以下是一段抄来的介绍:DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)是一种基于密度的空间聚类算法。 该算法将具有足够密度的区域划分为簇,并在具有噪声的空间数据库中发现任意形状的簇,它将簇定义为密度相连的点的最大集合。

    INPUT:Training_set D,半径Eps,密度阈值MinPts

    OUTPUT:类簇clusters

    DBSCAN需要两个参数即扫描半径Eps与最小包含点数MinPts。扫描半径是最难选定的了,会对结果有较大影响。可以用k距离做大量试验来观察,找到突变点。一般很难一次性选准,还是要做大量实验。MinPts可以理解为标题中的“密度”,一般这个值都是偏小一些,然后进行多次尝试。根据这两个参数可将样本中的点分为三类:

    <1>核点(core point) 若样本

    quicklatex.com-ef1f162c6b48f5df7c4ab41107e7c43f_l3.png的 

    quicklatex.com-0b776365a1378604958a7fdc265a50b8_l3.png邻域内至少包含了MinPts个样本,即 

    quicklatex.com-c40e6576784c49aaaebde14de9933017_l3.png,则称样本点 

    quicklatex.com-ef1f162c6b48f5df7c4ab41107e7c43f_l3.png为核心点。

    <2>边界点(Border point) 若样本

    quicklatex.com-ef1f162c6b48f5df7c4ab41107e7c43f_l3.png的 

    quicklatex.com-0b776365a1378604958a7fdc265a50b8_l3.png邻域内包含的样本数目小于MinPts,但是它在其他核心点的邻域内,则称样本点 

    quicklatex.com-ef1f162c6b48f5df7c4ab41107e7c43f_l3.png为边界点。

    <3>噪音点(Noise)。既不是核心点也不是边界点的点。

    伪代码:

    (这一段copy自他人博客)

    (1) 首先将数据集D中的所有对象标记为未处理状态

    (2) for(数据集D中每个对象p) do(3) if(p已经归入某个簇或标记为噪声) then

    (4) continue;

    (5) else(6) 检查对象p的Eps邻域 NEps(p) ;

    (7) if(NEps(p)包含的对象数小于MinPts) then

    (8) 标记对象p为边界点或噪声点;

    (9) else(10) 标记对象p为核心点,并建立新簇C, 并将p邻域内所有点加入C

    (11) for (NEps(p)中所有尚未被处理的对象q) do(12) 检查其Eps邻域NEps(q),若NEps(q)包含至少MinPts个对象,则将NEps(q)中未归入任何一个簇的对象加入C;

    (13) end for(14) end if(15) end if(16) end for

    动画演示:

    3fd5c49e7f8dd6b449b8c33845c06d50.gif

    5.高斯混合模型(GMM)与EM

    针对GMM,一般采用EM算法进行聚类。这里的“高斯”在二维时便是正态分布,高斯混合模型是对高斯模型进行简单的扩展,GMM使用多个高斯分布的组合来刻画数据分布。因为GMM含有隐变量ak,所以要采用含有隐变量模型参数的极大似然估计法即EM算法。EM比前面所讲算法均要复杂。

    直接求解极大似然函数极值对应的参数比较困难,因此采用迭代逐步近似极大似然函数。首先要获得似然函数L(θ)的一个下限,然后逐步极大化这个下限便可近似获得极大似然函数的极值以及对应的参数。

    似然函数  544a75bc2ead83d8fe069848f368b7f3.png  ,其中Z是隐变量

    根据Jensen不等式L(θ)⩾B(θ,θi),获得L(θ)的下限

    12b540008ba733f6f785d978bbf4d3c3.png

    可见,每次迭代时最大化B(θ,θi)即可逐渐逼近似然函数极大值,进一步化简,极大化B(θ,θi)也就是极大化Q(θ,θi)

    a7aec73f26fdccc10eb8193c502f1394.png

    这里的Q函数便是整个EM算法的核心。其意义是logP(Y,Z|θ)logP(Y,Z|θ)关于P(Z|Y,θi)P(Z|Y,θi)的期望。

    结合上面所讲,EM算法可以分为交替进行的两部分:

    E-step:计算Q函数

    M-step:求Q函数最大值,并得到相应参数θ

    为防止落入局部最优,需要多次迭代。

    算法流程:

    24e96c877c3bceabe03ee7e3940aed5b.png

    因为没怎么用过这个算法,只是有所了解,所以抱歉没法给出更具体详细的实现与改进历史。有兴趣的话可以自行google

    5592251ee7bd08e52d8c1a218d8644e6.png

    6.基于图论聚类

    (没学这个,学完再给补上)

    二.降维(demensionality reduction)

    1.主成分分析(PCA)

    它算是出现最多的降维算法了吧。goodfellow的《深度学习》中对PCA讲解太笼统了,可能很多人看不明白,下面我会尽量直白地说。

    PCA在1901年由pearson提出,1933年hotelling对PCA做了改进推广。指的是将n维特征映射到k维上(k

    下图是一个f:3D->2D的PCA演示

    73557a9ff19d97bdfbf8ed049b4c67c1.png

    INPUT:原始维度n,目标维度k,无标签训练集D

    OUTPUT:转换矩阵M

    具体操作时可以采用特征值分解和奇异值分解两种手段,这里选取了特征值分解,奇异值分解下一个算法会讲到。

    操作步骤:

    <1>数据中心化处理。求D中所有样本的均值xaverage ,并将D中每个样本减去xaverage 得到数据集A

    <2>求得A的协方差矩阵C

    <3>求取矩阵C的特征值以及对应的特征向量

    <4>对特征值按照由大到小顺序排列,选取其中前k大的,然后将其对应的k个特征向量分别作为列向量组成特征向量矩阵E

    <5>将样本点投影到目标空间上,Target=ET * A      ;ET便是要求的转换矩阵

    关于为什么PCA要这样操作,为什么这样操作有效,可以参考以下三个理论:最大方差理论、最小错误理论和坐标轴相关度理论。

    讨论与总结:

    PCA技术一大优点与特色是:它完全没有参数限制。在PCA的计算过程中完全不需要人为的设定参数或是根据任何经验模型对计算进行干预,最后的结果只与数据相关。

    PCA可以用来进行数据压缩,例如100维的向量最后可以用10维来表示,那么压缩率为90%。另外图像处理领域的KL变换使用PCA做图像压缩,人脸检测和匹配。有一个基于PCA实现的特征人脸分析算法,感兴趣的朋友可以查查看。

    2.独立成分分析(ICA)

    独立成分分析并不算严格意义上的降维算法,但它和PCA有着千丝万缕的联系,所以将它放在了PCA后面简单介绍一下。

    首先看一个经典的鸡尾酒宴会问题(cocktail party problem)。假设在party中有n个人,他们可以同时说话,我们也在房间中一些角落里共放置了n个microphone用来记录声音。宴会过后,我们从n个麦克风中得到了一组数据dfbe79ee85e335f34582f7ce5967c7b3.png,i表示采样的时间顺序,也就是说共采集到了m组n维的样本。我们的目标是单单从这m组采样数据中分辨出每个人说话的信号。

    细化一下,有n个信号源7e775b60e2bff40531d4ff306cdb5c73.png19b53fb1a1dd3fba45125b207b9bd48b.png,每一维都是一个人的声音信号,每个人发出的声音信号独立。A是一个未知的混合矩阵(mixing matrix),用来组合叠加信号s,那么        306370a613e6d95d06c75fd71c685fe2.png   ,其中x 和s均是矩阵而非向量。表示成图就是:

    f908ec7805a55f5666eb9cf252a8443e.png

    f3ad8a3504d4e7cbb5b947eda65f5ce1.png

    4bbacc9049f5bd0eb494cdfdbe07e953.png的每个分量都由c294c821920726179558560176ef1a13.png的分量线性表示。A和s都是未知的,x是已知的,我们要根据x来推出s。也就是进行盲信号分离。

    e0cb8c880a0522e399bf33f4da0b2904.png,那么c9a394e33221a9a99f54cc62c930e9e0.png

    将W表示成

    2db65412b1632e101fe5e77fa1d40190.png

    其中e2d7d4b82a03fa8a3566b14409ecfe1c.png,其实就是将2dca1a74fdb2e0b99e3dba10eb135cdf.png写成行向量形式。那么得到:

    15654f11d832e329f013ba51d0138c52.png

    迭代求出W,便可得到d045fd862b5e721d8ad100f2ee2d9ea9.png来还原出原始信号。

    下面是一个实例:

    aaef8929a322cff1e107fc5825f6ffcf.png

    3d99730ff5511d8f10a73763fe94d292.png

    信号还原结果:

    34e0042796b7636b1c8a128c202a1398.png

    4.t-分布领域嵌入式算法(t-SNE)

    第一次见到是在斯坦福cs231的课上,当时那位前辈语速奇快,跟《社交网络》里扎克伯格语速有得一拼。。。。

    t-SNE的前身是2002年提出的SNE算法,2008年Laurens van der Maaten 和 Geoffrey Hinton在SNE基础上又提出t-SNE算法。作为一种非线性降维算法,非常适用于高维数据降到2-3维,进行可视化。日常工作中,涉及到数据可视化的时候一般都会想到去使用这个工具,因此在图像领域应用较多。另外在NLP,基因组数据和语音处理领域也应用广泛。   t-SNE太强了QAQ(再次手动滑稽) 。时间复杂度为O(N^2)。

    t-SNE首先将距离转换为条件概率来表达点与点之间的相似度,距离通过欧式距离算得,S(

    equation?tex=x%5Ei , 

    equation?tex=x%5Ej )表示求 

    equation?tex=x%5Ei%2Cx%5Ej 之间的欧式距离。计算高维原始数据与降维后数据的公式如下:

    01525d9615fcec999b4e394f905579d3.png

    计算完X数据之间的的概率P(

    equation?tex=x%5Ej%7Cx%5Ei )和Z数据之间的概率Q( 

    equation?tex=z%5Ej | 

    equation?tex=z%5Ei )之后,接下来就是我们 的目的就是P和Q连个分布尽可能的接近,也就是要是如下公式的KL散度尽可能小:

    3c6d48a07852db3413192da9e4f2311a.png

    t-SNE和PCA的简单比较:(以下摘自gaotihong的文章)

    from sklearn.manifold importTSNEfrom sklearn.datasets importload_iris,load_digitsfrom sklearn.decomposition importPCAimportmatplotlib.pyplot as pltimportos

    digits=load_digits()

    X_tsne= TSNE(n_components=2,random_state=33).fit_transform(digits.data)

    X_pca= PCA(n_components=2).fit_transform(digits.data)

    ckpt_dir="images"

    if notos.path.exists(ckpt_dir):

    os.makedirs(ckpt_dir)

    plt.figure(figsize=(10, 5))

    plt.subplot(121)

    plt.scatter(X_tsne[:, 0], X_tsne[:,1], c=digits.target,label="t-SNE")

    plt.legend()

    plt.subplot(122)

    plt.scatter(X_pca[:, 0], X_pca[:,1], c=digits.target,label="PCA")

    plt.legend()

    plt.savefig('images/digits_tsne-pca.png', dpi=120)

    plt.show()

    实验结果:

    946be03af81641fb4b99f869721a6422.png

    若想进一步研究t-SNE,可参考:

    (2)Visualizing data using t-SNE, by Van Der Maaten L,Hinton G

    展开全文
  • 根据现有的应力波信号奇异性检测方法,提出并定义了定量信息熵和信息熵的均值矢量模型,其定义基于概率论,数理统计理论... 在定量信息熵方法中,多维信号通过降维处理,可以广泛应用于指纹识别,人脸识别等研究领域。
  • 该方法接收数据进行降维处理,去除其中冗余信息,在几乎不影响算法性能的情况下,降低计算复杂度;利用非圆信号特性,进行阵列扩展,提高数据利用率,增大阵列孔径,最大可估计信源数增加一倍;采用求根类的方法,避免谱峰...
  • 空间平滑MUSIC算法(1) 1. 前言 在上一篇博客中有提到,当多个入射信号相干时,传统MUSIC算法的效果就会不理想。具体原因是多个入射信号相干时,有部分能量就会...先看看传统MUSIC算法相干信号进行DOA估计的效果。 M

    空间平滑MUSIC算法(1)

    1. 前言

    在上一篇博客中有提到,当多个入射信号相干时,传统MUSIC算法的效果就会不理想。具体原因是多个入射信号相干时,有部分能量就会散发到噪声子空间,使得MUSIC算法不能对其进行有效估计。
    针对这种情况,解相干方法被提出。本文主要讲解通过降维处理解相干,之所以叫降维处理是因为这种方法将原阵列拆分成很多个子阵列,通过子阵列的协方差矩阵重构接收数据协方差矩阵,阵列的自由度DOF会随之降低,即可分辨的相干信号数降低。
    先看看传统MUSIC算法对相干信号进行DOA估计的效果。

    MATLAB代码

    % fss.m
    % Code For Music Algorithm
    % The Signals Are All Coherent
    % Author:痒羊羊
    % Date:2020/10/29
    
    clc; clear all; close all;
    %% -------------------------initialization-------------------------
    f = 500;                                        % frequency
    c = 1500;                                       % speed sound
    lambda = c/f;                                   % wavelength
    d = lambda/2;                                   % array element spacing
    M = 20;                                         % number of array elements
    N = 100;                                        % number of snapshot
    K = 6;                                          % number of sources
    coef = [1; exp(1i*pi/6);... 
            exp(1i*pi/3); exp(1i*pi/2);... 
            exp(2i*pi/3); exp(1i*2*pi)];            % coherence coefficient, K*1
    doa_phi = [-30, 0, 20, 40, 60, 75];             % direction of arrivals
    
    %% generate signal
    dd = (0:M-1)'*d;                                % distance between array elements and reference element
    A = exp(-1i*2*pi*dd*sind(doa_phi)/lambda);      % manifold array, M*K
    S = sqrt(2)\(randn(1,N)+1i*randn(1,N));         % vector of random signal, 1*N
    X = A*(coef*S);                                 % received data without noise, M*N
    X = awgn(X,10,'measured');                      % received data with SNR 10dB
    
    %% calculate the covariance matrix of received data and do eigenvalue decomposition
    Rxx = X*X'/N;                                   % covariance matrix
    [U,V] = eig(Rxx);                               % eigenvalue decomposition
    V = diag(V);                                    % vectorize eigenvalue matrix
    [V,idx] = sort(V,'descend');                    % sort the eigenvalues in descending order
    U = U(:,idx);                                   % reset the eigenvector
    P = sum(V);                                     % power of received data
    P_cum = cumsum(V);                              % cumsum of V
    
    %% define the noise space
    J = find(P_cum/P>=0.95);                        % or the coefficient is 0.9
    J = J(1);                                       % number of principal component
    Un = U(:,J+1:end);
    
    %% music for doa; seek the peek
    theta = -90:0.1:90;                             % steer theta
    doa_a = exp(-1i*2*pi*dd*sind(theta)/lambda);    % manifold array for seeking peak
    music = abs(diag(1./(doa_a'*(Un*Un')*doa_a)));  % the result of each theta
    music = 10*log10(music/max(music));             % normalize the result and convert it to dB
    
    %% plot
    figure;
    plot(theta, music, 'linewidth', 2);
    title('Music Algorithm For Doa', 'fontsize', 16);
    xlabel('Theta(°)', 'fontsize', 16);
    ylabel('Spatial Spectrum(dB)', 'fontsize', 16);
    grid on;
    

    在这里插入图片描述
    可以看到,对于相干信号,传统MUSIC算法DOA估计效果很差。

    2. 空间平滑算法

    降维处理解相干方法主要包括空间平滑类处理算法,而空间平滑类处理算法可以分成前向空间平滑算法(FSS)、后向平滑算法(BSS)、前后向平滑算法(FBSS),正如上面所说,这些算法的估计效果很好,但是损失了阵列孔径,导致可分辨的相干信号数降低。

    2.1 线性阵列信号模型

    线阵模型
    关于这个线性阵列中符号的具体说明可以参考上一篇博文。子空间方法——MUSIC算法

    2.2 前向空间平滑算法

    前向空间平滑算法将阵列分成多个互相重叠的子阵列,然后对子阵接收数据的协方差矩阵作平均。当子阵阵元数目大于等于相干信号数时,可以有效解相干。
    前向空间平滑
    如上图所示,我们把M元阵列均匀分成L个子阵列,每个子阵列有N=M-L+1个阵元。以最左边的子阵列为参考阵列,定义第J个子阵的接收数据为:
    XJf=[xJ,xJ+1,,xJ+N1]X_{J}^{f}=\left[x_{J}, x_{J+1}, \cdots, x_{J+N-1}\right]那么第J个子阵接收数据的协方差矩阵(也称作空间平滑矩阵)可以表示为
    RNjj=A1Dj1Rs(Dj1)HA1H+σ2INj=1,2,,LR_{N}^{j j}=A_{1} D^{j-1} R_{s}\left(D^{j-1}\right)^{H} A_{1}^{H}+\sigma^{2} I_{N} \quad j=1,2, \cdots, L其中,D=diag[ej2πdλsinθ1,ej2πdλsinθ2,ej2πdλsinθR]D=\operatorname{diag}\left[\mathrm{e}^{-j\frac{-2 \pi d}{\lambda} \sin \theta_{1}}, \mathrm{e}^{-j\frac{2 \pi d}{\lambda} \sin \theta_{2}}, \cdots \mathrm{e}^{-j\frac{2 \pi d}{\lambda} \sin \theta_{R}}\right],A1为第一个子阵即参考阵列的流型矩阵。
    因此,前向空间平滑后的协方差矩阵可以由各个子阵的协方差矩阵求平均得到。
    R~f=1Lj=1LRNjj\tilde{R}^{f}=\frac{1}{L} \sum_{j=1}^{L} R_{N}^{j j}利用前向空间平滑协方差矩阵和MUSIC算法就可以分辨出多个相干信号的方位。可以证明,该方法最大可以检测M/2个相干的信号。

    MATLAB代码

    % Code For Music Algorithm
    % The Signals Are All Coherent
    % Author:痒羊羊
    % Date:2020/10/29
    
    clc; clear all; close all;
    %% -------------------------initialization-------------------------
    f = 500;                                        % frequency
    c = 1500;                                       % speed sound
    lambda = c/f;                                   % wavelength
    d = lambda/2;                                   % array element spacing
    M = 20;                                         % number of array elements
    N = 100;                                        % number of snapshot
    K = 6;                                          % number of sources
    L = 10;                                         % number of subarray
    L_N = M-L+1;                                    % number of array elements in each subarray
    coef = [1; exp(1i*pi/6);... 
            exp(1i*pi/3); exp(1i*pi/2);... 
            exp(2i*pi/3); exp(1i*2*pi)];            % coherence coefficient, K*1
    doa_phi = [-30, 0, 20, 40, 60, 75];             % direction of arrivals
    
    %% generate signal
    dd = (0:M-1)'*d;                                % distance between array elements and reference element
    A = exp(-1i*2*pi*dd*sind(doa_phi)/lambda);      % manifold array, M*K
    S = sqrt(2)\(randn(1,N)+1i*randn(1,N));         % vector of random signal, 1*N
    X = A*(coef*S);                                 % received data without noise, M*N
    X = awgn(X,10,'measured');                      % received data with SNR 10dB
    
    %% reconstruct convariance matrix
    %% calculate the covariance matrix of received data and do eigenvalue decomposition
    Rxx = X*X'/N;                                   % origin covariance matrix
    Rf = zeros(L_N, L_N);                           % reconstructed covariance matrix
    for i = 1:L
        Rf = Rf+Rxx(i:i+L_N-1,i:i+L_N-1);
    end
    Rf = Rf/L;
    [U,V] = eig(Rf);                                % eigenvalue decomposition
    V = diag(V);                                    % vectorize eigenvalue matrix
    [V,idx] = sort(V,'descend');                    % sort the eigenvalues in descending order
    U = U(:,idx);                                   % reset the eigenvector
    P = sum(V);                                     % power of received data
    P_cum = cumsum(V);                              % cumsum of V
    
    %% define the noise space
    J = find(P_cum/P>=0.95);                        % or the coefficient is 0.9
    J = J(1);                                       % number of principal component
    Un = U(:,J+1:end);
    
    %% music for doa; seek the peek
    dd1 = (0:L_N-1)'*d;
    theta = -90:0.1:90;                             % steer theta
    doa_a = exp(-1i*2*pi*dd1*sind(theta)/lambda);   % manifold array for seeking peak
    music = abs(diag(1./(doa_a'*(Un*Un')*doa_a)));  % the result of each theta
    music = 10*log10(music/max(music));             % normalize the result and convert it to dB
    
    %% plot
    figure;
    plot(theta, music, 'linewidth', 2);
    title('Music Algorithm For Doa', 'fontsize', 16);
    xlabel('Theta(°)', 'fontsize', 16);
    ylabel('Spatial Spectrum(dB)', 'fontsize', 16);
    grid on;
    

    前向空间平滑MUSIC
    可以看到,在6个入射信号均相干的情况下,基于前向平滑的MUSIC算法能较好地对其进行DOA估计,但仍存在估计精度的问题,比如真实入射角度为75°的信号的方位被估计成了74.2°。
    后向空间平滑MUSIC算法和前/后向空间平滑MUSIC算法在下一篇博客中讲解。
    基于空间平滑MUSIC算法的相干信号DOA估计(2)

    参考论文:《基于空间平滑MUSIC算法的相干信号DOA估计,陈文锋,吴桂清》
    代码Code均为原创。
    欢迎转载,表明出处。

    展开全文
  • 该方法通过设计离散时间傅里叶变换(Discrete Time Fourier Transform,DTFT)快速算法、降维处理加权融合频谱矩阵和1/3主瓣相关性分析处理等措施来降低算法计算量,提高实时性。重点上述三项措施的原理进行了阐述...
  • 图像处理之低通滤波

    万次阅读 多人点赞 2018-08-25 18:37:56
    在图像处理或者计算机视觉应用中,在正式图像进行分析处理前一般需要一个预处理的过程。预处理是图像作一些诸如降维、降噪的操作,主要是为后续处理提供一个体积合适的、只包含所需信息的图像。这里通常会用到...
  • opencv图像平滑处理

    2017-01-04 11:15:54
    在图像处理或者计算机视觉应用中,在正式图像进行分析处理前一般需要一个预处理的过程。预处理是图像作一些诸如降维、降噪的操作,主要是为后续处理提供一个体积合适的、只包含所需信息的图像。这里通常会用到...
  • 在图像处理或者计算机视觉应用中,在正式图像进行分析处理前一般需要一个预处理的过程。预处理是图像作一些诸如降维、降噪的操作,主要是为后续处理提供一个体积合适的、只包含所需信息的图像。这里通常会用到...
  • kpca主成分分析

    2013-05-12 22:50:38
    kpca主要用于信号处理非线性信号进行数据降维,提取特征量
  • 在图像处理或者计算机视觉应用中,在正式图像进行分析处理前一般需要一个预处理的过程。预处理是图像作一些诸如降维、降噪的操作,主要是为后续处理提供一个体积合适的、只包含所需信息的图像。这里通常会用到...
  • 采用核主成分分析特征进行降维处理,提取有用信息、降低计算量,采用支持向量机构建定位特征与物理位置的非线性映射模型,并采用粒子群算法模型参数进行优化,进行了仿真实验。结果表明,该算法提高了室内定位...
  • ICA与PCA的区别

    2019-01-14 14:24:26
    虽然都是数据(图像)进行降维处理,但得到的结果却不相同:1、PCA不提取相关属性,只做降维,ICA不仅提取相互独立的属性还降维。 #得到的结果不同 PCA提取出来的是最能表示原始事物的特征,ICA是使得每个分量最大...
  • 在该方法中,首先肺音信号进行小波分解,然后将小波分解得到的小波系数转化成小波能量特征向量,接着使用线性判别分析法该特征向量进行降维处理,得到新的低维特征向量,最后用SVM低维特征进行识别。...
  • 提出了一种将核主元分析法(KPCA)...运用KPCA方法原始特征集进行降维处理,构造核主元特征集;将筛选后的特征向量作为GRNN网络的输入,实现了数控机床不同复合故障的模式识别,并与其他3种网络对比,验证了该方法的优越性。
  • 几种典型的脉内调制信号进行 了仿真 分析 ,研究了 研究了 研究了 雷达侦察系统接收处理信号参数的流程和 雷达侦察系统接收处理信号参数的流程和 雷达侦察系统接收处理信号参数的流程和 雷达侦察系统接收处理信号...
  • 首先提取设备振动信号全寿命周期的时域、频域、时频域的特征,经过初步筛选后组成新的特征集,使用PCA方法进行降维处理;然后利用降维后的数据,训练一个全寿命周期CHMM用来确定退化状态数目,再针对每个退化...
  • 降维处理转化为一堆序列,再将一维序列与m序列做扩频调制,音频信号进行分段做自适应小波变换,把经过扩频调制的 水印信号经过量化处理嵌入到自适应小波变换后的系数中.模拟实验证明,谊方击具有较好的不可感知性...
  • 《小波分析及其在数字图像处理中的应用》可供在信号处理、图像处理等领域从事科学研究的广大科技工作者参考,也可以作为高年级本科生和研究生有关课程的教材或教学参考书。 目录 第1章 绪论 1.1 背景 1.2 小波分析的...
  • 在由振动信号时域和频域统计指标构造的多维特征空间中,通过LLE算法多维特征空间进行非线性降维处理,得到初始低维流形结构。将低维流形结构导入LSSVM中进行学习训练与故障辨识。应用于滚动轴承故障分析表明,该方法...
  • 【机器学习】PCA

    2018-06-03 17:57:11
    PCA是一种线性降维方法,通过求数据集的协方差矩阵最大的特征值对应的特征向量,由此找到数据方差最大的几个方向,数据达到降维的效果。 PCA处理前需要进行数据归一化 在信号处理中认为信号具有较大的方差,噪声有...
  • Feature Embedding 特征嵌入,将数据转换(降维)为固定大小的特征表示(矢量),以便于处理和计算...embedding的主要目的是(稀疏)特征进行降维,它降维的方式可以类比为一个全连接层(没有激活函数),通过 ...
  • 一 特征嵌入,将数据转换(降维)为固定大小的特征表示(矢量),以便于处理和...embedding的主要目的是(稀疏)特征进行降维,它降维的方式可以类比为一个全连接层(没有激活函数),通过 embedding 层的权重...
  • 以故障电弧电流信号为研究对象,时间序列进行时域、频域特性分析,提取故障电流在时域、频域的特征参数,构建串联型故障电弧的特征向量,采用主成分分析方法特征向量进行去冗余、降维处理.最后以主成分分析后的特征...
  • 针对这一问题,提出通过利用独立成分分析(independent component analysis,ICA)RSS信号进行数据降维和去相关处理,提取独立分量;然后采用核典型相关分析(kernel canonical correlation analysis,KCCA)来...

空空如也

空空如也

1 2 3 4 5 6
收藏数 117
精华内容 46
关键字:

对信号进行降维处理