1. 问题:

     1、上节提到的PCA是一种数据降维的方法,但是只对符合高斯分布的样本点比较有效,那么对于其他分布的样本,有没有主元分解的方法呢?

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

     将第二个问题细化一下,有n个信号源,每一维都是一个人的声音信号,每个人发出的声音信号独立。A是一个未知的混合矩阵(mixing matrix),用来组合叠加信号s,那么

     

     x的意义在上文解释过,这里的x不是一个向量,是一个矩阵。其中每个列向量是

     表示成图就是

     

     这张图来自

     http://amouraux.webnode.com/research-interests/research-interests-erp-analysis/blind-source-separation-bss-of-erps-using-independent-component-analysis-ica/

     

     的每个分量都由的分量线性表示。A和s都是未知的,x是已知的,我们要想办法根据x来推出s。这个过程也称作为盲信号分离。

     令,那么

     将W表示成

     

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

     

2. ICA的不确定性(ICA ambiguities)

     由于w和s都不确定,那么在没有先验知识的情况下,无法同时确定这两个相关参数。比如上面的公式s=wx。当w扩大两倍时,s只需要同时扩大两倍即可,等式仍然满足,因此无法得到唯一的s。同时如果将人的编号打乱,变成另外一个顺序,如上图的蓝色节点的编号变为3,2,1,那么只需要调换A的列向量顺序即可,因此也无法单独确定s。这两种情况称为原信号不确定。

     还有一种ICA不适用的情况,那就是信号不能是高斯分布的。假设只有两个人发出的声音信号符合多值正态分布,,I是2*2的单位矩阵,s的概率密度函数就不用说了吧,以均值0为中心,投影面是椭圆的山峰状(参见多值高斯分布)。因为,因此,x也是高斯分布的,均值为0,协方差为

     令R是正交阵。如果将A替换成A’。那么。s分布没变,因此x’仍然是均值为0,协方差

     因此,不管混合矩阵是A还是A’,x的分布情况是一样的,那么就无法确定混合矩阵,也就无法确定原信号。

3. 密度函数和线性变换

     在讨论ICA具体算法之前,我们先来回顾一下概率和线性代数里的知识。

     假设我们的随机变量s有概率密度函数(连续值是概率密度函数,离散值是概率)。为了简单,我们再假设s是实数,还有一个随机变量x=As,A和x都是实数。令是x的概率密度,那么怎么求

     令,首先将式子变换成,然后得到,求解完毕。可惜这种方法是错误的。比如s符合均匀分布的话(),那么s的概率密度是,现在令A=2,即x=2s,也就是说x在[0,2]上均匀分布,可知。然而,前面的推导会得到。正确的公式应该是

     

     推导方法

     

     

     更一般地,如果s是向量,A可逆的方阵,那么上式子仍然成立。

4. ICA算法

     ICA算法归功于Bell和Sejnowski,这里使用最大似然估计来解释算法,原始的论文中使用的是一个复杂的方法Infomax principal。

     我们假定每个有概率密度,那么给定时刻原信号的联合分布就是

     

     这个公式代表一个假设前提:每个人发出的声音信号各自独立。有了p(s),我们可以求得p(x)

     

     左边是每个采样信号x(n维向量)的概率,右边是每个原信号概率的乘积的|W|倍。

     前面提到过,如果没有先验知识,我们无法求得W和s。因此我们需要知道,我们打算选取一个概率密度函数赋给s,但是我们不能选取高斯分布的密度函数。在概率论里我们知道密度函数p(x)由累计分布函数(cdf)F(x)求导得到。F(x)要满足两个性质是:单调递增和在[0,1]。我们发现sigmoid函数很适合,定义域负无穷到正无穷,值域0到1,缓慢递增。我们假定s的累积分布函数符合sigmoid函数

     

     求导后

     

     这就是s的密度函数。这里s是实数。

     如果我们预先知道s的分布函数,那就不用假设了,但是在缺失的情况下,sigmoid函数能够在大多数问题上取得不错的效果。由于上式中是个对称函数,因此E[s]=0(s的均值为0),那么E[x]=E[As]=0,x的均值也是0。

     知道了,就剩下W了。给定采样后的训练样本,样本对数似然估计如下:

     使用前面得到的x的概率密度函数,得

     

     大括号里面是

     接下来就是对W求导了,这里牵涉一个问题是对行列式|W|进行求导的方法,属于矩阵微积分。这里先给出结果,在文章最后再给出推导公式。

     

     最终得到的求导后公式如下,的导数为(可以自己验证):

     

     其中是梯度上升速率,人为指定。

     当迭代求出W后,便可得到来还原出原始信号。

     注意:我们计算最大似然估计时,假设了之间是独立的,然而对于语音信号或者其他具有时间连续依赖特性(比如温度)上,这个假设不能成立。但是在数据足够多时,假设独立对效果影响不大,同时如果事先打乱样例,并运行随机梯度上升算法,那么能够加快收敛速度。

     回顾一下鸡尾酒宴会问题,s是人发出的信号,是连续值,不同时间点的s不同,每个人发出的信号之间独立(之间独立)。s的累计概率分布函数是sigmoid函数,但是所有人发出声音信号都符合这个分布。A(W的逆阵)代表了s相对于x的位置变化,x是s和A变化后的结果。

5. 实例

     

     s=2时的原始信号

     

     观察到的x信号

     

     使用ICA还原后的s信号

