非负PCA

目前两个相关的技术:NMF和NSPCA,原理一样,都是把矩阵分解变成优化问题,即最小化残差,加上惩罚项。

NMF:matlab自带代码,但是很难写成I=I_0+a_1*I_1+...+a_n*I_n的形式

NSPCA:代码有公布,但链接http://www.cs.huji.ac.il/-zass/已经失效,已发邮件去要代码


SPCA代码阅读:

1.X is an n*p matrix where n is the number of observations and p is the number of variables. X should be centered and normalized such that the column means are 0 and the column Euclidean lengths are 1.这里p是每个observations包含的变量,需要是正则的。但,给出的例子不是正则的。

2.例子
作图是plot(X,Y)时,X是向量,Y是矩阵的情况,X作为横坐标,坐标上每一点,对应的Y中的向量,向量中每个值都画出来

3.elastic net problem 和 larsen

4.直接加入 beta>=0呢?

NSPCA:

1.也是变成优化问题,但是变成最大化 U^T*X 的F范数,在U^T*U =I, U>=0的条件下。

2.写成关于u的4次函数

另外找了份代码,文章地址

你可能感兴趣的:(非负PCA)