目前两个相关的技术: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次函数
另外找了份代码,文章地址