"out of memory" message for mvregress

2 次查看(过去 30 天)
Anoosh
Anoosh 2016-1-23
评论: Anoosh 2016-1-23
I am trying to use mvregress with the data I have with dimensionality of a couple of hundreds. (3~4). Using 32 gb of ram, I can not compute beta and I get "out of memory" message. I couldn't find any limitation of use for mvregress that prevents me to apply it on vectors with this degree of dimensionality, am I doing something wrong? is there any way to use multivar linear regression via my data?
here is an example of what goes wrong:
dim=400;
nsamp=1000;
dataVariance = .10;
noiseVariance = .05;
mixtureCenters=randn(dim,1);
X=randn(dim, nsamp)*sqrt(dataVariance ) + repmat(mixtureCenters,1,nsamp);
N=randn(dim, nsamp)*sqrt(noiseVariance ) + repmat(mixtureCenters,1,nsamp);
A=2*eye(dim);
Y=A*X+N;
% A_hat=mvregress(X',Y');
[B, y_hat]=mlrtrain(X,Y)
where
function [B, y_hat]=mlrtrain(X,Y)
[n,d] = size(Y);
Xmat = [ones(n,1) X];
Xmat_sz=size(Xmat);
Xcell = cell(1,n);
for i = 1:n
Xcell{i} = [kron([Xmat(i,:)],eye(d))];
end
[beta,sigma,E,V] = mvregress(Xcell,Y);
B = reshape(beta,d,Xmat_sz(2))';
y_hat=Xmat * B ;
end
  2 个评论
Jason Moore
Jason Moore 2016-1-23
Make sure you have increased your Java Heap size. You can do this by doing the following
Click on the Home button in MATLAB -> Preferences -> General -> Java Heap
Try increasing this setting and restarting MATLAB
Anoosh
Anoosh 2016-1-23
thank you @jasonMoore but I can see from my memory manager that matlab is using my 32 gb of ram plus a 32 gb of swap. In sum, it is using around 64 gb of ram and still is not able to solve this linear regression problem.

请先登录,再进行评论。

回答(0 个)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by