Hello all,
I have a model with 44 input parameters. When I want to create PCE with degrees up to 5, everything goes well and the calculations are done without problems. However, when I increase the degree, MATLAB quits a few seconds after I run the program. Can anyone help me to solve this problem?
I am running MATLAB on Ubuntu.
Thanks in advance
Hi @Aep93,
a total-degree basis in 44 dimensions with degree 5 has already more than a million elements: {44+5 \choose 5} = 1906884
Creating an even larger basis might cause Matlab to run out of memory, and it does not make sense, because if you have a huge number of regressors in the basis, you also need a huge number of points in the experimental design. How many experimental design points do you have available?
If you have a high-dimensional problem, common ways to reduce the size of the basis are using q-norm (hyperbolic) truncation or restricting the maximum interaction order to 2 or 3, see e.g. Question regarding PCE and LOO error. And in case you don’t use it yet, you should try UQLab’s degree and q-norm adaptivity, such as
MetaOpts.Degree = 1:5;
You could also try to first identify the important variables in your model, and then build a meta-model only on these.
I hope this helps, let us know how you made it work!
Hello @nluethen. Thank you very much for your response. I wanted to have about 800 experimental points. Do you think it can be enough or I should increase it? Do you have an estimation of the number of experimental points needed for 44 input parameters?
I am currently using “MetaOpts.Degree = 1:5” right now as you mentioned and I meant that the system crashes when I increase it: “MetaOpts.Degree = 1:6”.
Also, I cannot reduce the number of variables because I want to study their effects in different frequencies and their importance varies in each frequency. So I cannot neglect any of them. Do you think the way I am doing the whole procedure is correct or do you have other suggestions for me?
Thanks in advance
Hi @Aep93,
Sorry for not answering earlier. I saw that you got helpful advice from @bsudret in PCE with many inputs. What I meant is that using no q-norm truncation, no restriction of interaction order, and a degree of 6 for 44 input variables, the number of basis functions and of coefficients to compute is so large (P = 15'890'700) that Matlab might run out of memory. This is the most likely explanation for the crash you observed.
If you use a degree of 6, I would say that a q-norm truncation of at least 0.7 is needed to keep the number of basis elements in a reasonable range (with which I mean less than 100’000). For a degree of up to 10, you need to choose an even smaller q-norm and/or restrict the interaction order.
Good luck!