在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → 史上最直白的ICA教程

史上最直白的ICA教程

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:0.87M
  • 下载次数:4
  • 浏览次数:100
  • 发布时间:2021-02-02
  • 实例类别:一般编程问题
  • 发 布 人:好学IT男
  • 文件格式:.pdf
  • 所需积分:2
 

实例介绍

【实例简介】
史上最直白的ICA教程,免积分,求人品。
令: 则 设随机变量s概卒密度函数是ps,(s;),其中p的右下角s;表示随机变量标 括号中的;表示自变量。 由于S的n个成员s;是相互独立的,所以S的概率密度函数为 S 12) 设X的概率密度舀数是px(x),如何根据8的概率密度函数求px(x)呢? 这是可以做到的。 设随机向量X的概率分布函数是FX(x),根据概率分布函数和概率密度 函数的关系可知 13 同理,设随机向量S的祝率分布函数是Fs(s),则: ps(s)-Fs( (14 根据概率分布函数的定义,有 Fx(a)=P(X (15) Fs(s)=P(S <s (16) 那么 px(a (P(X <x)) (P(7<s)) (P(<W) P(S< W (Fs(Wx)‖ (17) I Fs(W r) (Wx)(Wx)‖ Wl IIPs, (w;a) 其中,上式的笫2个等号是概牟密度函数的定义,第3个等号是做变量等 价代换,以免直接从X变换到S导致思维混乱,第4个等号到第6个等号是 逐步将X代换到S,第7个等号是回到S的概率分布函数定义,笫8个等号到 第10个等号是求导 从第5个等号开始,对整个等式取行列式运算,因为px(x)一定是标量, 对标量做行列式运算是它自身。那么,到了第10个等号,又因为ps(WX) 定是标量,所以可以从行列式运算拿到外面。这里避免的问題的是,如果 不对整个等式取行列式,得到的结果是矩阵W而不是W,这是没有道理 的 注意,在上式中,x是一个向量,且x∈Rx,U;∈R×m,p2(Ss;)是一 个单自变量的西数,px(x)是一个多自变量函数,它的自变量是x里的多个 变量,这祥等式左右的每一步就清晰了 下一步是裉据数据集计算W的值,从概羍的角度来说,如果数据集已经 记录,那么让这个数据集出现概率最大的W就是最优值。 数据集也就是式(8)出现的概率是 =1I(wI2(0d) (18) 其中,∏表示连乘,d是D的第列,也就是 1 d,2 (19) d d的物理意义,也就是第i次记录随机向量X得到的n个值,这n个值分別 对应η个mz随机变量。注意,不要把d和m;混淆,前者表示冂的一列数据, 后者是粗体表示一个随机变量。 式(①18)有最大值,当它取最大值时候的Ⅳ就是最优解。如果以梯度下降 法求解,需要计算它对W的偏导,直接求偏导比较复杂,故对它两端取自 然对数,则 L-∑(nw+∑(mp3(on) ∑∑m(;d)+mn|v‖ 当上式取最大值的时候,Ⅰ也同时取最大值,所以求门的最大值等价于求上 式的最大值 用梯度下降法求解上式,需要计算m。这是一个复杂的过程,先从计 4 算?开始,它表示W的笫u行第v列的一个成员: WUu. 2 aps, (udi) m a wll un台n3) dwn, W dw,, n ps, (w; di) m 台y(a) (21) W (-1)4+aMa Ps2(0 其中,(-1)210Mm.是mu的代数余子式,雪nmx的值要报据n(s)的具 体形式求解 对于p:(s)’如果在没有任何先验信息的情况下,是无法求解的。如果 要求解上式,需要对它做一定的假设,在合理的假设下,可以达到相当不 错的近似结果 设随机变量;的概率分布函数是 sigmoid函数,因为它是递増:可微,且 最大值不超过1,也就是说 22 +已 那么,概辛密度函数就是 psi lsi (1+e°)2 所以有 P3(1d2) 1+cnb)2=a(1+c2a)2 (24) 故 Ops(w di)=wud di (1 +euud, )-2-2eueud: (1 +e d: -etud: d (1+ep(1-2, lewd (25) 1+e di, ,Ps,wjnd 1+ewd 其中,d,2是d1的第υ行的一个成员。 因此 aps, (wa di Ps, wadi aw (-1)4+M i=1 di.Psu (wu dii ud =1(2 +mm(-1)4+Ma(26 d ∑ n (-1)+0M2 1+ 现在对上式进行矩阵化,令: K=wD 其中,K∈Rxm,W∈RX,D∈Rxm,那么,k,就是K的第v行的 第i列的一个成员,令: 28 令 g(k1、1)9(k1 2 k2.1)9(k2,2 g(k2.m) 29) g(kn,1)9(kn,2) 那么,就得到 ainL 十 ∥n(少a+Muo n 其中,z1是Z的第u行,d,是D的第v列。 于是,对W而言,则有 ainL O=2D+、mn (W 其中,W*是W的伴随矩阵,(W*)7是W*的转置,它的第行第j列的元素 是2的代数余子式,也就是(-1)2+M 根据矩阵和它的伴随阵的性质可知 v*=‖W‖ (32) 其中,I是单位矩阵。根据上两式可知 ainl m ZD+ (W W ZD+ (|w|‖W zD+m(W-1)2 那么,在梯度下降法求解W的吋候,更新公式是: W=W+a(z i m(w-) (34) 其中,α是学习速率。 最后的结论简洁且美, Vcrwcilc doch、 du bist so schon。然并卵,按照 这个结果实现代码,计算结果是不合理的,无法恢复原始信号。于是,在 实现 FastICA之后,可以认为本推导缺少一些黑魔法,至于到底缺少什么并 不知道,限于时间关系和实际需求,不再继续研究下去。 4 FastICa FastICa计算性能更好。 Indcpdcnt Componct analysis》一书在第8章给 出了 FastICA的算法流程,如下 1. Center the data to make its mean zero 2, whiten the data to give Z 3. Choose m, the number of independent components to estimate 4. Choose initial values for the wi, i= 1.,m, each of unit norm Orthogonalize the matrix W as in step 6 below 5. For every i=1,.,m2, let w;(( z))-cfg(w z)Jw, where g is defined, e.g., as in(8.31)-(8.33) 6. Do a symmetric orthogonalization of the matrix W=(w1, .,Wm)by w←(Ww)-l/2w, (8.51) or by the iterative algorithm in Sec. 8.4.3 7. If not converged, go back to step 5 Table 8. 4 The FastICA algorithm for estimating several ICs, with symmetric orthogonal ization. The expectations are estimated in practice as sample averages Figurc 1: FastIca 5白化 FastICA需要对数据做白化处理。设x是一个随机变量,存在一个线性变 换V将它变换成 z=Vu (35) 且 E{z2} (36 那么,V就是白化变换矩阵 x的协方差阵是C2=E{xm},C=PDP,P是Cm的单位特征向 量,D是Cn的特征值组成的对角阵。那么,V的值就是 V=D 2P 证明如下:根据相关性质,有PT=P-1,由于D对角阵,则(D-2) 那么 EVc(va =vca vj EVPDPIVI EVPDPVT3 ED2PL PDP P(2) (38 EID 2DD 2J E{} 6代码实现 基于 python2.7, matplot lib,mmpy实现ICA,主要参考 sklean的 FastICa实 现 #!/usr/bin/env python #f Fastica from ica book, table 8. 4 import math import random por tplotlib. pyplot as plt from numpy import本 components 2 def f1(x, period =4) return 0.5*(x-math floor(x/period)*period) def create data(:: 井 data number 500 #data time T= [0.1*xi for xi in range(o, n) #source s array([[sin(xi) for xi in T], [f1(xi) for xi in T]] float32) fmix matrix A= array([[0.8,0.2],[-0.3,-0.7]],f1oat32) T, s, dot(A, S) def whiten(x) x mean =x mean(axis=-1) x -=mean[:, newaxis] #whiten a dot(x,x transpose()) d,E= linalg. eig(A) D2 =linalg. inv(array([[d[o] [1]]],f1oat32)) D2[0,0]=sqrt(D2[0,0]);D2[1,1]=sqrt(D2[1,1]) v dot(d2, E transpose()) return dot(v. X) def -1ogcosh(x, fun_args=None, alpha =1) g 1 pha );g-x=gx**2 g-x g-x lpha return gx, g_x mean(axis=-1) def decorrelation(w) #black magic s, u=linalg. eigh(dot(W, W T) return dot(dot(u *(1./ Bgrt(s) def do fastica(x) n,m =X shape; p= float(m);g=-logcosh #black magic sqrt(X shape [1]) #creat n= ones((n, n) float32) for i in range (n) for j In range(l W[i, j]= random randon() maxiter =200 for in range(maxIter): gwtx, g-wtx =g do_decorrelation(dot(gtx, XT)/p-g_wtx[ newaxis * w lim max( abs(ab ag(dot〔W1,W.T))) W=W1 if lim <0,0001 9 def show data(t, S) plt plot (T, [S[o,i] for i in range(s shape[1])], marker="* lt plot(T, [S[1, i] for i in range(s shape[1])], marker="o plt. show ( def main( s, D= create data( Whiten, K= whiten(d) w= do fastica(whiten) #Sr: reconstructed source Sr dot(dot(w, K), D) show data(t, s) show data(t, Sr) if name main: an 10 【实例截图】
【核心代码】

标签:

实例下载地址

史上最直白的ICA教程

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警