当前位置:编程学习 > C#/ASP.NET >>

有没有高手帮忙看下这两个算法?

主成分分析
样本编号 原数据变量
X1   X2 ……..Xp 主成分新变量
Y1   Y2……Yp
1 x 11  x12 …..x1p y 11  y12…….y1p
2 x 21  x22……x2p y 21  y22…….y2p

n x n1  xn2 …….xnp y n1  yn2…….ynp
(1) 求样本数据矩阵X的协方差矩阵∑。
(2) 求协方差矩阵∑的特征值,并按降序排列,如λ1≥λ2≥…..
(3) 求对应于个特征值的单位特征向量u1,u2,….,并作为相应的主轴
(4) 按下列计算某个特征值的贡献率νi:
νi=λi/∑λk(其中k=1,2,……,p)
(5) 根据各特征值贡献率的大小,依次选取所需要的第一主轴,第二主轴,直至第m主轴
(6) 利用下式计算样本数据矩阵X的第i主成分Yi:
Yi=uiTX     i=1,2,……..,m


偏最小二乘法
偏最小二乘法(PSL法)是一种较新和常见的多元统计分析方法,其数学基础是主成分分析。偏最小二乘法主要用于建立多因变量与多自变量的近世影射关系,并能够克服变量之间的多重共线问题,使分析结果的可靠性和影射关系的稳健性提高。
    设有p个因变量{ yk,k=1,2,…. P}和m个自变量{ xj,j=1,2,…. M}。为研究因变量和自变量的统计关系,观测n个样本点,由此构成了自变量的n×m阶数矩阵X,因变量的n×p阶数矩阵Y。为了方便叙述,在分析前,需对数据阵进行标准化处理(中心化和压缩化处理),记对自变量数据阵的标准化处理结果E0,对因变量数据阵的标准化处理结果F0。
在上述基础上,偏最小二乘法将采用迭代算法,在一个满意的精度下,建立自变量和因变量之间的回归影射关系。
计算方法推导:
为了表述方便,在以下的分析中,均使用远自变量和原因变量标准化后的数据E0和F0
1    首先寻找能国满足上述2个要求的第一主轴w1和c1以及相应的第一主成分t1和u1,t1= E0 w1,u1= F0 c1(‖w1‖=‖c 1‖=1)。寻找方法如下:
为了使主成分t1和u1能携带它们各自原数据系统的最大变异的同时,又使t1和u1的相关程度进可能大,则应该有下式最最大值:
max Cov(t1, u1)=√ ̄ ̄Var(t1) ̄ ̄ ̄Var(u1) ̄ ̄(开根号)r(t1, u1)
式中,Cov(,)是协方差算子;Var(.)是方差算子;r(t1, u1)是t1和u1的相关系数;
对于标准化数据t1和u1,有:Cov(t1, u1)= w1TE0T F0 c1 
因此,上式是在‖w1‖=‖c 1‖=1的约束下去求w1TE0T F0 c1的最大值。可以得证,w1是对应于E0T F0 F0 T E0最大特征值的特征向量,c 1是对应于F0 T E0 E0T F0最大特征值的特征向量。由此3第一主轴w1和c 1及相应的主成分t1和u1。
然后,分别求E0 和F0对自变量第一主成分t1的回归方程。
E0j=pj1 t1+ E1j             j=1,2,……m
F0k= rk1 t1+ F1k           k=1,2,……p
式中,pj1 和rj1分别是E0j 和F0k的回归系数;E1j 和F1k分别是回归后的残差项。pj1 和rj1分别有下述两式给出:
pj1 = E0j T t1/‖t1‖2
rk1= F0kT t1/‖t1‖2
       2     用残差矩阵E1 =(E11, E12,…….., E1m)和F1 =(F11, F12,…….., F1p)取代E0 和F0,求第二主轴和主成分,同样可得:
       t2= E1 w2,u2= F1 c 2(‖w1‖=‖c 1‖=1)
     pj2 = E1j T t2/‖t2‖2
rk2= F1k T t2/‖t2‖2
E1j=pj2 t2+ E2j             j=1,2,……m
F1k= rk2 t2+ F2k           k=1,2,……p
依次类推后续各步,如果L步算法终止,则有:
E0j= pj1 t1+ pj2 t2+……pjL tL+ELj            
F0k= rk1 t1+rk2t2+ ……rkL tL+FLk          
由于t1, t2,….. tL可表示为 x1, x2,…… xm的线性组合,所以回归方程最终可还原成原因变量和原自变量之间的回归映射关系。
--------------------编程问答-------------------- oh no~

典型作业贴,还是研究生作业贴

PS:1.此题请贴至Lisp专区,C#解这种题目,简直就是玩人。。。
    2.矩阵贴漂亮点,歪了很难看懂 --------------------编程问答-------------------- C#解这种题目,简直就是玩人 --------------------编程问答-------------------- 呵呵.好长 --------------------编程问答--------------------
引用 1 楼 asdf311 的回复:
oh no~ 

典型作业贴,还是研究生作业贴 

PS:1.此题请贴至Lisp专区,C#解这种题目,简直就是玩人。。。 
    2.矩阵贴漂亮点,歪了很难看懂


研究生的算法作业题现在都没这么难了。。。 --------------------编程问答-------------------- 把这贴子移走吧.有点迷糊呀. --------------------编程问答-------------------- 忒难了,惭愧啊 --------------------编程问答-------------------- PCA,楼主可以用OpenCV库解决(用VC6.0调试),偷懒一些的话可以直接用cvCalcPCA函数,如果自己写的话可以利用OpenCV中丰富的矩阵类型和操作,这个在C#中支持很少,太麻烦了。 --------------------编程问答-------------------- 用MATLAB做,更省事。 --------------------编程问答-------------------- 资历太浅,无法解题,楼主原谅 --------------------编程问答-------------------- 这个我倒是研究过,可惜工作之后无用武之地,下次换个能用的公司 --------------------编程问答-------------------- 没看明白题意,一些公式都不知道,解决不了 --------------------编程问答-------------------- 坐待高人 坐待移贴。。。。 --------------------编程问答-------------------- 也就作业下工作以后完全无用武之地啊 --------------------编程问答-------------------- 最小二乘法,可以参考数据挖掘中的预测模型,已经有很多c#的实现了 --------------------编程问答-------------------- 友情帮顶 --------------------编程问答-------------------- 在这么牛的贴上留名,增加知名度 --------------------编程问答-------------------- 统计学
复试完了怎么都忘了,算来才2月 --------------------编程问答-------------------- 等高手。 --------------------编程问答-------------------- 或者用Matlab吧,MatlaB的计算能力很强,直接有计算的公式,而且有针对图像处理的
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,