"out of memory" message for mvregress

1 view (last 30 days)
Anoosh
Anoosh on 23 Jan 2016
Commented: Anoosh on 23 Jan 2016
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 Comments
Jason Moore
Jason Moore on 23 Jan 2016
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 on 23 Jan 2016
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.

Sign in to comment.

Answers (0)

Community Treasure Hunt

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

Start Hunting!