6. 行列式的梯度

     对行列式求导,设矩阵A是n×n的,我们知道行列式与代数余子式有关,

     

     是去掉第i行第j列后的余子式,那么对求导得

     

     adj(A)跟我们线性代数中学的是一个意思,因此

     

ICA--独立成分分析(Independent Component Analysis)相关推荐

  1. 结合matlab代码案例解释ICA独立成分分析原理

    目录 介绍 什么是ICA? 对数据进行白化 ICA算法 ICA特性 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 QQ交流群:941473018 关于ICA,可以查看Rose小哥之前分享的 ...

  2. ICA独立成分分析去除EEG伪影

    目录 介绍 ICA假设 方法 组件投影 实验数据样本 移除眨眼和肌肉伪影 一些严重污染的脑电数据 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 .QQ交流群1:903290195(已满,请 ...

  3. ICA独立成分分析去除脑电伪影

    今天分享的这篇利用独立成分分析ICA去除EEG伪影是翻译自jung大神的一篇文章. 目录 1 介绍 2 方法 3 实验数据样本 1 介绍 眼动,眨眼,肌肉,心脏和线的噪音会严重污染脑电图活动,这在脑电 ...

  4. 鸡尾酒宴会问题---ICA独立成分分析[原创]

    作者:einyboy or alert (注本文有些图片来源于网络) 鸡尾酒宴会问题:       假设在party中有n个人,他们可以同时说话,我们也在房间中一些角落里共放置了n个声音接收器(Mic ...

  5. ICA(独立成分分析)笔记

    ICA又称盲源分离(Blind source separation, BSS) 它假设观察到的随机信号x服从模型,其中s为未知源信号,其分量相互独立,A为一未知混合矩阵. ICA的目的是通过且仅通过观 ...

  6. ICA独立成分分析—FastICA基于负熵最大

    1. 概念 官方解释:利用统计原理进行计算的方法,是一种线性变换. ICA分为基于信息论准则的迭代算法和基于统计学的代数方法两大类,如FastICA算法,Infomax算法,最大似然估计算法等. 这里 ...

  7. 如何使用ICA(独立成分分析)来去除伪影

    关于使用ICA,可以采用mne的库来进行实现.具体可以查看官网:ICA使用 ICA的大致原理是:找到一个分解的矩阵,将原始数据分解成时间独立和空间固定的分量之和.然后先根据自己的经验去除伪迹分量,再通 ...

  8. 【机器学习】【ICA-2】ICA独立成分分析的原理 + ICA前的预处理(中心化+漂白)

    前情提示:ICA算法成立的前提是:假设每个人发出的声音信号各自独立. 1.鸡尾酒宴会问题 n个人在一个房间开party,房间的不同配置摆放了n个声音接收器,每个接收器在每个时刻同时采集到n个人声音的重 ...

  9. lda 吗 样本中心化 需要_机器学习 —— 基础整理(四):特征提取之线性方法——主成分分析PCA、独立成分分析ICA、线性判别分析LDA...

    本文简单整理了以下内容: (一)维数灾难 (二)特征提取--线性方法 1. 主成分分析PCA 2. 独立成分分析ICA 3. 线性判别分析LDA (一)维数灾难(Curse of dimensiona ...

  10. 学习笔记 | 独立成分分析(ICA, FastICA)及应用

    学习笔记 | 独立成分分析[ICA, FastICA]及应用 1 背景说明 2 算法原理 2.1 ICA简介 2.2 形式化表达 3 算法步骤与代码 4 算法改进:FastICA 5 ICA实例与应用 ...

最新文章

  1. 广东java工资一般多少_广东java工资待遇,广东java工资一般多少,广东java工资底薪最低多少...
  2. python网上编程课程-什么是Python编程课程
  3. Python爬虫应用实战-如何对爬取的数据进行数据存储?
  4. 对于get请求是视频,同时将视频流传给前端问题
  5. 记录一下Junit测试MongoDB,获取MongoTemplate
  6. Cannot access repo1 (http://repo1.maven.org/maven2) in offline mode and the
  7. Truncated incorrect DOUBLE value: 'xxx'的解决方法
  8. 在windows下安装webpy
  9. sql 取两个表_图撕SQL表联结
  10. c++删除数组中重复元素_LeetCode题目26:删除排序数组中的重复项
  11. HiveQL学习笔记(五):Hive练习题
  12. 正则表达式 RegExp【详解】
  13. 什么是CMPP、SGIP、SMGP三大运营商接口协议
  14. QLabel控件功能示例
  15. 华为u8500在usb模式下logcat无法打印信息
  16. 周志华西瓜书课后习题答案总目录
  17. ora-00001违反唯一约束
  18. dede php addfilter,织梦dede筛选功能+伪静态
  19. 明德文理学院的计算机,今日迎来全球计算机强校CMU卡耐基梅隆,多少中国学生获得青睐?...
  20. iOS面试题经典语录(持续收集中...)

热门文章

  1. python版mapreduce题目实现寻找共同好友
  2. iOS开发 - 获取时间段
  3. 探讨DHCP之一:了解DHCP
  4. 北京站售票员内部大量出票无耻的售票员(转)
  5. 数据库-ADONET-使用强类型DataSet
  6. 轻松搭建博客平台-开源ASP.NET 博客Subtext 的安装
  7. vue-cli Invalid Host header
  8. 一秒完成充电,超级量子电池即将问世
  9. centos7使用sendmail发送邮件
  10. 京东商城-商城研发部 算法岗面试