(empirical) relation between MSE and condition number

  • Context: Graduate 
  • Thread starter Thread starter divB
  • Start date Start date
  • Tags Tags
    Condition Relation
Click For Summary
SUMMARY

The discussion centers on the empirical relationship between Mean Squared Error (MSE) and condition number in inverse linear problems. The user conducted experiments using MATLAB to analyze how varying condition numbers affect the noise amplification and MSE of coefficient vectors derived from random matrices. Despite expectations of a correlation, results showed arbitrary and uncorrelated outcomes, indicating that low condition numbers do not consistently yield lower MSE. The user seeks clarification on potential errors in their assumptions or methodology.

PREREQUISITES
  • Understanding of inverse linear problems and their properties
  • Familiarity with MATLAB programming and matrix operations
  • Knowledge of noise amplification in signal processing
  • Concept of condition number in linear algebra
NEXT STEPS
  • Investigate the impact of different noise levels on MSE in MATLAB simulations
  • Explore the functionality and potential bugs in the custom function add_noise
  • Learn about the implications of condition number on numerical stability in linear systems
  • Examine alternative methods for estimating coefficients, such as ridge regression
USEFUL FOR

Researchers and practitioners in numerical analysis, signal processing engineers, and anyone involved in solving inverse problems using MATLAB.

divB
Messages
85
Reaction score
0
Hi,

It is a well known fact that in an inverse linear problem low condition numbers have low noise amplification and therefore decrease the error.

So I wanted to test this: I draw random (skinny) matrices A, calculate y=A*c where c is a known coefficient vector, add some noise and calculate c from Least Squares. I would expect at least a small correlation between the MSE for c and the condition number.

But this is what it looks:

untitled.png


Yes, is it arbitrary, uncorrelated, this does not make sense at all! For example, a (relatively) low condition number of 1.5 can produce everything from the best (-79dB) down to the worst (-56dB). Changing the parameters does not change anything

Can anyone tell me what I am doing wrong or which (wrong?) assumptions I make?

Thanks


PS: Here is the MATLAB code

Code:
K = 5;
M = 50;
numtrials = 1000;
c = randn(K,1);
for trial=1:numtrials
    A = randn(M,K);
    y = A*c;
    y = add_noise(y, 55); % add 55dB noise via randn(...)
    c_rec = A \ y; %c_rec = pinv(A)*y;
    NMSE_c = 20*log10(norm(c - c_rec)/norm(c));
    plot(cond(A), NMSE_c, 'bo');
    hold on;
    xlabel('Condition number');
    ylabel('NMSE of coefficients');
    drawnow;
end
 
Physics news on Phys.org
Well, this is not my field but I will try to give you some advices. What's happen if you add a 0db noise ? Also, are you sure that the function add_noise is bug free ?
 

Similar threads

  • · Replies 9 ·
Replies
9
Views
3K
Replies
12
Views
4K
  • · Replies 7 ·
Replies
7
Views
2K
  • · Replies 9 ·
Replies
9
Views
2K
  • · Replies 3 ·
Replies
3
Views
1K
Replies
15
Views
3K
  • · Replies 75 ·
3
Replies
75
Views
7K
  • · Replies 5 ·
Replies
5
Views
2K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 9 ·
Replies
9
Views
2K